From: Robert Varga Date: Mon, 26 Jan 2015 14:31:19 +0000 (+0100) Subject: Optimize AugmentationIdentifierGenerator.getPathArguments() X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=1e0f8368b4402d1b2f41b5e83170afc79734bc03 Optimize AugmentationIdentifierGenerator.getPathArguments() Instead of using a Regex-based splitting, instantiate a Splitter, which is much faster. Change-Id: I67c3cd1c9054f675b2543cb8ae62c7037f4edf19 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/AugmentationIdentifierGenerator.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/AugmentationIdentifierGenerator.java index 7f7cdc650e..56ef8ea6fc 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/AugmentationIdentifierGenerator.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/AugmentationIdentifierGenerator.java @@ -10,40 +10,38 @@ package org.opendaylight.controller.cluster.datastore.node.utils; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; - +import com.google.common.base.Splitter; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class AugmentationIdentifierGenerator { + private static final Pattern PATTERN = Pattern.compile("AugmentationIdentifier\\Q{\\EchildNames=\\Q[\\E(.*)\\Q]}\\E"); + private static final Splitter COMMA_SPLITTER = Splitter.on(',').trimResults(); + private final String id; - private static final Pattern pattern = Pattern.compile("AugmentationIdentifier\\Q{\\EchildNames=\\Q[\\E(.*)\\Q]}\\E"); private final Matcher matcher; private final boolean doesMatch; - public AugmentationIdentifierGenerator(String id){ + public AugmentationIdentifierGenerator(String id) { this.id = id; - matcher = pattern.matcher(this.id); + matcher = PATTERN.matcher(this.id); doesMatch = matcher.matches(); } - public boolean matches(){ + public boolean matches() { return doesMatch; } - public YangInstanceIdentifier.AugmentationIdentifier getPathArgument(){ - Set childNames = new HashSet(); + public YangInstanceIdentifier.AugmentationIdentifier getPathArgument() { final String childQNames = matcher.group(1); - final String[] splitChildQNames = childQNames.split(","); - - for(String name : splitChildQNames){ - childNames.add( - org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory - .create(name.trim())); + final Set childNames = new HashSet<>(); + for (String name : COMMA_SPLITTER.split(childQNames)) { + childNames.add(QNameFactory.create(name)); } return new YangInstanceIdentifier.AugmentationIdentifier(childNames);