X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fidentifiers%2FShardIdentifier.java;h=d65af61ba3f8a957b6f67bdc355035fa93297431;hb=95d1074f7f446784f76dc41525cecdb65688df6c;hp=c6928815938058dbddc7bdb8b920c60fa2e0f7da;hpb=bc7b4edec3c868a14e0a0de3a3b8e1af2406448b;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/ShardIdentifier.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/ShardIdentifier.java index c692881593..d65af61ba3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/ShardIdentifier.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/identifiers/ShardIdentifier.java @@ -10,11 +10,17 @@ package org.opendaylight.controller.cluster.datastore.identifiers; import com.google.common.base.Preconditions; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class ShardIdentifier { private final String shardName; private final String memberName; private final String type; + //format and pattern should be in sync + private final String format = "%s-shard-%s-%s"; + private static final Pattern pattern = Pattern.compile("(\\S+)-shard-(\\S+)-(\\S+)"); public ShardIdentifier(String shardName, String memberName, String type) { @@ -60,15 +66,31 @@ public class ShardIdentifier { } @Override public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append(memberName).append("-shard-").append(shardName).append("-").append(type); - return builder.toString(); + //ensure the output of toString matches the pattern above + return new StringBuilder(memberName) + .append("-shard-") + .append(shardName) + .append("-") + .append(type) + .toString(); } public static Builder builder(){ return new Builder(); } + public String getShardName() { + return shardName; + } + + public String getMemberName() { + return memberName; + } + + public String getType() { + return type; + } + public static class Builder { private String shardName; private String memberName; @@ -93,5 +115,15 @@ public class ShardIdentifier { return this; } + public Builder fromShardIdString(String shardId){ + Matcher matcher = pattern.matcher(shardId); + + if (matcher.matches()) { + memberName = matcher.group(1); + shardName = matcher.group(2); + type = matcher.group(3); + } + return this; + } } }