From 3a764b001fa95704ad88446089db45ea4f38abd5 Mon Sep 17 00:00:00 2001 From: Stephen Kitt Date: Fri, 27 Jul 2018 17:26:11 +0200 Subject: [PATCH] Simplify code using Java 8 features * lambda expressions * method references * ThreadLocal::withInitial * Comparator::comparing * List::sort * Map::computeIfAbsent Change-Id: Ia1eee88a49fe3cb7f07bd90cdaa481ecd5c10003 Signed-off-by: Stephen Kitt --- .../invoke/AbstractMappedRpcInvokerTest.java | 8 ++----- .../codec/impl/DataObjectCodecContext.java | 2 +- .../dom/codec/impl/IdentifiableItemCodec.java | 3 +-- .../model/api/YangSourceDefinition.java | 10 ++++----- .../generator/impl/AbstractTypeGenerator.java | 7 ++---- .../yang/types/AbstractTypeProvider.java | 13 +++++------ .../model/util/BindingGeneratorUtil.java | 22 ++++++++----------- .../generator/test/BaseCompilationTest.java | 3 +-- .../testutils/XtendYangBeanGenerator.java | 3 ++- .../binding/testutils/ExpectedObjects.java | 20 +++++++---------- .../dom/codec/impl/IdentifiableItemCodec.java | 3 +-- .../dom/codec/impl/value/ValueTypeCodec.java | 8 ------- .../model/api/YangSourceDefinition.java | 10 ++++----- .../generator/impl/AugmentToGenType.java | 5 +---- .../generator/impl/ModuleToGenType.java | 3 ++- .../yang/types/TypeProviderImpl.java | 3 ++- .../generator/util/BindingGeneratorUtil.java | 15 +++++-------- .../type/builder/AbstractGeneratedType.java | 5 +++-- .../type/builder/EnumerationBuilderImpl.java | 10 +++------ .../generator/renderers/ClassRenderer.java | 5 +---- .../TransactionCommitDeadlockException.java | 8 ++----- .../AbstractDOMRpcRoutingTableEntry.java | 3 ++- .../mdsal/dom/broker/DOMRpcRouter.java | 2 +- .../mdsal/dom/broker/DOMBrokerTest.java | 17 +++++--------- .../AbstractDOMStoreTreeChangePublisher.java | 2 +- 25 files changed, 70 insertions(+), 120 deletions(-) diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/AbstractMappedRpcInvokerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/AbstractMappedRpcInvokerTest.java index 338fb0d935..2e9d1d1bd0 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/AbstractMappedRpcInvokerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/AbstractMappedRpcInvokerTest.java @@ -81,12 +81,8 @@ public class AbstractMappedRpcInvokerTest { Crate(@Nonnull final RpcService rpcService, @Nullable final DataObject dataObject) { this.rpcService = rpcService; - this.dataObject = new ThreadLocal>() { - @Override - protected Optional initialValue() { - return dataObject == null ? Optional.empty() : Optional.of(dataObject); - } - }; + this.dataObject = + ThreadLocal.withInitial(() -> dataObject == null ? Optional.empty() : Optional.of(dataObject)); } RpcService getRpcService() { diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java index 051cf3d0c7..e893915248 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java @@ -61,7 +61,7 @@ abstract class DataObjectCodecContext METHOD_BY_ALPHABET = (o1, o2) -> o1.getName().compareTo(o2.getName()); + private static final Comparator METHOD_BY_ALPHABET = Comparator.comparing(Method::getName); private final ImmutableMap> leafChild; private final ImmutableMap byYang; diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/IdentifiableItemCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/IdentifiableItemCodec.java index 204396abed..92185cd2f1 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/IdentifiableItemCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/IdentifiableItemCodec.java @@ -14,7 +14,6 @@ import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.reflect.Constructor; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -75,7 +74,7 @@ final class IdentifiableItemCodec implements Codec sortedKeys; if (unsortedKeys.size() > 1) { final List tmp = new ArrayList<>(unsortedKeys); - Collections.sort(tmp, (q1, q2) -> q1.getLocalName().compareToIgnoreCase(q2.getLocalName())); + tmp.sort((q1, q2) -> q1.getLocalName().compareToIgnoreCase(q2.getLocalName())); sortedKeys = tmp; } else { sortedKeys = unsortedKeys; diff --git a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/YangSourceDefinition.java b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/YangSourceDefinition.java index 3304325602..011d66d154 100644 --- a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/YangSourceDefinition.java +++ b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/YangSourceDefinition.java @@ -48,9 +48,8 @@ public abstract class YangSourceDefinition { * @return defining SchemaNodes, guaranteed to be non-empty */ public List getNodes() { - return nodes.stream().filter(node -> { - return node instanceof EffectiveStatement && ((EffectiveStatement) node).getDeclared() != null; - }).collect(Collectors.toList()); + return nodes.stream().filter(node -> node instanceof EffectiveStatement + && ((EffectiveStatement) node).getDeclared() != null).collect(Collectors.toList()); } } @@ -108,9 +107,8 @@ public abstract class YangSourceDefinition { if (module instanceof ModuleEffectiveStatement) { final ModuleEffectiveStatement effective = (ModuleEffectiveStatement) module; - final boolean anyDeclared = nodes.stream().anyMatch(node -> { - return node instanceof EffectiveStatement && ((EffectiveStatement) node).getDeclared() != null; - }); + final boolean anyDeclared = nodes.stream().anyMatch(node -> + node instanceof EffectiveStatement && ((EffectiveStatement) node).getDeclared() != null); if (anyDeclared) { return Optional.of(new Multiple(effective, nodes)); } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java index 306726b674..06d57f2544 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java @@ -930,11 +930,8 @@ abstract class AbstractTypeGenerator { private GeneratedTypeBuilder addRawAugmentGenTypeDefinition(final ModuleContext context, final String augmentPackageName, final Type targetTypeRef, final AugmentationSchemaNode augSchema) { - Map augmentBuilders = genTypeBuilders.get(augmentPackageName); - if (augmentBuilders == null) { - augmentBuilders = new HashMap<>(); - genTypeBuilders.put(augmentPackageName, augmentBuilders); - } + Map augmentBuilders = + genTypeBuilders.computeIfAbsent(augmentPackageName, k -> new HashMap<>()); final String augIdentifier = getAugmentIdentifier(augSchema.getUnknownSchemaNodes()); String augTypeName; diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/AbstractTypeProvider.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/AbstractTypeProvider.java index 022e7605eb..11a0e726de 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/AbstractTypeProvider.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/AbstractTypeProvider.java @@ -1353,11 +1353,8 @@ public abstract class AbstractTypeProvider implements TypeProvider { final Map>> typeDefinitionsDepths = new TreeMap<>(); for (TypeDefinition unsortedTypeDefinition : unsortedTypeDefinitions) { final Integer depth = getTypeDefinitionDepth(unsortedTypeDefinition); - List> typeDefinitionsConcreteDepth = typeDefinitionsDepths.get(depth); - if (typeDefinitionsConcreteDepth == null) { - typeDefinitionsConcreteDepth = new ArrayList<>(); - typeDefinitionsDepths.put(depth, typeDefinitionsConcreteDepth); - } + List> typeDefinitionsConcreteDepth = + typeDefinitionsDepths.computeIfAbsent(depth, k -> new ArrayList<>()); typeDefinitionsConcreteDepth.add(unsortedTypeDefinition); } @@ -1582,11 +1579,11 @@ public abstract class AbstractTypeProvider implements TypeProvider { return sb.toString(); } - private static final Comparator BIT_NAME_COMPARATOR = (o1, o2) -> o1.getName().compareTo(o2.getName()); + private static final Comparator BIT_NAME_COMPARATOR = Comparator.comparing(Bit::getName); private static String bitsToDef(final BitsTypeDefinition type, final String className, final String defaultValue, final boolean isExt) { final List bits = new ArrayList<>(type.getBits()); - Collections.sort(bits, BIT_NAME_COMPARATOR); + bits.sort(BIT_NAME_COMPARATOR); final StringBuilder sb = new StringBuilder(); if (!isExt) { sb.append("new "); @@ -1661,7 +1658,7 @@ public abstract class AbstractTypeProvider implements TypeProvider { } if (module == null) { final List modulesList = new ArrayList<>(modules); - Collections.sort(modulesList, (o1, o2) -> Revision.compare(o1.getRevision(), o2.getRevision())); + modulesList.sort((o1, o2) -> Revision.compare(o1.getRevision(), o2.getRevision())); module = modulesList.get(0); } } else { diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java index f7245e6556..3c4ab789ee 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java @@ -92,10 +92,9 @@ public final class BindingGeneratorUtil { }; private static final Comparator> SUID_MEMBER_COMPARATOR = - (o1, o2) -> o1.getName().compareTo(o2.getName()); + Comparator.comparing(TypeMemberBuilder::getName); - private static final Comparator SUID_NAME_COMPARATOR = - (o1, o2) -> o1.getFullyQualifiedName().compareTo(o2.getFullyQualifiedName()); + private static final Comparator SUID_NAME_COMPARATOR = Comparator.comparing(Type::getFullyQualifiedName); /** * Converts parameterName to valid JAVA parameter name. @@ -395,23 +394,20 @@ public final class BindingGeneratorUtil { private static Iterable sortedCollection(final Comparator comparator, final Collection input) { if (input.size() > 1) { final List ret = new ArrayList<>(input); - Collections.sort(ret, comparator); + ret.sort(comparator); return ret; } else { return input; } } - private static final ThreadLocal SHA1_MD = new ThreadLocal() { - @Override - protected MessageDigest initialValue() { - try { - return MessageDigest.getInstance("SHA"); - } catch (final NoSuchAlgorithmException e) { - throw new IllegalStateException("Failed to get a SHA digest provider", e); - } + private static final ThreadLocal SHA1_MD = ThreadLocal.withInitial(() -> { + try { + return MessageDigest.getInstance("SHA"); + } catch (final NoSuchAlgorithmException e) { + throw new IllegalStateException("Failed to get a SHA digest provider", e); } - }; + }); public static long computeDefaultSUID(final GeneratedTypeBuilderBase to) { final ByteArrayOutputStream bout = new ByteArrayOutputStream(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java index d1d6f396be..c0ca8d4263 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java @@ -17,7 +17,6 @@ import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.function.Supplier; @@ -53,7 +52,7 @@ public abstract class BaseCompilationTest { protected static final void generateTestSources(final List types, final File sourcesOutputDir) throws IOException { - Collections.sort(types, (o1, o2) -> o2.getName().compareTo(o1.getName())); + types.sort((o1, o2) -> o2.getName().compareTo(o1.getName())); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); final Table> generatedFiles = generator.generateFileContent(true); diff --git a/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java b/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java index b67c017681..836f3a1342 100644 --- a/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java +++ b/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java @@ -10,6 +10,7 @@ package org.opendaylight.mdsal.binding.testutils; import ch.vorburger.xtendbeans.XtendBeanGenerator; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.Iterables; +import java.util.Comparator; import java.util.Optional; import org.opendaylight.yangtools.yang.binding.Augmentable; import org.opendaylight.yangtools.yang.binding.Augmentation; @@ -117,7 +118,7 @@ class XtendYangBeanGenerator extends XtendBeanGenerator { StringBuilder sb = new StringBuilder(); optional.get().entrySet().stream() // We sort the augmentations by Class type, because the Map has unpredictable order: - .sorted((e1, e2) -> e1.getKey().getName().compareTo(e2.getKey().getName())) + .sorted(Comparator.comparing(e2 -> e2.getKey().getName())) .forEachOrdered(e -> { sb.append("addAugmentation("); sb.append(stringify(e.getKey())); diff --git a/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/ExpectedObjects.java b/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/ExpectedObjects.java index 7beffb7930..843b7dd5c1 100644 --- a/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/ExpectedObjects.java +++ b/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/ExpectedObjects.java @@ -56,24 +56,20 @@ public final class ExpectedObjects { TreeComplexUsesAugmentBuilder treeComplexUsesAugmentBuilder = new TreeComplexUsesAugmentBuilder(); final Procedure1 _function_2 = (TreeComplexUsesAugmentBuilder it2) -> { ContainerWithUsesBuilder containerWithUsesBuilder = new ContainerWithUsesBuilder(); - final Procedure1 _function_3 = (ContainerWithUsesBuilder it3) -> { - it3.setLeafFromGrouping("foo"); - }; - ContainerWithUses doubleGreaterThan = XtendBuilderExtensions - .operator_doubleGreaterThan( + final Procedure1 _function_3 = + (ContainerWithUsesBuilder it3) -> it3.setLeafFromGrouping("foo"); + ContainerWithUses doubleGreaterThan = XtendBuilderExtensions.operator_doubleGreaterThan( containerWithUsesBuilder, _function_3); it2.setContainerWithUses(doubleGreaterThan); }; - TreeComplexUsesAugment doubleGreaterThan = XtendBuilderExtensions - .operator_doubleGreaterThan( + TreeComplexUsesAugment doubleGreaterThan = XtendBuilderExtensions.operator_doubleGreaterThan( treeComplexUsesAugmentBuilder, _function_2); it1.addAugmentation(TreeComplexUsesAugment.class, doubleGreaterThan); }; - TopLevelList doubleGreaterThan = XtendBuilderExtensions - .operator_doubleGreaterThan(topLevelListBuilder, _function_1); - it.setTopLevelList(Collections - .unmodifiableList(CollectionLiterals.newArrayList(doubleGreaterThan))); + TopLevelList doubleGreaterThan = + XtendBuilderExtensions.operator_doubleGreaterThan(topLevelListBuilder, _function_1); + it.setTopLevelList(Collections.unmodifiableList(CollectionLiterals.newArrayList(doubleGreaterThan))); }; - return XtendBuilderExtensions.operator_doubleGreaterThan(topBuilder, _function); + return XtendBuilderExtensions.operator_doubleGreaterThan(topBuilder, _function); } } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/IdentifiableItemCodec.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/IdentifiableItemCodec.java index 88ff275b0d..5397e50ad4 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/IdentifiableItemCodec.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/IdentifiableItemCodec.java @@ -15,7 +15,6 @@ import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.reflect.Constructor; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -91,7 +90,7 @@ public final class IdentifiableItemCodec implements Codec sortedKeys; if (unsortedKeys.size() > 1) { final List tmp = new ArrayList<>(unsortedKeys); - Collections.sort(tmp, (q1, q2) -> q1.getLocalName().compareToIgnoreCase(q2.getLocalName())); + tmp.sort((q1, q2) -> q1.getLocalName().compareToIgnoreCase(q2.getLocalName())); sortedKeys = tmp; } else { sortedKeys = unsortedKeys; diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/value/ValueTypeCodec.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/value/ValueTypeCodec.java index 0644cb0b20..5a0dbe05db 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/value/ValueTypeCodec.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/value/ValueTypeCodec.java @@ -77,14 +77,6 @@ public abstract class ValueTypeCodec implements Codec { } }; - private static final Callable EMPTY_LOADER = new Callable() { - - @Override - public SchemaUnawareCodec call() { - return EMPTY_CODEC; - } - }; - public static SchemaUnawareCodec getCodecFor(final Class typeClz, final TypeDefinition def) { if (BindingReflections.isBindingClass(typeClz)) { return getCachedSchemaUnawareCodec(typeClz, getCodecLoader(typeClz, def)); diff --git a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/YangSourceDefinition.java b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/YangSourceDefinition.java index e1e717e8e4..ce1c8eabae 100644 --- a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/YangSourceDefinition.java +++ b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/YangSourceDefinition.java @@ -48,9 +48,8 @@ public abstract class YangSourceDefinition { * @return defining SchemaNodes, guaranteed to be non-empty */ public List getNodes() { - return nodes.stream().filter(node -> { - return node instanceof EffectiveStatement && ((EffectiveStatement) node).getDeclared() != null; - }).collect(Collectors.toList()); + return nodes.stream().filter(node -> node instanceof EffectiveStatement + && ((EffectiveStatement) node).getDeclared() != null).collect(Collectors.toList()); } } @@ -108,9 +107,8 @@ public abstract class YangSourceDefinition { if (module instanceof ModuleEffectiveStatement) { final ModuleEffectiveStatement effective = (ModuleEffectiveStatement) module; - final boolean anyDeclared = nodes.stream().anyMatch(node -> { - return node instanceof EffectiveStatement && ((EffectiveStatement) node).getDeclared() != null; - }); + final boolean anyDeclared = nodes.stream().anyMatch(node -> + node instanceof EffectiveStatement && ((EffectiveStatement) node).getDeclared() != null); if (anyDeclared) { return Optional.of(new Multiple(effective, nodes)); } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java index d63d51bf2e..f0d6355cc5 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java @@ -15,7 +15,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -27,7 +26,6 @@ import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext; import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider; import org.opendaylight.mdsal.binding.javav2.generator.util.BindingGeneratorUtil; import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType; -import org.opendaylight.mdsal.binding.javav2.model.api.Type; import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; @@ -40,7 +38,6 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -135,7 +132,7 @@ final class AugmentToGenType { List>> sortedAugmentationsGrouped = new ArrayList<>(augmentationsGrouped.entrySet()); - Collections.sort(sortedAugmentationsGrouped, AUGMENTS_COMP); + sortedAugmentationsGrouped.sort(AUGMENTS_COMP); //process child nodes of grouped augment entries for (Map.Entry> schemaPathAugmentListEntry : sortedAugmentationsGrouped) { diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/ModuleToGenType.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/ModuleToGenType.java index d48a12c159..8be9e735aa 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/ModuleToGenType.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/ModuleToGenType.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableSet; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext; import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider; @@ -98,7 +99,7 @@ final class ModuleToGenType { final List> typeDefinitions = it.allTypedefs(); Preconditions.checkState(typeDefinitions != null, "Type Definitions for module «module.name» cannot be NULL."); - typeDefinitions.stream().filter(typedef -> typedef != null).forEach(typedef -> { + typeDefinitions.stream().filter(Objects::nonNull).forEach(typedef -> { final Type type = ((TypeProviderImpl) typeProvider).generatedTypeForExtendedDefinitionType(typedef, typedef); if (type != null) { diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java index 8b46876dd5..04f48d032a 100755 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java @@ -36,6 +36,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.regex.Matcher; @@ -207,7 +208,7 @@ public final class TypeProviderImpl implements TypeProvider { genTypeDefsContextMap.put(module.getName(), dateTypeMap); } - modulesSortedByDependency.stream().filter(module -> module != null).forEach(module -> { + modulesSortedByDependency.stream().filter(Objects::nonNull).forEach(module -> { ModuleContext context = new ModuleContext(); final String basePackageName = packageNameWithNamespacePrefix(getRootPackageName(module), BindingNamespaceType.Typedef); diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java index 81b01c5d2e..1c3a6d5960 100644 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java @@ -421,16 +421,13 @@ public final class BindingGeneratorUtil { } } - private static final ThreadLocal SHA1_MD = new ThreadLocal() { - @Override - protected MessageDigest initialValue() { - try { - return MessageDigest.getInstance("SHA"); - } catch (final NoSuchAlgorithmException e) { - throw new IllegalStateException("Failed to get a SHA digest provider", e); - } + private static final ThreadLocal SHA1_MD = ThreadLocal.withInitial(() -> { + try { + return MessageDigest.getInstance("SHA"); + } catch (final NoSuchAlgorithmException e) { + throw new IllegalStateException("Failed to get a SHA digest provider", e); } - }; + }); private static String generateNormalizedPackageName(final String base, final Iterable path, final int size, final BindingNamespaceType namespaceType) { diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/AbstractGeneratedType.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/AbstractGeneratedType.java index fbdfe48351..5450d6e79f 100755 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/AbstractGeneratedType.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/AbstractGeneratedType.java @@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; import org.opendaylight.mdsal.binding.javav2.generator.util.AbstractBaseType; @@ -101,9 +102,9 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat private static List toUnmodifiableEnclosedTypes(final List enclosedGenTypeBuilders, final List enclosedGenTOBuilders) { final ArrayList enclosedTypesList = new ArrayList<>(enclosedGenTypeBuilders.size() + enclosedGenTOBuilders.size()); - enclosedTypesList.addAll(enclosedGenTypeBuilders.stream().filter(builder -> builder != null).map(GeneratedTypeBuilder::toInstance).collect(Collectors.toList())); + enclosedTypesList.addAll(enclosedGenTypeBuilders.stream().filter(Objects::nonNull).map(GeneratedTypeBuilder::toInstance).collect(Collectors.toList())); - enclosedTypesList.addAll(enclosedGenTOBuilders.stream().filter(builder -> builder != null).map(GeneratedTOBuilder::toInstance).collect(Collectors.toList())); + enclosedTypesList.addAll(enclosedGenTOBuilders.stream().filter(Objects::nonNull).map(GeneratedTOBuilder::toInstance).collect(Collectors.toList())); return makeUnmodifiable(enclosedTypesList); } diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java index ea4921941f..3d02b03dbb 100755 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java @@ -35,7 +35,6 @@ import org.opendaylight.yangtools.util.LazyCollections; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair; @Beta public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuilder { @@ -109,12 +108,9 @@ public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuil @Override public void updateEnumPairsFromEnumTypeDef(final EnumTypeDefinition enumTypeDef) { - final List enums = enumTypeDef.getValues(); - if (enums != null) { - enums.stream().filter(enumPair -> enumPair != null).forEach(enumPair -> this.addValue(enumPair.getName(), - enumPair.getValue(), enumPair.getDescription().orElse(null), enumPair.getReference().orElse(null), - enumPair.getStatus())); - } + enumTypeDef.getValues().stream().filter(Objects::nonNull).forEach(enumPair -> this.addValue(enumPair.getName(), + enumPair.getValue(), enumPair.getDescription().orElse(null), enumPair.getReference().orElse(null), + enumPair.getStatus())); } private static final class EnumPairImpl implements Enumeration.Pair { diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java index e4900b8352..8137627cc4 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java @@ -20,12 +20,9 @@ import java.beans.ConstructorProperties; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Objects; import org.opendaylight.mdsal.binding.javav2.java.api.generator.rangeGenerators.AbstractRangeGenerator; import org.opendaylight.mdsal.binding.javav2.java.api.generator.rangeGenerators.LengthGenerator; @@ -75,7 +72,7 @@ public class ClassRenderer extends BaseRenderer { final String name1 = p2.getName(); return name.compareTo(name1); }; - Collections.sort(sorted, function); + sorted.sort(function); allProperties = ImmutableList.copyOf(sorted); if (restrictions != null && restrictions.getRangeConstraint().isPresent()) { diff --git a/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/TransactionCommitDeadlockException.java b/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/TransactionCommitDeadlockException.java index b251de1021..4a215b770a 100644 --- a/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/TransactionCommitDeadlockException.java +++ b/common/mdsal-common-api/src/main/java/org/opendaylight/mdsal/common/api/TransactionCommitDeadlockException.java @@ -37,12 +37,8 @@ public class TransactionCommitDeadlockException extends TransactionCommitFailedE private static final RpcError DEADLOCK_RPCERROR = RpcResultBuilder.newError(ErrorType.APPLICATION, "lock-denied", DEADLOCK_MESSAGE); - public static final Supplier DEADLOCK_EXCEPTION_SUPPLIER = new Supplier() { - @Override - public Exception get() { - return new TransactionCommitDeadlockException(DEADLOCK_MESSAGE, DEADLOCK_RPCERROR); - } - }; + public static final Supplier DEADLOCK_EXCEPTION_SUPPLIER = + () -> new TransactionCommitDeadlockException(DEADLOCK_MESSAGE, DEADLOCK_RPCERROR); public TransactionCommitDeadlockException(final String message, final RpcError... errors) { super(message, errors); diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRpcRoutingTableEntry.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRpcRoutingTableEntry.java index 9d6f58e5ab..04a90d7d61 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRpcRoutingTableEntry.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRpcRoutingTableEntry.java @@ -14,6 +14,7 @@ import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.Maps; import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -79,7 +80,7 @@ abstract class AbstractDOMRpcRoutingTableEntry { // New implementation is at the end, this will move it to be the last among implementations // with equal cost -- relying on sort() being stable. - i.sort((i1, i2) -> Long.compare(i1.invocationCost(), i2.invocationCost())); + i.sort(Comparator.comparingLong(DOMRpcImplementation::invocationCost)); vb.put(ve.getKey(), i); } else { vb.put(ve); diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java index 145059ca69..b27dd95a6b 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java @@ -235,7 +235,7 @@ public final class DOMRpcRouter extends AbstractRegistration implements SchemaCo b.add(ret); listeners = b.build(); - listenerNotifier.execute(() -> ret.initialTable()); + listenerNotifier.execute(ret::initialTable); return ret; } } diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java index 633d395398..b9c7ad5657 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java @@ -159,18 +159,13 @@ public class DOMBrokerTest { @SuppressWarnings("checkstyle:IllegalCatch") AtomicReference submitTxAsync(final DOMDataTreeWriteTransaction writeTx) { final AtomicReference caughtEx = new AtomicReference<>(); - new Thread() { - @Override - public void run() { - - try { - writeTx.commit(); - } catch (final Throwable e) { - caughtEx.set(e); - } + new Thread(() -> { + try { + writeTx.commit(); + } catch (final Throwable e) { + caughtEx.set(e); } - - }.start(); + }).start(); return caughtEx; } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java index 2d9bf97364..9b86574994 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java @@ -39,7 +39,7 @@ public abstract class AbstractDOMStoreTreeChangePublisher implements DOMStoreTreeChangePublisher { private static final Logger LOG = LoggerFactory.getLogger(AbstractDOMStoreTreeChangePublisher.class); - private static final Supplier> LIST_SUPPLIER = () -> new ArrayList<>(); + private static final Supplier> LIST_SUPPLIER = ArrayList::new; /** * Callback for subclass to notify a specified registration of a list of candidates. This method is guaranteed -- 2.36.6