From f6eae2a11c570c1097eb9202debc7e36ce72ef6d Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 2 Sep 2016 15:14:34 +0200 Subject: [PATCH] Use lambdas instead of anonymous classes This makes the code more concise. Change-Id: I0ce9711d0cafcf4660b78d937e5e0c9fa072da5a Signed-off-by: Robert Varga --- .../yangtools/util/ClassLoaderUtils.java | 19 +-- .../yangtools/util/Identifiables.java | 26 +--- ...lockDetectingListeningExecutorService.java | 30 ++-- .../yang/data/api/schema/NormalizedNodes.java | 9 +- .../schema/stream/NormalizedNodeWriter.java | 23 ++- .../NormalizedNodeDataTreeCandidateNode.java | 8 +- .../schema/tree/spi/LazyContainerNode.java | 8 +- .../leafref/LeafRefPathErrorListener.java | 15 +- .../LeafRefPathParserListenerImpl.java | 24 +--- .../yang/data/impl/schema/SchemaUtils.java | 22 +-- .../serializer/LeafSetNodeBaseSerializer.java | 23 ++- .../serializer/ListNodeBaseSerializer.java | 16 +-- .../tree/AbstractDataTreeCandidateNode.java | 26 +--- ...bstractModifiedNodeBasedCandidateNode.java | 25 +--- .../tree/AbstractRecursiveCandidateNode.java | 8 +- .../data/impl/schema/tree/ModifiedNode.java | 14 +- .../tree/OperationWithModification.java | 16 +-- .../yangtools/yang/data/jaxen/JaxenXPath.java | 11 +- .../yang/data/jaxen/YangFunctionContext.java | 18 +-- .../model/util/AbstractSchemaContext.java | 21 +-- .../util/FilteringSchemaContextProxy.java | 44 ++---- .../yang/model/util/SchemaContextUtil.java | 17 +-- .../yang/model/util/type/NumberUtil.java | 135 ++++++++---------- .../repo/SharedSchemaContextFactory.java | 42 +++--- .../AbstractEffectiveSchemaContext.java | 21 +-- .../effective/EffectiveStatementBase.java | 32 +---- .../yang/parser/util/ASTSchemaSource.java | 36 ++--- 27 files changed, 215 insertions(+), 474 deletions(-) diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/ClassLoaderUtils.java b/common/util/src/main/java/org/opendaylight/yangtools/util/ClassLoaderUtils.java index 1cabaf4e3f..45f4e0ce49 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/ClassLoaderUtils.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/ClassLoaderUtils.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.util; import static com.google.common.base.Preconditions.checkNotNull; - import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; @@ -143,22 +142,18 @@ public final class ClassLoaderUtils { } public static Class

findFirstGenericArgument(final Class scannedClass, final Class genericType) { - return withClassLoader(scannedClass.getClassLoader(), - ClassLoaderUtils.findFirstGenericArgumentTask(scannedClass, genericType)); + return withClassLoader(scannedClass.getClassLoader(), findFirstGenericArgumentTask(scannedClass, genericType)); } + @SuppressWarnings("unchecked") private static Supplier> findFirstGenericArgumentTask(final Class scannedClass, final Class genericType) { - return new Supplier>() { - @Override - @SuppressWarnings("unchecked") - public Class

get() { - final ParameterizedType augmentationGeneric = findParameterizedType(scannedClass, genericType); - if (augmentationGeneric != null) { - return (Class

) augmentationGeneric.getActualTypeArguments()[0]; - } - return null; + return () -> { + final ParameterizedType augmentationGeneric = findParameterizedType(scannedClass, genericType); + if (augmentationGeneric != null) { + return (Class

) augmentationGeneric.getActualTypeArguments()[0]; } + return null; }; } diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/Identifiables.java b/common/util/src/main/java/org/opendaylight/yangtools/util/Identifiables.java index dbeee9bd2e..abbac3b98d 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/Identifiables.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/Identifiables.java @@ -8,21 +8,10 @@ package org.opendaylight.yangtools.util; import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import javax.annotation.Nonnull; import org.opendaylight.yangtools.concepts.Identifiable; +@Deprecated public final class Identifiables { - - private static final Function, Object> EXTRACT_IDENTIFIER = - new Function, Object>() { - @Override - public Object apply(@Nonnull final Identifiable input) { - Preconditions.checkNotNull(input); - return input.getIdentifier(); - } - }; - private Identifiables() { throw new UnsupportedOperationException("Utility class"); } @@ -31,16 +20,13 @@ public final class Identifiables { * Return the {@link Function} to extract the identifier from a particular * object implementing the {@link Identifiable} contract. * - * @return Identificator associated with the object - */ - /* - * Suppressing warnings here allows us to fool the compiler enough - * such that we can reuse a single function for all applicable types - * and present it in a type-safe manner to our users. + * @return Identifier associated with the object + * + * @deprecated Use Identifiable::getIdentifier instead */ - @SuppressWarnings({ "unchecked", "rawtypes" }) + @Deprecated public static Function, V> identifierExtractor() { - return (Function) EXTRACT_IDENTIFIER; + return Identifiable::getIdentifier; } } diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/concurrent/DeadlockDetectingListeningExecutorService.java b/common/util/src/main/java/org/opendaylight/yangtools/util/concurrent/DeadlockDetectingListeningExecutorService.java index 8cdbc2c413..1d50b8af47 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/concurrent/DeadlockDetectingListeningExecutorService.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/concurrent/DeadlockDetectingListeningExecutorService.java @@ -121,29 +121,23 @@ public class DeadlockDetectingListeningExecutorService extends AsyncNotifyingLis } private Runnable wrapRunnable(final Runnable task) { - return new Runnable() { - @Override - public void run() { - final SettableBoolean b = primeDetector(); - try { - task.run(); - } finally { - b.reset(); - } + return () -> { + final SettableBoolean b = primeDetector(); + try { + task.run(); + } finally { + b.reset(); } }; } private Callable wrapCallable(final Callable delagate) { - return new Callable() { - @Override - public T call() throws Exception { - final SettableBoolean b = primeDetector(); - try { - return delagate.call(); - } finally { - b.reset(); - } + return () -> { + final SettableBoolean b = primeDetector(); + try { + return delagate.call(); + } finally { + b.reset(); } }; } diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java index fb9b261e5d..fc0302ba4f 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.api.schema; import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.annotations.Beta; import com.google.common.base.Optional; -import com.google.common.base.Predicate; import com.google.common.base.Strings; import com.google.common.collect.Maps; import java.util.Arrays; @@ -29,12 +28,6 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum @Beta public final class NormalizedNodes { private static final int STRINGTREE_INDENT = 4; - private static final Predicate DUPLICATES_ONLY = new Predicate() { - @Override - public boolean apply(final DuplicateEntry input) { - return !input.getDuplicates().isEmpty(); - } - }; private NormalizedNodes() { throw new UnsupportedOperationException("Utility class should not be instantiated"); @@ -144,6 +137,6 @@ public final class NormalizedNodes { * @return A Map of NormalizedNode/DuplicateEntry relationships. */ public static Map, DuplicateEntry> findDuplicates(@Nonnull final NormalizedNode node) { - return Maps.filterValues(DuplicateFinder.findDuplicates(node), DUPLICATES_ONLY); + return Maps.filterValues(DuplicateFinder.findDuplicates(node), input -> !input.getDuplicates().isEmpty()); } } diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java index be22c5091a..2d91bf34e6 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java @@ -8,11 +8,9 @@ package org.opendaylight.yangtools.yang.data.api.schema.stream; import static org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter.UNKNOWN_SIZE; - import com.google.common.annotations.Beta; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import java.io.Closeable; import java.io.Flushable; @@ -281,19 +279,16 @@ public class NormalizedNodeWriter implements Closeable, Flushable { } // Write all the rest - return writeChildren(Iterables.filter(node.getValue(), new Predicate>() { - @Override - public boolean apply(final NormalizedNode input) { - if (input instanceof AugmentationNode) { - return true; - } - if (!qnames.contains(input.getNodeType())) { - return true; - } - - LOG.debug("Skipping key child {}", input); - return false; + return writeChildren(Iterables.filter(node.getValue(), input -> { + if (input instanceof AugmentationNode) { + return true; } + if (!qnames.contains(input.getNodeType())) { + return true; + } + + LOG.debug("Skipping key child {}", input); + return false; })); } } diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/NormalizedNodeDataTreeCandidateNode.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/NormalizedNodeDataTreeCandidateNode.java index f471e858ff..0b0bd7cbf5 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/NormalizedNodeDataTreeCandidateNode.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/NormalizedNodeDataTreeCandidateNode.java @@ -27,12 +27,8 @@ final class NormalizedNodeDataTreeCandidateNode implements DataTreeCandidateNode * Convenience function for functional transformation of {@link NormalizedNode} into * a {@link DataTreeCandidateNode}. */ - private static final Function, DataTreeCandidateNode> FACTORY_FUNCTION = new Function, DataTreeCandidateNode>() { - @Override - public DataTreeCandidateNode apply(final NormalizedNode input) { - return input == null ? null : new NormalizedNodeDataTreeCandidateNode(input); - } - }; + private static final Function, DataTreeCandidateNode> FACTORY_FUNCTION = + input -> input == null ? null : new NormalizedNodeDataTreeCandidateNode(input); private final NormalizedNode data; /** diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/spi/LazyContainerNode.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/spi/LazyContainerNode.java index 0a737f2e66..7bbe831d5b 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/spi/LazyContainerNode.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/spi/LazyContainerNode.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.data.api.schema.tree.spi; import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.base.Optional; -import com.google.common.base.Predicate; import com.google.common.collect.Collections2; import java.util.Map; import org.opendaylight.yangtools.util.MapAdaptor; @@ -50,11 +49,6 @@ final class LazyContainerNode extends AbstractModifiedContainerNode { protected ToStringHelper addToStringAttributes(final ToStringHelper helper) { // Modified children add added by superclass. Here we filter the other children. return super.addToStringAttributes(helper).add("untouched", Collections2.filter(castData().getValue(), - new Predicate>() { - @Override - public boolean apply(final NormalizedNode input) { - return getModifiedChild(input.getIdentifier()) == null; - } - })); + input -> getModifiedChild(input.getIdentifier()) == null)); } } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathErrorListener.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathErrorListener.java index c8098e2517..bbdbb35886 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathErrorListener.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathErrorListener.java @@ -17,9 +17,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; class LeafRefPathErrorListener extends BaseErrorListener { - private static final Logger LOG = LoggerFactory - .getLogger(LeafRefPathErrorListener.class); - private final List exceptions = new ArrayList<>(); + private static final Logger LOG = LoggerFactory.getLogger(LeafRefPathErrorListener.class); + + private final List exceptions = new ArrayList<>(1); private final Module module; public LeafRefPathErrorListener(final Module module) { @@ -27,14 +27,11 @@ class LeafRefPathErrorListener extends BaseErrorListener { } @Override - public void syntaxError(final Recognizer recognizer, - final Object offendingSymbol, final int line, - final int charPositionInLine, final String msg, - final RecognitionException e) { + public void syntaxError(final Recognizer recognizer, final Object offendingSymbol, final int line, + final int charPositionInLine, final String msg, final RecognitionException e) { LOG.debug("Syntax error in module {} at {}:{}: {}", module.getName(), line, charPositionInLine, msg, e); - exceptions.add(new LeafRefPathSyntaxErrorException(module.getName(), line, - charPositionInLine, msg, e)); + exceptions.add(new LeafRefPathSyntaxErrorException(module.getName(), line, charPositionInLine, msg, e)); } public void validate() throws LeafRefPathSyntaxErrorException { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathParserListenerImpl.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathParserListenerImpl.java index 255181341c..9a199d18ea 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathParserListenerImpl.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefPathParserListenerImpl.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.leafref; -import com.google.common.base.Function; import com.google.common.collect.Lists; import java.net.URI; import java.util.Date; @@ -30,8 +29,6 @@ import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; - - final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ private final SchemaContext schemaContext; @@ -47,13 +44,6 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ private final SchemaNode node; //FIXME use for identifier path completion private ParsingState currentParsingState; - Function build = new Function() { - @Override - public QNameWithPredicate apply(final QNameWithPredicateBuilder builder) { - return builder.build(); - } - }; - private enum ParsingState { LEAF_REF_PATH, PATH_PREDICATE, PREDICATE_PATH_EQUALITY_EXPR, PATH_KEY_EXPR } @@ -91,11 +81,11 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ } } - @Override public void exitRel_path_keyexpr(final Rel_path_keyexprContext ctx) { - final LeafRefPath pathKeyExpression = LeafRefPath.create(Lists.transform(predicatePathKeyQnameList, build), false); + final LeafRefPath pathKeyExpression = LeafRefPath.create(Lists.transform(predicatePathKeyQnameList, + QNameWithPredicateBuilder::build), false); currentPredicate.setPathKeyExpression(pathKeyExpression); currentParsingState=ParsingState.PREDICATE_PATH_EQUALITY_EXPR; @@ -117,7 +107,6 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ currentParsingState=ParsingState.PREDICATE_PATH_EQUALITY_EXPR; } - @Override public void exitPath_equality_expr(final Path_equality_exprContext ctx) { @@ -126,7 +115,6 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ @Override public void enterPrefix(final PrefixContext ctx) { - if (module.getPrefix().equals(ctx.getText())) { currentQnameModule = module.getQNameModule(); } else { @@ -136,10 +124,10 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ @Override public void exitPath_arg(final Path_argContext ctx) { - leafRefPath = LeafRefPath.create(Lists.transform(leafRefPathQnameList,build), !relativePath); + leafRefPath = LeafRefPath.create(Lists.transform(leafRefPathQnameList, QNameWithPredicateBuilder::build), + !relativePath); } - @Override public void enterIdentifier(final IdentifierContext ctx) { currentQNameLocalName = ctx.getText(); @@ -147,7 +135,6 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ @Override public void exitNode_identifier(final Node_identifierContext ctx) { - if (currentQnameModule == null) { currentQnameModule = module.getQNameModule(); } @@ -176,8 +163,7 @@ final class LeafRefPathParserListenerImpl extends LeafRefPathParserBaseListener{ return leafRefPath; } - - private URI getNamespaceForImportPrefix(final String prefix){ + private URI getNamespaceForImportPrefix(final String prefix) { final ModuleImport moduleImport = getModuleImport(prefix); final Module findedModule = schemaContext.findModuleByName(moduleImport.getModuleName(), moduleImport.getRevision()); diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java index 84f7284aee..4c9eb686c6 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; @@ -21,7 +20,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; @@ -39,14 +37,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; public final class SchemaUtils { - - private static final Function QNAME_FUNCTION = new Function() { - @Override - public QName apply(@Nonnull final DataSchemaNode input) { - return input.getQName(); - } - }; - private SchemaUtils() { throw new UnsupportedOperationException(); } @@ -141,14 +131,8 @@ public final class SchemaUtils { private static Optional findAugment(final AugmentationTarget schema, final Set qNames) { for (AugmentationSchema augment : schema.getAvailableAugmentations()) { - - HashSet qNamesFromAugment = Sets.newHashSet(Collections2.transform(augment.getChildNodes(), new Function() { - @Override - public QName apply(@Nonnull final DataSchemaNode input) { - Preconditions.checkNotNull(input); - return input.getQName(); - } - })); + HashSet qNamesFromAugment = Sets.newHashSet(Collections2.transform(augment.getChildNodes(), + DataSchemaNode::getQName)); if (qNamesFromAugment.equals(qNames)) { return Optional.of(augment); @@ -399,7 +383,7 @@ public final class SchemaUtils { } public static AugmentationIdentifier getNodeIdentifierForAugmentation(final AugmentationSchema schema) { - final Collection qnames = Collections2.transform(schema.getChildNodes(), QNAME_FUNCTION); + final Collection qnames = Collections2.transform(schema.getChildNodes(), DataSchemaNode::getQName); return new AugmentationIdentifier(ImmutableSet.copyOf(qnames)); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/LeafSetNodeBaseSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/LeafSetNodeBaseSerializer.java index 302ffbbd58..3a5b2693a9 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/LeafSetNodeBaseSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/LeafSetNodeBaseSerializer.java @@ -7,15 +7,13 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer; +import com.google.common.base.Preconditions; +import com.google.common.collect.Iterables; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializer; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import com.google.common.collect.Iterables; - /** * Abstract(base) serializer for LeafSetNodes, serializes elements of type E. * @@ -26,16 +24,13 @@ public abstract class LeafSetNodeBaseSerializer implements @Override public final Iterable serialize(final LeafListSchemaNode schema, final LeafSetNode node) { - return Iterables.concat(Iterables.transform(node.getValue(), new Function, Iterable>() { - @Override - public Iterable apply(final LeafSetEntryNode input) { - final Iterable serializedChild = getLeafSetEntryNodeSerializer().serialize(schema, input); - final int size = Iterables.size(serializedChild); - Preconditions.checkState(size == 1, - "Unexpected count of elements for leaf-list entry serialized from: %s, should be 1, was: %s", - input, size); - return serializedChild; - } + return Iterables.concat(Iterables.transform(node.getValue(), input -> { + final Iterable serializedChild = getLeafSetEntryNodeSerializer().serialize(schema, input); + final int size = Iterables.size(serializedChild); + Preconditions.checkState(size == 1, + "Unexpected count of elements for leaf-list entry serialized from: %s, should be 1, was: %s", + input, size); + return serializedChild; })); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/ListNodeBaseSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/ListNodeBaseSerializer.java index 42413be06b..bc5e55bb56 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/ListNodeBaseSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/ListNodeBaseSerializer.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer; -import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; import java.util.Collection; @@ -32,16 +31,13 @@ public abstract class ListNodeBaseSerializer serialize(final ListSchemaNode schema, final N node) { - return Iterables.concat(Iterables.transform(node.getValue(), new Function>() { - @Override - public Iterable apply(final O input) { - final Iterable serializedChild = getListEntryNodeSerializer().serialize(schema, input); - final int size = Iterables.size(serializedChild); + return Iterables.concat(Iterables.transform(node.getValue(), input -> { + final Iterable serializedChild = getListEntryNodeSerializer().serialize(schema, input); + final int size = Iterables.size(serializedChild); - Preconditions.checkState(size == 1, - "Unexpected count of entries for list serialized from: %s, should be 1, was: %s", input, size); - return serializedChild; - } + Preconditions.checkState(size == 1, + "Unexpected count of entries for list serialized from: %s, should be 1, was: %s", input, size); + return serializedChild; })); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractDataTreeCandidateNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractDataTreeCandidateNode.java index 90ecd84b77..f7bea78824 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractDataTreeCandidateNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractDataTreeCandidateNode.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Collections2; @@ -21,20 +20,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; abstract class AbstractDataTreeCandidateNode implements DataTreeCandidateNode { - private static final Function, DataTreeCandidateNode> TO_DELETED_NODE = new Function, DataTreeCandidateNode>() { - @Override - public DataTreeCandidateNode apply(final NormalizedNode input) { - return AbstractRecursiveCandidateNode.deleteNode(input); - } - }; - private static final Function, DataTreeCandidateNode> TO_WRITTEN_NODE = new Function, DataTreeCandidateNode>() { - @Override - public DataTreeCandidateNode apply(final NormalizedNode input) { - return AbstractRecursiveCandidateNode.writeNode(input); - } - }; - - private static Optional> getChild(final NormalizedNodeContainer> container, final PathArgument identifier) { + private static Optional> getChild( + final NormalizedNodeContainer> container, + final PathArgument identifier) { if (container != null) { return container.getChild(identifier); } else { @@ -53,11 +41,11 @@ abstract class AbstractDataTreeCandidateNode implements DataTreeCandidateNode { if (maybeNewChild.isPresent()) { return AbstractRecursiveCandidateNode.replaceNode(oldChild, maybeNewChild.get()); } else { - return TO_DELETED_NODE.apply(oldChild); + return AbstractRecursiveCandidateNode.deleteNode(oldChild); } } else { if (maybeNewChild.isPresent()) { - return TO_WRITTEN_NODE.apply(maybeNewChild.get()); + return AbstractRecursiveCandidateNode.writeNode(maybeNewChild.get()); } else { return null; } @@ -69,10 +57,10 @@ abstract class AbstractDataTreeCandidateNode implements DataTreeCandidateNode { Preconditions.checkArgument(newData != null || oldData != null, "No old or new data, modification type should be NONE and deltaChildren() mustn't be called."); if (newData == null) { - return Collections2.transform(oldData.getValue(), TO_DELETED_NODE); + return Collections2.transform(oldData.getValue(), AbstractRecursiveCandidateNode::deleteNode); } if (oldData == null) { - return Collections2.transform(newData.getValue(), TO_WRITTEN_NODE); + return Collections2.transform(newData.getValue(), AbstractRecursiveCandidateNode::writeNode); } /* diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractModifiedNodeBasedCandidateNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractModifiedNodeBasedCandidateNode.java index 92586972e9..aa1ae48cee 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractModifiedNodeBasedCandidateNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractModifiedNodeBasedCandidateNode.java @@ -6,7 +6,6 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Verify; @@ -23,20 +22,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode; abstract class AbstractModifiedNodeBasedCandidateNode implements DataTreeCandidateNode { - - private static final Function, DataTreeCandidateNode> TO_UNMODIFIED_NODE = new Function, DataTreeCandidateNode>() { - @Override - public DataTreeCandidateNode apply(final NormalizedNode input) { - return AbstractRecursiveCandidateNode.unmodifiedNode(input); - } - }; - private final ModifiedNode mod; private final TreeNode newMeta; private final TreeNode oldMeta; - protected AbstractModifiedNodeBasedCandidateNode(final ModifiedNode mod, - final TreeNode oldMeta, final TreeNode newMeta) { + protected AbstractModifiedNodeBasedCandidateNode(final ModifiedNode mod, final TreeNode oldMeta, + final TreeNode newMeta) { this.newMeta = newMeta; this.oldMeta = oldMeta; this.mod = Preconditions.checkNotNull(mod); @@ -89,17 +80,13 @@ abstract class AbstractModifiedNodeBasedCandidateNode implements DataTreeCandida case APPEARED: case DISAPPEARED: case SUBTREE_MODIFIED: - return Collections2.transform(mod.getChildren(), new Function() { - @Override - public DataTreeCandidateNode apply(final ModifiedNode input) { - return childNode(input); - } - }); + return Collections2.transform(mod.getChildren(), this::childNode); case UNMODIFIED: // Unmodified node, but we still need to resolve potential children. canHaveChildren returns // false if both arguments are null. if (canHaveChildren(oldMeta, newMeta)) { - return Collections2.transform(getContainer(newMeta != null ? newMeta : oldMeta).getValue(), TO_UNMODIFIED_NODE); + return Collections2.transform(getContainer(newMeta != null ? newMeta : oldMeta).getValue(), + AbstractRecursiveCandidateNode::unmodifiedNode); } else { return Collections.emptyList(); } @@ -158,7 +145,7 @@ abstract class AbstractModifiedNodeBasedCandidateNode implements DataTreeCandida if (canHaveChildren(oldMeta, newMeta)) { final Optional> maybeChild = getContainer(newMeta != null ? newMeta : oldMeta).getChild(identifier); if (maybeChild.isPresent()) { - return TO_UNMODIFIED_NODE.apply(maybeChild.get()); + return AbstractRecursiveCandidateNode.unmodifiedNode(maybeChild.get()); } else { return null; } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractRecursiveCandidateNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractRecursiveCandidateNode.java index 00c215a481..f8dd37d24d 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractRecursiveCandidateNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractRecursiveCandidateNode.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.Collections2; import java.util.Collection; @@ -70,12 +69,7 @@ abstract class AbstractRecursiveCandidateNode extends AbstractDataTreeCandidateN @Override public final Collection getChildNodes() { - return Collections2.transform(getData().getValue(), new Function, DataTreeCandidateNode>() { - @Override - public DataTreeCandidateNode apply(final NormalizedNode input) { - return createChild(input); - } - }); + return Collections2.transform(getData().getValue(), this::createChild); } @SuppressWarnings("unchecked") diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ModifiedNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ModifiedNode.java index 7360e988d2..35da5d3650 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ModifiedNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ModifiedNode.java @@ -13,7 +13,6 @@ import com.google.common.base.Predicate; import java.util.Collection; import java.util.Map; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -38,11 +37,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version; */ @NotThreadSafe final class ModifiedNode extends NodeModification implements StoreTreeNode { - static final Predicate IS_TERMINAL_PREDICATE = new Predicate() { - @Override - public boolean apply(@Nullable final ModifiedNode input) { - Preconditions.checkNotNull(input); - switch (input.getOperation()) { + static final Predicate IS_TERMINAL_PREDICATE = input -> { + Preconditions.checkNotNull(input); + switch (input.getOperation()) { case DELETE: case MERGE: case WRITE: @@ -50,10 +47,9 @@ final class ModifiedNode extends NodeModification implements StoreTreeNode children; diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OperationWithModification.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OperationWithModification.java index d22854dc88..72221770cd 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OperationWithModification.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OperationWithModification.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -16,19 +15,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version; final class OperationWithModification { - private static final Function> READ_DATA = new Function>() { - @Override - public NormalizedNode apply(final TreeNode input) { - return input.getData(); - } - }; - - private final ModifiedNode modification; private final ModificationApplyOperation applyOperation; + private final ModifiedNode modification; private OperationWithModification(final ModificationApplyOperation op, final ModifiedNode mod) { - this.modification = Preconditions.checkNotNull(mod); this.applyOperation = Preconditions.checkNotNull(op); + this.modification = Preconditions.checkNotNull(mod); } void write(final NormalizedNode value) { @@ -74,7 +66,7 @@ final class OperationWithModification { snapshot = applyOperation.getChild(child).get().apply(childNode, childNode.getOriginal(), version); } - return snapshot.transform(READ_DATA); + return snapshot.transform(TreeNode::getData); } Optional snapshot = modification.getSnapshot(); @@ -83,7 +75,7 @@ final class OperationWithModification { } if (snapshot.isPresent()) { - return snapshot.get().getChild(child).transform(READ_DATA); + return snapshot.get().getChild(child).transform(TreeNode::getData); } return Optional.absent(); diff --git a/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenXPath.java b/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenXPath.java index 563b69526b..663cd528f2 100644 --- a/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenXPath.java +++ b/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenXPath.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.data.jaxen; import com.google.common.base.Converter; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; @@ -35,13 +34,7 @@ import org.slf4j.LoggerFactory; final class JaxenXPath implements XPathExpression { private static final Logger LOG = LoggerFactory.getLogger(JaxenXPath.class); - protected static final Function> EXTRACT_NODE = - new Function>() { - @Override - public NormalizedNode apply(final NormalizedNodeContext input) { - return input.getNode(); - } - }; + private final Converter converter; private final SchemaPath schemaPath; private final BaseXPath xpath; @@ -114,7 +107,7 @@ final class JaxenXPath implements XPathExpression { @Override public Collection> getValue() { // XXX: Will this really work, or do we need to perform deep transformation? - return Lists.transform((List) result, EXTRACT_NODE); + return Lists.transform((List) result, NormalizedNodeContext::getNode); } }); } else { diff --git a/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/YangFunctionContext.java b/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/YangFunctionContext.java index c2dae89959..87c8976740 100644 --- a/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/YangFunctionContext.java +++ b/yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/YangFunctionContext.java @@ -8,8 +8,6 @@ package org.opendaylight.yangtools.yang.data.jaxen; import com.google.common.base.Verify; -import java.util.List; -import org.jaxen.Context; import org.jaxen.Function; import org.jaxen.FunctionCallException; import org.jaxen.FunctionContext; @@ -23,17 +21,13 @@ final class YangFunctionContext implements FunctionContext { // Core XPath functions, as per http://tools.ietf.org/html/rfc6020#section-6.4.1 private static final FunctionContext XPATH_FUNCTION_CONTEXT = new XPathFunctionContext(false); // current() function, as per http://tools.ietf.org/html/rfc6020#section-6.4.1 - private static final Function CURRENT_FUNCTION = new Function() { - @Override - public NormalizedNodeContext call(final Context context, @SuppressWarnings("rawtypes") final List args) - throws FunctionCallException { - if (!args.isEmpty()) { - throw new FunctionCallException("current() takes no arguments."); - } - - Verify.verify(context instanceof NormalizedNodeContext, "Unhandled context %s", context.getClass()); - return ((NormalizedNodeContext) context); + private static final Function CURRENT_FUNCTION = (context, args) -> { + if (!args.isEmpty()) { + throw new FunctionCallException("current() takes no arguments."); } + + Verify.verify(context instanceof NormalizedNodeContext, "Unhandled context %s", context.getClass()); + return ((NormalizedNodeContext) context); }; // Singleton instance of reuse diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java index b760620dcf..737461b873 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java @@ -41,25 +41,16 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode; public abstract class AbstractSchemaContext implements SchemaContext { - - protected static final Supplier> MODULE_SET_SUPPLIER = new Supplier>() { - @Override - public TreeSet get() { - return new TreeSet<>(REVISION_COMPARATOR); + protected static final Comparator REVISION_COMPARATOR = (o1, o2) -> { + if (o2.getRevision() == null) { + return -1; } - }; - - protected static final Comparator REVISION_COMPARATOR = new Comparator() { - @Override - public int compare(final Module o1, final Module o2) { - if (o2.getRevision() == null) { - return -1; - } - return o2.getRevision().compareTo(o1.getRevision()); - } + return o2.getRevision().compareTo(o1.getRevision()); }; + protected static final Supplier> MODULE_SET_SUPPLIER = () -> new TreeSet<>(REVISION_COMPARATOR); + /** * @return yang sources where key is ModuleIdentifier */ diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java index 2a5dd589f7..49a2e13ff0 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.model.util; import com.google.common.base.Function; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.base.Strings; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableMap; @@ -25,13 +24,11 @@ import com.google.common.collect.TreeMultimap; import java.net.URI; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; @@ -102,40 +99,23 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext { } private static TreeMultimap getStringModuleTreeMultimap() { - return TreeMultimap.create(new Comparator() { - @Override - public int compare(final String o1, final String o2) { - return o1.compareTo(o2); - } - }, REVISION_COMPARATOR); + return TreeMultimap.create((o1, o2) -> o1.compareTo(o2), REVISION_COMPARATOR); } private static void processForAdditionalModules(final SchemaContext delegate, final Set additionalModuleIds, final Builder filteredModulesBuilder) { - filteredModulesBuilder.addAll(Collections2.filter(delegate.getModules(), new Predicate() { - @Override - public boolean apply(@Nullable final Module module) { - return selectAdditionalModules(module, additionalModuleIds); - } - })); + filteredModulesBuilder.addAll(Collections2.filter(delegate.getModules(), + module -> selectAdditionalModules(module, additionalModuleIds))); } - private void processForRootModules(final SchemaContext delegate, final Collection rootModules, final Builder filteredModulesBuilder) { - filteredModulesBuilder.addAll(Collections2.filter(delegate.getModules(), new Predicate() { - @Override - public boolean apply(@Nullable final Module module) { - return checkModuleDependency(module, rootModules); - } - })); + private void processForRootModules(final SchemaContext delegate, final Collection rootModules, + final Builder filteredModulesBuilder) { + filteredModulesBuilder.addAll(Collections2.filter(delegate.getModules(), + module -> checkModuleDependency(module, rootModules))); } private static Multimap getStringModuleMap(final SchemaContext delegate) { - return Multimaps.index(delegate.getModules(), new Function() { - @Override - public String apply(final Module input) { - return input.getName(); - } - }); + return Multimaps.index(delegate.getModules(), Module::getName); } //dealing with imported module other than root and directly importing root @@ -242,12 +222,8 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext { return rev; } - public static final Function MODULE_TO_MODULE_ID = new Function() { - @Override - public ModuleId apply(final Module input) { - return new ModuleId(input.getName(), input.getRevision()); - } - }; + public static final Function MODULE_TO_MODULE_ID = input -> new ModuleId(input.getName(), + input.getRevision()); @Override public boolean equals(final Object o) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java index 9328237aeb..2a27a79c32 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.model.util; import com.google.common.annotations.Beta; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; @@ -600,20 +599,12 @@ public final class SchemaContextUtil { if (Iterables.size(schemaNodePath) - colCount >= 0) { return Iterables.concat(Iterables.limit(schemaNodePath, Iterables.size(schemaNodePath) - colCount), - Iterables.transform(Iterables.skip(xpaths, colCount), new Function() { - @Override - public QName apply(final String input) { - return stringPathPartToQName(context, module, input); - } - })); + Iterables.transform(Iterables.skip(xpaths, colCount), + input -> stringPathPartToQName(context, module, input))); } return Iterables.concat(schemaNodePath, - Iterables.transform(Iterables.skip(xpaths, colCount), new Function() { - @Override - public QName apply(final String input) { - return stringPathPartToQName(context, module, input); - } - })); + Iterables.transform(Iterables.skip(xpaths, colCount), + input -> stringPathPartToQName(context, module, input))); } /** diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java index 2446ef0b82..a0582855c2 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java @@ -16,46 +16,38 @@ import java.util.Comparator; import java.util.Map; final class NumberUtil { - private static final Comparator NUMBER_COMPARATOR = new Comparator() { - @Override - public int compare(final Number o1, final Number o2) { - Preconditions.checkArgument(o1.getClass().equals(o2.getClass()), "Incompatible Number classes %s and %s", - o1.getClass(), o2.getClass()); + private static final Comparator NUMBER_COMPARATOR = (o1, o2) -> { + Preconditions.checkArgument(o1.getClass().equals(o2.getClass()), "Incompatible Number classes %s and %s", + o1.getClass(), o2.getClass()); - if (o1 instanceof Byte) { - return ((Byte)o1).compareTo((Byte) o2); - } else if (o1 instanceof Short) { - return ((Short)o1).compareTo((Short) o2); - } else if (o1 instanceof Integer) { - return ((Integer)o1).compareTo((Integer) o2); - } else if (o1 instanceof Long) { - return ((Long)o1).compareTo((Long) o2); - } else if (o1 instanceof BigDecimal) { - return ((BigDecimal)o1).compareTo((BigDecimal) o2); - } else if (o1 instanceof BigInteger) { - return ((BigInteger)o1).compareTo((BigInteger) o2); - } else { - throw new IllegalArgumentException("Unsupported Number class " + o1.getClass()); - } + if (o1 instanceof Byte) { + return ((Byte)o1).compareTo((Byte) o2); + } else if (o1 instanceof Short) { + return ((Short)o1).compareTo((Short) o2); + } else if (o1 instanceof Integer) { + return ((Integer)o1).compareTo((Integer) o2); + } else if (o1 instanceof Long) { + return ((Long)o1).compareTo((Long) o2); + } else if (o1 instanceof BigDecimal) { + return ((BigDecimal)o1).compareTo((BigDecimal) o2); + } else if (o1 instanceof BigInteger) { + return ((BigInteger)o1).compareTo((BigInteger) o2); + } else { + throw new IllegalArgumentException("Unsupported Number class " + o1.getClass()); } }; private static final Map, Function> CONVERTERS; static { final ImmutableMap.Builder, Function> b = ImmutableMap.builder(); - b.put(Byte.class, new Function() { - @Override - public Number apply(final Number input) { - if (input instanceof Byte) { - return input; - } - - return Byte.valueOf(input.toString()); + b.put(Byte.class, input -> { + if (input instanceof Byte) { + return input; } + + return Byte.valueOf(input.toString()); }); - b.put(Short.class, new Function() { - @Override - public Number apply(final Number input) { + b.put(Short.class, input -> { if (input instanceof Short) { return input; } @@ -64,61 +56,48 @@ final class NumberUtil { } return Short.valueOf(input.toString()); - } }); - b.put(Integer.class, new Function() { - @Override - public Number apply(final Number input) { - if (input instanceof Integer) { - return input; - } - if (input instanceof Byte || input instanceof Short) { - return input.intValue(); - } - - return Integer.valueOf(input.toString()); + b.put(Integer.class, input -> { + if (input instanceof Integer) { + return input; } - }); - b.put(Long.class, new Function() { - @Override - public Number apply(final Number input) { - if (input instanceof Long) { - return input; - } - if (input instanceof Byte || input instanceof Short || input instanceof Integer) { - return input.longValue(); - } - - return Long.valueOf(input.toString()); + if (input instanceof Byte || input instanceof Short) { + return input.intValue(); } - }); - b.put(BigDecimal.class, new Function() { - @Override - public Number apply(final Number input) { - if (input instanceof BigDecimal) { - return input; - } - if (input instanceof Byte || input instanceof Short || - input instanceof Integer || input instanceof Long) { - return BigDecimal.valueOf(input.longValue()); - } - return new BigDecimal(input.toString()); + return Integer.valueOf(input.toString()); + }); + b.put(Long.class, input -> { + if (input instanceof Long) { + return input; + } + if (input instanceof Byte || input instanceof Short || input instanceof Integer) { + return input.longValue(); } + + return Long.valueOf(input.toString()); }); - b.put(BigInteger.class, new Function() { - @Override - public Number apply(final Number input) { - if (input instanceof BigInteger) { - return input; - } - if (input instanceof Byte || input instanceof Short || - input instanceof Integer || input instanceof Long) { - return BigInteger.valueOf(input.longValue()); - } + b.put(BigDecimal.class, input -> { + if (input instanceof BigDecimal) { + return input; + } + if (input instanceof Byte || input instanceof Short || + input instanceof Integer || input instanceof Long) { + return BigDecimal.valueOf(input.longValue()); + } - return new BigInteger(input.toString()); + return new BigDecimal(input.toString()); + }); + b.put(BigInteger.class, input -> { + if (input instanceof BigInteger) { + return input; + } + if (input instanceof Byte || input instanceof Short || + input instanceof Integer || input instanceof Long) { + return BigInteger.valueOf(input.longValue()); } + + return new BigInteger(input.toString()); }); CONVERTERS = b.build(); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java index fb83f5db5a..eb8d977c89 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.repo; import com.google.common.base.Function; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.google.common.collect.Collections2; @@ -28,7 +27,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import javax.annotation.Nullable; +import java.util.function.Predicate; import org.antlr.v4.runtime.ParserRuleContext; import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.StatementContext; import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; @@ -54,12 +53,6 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { private static final ExceptionMapper MAPPER = ReflectiveExceptionMapper.create("resolve sources", SchemaResolutionException.class); private static final Logger LOG = LoggerFactory.getLogger(SharedSchemaContextFactory.class); - private final Function> requestSources = new Function>() { - @Override - public ListenableFuture apply(final SourceIdentifier input) { - return repository.getSchemaSource(input, ASTSchemaSource.class); - } - }; private final Cache, SchemaContext> cache = CacheBuilder.newBuilder().weakValues().build(); private final Cache, SchemaContext> semVerCache = CacheBuilder.newBuilder().weakValues().build(); private final SharedSchemaRepository repository; @@ -75,13 +68,20 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { @Override public CheckedFuture createSchemaContext( final Collection requiredSources, final StatementParserMode statementParserMode, - final java.util.function.Predicate isFeatureSupported) { + final Predicate isFeatureSupported) { return createSchemaContext(requiredSources, statementParserMode == StatementParserMode.SEMVER_MODE ? this.semVerCache : this.cache, new AssembleSources(isFeatureSupported, statementParserMode)); } - private CheckedFuture createSchemaContext(final Collection requiredSources, final Cache, SchemaContext> cache, final AsyncFunction, SchemaContext> assembleSources) { + private ListenableFuture requestSource(final SourceIdentifier identifier) { + return repository.getSchemaSource(identifier, ASTSchemaSource.class); + } + + private CheckedFuture createSchemaContext( + final Collection requiredSources, + final Cache, SchemaContext> cache, + final AsyncFunction, SchemaContext> assembleSources) { // Make sources unique final List uniqueSourceIdentifiers = deDuplicateSources(requiredSources); @@ -92,7 +92,8 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { } // Request all sources be loaded - ListenableFuture> sf = Futures.allAsList(Collections2.transform(uniqueSourceIdentifiers, requestSources)); + ListenableFuture> sf = Futures.allAsList(Collections2.transform(uniqueSourceIdentifiers, + this::requestSource)); // Detect mismatch between requested Source IDs and IDs that are extracted from parsed source // Also remove duplicates if present @@ -129,12 +130,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { } LOG.warn("Duplicate sources requested for schema context, removed duplicate sources: {}", - Collections2.filter(uniqueSourceIdentifiers, new Predicate() { - @Override - public boolean apply(@Nullable final SourceIdentifier input) { - return Iterables.frequency(requiredSources, input) > 1; - } - })); + Collections2.filter(uniqueSourceIdentifiers, input -> Iterables.frequency(requiredSources, input) > 1)); return ImmutableList.copyOf(uniqueSourceIdentifiers); } @@ -173,20 +169,20 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { private static final class AssembleSources implements AsyncFunction, SchemaContext> { - private final java.util.function.Predicate isFeatureSupported; + private final Predicate isFeatureSupported; private final StatementParserMode statementParserMode; private final Function getIdentifier; - private AssembleSources(final java.util.function.Predicate isFeatureSupported, + private AssembleSources(final Predicate isFeatureSupported, final StatementParserMode statementParserMode) { this.isFeatureSupported = Preconditions.checkNotNull(isFeatureSupported); this.statementParserMode = Preconditions.checkNotNull(statementParserMode); switch (statementParserMode) { case SEMVER_MODE: - this.getIdentifier = ASTSchemaSource.GET_SEMVER_IDENTIFIER; + this.getIdentifier = ASTSchemaSource::getSemVerIdentifier; break; default: - this.getIdentifier = ASTSchemaSource.GET_IDENTIFIER; + this.getIdentifier = ASTSchemaSource::getIdentifier; } } @@ -195,7 +191,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { SourceException, ReactorException { final Map srcs = Maps.uniqueIndex(sources, getIdentifier); final Map deps = - Maps.transformValues(srcs, ASTSchemaSource.GET_DEPINFO); + Maps.transformValues(srcs, ASTSchemaSource::getDependencyInformation); LOG.debug("Resolving dependency reactor {}", deps); @@ -207,7 +203,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { res.getResolvedSources(), res.getUnsatisfiedImports()); } - final Map asts = Maps.transformValues(srcs, ASTSchemaSource.GET_AST); + final Map asts = Maps.transformValues(srcs, ASTSchemaSource::getAST); final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(statementParserMode, isFeatureSupported); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java index cf1f208682..ec0390bead 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveSchemaContext.java @@ -40,25 +40,16 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; abstract class AbstractEffectiveSchemaContext implements SchemaContext { - - protected static final Supplier> MODULE_SET_SUPPLIER = new Supplier>() { - @Override - public NavigableSet get() { - return new TreeSet<>(REVISION_COMPARATOR); + protected static final Comparator REVISION_COMPARATOR = (o1, o2) -> { + if (o2.getRevision() == null) { + return -1; } - }; - - protected static final Comparator REVISION_COMPARATOR = new Comparator() { - @Override - public int compare(final Module o1, final Module o2) { - if (o2.getRevision() == null) { - return -1; - } - return o2.getRevision().compareTo(o1.getRevision()); - } + return o2.getRevision().compareTo(o1.getRevision()); }; + protected static final Supplier> MODULE_SET_SUPPLIER = () -> new TreeSet<>(REVISION_COMPARATOR); + /** * @return yang sources where key is ModuleIdentifier */ diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java index 7794efefad..7f55295465 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/EffectiveStatementBase.java @@ -28,27 +28,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase; public abstract class EffectiveStatementBase> implements EffectiveStatement { - private static final Predicate> IS_SUPPORTED_TO_BUILD_EFFECTIVE = new Predicate>() { - @Override - public boolean apply(final StmtContext input) { - return input.isSupportedToBuildEffective(); - } - }; - - private static final Predicate> IS_UNKNOWN_STATEMENT_CONTEXT = new Predicate>() { - @Override - public boolean apply(final StmtContext input) { - return StmtContextUtils.isUnknownStatement(input); - } - }; - - private static final Predicate> ARE_FEATURES_SUPPORTED = new Predicate>() { - - @Override - public boolean apply(final StatementContextBase input) { - return StmtContextUtils.areFeaturesSupported(input); - } - }; + private static final Predicate> IS_UNKNOWN_STATEMENT_CONTEXT = + StmtContextUtils::isUnknownStatement; + private static final Predicate> IS_NOT_UNKNOWN_STATEMENT_CONTEXT = + Predicates.not(IS_UNKNOWN_STATEMENT_CONTEXT); private final List> substatements; private final List> unknownSubstatementsToBuild; @@ -75,7 +58,7 @@ public abstract class EffectiveStatementBase> final Collection> substatementsInit = new ArrayList<>(); final Collection> supportedDeclaredSubStmts = Collections2.filter( - ctx.declaredSubstatements(), ARE_FEATURES_SUPPORTED); + ctx.declaredSubstatements(), StmtContextUtils::areFeaturesSupported); for (final StatementContextBase declaredSubstatement : supportedDeclaredSubStmts) { if (declaredSubstatement.getPublicDefinition().equals(Rfc6020Mapping.USES)) { substatementsInit.add(declaredSubstatement); @@ -89,12 +72,11 @@ public abstract class EffectiveStatementBase> substatementsInit.addAll(effectiveSubstatements); Collection> substatementsToBuild = Collections2.filter(substatementsInit, - IS_SUPPORTED_TO_BUILD_EFFECTIVE); + StmtContext::isSupportedToBuildEffective); if (!buildUnknownSubstatements) { this.unknownSubstatementsToBuild = ImmutableList.copyOf(Collections2.filter(substatementsToBuild, IS_UNKNOWN_STATEMENT_CONTEXT)); - substatementsToBuild = Collections2.filter(substatementsToBuild, - Predicates.not(IS_UNKNOWN_STATEMENT_CONTEXT)); + substatementsToBuild = Collections2.filter(substatementsToBuild, IS_NOT_UNKNOWN_STATEMENT_CONTEXT); } else { this.unknownSubstatementsToBuild = ImmutableList.of(); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java index 277114de1a..5e3ab5eaab 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java @@ -32,34 +32,14 @@ import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo; */ @Beta public final class ASTSchemaSource implements SchemaSourceRepresentation { - public static final Function GET_IDENTIFIER = new Function() { - @Override - public SourceIdentifier apply(@Nonnull final ASTSchemaSource input) { - Preconditions.checkNotNull(input); - return input.getIdentifier(); - } - }; - public static final Function GET_SEMVER_IDENTIFIER = new Function() { - @Override - public SemVerSourceIdentifier apply(@Nonnull final ASTSchemaSource input) { - Preconditions.checkNotNull(input); - return input.getSemVerIdentifier(); - } - }; - public static final Function GET_DEPINFO = new Function() { - @Override - public YangModelDependencyInfo apply(@Nonnull final ASTSchemaSource input) { - Preconditions.checkNotNull(input); - return input.getDependencyInformation(); - } - }; - public static final Function GET_AST = new Function() { - @Override - public ParserRuleContext apply(@Nonnull final ASTSchemaSource input) { - Preconditions.checkNotNull(input); - return input.getAST(); - } - }; + @Deprecated + public static final Function GET_IDENTIFIER = ASTSchemaSource::getIdentifier; + @Deprecated + public static final Function GET_SEMVER_IDENTIFIER = ASTSchemaSource::getSemVerIdentifier; + @Deprecated + public static final Function GET_DEPINFO = ASTSchemaSource::getDependencyInformation; + @Deprecated + public static final Function GET_AST = ASTSchemaSource::getAST; private final YangModelDependencyInfo depInfo; private final ParserRuleContext tree; -- 2.36.6