From 35624f56612e0b8ca641c2fc5fed25f1c7628e51 Mon Sep 17 00:00:00 2001 From: Stephen Kitt Date: Thu, 18 May 2017 11:29:32 +0200 Subject: [PATCH] Simplify code with new Map features MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This is mostly computeIfAbsent to replace the “get, if null, initialise and put” pattern. Change-Id: Ie866025c3a6d5099f6f5494ab9d4437d7e9d2320 Signed-off-by: Stephen Kitt --- .../config/api/ValidationException.java | 6 +-- .../facade/xml/ConfigSubsystemFacade.java | 38 ++++++++----------- .../config/facade/xml/RpcFacade.java | 21 ++++------ .../facade/xml/mapping/config/Config.java | 6 +-- .../config/ServiceRegistryWrapper.java | 17 +++------ .../facade/xml/mapping/config/Services.java | 35 ++++++----------- .../config/facade/xml/rpc/ModuleRpcs.java | 12 ++---- .../config/facade/xml/runtime/Runtime.java | 6 +-- .../impl/ServiceReferenceRegistryImpl.java | 20 +++------- .../cluster/raft/utils/InMemoryJournal.java | 8 +--- .../raft/utils/InMemorySnapshotStore.java | 7 +--- .../config/FileModuleShardConfigProvider.java | 6 +-- .../cluster/datastore/utils/ClusterUtils.java | 8 ++-- .../sharding/DistributedShardFrontend.java | 7 +--- .../dom/broker/impl/ShardedDOMDataTree.java | 6 +-- .../dom/broker/impl/ShardingTableEntry.java | 6 +-- 16 files changed, 62 insertions(+), 147 deletions(-) diff --git a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ValidationException.java b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ValidationException.java index f1c90920be..1d528e5b00 100644 --- a/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ValidationException.java +++ b/opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/api/ValidationException.java @@ -43,11 +43,7 @@ public class ValidationException extends Exception { String instanceName = innerEntry.getKey(); ExceptionMessageWithStackTrace ex = innerEntry.getValue(); Map instanceToExMap = failedValidations - .get(moduleName); - if (instanceToExMap == null) { - instanceToExMap = new HashMap<>(); - failedValidations.put(moduleName, instanceToExMap); - } + .computeIfAbsent(moduleName, k -> new HashMap<>()); if (instanceToExMap.containsKey(instanceName)) { throw new IllegalArgumentException( "Cannot merge with same module name " diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/ConfigSubsystemFacade.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/ConfigSubsystemFacade.java index 781bda575f..2b4e633646 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/ConfigSubsystemFacade.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/ConfigSubsystemFacade.java @@ -9,10 +9,10 @@ package org.opendaylight.controller.config.facade.xml; import com.google.common.base.Optional; -import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import java.io.Closeable; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -263,22 +263,16 @@ public class ConfigSubsystemFacade implements Closeable { } private static Map> transformIdentities(final Set modules) { - Map> mappedIds = Maps.newHashMap(); + Map> mappedIds = new HashMap<>(); for (Module module : modules) { String namespace = module.getNamespace().toString(); - Map revisionsByNamespace = mappedIds.get(namespace); - if (revisionsByNamespace == null) { - revisionsByNamespace = Maps.newHashMap(); - mappedIds.put(namespace, revisionsByNamespace); - } + Map revisionsByNamespace = + mappedIds.computeIfAbsent(namespace, k -> new HashMap<>()); Date revision = module.getRevision(); - IdentityMapping identityMapping = revisionsByNamespace.get(revision); - if (identityMapping == null) { - identityMapping = new IdentityMapping(); - revisionsByNamespace.put(revision, identityMapping); - } + IdentityMapping identityMapping = + revisionsByNamespace.computeIfAbsent(revision, k -> new IdentityMapping()); for (IdentitySchemaNode identitySchemaNode : module.getIdentities()) { identityMapping.addIdSchemaNode(identitySchemaNode); @@ -302,7 +296,7 @@ public class ConfigSubsystemFacade implements Closeable { final Map> mBeanEntries) { - Map> namespaceToModuleNameToModuleConfig = Maps.newHashMap(); + Map> namespaceToModuleNameToModuleConfig = new HashMap<>(); for (Map.Entry> namespaceToModuleToMbe : mBeanEntries.entrySet()) { for (Map.Entry moduleNameToMbe : namespaceToModuleToMbe.getValue().entrySet()) { @@ -312,11 +306,9 @@ public class ConfigSubsystemFacade implements Closeable { ModuleConfig moduleConfig = new ModuleConfig(moduleName, new InstanceConfig(reader, moduleMXBeanEntry.getAttributes(), moduleMXBeanEntry.getNullableDummyContainerName())); - Map moduleNameToModuleConfig = namespaceToModuleNameToModuleConfig.get(namespaceToModuleToMbe.getKey()); - if (moduleNameToModuleConfig == null) { - moduleNameToModuleConfig = Maps.newHashMap(); - namespaceToModuleNameToModuleConfig.put(namespaceToModuleToMbe.getKey(), moduleNameToModuleConfig); - } + Map moduleNameToModuleConfig = + namespaceToModuleNameToModuleConfig.computeIfAbsent(namespaceToModuleToMbe.getKey(), + k -> new HashMap<>()); moduleNameToModuleConfig.put(moduleName, moduleConfig); } @@ -331,17 +323,17 @@ public class ConfigSubsystemFacade implements Closeable { private Map> createModuleRuntimes(final ConfigRegistryClient configRegistryClient, final Map> mBeanEntries) { - Map> retVal = Maps.newHashMap(); + Map> retVal = new HashMap<>(); for (Map.Entry> namespaceToModuleEntry : mBeanEntries.entrySet()) { - Map innerMap = Maps.newHashMap(); + Map innerMap = new HashMap<>(); Map entriesFromNamespace = namespaceToModuleEntry.getValue(); for (Map.Entry moduleToMXEntry : entriesFromNamespace.entrySet()) { ModuleMXBeanEntry mbe = moduleToMXEntry.getValue(); - Map cache = Maps.newHashMap(); + Map cache = new HashMap<>(); RuntimeBeanEntry root = null; for (RuntimeBeanEntry rbe : mbe.getRuntimeBeans()) { cache.put(rbe, new InstanceConfig(configRegistryClient, rbe.getYangPropertiesToTypesMap(), mbe.getNullableDummyContainerName())); @@ -365,7 +357,7 @@ public class ConfigSubsystemFacade implements Closeable { } private InstanceRuntime createInstanceRuntime(final RuntimeBeanEntry root, final Map cache) { - Map children = Maps.newHashMap(); + Map children = new HashMap<>(); for (RuntimeBeanEntry child : root.getChildren()) { children.put(child.getJavaNamePrefix(), createInstanceRuntime(child, cache)); } @@ -374,7 +366,7 @@ public class ConfigSubsystemFacade implements Closeable { } private Map createJmxToYangMap(final List children) { - Map jmxToYangNamesForChildRbe = Maps.newHashMap(); + Map jmxToYangNamesForChildRbe = new HashMap<>(); for (RuntimeBeanEntry rbe : children) { jmxToYangNamesForChildRbe.put(rbe.getJavaNamePrefix(), rbe.getYangName()); } diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/RpcFacade.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/RpcFacade.java index dd4bd5b9de..37043eb9ab 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/RpcFacade.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/RpcFacade.java @@ -10,7 +10,8 @@ package org.opendaylight.controller.config.facade.xml; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; +import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import javax.management.ObjectName; import javax.management.openmbean.OpenType; @@ -48,23 +49,17 @@ public class RpcFacade { public Rpcs mapRpcs() { - final Map> map = Maps.newHashMap(); + final Map> map = new HashMap<>(); for (final Map.Entry> namespaceToModuleEntry : yangStoreService.getModuleMXBeanEntryMap().entrySet()) { - Map namespaceToModules = map.get(namespaceToModuleEntry.getKey()); - if (namespaceToModules == null) { - namespaceToModules = Maps.newHashMap(); - map.put(namespaceToModuleEntry.getKey(), namespaceToModules); - } + Map namespaceToModules = + map.computeIfAbsent(namespaceToModuleEntry.getKey(), k -> new HashMap<>()); for (final Map.Entry moduleEntry : namespaceToModuleEntry.getValue().entrySet()) { - ModuleRpcs rpcMapping = namespaceToModules.get(moduleEntry.getKey()); - if (rpcMapping == null) { - rpcMapping = new ModuleRpcs(yangStoreService.getEnumResolver()); - namespaceToModules.put(moduleEntry.getKey(), rpcMapping); - } + ModuleRpcs rpcMapping = namespaceToModules.computeIfAbsent(moduleEntry.getKey(), + k -> new ModuleRpcs(yangStoreService.getEnumResolver())); final ModuleMXBeanEntry entry = moduleEntry.getValue(); @@ -108,7 +103,7 @@ public class RpcFacade { private Map sortAttributes( final Map attributes, final XmlElement xml) { - final Map sorted = Maps.newLinkedHashMap(); + final Map sorted = new LinkedHashMap<>(); for (XmlElement xmlElement : xml.getChildElements()) { final String name = xmlElement.getName(); diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Config.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Config.java index 21b74da6cd..d40bfe1d80 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Config.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Config.java @@ -220,11 +220,7 @@ public class Config { ModuleConfig moduleMapping = getModuleMapping(moduleNamespace, instanceName, factoryName); - Multimap innerMap = retVal.get(moduleNamespace); - if (innerMap == null) { - innerMap = HashMultimap.create(); - retVal.put(moduleNamespace, innerMap); - } + Multimap innerMap = retVal.computeIfAbsent(moduleNamespace, k -> HashMultimap.create()); T resolvedElement = resolvingStrategy.resolveElement(moduleMapping, moduleElement, serviceTracker, instanceName, moduleNamespace, defaultStrategy); diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/ServiceRegistryWrapper.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/ServiceRegistryWrapper.java index b9e5f0f5b5..eab120a3ba 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/ServiceRegistryWrapper.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/ServiceRegistryWrapper.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.config.facade.xml.mapping.config; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import javax.management.InstanceNotFoundException; import javax.management.ObjectName; @@ -64,7 +64,7 @@ public class ServiceRegistryWrapper { } public Map>> getMappedServices() { - Map>> retVal = Maps.newHashMap(); + Map>> retVal = new HashMap<>(); Map> serviceMapping = configServiceRefRegistry.getServiceMapping(); for (Map.Entry> qNameToRefNameEntry : serviceMapping.entrySet()){ @@ -75,18 +75,11 @@ public class ServiceRegistryWrapper { QName qname = QName.create(qNameToRefNameEntry.getKey()); String namespace = qname.getNamespace().toString(); - Map> serviceToRefs = retVal.get(namespace); - if(serviceToRefs==null) { - serviceToRefs = Maps.newHashMap(); - retVal.put(namespace, serviceToRefs); - } + Map> serviceToRefs = + retVal.computeIfAbsent(namespace, k -> new HashMap<>()); String localName = qname.getLocalName(); - Map refsToSis = serviceToRefs.get(localName); - if(refsToSis==null) { - refsToSis = Maps.newHashMap(); - serviceToRefs.put(localName, refsToSis); - } + Map refsToSis = serviceToRefs.computeIfAbsent(localName, k -> new HashMap<>()); Preconditions.checkState(!refsToSis.containsKey(refName), "Duplicate reference name %s for service %s:%s, now for instance %s", refName, namespace, diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Services.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Services.java index 4ee1bcaf0b..9853bc79a2 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Services.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/mapping/config/Services.java @@ -11,7 +11,7 @@ package org.opendaylight.controller.config.facade.xml.mapping.config; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -36,8 +36,8 @@ public final class Services { public static final String TYPE_KEY = "type"; public static final String SERVICE_KEY = "service"; - private final Map>> namespaceToServiceNameToRefNameToInstance = Maps - .newHashMap(); + private final Map>> + namespaceToServiceNameToRefNameToInstance = new HashMap<>(); /** * @@ -57,18 +57,12 @@ public final class Services { String serviceName = serviceEntry.getKey(); for (Entry refEntry : serviceEntry.getValue().entrySet()) { - Map> namespaceToServices = tracker.namespaceToServiceNameToRefNameToInstance.get(namespace); - if (namespaceToServices == null) { - namespaceToServices = Maps.newHashMap(); - tracker.namespaceToServiceNameToRefNameToInstance.put(namespace, namespaceToServices); - } + Map> namespaceToServices = + tracker.namespaceToServiceNameToRefNameToInstance.computeIfAbsent(namespace, + k -> new HashMap<>()); Map refNameToInstance = namespaceToServices - .get(serviceName); - if (refNameToInstance == null) { - refNameToInstance = Maps.newHashMap(); - namespaceToServices.put(serviceName, refNameToInstance); - } + .computeIfAbsent(serviceName, k -> new HashMap<>()); String refName = refEntry.getKey(); //we want to compare reference not value of the provider @@ -86,7 +80,7 @@ public final class Services { // TODO support edit strategies on services public static Services fromXml(final XmlElement xml) throws DocumentedException { - Map>> retVal = Maps.newHashMap(); + Map>> retVal = new HashMap<>(); List services = xml.getChildElements(SERVICE_KEY); xml.checkUnrecognisedElements(services); @@ -98,20 +92,13 @@ public final class Services { Preconditions.checkState(prefixNamespace.getKey()!=null && !prefixNamespace.getKey().equals(""), "Type attribute was not prefixed"); - Map> namespaceToServices = retVal.get(prefixNamespace.getValue()); - if(namespaceToServices == null) { - namespaceToServices = Maps.newHashMap(); - retVal.put(prefixNamespace.getValue(), namespaceToServices); - } + Map> namespaceToServices = + retVal.computeIfAbsent(prefixNamespace.getValue(), k -> new HashMap<>()); String serviceName = ObjectNameAttributeReadingStrategy .checkPrefixAndExtractServiceName(typeElement, prefixNamespace); - Map innerMap = namespaceToServices.get(serviceName); - if (innerMap == null) { - innerMap = Maps.newHashMap(); - namespaceToServices.put(serviceName, innerMap); - } + Map innerMap = namespaceToServices.computeIfAbsent(serviceName, k -> new HashMap<>()); List instances = service.getChildElements(XmlMappingConstants.INSTANCE_KEY); service.checkUnrecognisedElements(instances, typeElement); diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/rpc/ModuleRpcs.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/rpc/ModuleRpcs.java index 6c26bf1bf8..8ce71a1dc5 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/rpc/ModuleRpcs.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/rpc/ModuleRpcs.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.config.facade.xml.rpc; import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; +import java.util.HashMap; import java.util.Map; import org.opendaylight.controller.config.facade.xml.osgi.EnumResolver; import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry; @@ -17,8 +17,8 @@ import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry.Rpc; public final class ModuleRpcs { - private final Map yangToJavaNames = Maps.newHashMap(); - private final Map> rpcMapping = Maps.newHashMap(); + private final Map yangToJavaNames = new HashMap<>(); + private final Map> rpcMapping = new HashMap<>(); private final EnumResolver enumResolver; public ModuleRpcs(final EnumResolver enumResolver) { @@ -34,11 +34,7 @@ public final class ModuleRpcs { public void addRpc(RuntimeBeanEntry runtimeEntry, Rpc rpc) { String yangName = runtimeEntry.getYangName(); - Map map = rpcMapping.get(yangName); - if (map == null) { - map = Maps.newHashMap(); - rpcMapping.put(yangName, map); - } + Map map = rpcMapping.computeIfAbsent(yangName, k -> new HashMap<>()); Preconditions.checkState(!map.containsKey(rpc.getYangName()), "Rpc %s for runtime bean %s added twice", rpc.getYangName(), yangName); diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/runtime/Runtime.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/runtime/Runtime.java index 93127d0b1f..f58a9d8d37 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/runtime/Runtime.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/runtime/Runtime.java @@ -46,11 +46,7 @@ public class Runtime { for (ObjectName objectName : instancesToMap) { String moduleName = ObjectNameUtil.getFactoryName(objectName); - Multimap multimap = retVal.get(moduleName); - if (multimap == null) { - multimap = HashMultimap.create(); - retVal.put(moduleName, multimap); - } + Multimap multimap = retVal.computeIfAbsent(moduleName, k -> HashMultimap.create()); String instanceName = ObjectNameUtil.getInstanceName(objectName); diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ServiceReferenceRegistryImpl.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ServiceReferenceRegistryImpl.java index baa02edf3c..2b7e2622ba 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ServiceReferenceRegistryImpl.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ServiceReferenceRegistryImpl.java @@ -89,11 +89,8 @@ public class ServiceReferenceRegistryImpl implements CloseableServiceReferenceRe Map> modifiableNamespacesToAnnotations = new HashMap<>(); Map modifiableServiceQNamesToAnnotations = new HashMap<>(); for (ServiceInterfaceAnnotation sia : allAnnotations) { - Map ofNamespace = modifiableNamespacesToAnnotations.get(sia.namespace()); - if (ofNamespace == null) { - ofNamespace = new HashMap<>(); - modifiableNamespacesToAnnotations.put(sia.namespace(), ofNamespace); - } + Map ofNamespace = + modifiableNamespacesToAnnotations.computeIfAbsent(sia.namespace(), k -> new HashMap<>()); if (ofNamespace.containsKey(sia.localName())) { LOG.error( "Cannot construct namespacesToAnnotations map, conflict between local names in {}, offending local name: {}, map so far {}", @@ -290,11 +287,7 @@ public class ServiceReferenceRegistryImpl implements CloseableServiceReferenceRe Map> result = new HashMap<>(); for (Entry entry: refNames.entrySet()) { String qName = entry.getKey().getServiceInterfaceQName(); - Map innerMap = result.get(qName); - if (innerMap == null) { - innerMap = new HashMap<>(); - result.put(qName, innerMap); - } + Map innerMap = result.computeIfAbsent(qName, k -> new HashMap<>()); innerMap.put(entry.getKey().getRefName(), getObjectName(entry.getValue())); } return result; @@ -421,11 +414,8 @@ public class ServiceReferenceRegistryImpl implements CloseableServiceReferenceRe } // save to refNames refNames.put(serviceReference, moduleIdentifier); - Map refNamesToAnnotations = modulesToServiceRef.get(moduleIdentifier); - if (refNamesToAnnotations == null){ - refNamesToAnnotations = new HashMap<>(); - modulesToServiceRef.put(moduleIdentifier, refNamesToAnnotations); - } + Map refNamesToAnnotations = + modulesToServiceRef.computeIfAbsent(moduleIdentifier, k -> new HashMap<>()); ServiceInterfaceAnnotation annotation = serviceQNamesToAnnotations.get(serviceReference.getServiceInterfaceQName()); Preconditions.checkNotNull(annotation, "Possible error in code, cannot find annotation for " + serviceReference); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java index c17c29c0fd..9964ceb675 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java @@ -12,12 +12,12 @@ import akka.persistence.AtomicWrite; import akka.persistence.PersistentImpl; import akka.persistence.PersistentRepr; import akka.persistence.journal.japi.AsyncWriteJournal; -import com.google.common.collect.Maps; import com.google.common.util.concurrent.Uninterruptibles; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -62,11 +62,7 @@ public class InMemoryJournal extends AsyncWriteJournal { } public static void addEntry(String persistenceId, long sequenceNr, Object data) { - Map journal = JOURNALS.get(persistenceId); - if (journal == null) { - journal = Maps.newLinkedHashMap(); - JOURNALS.put(persistenceId, journal); - } + Map journal = JOURNALS.computeIfAbsent(persistenceId, k -> new LinkedHashMap<>()); synchronized (journal) { journal.put(sequenceNr, data instanceof Serializable diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java index 49aec66e72..699a5e3daf 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java @@ -42,12 +42,7 @@ public class InMemorySnapshotStore extends SnapshotStore { private static Map> snapshots = new ConcurrentHashMap<>(); public static void addSnapshot(String persistentId, Object snapshot) { - List snapshotList = snapshots.get(persistentId); - - if (snapshotList == null) { - snapshotList = new ArrayList<>(); - snapshots.put(persistentId, snapshotList); - } + List snapshotList = snapshots.computeIfAbsent(persistentId, k -> new ArrayList<>()); synchronized (snapshotList) { snapshotList.add(new StoredSnapshot(new SnapshotMetadata(persistentId, snapshotList.size(), diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java index 2920f45fe9..a37dcc6ef9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java @@ -73,11 +73,7 @@ public class FileModuleShardConfigProvider implements ModuleShardConfigProvider ConfigObjectWrapper wrapper = new ConfigObjectWrapper(o); String moduleName = wrapper.stringValue("name"); - ModuleConfig.Builder builder = moduleConfigMap.get(moduleName); - if (builder == null) { - builder = ModuleConfig.builder(moduleName); - moduleConfigMap.put(moduleName, builder); - } + ModuleConfig.Builder builder = moduleConfigMap.computeIfAbsent(moduleName, ModuleConfig::builder); builder.nameSpace(wrapper.stringValue("namespace")); builder.shardStrategy(ShardStrategyFactory.newShardStrategyInstance(moduleName, diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ClusterUtils.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ClusterUtils.java index 2fb9cf1cda..06bb712fd8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ClusterUtils.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/ClusterUtils.java @@ -8,7 +8,6 @@ package org.opendaylight.controller.cluster.datastore.utils; -import java.util.Map; import org.opendaylight.controller.cluster.access.concepts.MemberName; import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; @@ -80,10 +79,9 @@ public class ClusterUtils { builder.append(p.getNodeType().getLocalName()); if (p instanceof NodeIdentifierWithPredicates) { builder.append("-key_"); - final Map key = ((NodeIdentifierWithPredicates) p).getKeyValues(); - key.entrySet().forEach(e -> { - builder.append(e.getKey().getLocalName()); - builder.append(e.getValue()); + ((NodeIdentifierWithPredicates) p).getKeyValues().forEach((key, value) -> { + builder.append(key.getLocalName()); + builder.append(value); builder.append("-"); }); builder.append("_"); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java index fb55b3a299..31bc8b6949 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java @@ -108,11 +108,8 @@ class DistributedShardFrontend implements ReadableWriteableDOMDataTreeShard { continue; } - SubshardProducerSpecification spec = affectedSubshards.get(maybeAffected.getPrefix()); - if (spec == null) { - spec = new SubshardProducerSpecification(maybeAffected); - affectedSubshards.put(maybeAffected.getPrefix(), spec); - } + SubshardProducerSpecification spec = affectedSubshards.computeIfAbsent(maybeAffected.getPrefix(), + k -> new SubshardProducerSpecification(maybeAffected)); spec.addPrefix(bindPath); } } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardedDOMDataTree.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardedDOMDataTree.java index 638e585535..cd9f7bd379 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardedDOMDataTree.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardedDOMDataTree.java @@ -45,11 +45,7 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree @GuardedBy("this") private void storeShard(final DOMDataTreeIdentifier prefix, final ShardRegistration reg) { - ShardingTableEntry t = shardingTables.get(prefix.getDatastoreType()); - if (t == null) { - t = new ShardingTableEntry(); - shardingTables.put(prefix.getDatastoreType(), t); - } + ShardingTableEntry t = shardingTables.computeIfAbsent(prefix.getDatastoreType(), k -> new ShardingTableEntry()); t.store(prefix.getRootIdentifier(), reg); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardingTableEntry.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardingTableEntry.java index fcd0ebdca0..1fdbb6d2e4 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardingTableEntry.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/ShardingTableEntry.java @@ -64,11 +64,7 @@ final class ShardingTableEntry implements Identifiable { while (it.hasNext()) { final PathArgument a = it.next(); - ShardingTableEntry child = entry.children.get(a); - if (child == null) { - child = new ShardingTableEntry(a); - entry.children.put(a, child); - } + ShardingTableEntry child = entry.children.computeIfAbsent(a, ShardingTableEntry::new); } Preconditions.checkState(entry.registration == null); -- 2.36.6