diff options
9 files changed, 62 insertions, 53 deletions
diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/AbstractRankedAttributesResolverFactory.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/AbstractRankedAttributesResolverFactory.java index 99ac8a74e..2b296e204 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/AbstractRankedAttributesResolverFactory.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/AbstractRankedAttributesResolverFactory.java @@ -26,13 +26,15 @@ package org.onap.appc.rankingframework; import org.onap.appc.rankingframework.impl.DefaultRankedAttributesTreeFactory; -public abstract class AbstractRankedAttributesResolverFactory implements RankedAttributesResolverFactory { +public interface AbstractRankedAttributesResolverFactory { - private static class ReferenceHolder { + class ReferenceHolder { private static final RankedAttributesResolverFactory INSTANCE = new DefaultRankedAttributesTreeFactory(); + + private ReferenceHolder() {} } - public static RankedAttributesResolverFactory getInstance() { + static RankedAttributesResolverFactory getInstance() { return ReferenceHolder.INSTANCE; } } diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/BacktraceStrategy.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/BacktraceStrategy.java index 5da4a8e2b..ca62020d5 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/BacktraceStrategy.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/BacktraceStrategy.java @@ -9,15 +9,15 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - * + * * ECOMP is a trademark and service mark of AT&T Intellectual Property. * ============LICENSE_END========================================================= */ @@ -39,13 +39,7 @@ class BacktraceStrategy implements Strategy { @Override public <R> R resolve(CompositeNode<R> rootNode, List<String> rankedNames, RankedAttributesContext context) { - if (logger.isDebugEnabled()) { - StringBuilder buff = new StringBuilder(128); - for (String name : rankedNames) { - buff.append("/{").append(name).append(" = ").append(Utils.value(context.getAttributeValue(name))).append('}'); - } - logger.debug(String.format("Trying to resolve path: %s", buff)); - } + logEntryPath(rankedNames, context); Set<String> visited = new HashSet<>(); @@ -63,24 +57,7 @@ class BacktraceStrategy implements Strategy { value = Utils.value(context.getAttributeValue(attribute)); } - Node<R> childNode = parentNode.children().get(value); - - if (childNode != null) { - if (logger.isDebugEnabled()) { - logger.debug(String.format("Found matching node '%s' - checking it out", childNode)); - } - - if (!visited.add(childNode.id())) { - if (logger.isDebugEnabled()) { - logger.debug(String.format("The matching node '%s' was checked before - ignoring it", childNode)); - } - childNode = null; - } - } else { - if (logger.isDebugEnabled()) { - logger.debug(String.format("Node '%s/{%s = %s}' not found - falling back", parentNode, attribute, value != null ? value : "NULL")); - } - } + Node<R> childNode = getChildNode(parentNode, visited, attribute, value); if (childNode != null) { switch (childNode.type()) { @@ -90,9 +67,7 @@ class BacktraceStrategy implements Strategy { parentNode = (CompositeNode<R>) childNode; break; case LEAF: - if (logger.isDebugEnabled()) { - logger.debug( String.format("Result node has been resolved succesfully - '%s'", childNode)); - } + log("Result node has been resolved succesfully - '%s'", childNode); result = ((LeafNode<R>) childNode).result(); stop = true; break; @@ -100,13 +75,12 @@ class BacktraceStrategy implements Strategy { throw new IllegalStateException(childNode.type().name()); } } else { - if (!value.equals(Constants.DEFAULT_MATCH)) { + if (!(Constants.DEFAULT_MATCH).equals(value)) { logger.debug("Exact match didn't work, trying the default option, if any"); value = Constants.DEFAULT_MATCH; } else if (depth > 0) { - if (logger.isDebugEnabled()) { - logger.debug(String.format("Exact match didn't work and no default option available beneath '%s' - moving out", parentNode)); - } + log("Exact match didn't work and no default option available beneath '%s' - moving out", + parentNode); depth--; value = null; parentNode = parentNode.parent(); @@ -119,4 +93,41 @@ class BacktraceStrategy implements Strategy { return result; } + + private <R> Node<R> getChildNode(CompositeNode<R> parentNode, Set<String> visited, String attribute, Object value) { + + Node<R> childNode = parentNode.children().get(value); + if (childNode != null) { + log("Found matching node '%s' - checking it out", childNode); + + if (!visited.add(childNode.id())) { + log("The matching node '%s' was checked before - ignoring it", childNode); + childNode = null; + } + } else { + log("Node '%s/{%s = %s}' not found - falling back", + parentNode, attribute, value != null ? value : "NULL"); + } + return childNode; + } + + private void logEntryPath(List<String> rankedNames, RankedAttributesContext context){ + if (logger.isDebugEnabled()) { + StringBuilder buff = new StringBuilder(128); + for (String name : rankedNames) { + buff.append("/{") + .append(name) + .append(" = ") + .append(Utils.value(context.getAttributeValue(name))) + .append('}'); + } + logger.debug(String.format("Trying to resolve path: %s", buff)); + } + } + + private void log(String log, Object... args) { + if (logger.isDebugEnabled()) { + logger.debug(String.format(log, args)); + } + } } diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Constants.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Constants.java index 2e4ffd8e1..177ae65f5 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Constants.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Constants.java @@ -26,8 +26,9 @@ package org.onap.appc.rankingframework.impl; class Constants { + static final String DEFAULT_MATCH = "*"; + private Constants() { } - static final String DEFAULT_MATCH = "*"; } diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/DefaultRankedAttributesTreeFactory.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/DefaultRankedAttributesTreeFactory.java index 4d59735b5..cf3353334 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/DefaultRankedAttributesTreeFactory.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/DefaultRankedAttributesTreeFactory.java @@ -35,15 +35,13 @@ import org.onap.appc.rankingframework.RankedAttributesResolverFactory; public final class DefaultRankedAttributesTreeFactory implements RankedAttributesResolverFactory { - private final Strategy DEFAULT_STRATEGY = new BacktraceStrategy(); + private final Strategy defaultStrategy = new BacktraceStrategy(); @Override public <R> RankedAttributesResolver<R> create(ConfigurationSet<R> config) { CompositeNode<R> root = RankedAttributesTreeBuilder.build(config); - RankedAttributesResolver<R> tree = new RankedAttributesTree<R>(root, toList(config.getRankedAttributeNames()), - DEFAULT_STRATEGY); - return tree; + return new RankedAttributesTree<>(root, toList(config.getRankedAttributeNames()), defaultStrategy); } private static List<String> toList(Collection<String> col) { diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/LeafNode.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/LeafNode.java index c6bb97378..4e20e48c7 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/LeafNode.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/LeafNode.java @@ -39,7 +39,7 @@ class LeafNode<R> extends NodeBase<R> { @Override public String toString() { - StringBuffer buff = new StringBuffer(128); + StringBuilder buff = new StringBuilder(128); buff.append(super.toString()); buff.append(" --> "); buff.append(result.toString()); diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/NodeBase.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/NodeBase.java index 1075cca50..59d5e7a93 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/NodeBase.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/NodeBase.java @@ -73,8 +73,8 @@ abstract class NodeBase<R> implements Node<R> { @Override public String toString() { - if (!name.equals("ROOT")) { - StringBuffer buff = new StringBuffer(128); + if (!("ROOT").equals(name)) { + StringBuilder buff = new StringBuilder(128); if (parent != null) { buff.append(parent.toString()); } diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Strategy.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Strategy.java index 36f898163..64765b588 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Strategy.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Strategy.java @@ -28,6 +28,7 @@ import java.util.List; import org.onap.appc.rankingframework.RankedAttributesContext; +@FunctionalInterface interface Strategy { <R> R resolve(CompositeNode<R> root, List<String> rankedNames, RankedAttributesContext context); } diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Utils.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Utils.java index fb18377f9..63fe2db62 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Utils.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/main/java/org/onap/appc/rankingframework/impl/Utils.java @@ -29,9 +29,9 @@ class Utils { private Utils() { } - static <R> Object value(Object value) { + static Object value(Object value) { if (value == null || (value instanceof String && isEmpty((String) value))) { - value = Constants.DEFAULT_MATCH; + return Constants.DEFAULT_MATCH; } return value; diff --git a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/test/java/org/onap/appc/rankingframework/TestRankingFramework.java b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/test/java/org/onap/appc/rankingframework/TestRankingFramework.java index 99376923f..beba506da 100644 --- a/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/test/java/org/onap/appc/rankingframework/TestRankingFramework.java +++ b/appc-dispatcher/appc-dispatcher-common/ranking-framework-lib/src/test/java/org/onap/appc/rankingframework/TestRankingFramework.java @@ -32,11 +32,6 @@ import java.util.Map; import org.junit.Assert; import org.junit.Test; -import org.onap.appc.rankingframework.AbstractRankedAttributesResolverFactory; -import org.onap.appc.rankingframework.ConfigurationEntry; -import org.onap.appc.rankingframework.ConfigurationSet; -import org.onap.appc.rankingframework.RankedAttributesContext; -import org.onap.appc.rankingframework.RankedAttributesResolver; public class TestRankingFramework { @@ -64,6 +59,7 @@ public class TestRankingFramework { return new ConfigurationEntryImpl(map, result); } + @SafeVarargs private static ConfigurationSet<String> config(ConfigurationEntry<String> ... entries) { return new ConfigurationSetImpl(Arrays.asList(entries), NAMES); } |