2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (c) 2017 AT&T Intellectual Property
6 * ===================================================================
7 * Modifications Copyright (c) 2018 IBM
8 * ===================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * ============LICENSE_END=============================================
22 * ====================================================================
25 package org.onap.music.lockingservice.zookeeper;
27 import org.onap.music.eelf.logging.EELFLoggerDelegate;
28 import org.onap.music.eelf.logging.format.ErrorSeverity;
29 import org.onap.music.eelf.logging.format.ErrorTypes;
32 * Represents an ephemeral znode name which has an ordered sequence number and can be sorted in
36 class ZNodeName implements Comparable<ZNodeName> {
37 private final String name;
38 private String prefix;
39 private int sequence = -1;
40 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ZNodeName.class);
42 public ZNodeName(String name) {
44 throw new NullPointerException("id cannot be null");
48 int idx = name.lastIndexOf('-');
50 this.prefix = name.substring(0, idx);
52 this.sequence = Integer.parseInt(name.substring(idx + 1));
53 // If an exception occurred we misdetected a sequence suffix,
55 } catch (NumberFormatException e) {
56 logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Number format exception "+idx, ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
57 } catch (ArrayIndexOutOfBoundsException e) {
58 logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),"Array out of bounds for "+idx, ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
64 public String toString() {
69 public boolean equals(Object o) {
72 if (o == null || getClass() != o.getClass())
75 ZNodeName sequence = (ZNodeName) o;
77 if (!name.equals(sequence.name))
84 public int hashCode() {
85 return name.hashCode() + 37;
88 public int compareTo(ZNodeName that) {
89 int answer = this.prefix.compareTo(that.prefix);
91 int s1 = this.sequence;
92 int s2 = that.sequence;
93 if (s1 == -1 && s2 == -1) {
94 return this.name.compareTo(that.name);
96 answer = s1 == -1 ? 1 : s2 == -1 ? -1 : s1 - s2;
102 * Returns the name of the znode
104 public String getName() {
109 * Returns the sequence number
111 public int getZNodeName() {
116 * Returns the text prefix before the sequence number
118 public String getPrefix() {