Bug 6859 - Binding generator v1 refactoring
[controller.git] / opendaylight / config / config-manager / src / main / java / org / opendaylight / controller / config / manager / impl / dependencyresolver / DependencyResolverImpl.java
index d667f13ec601e23d6b0cb77447dba63a13c9ec56..eb3676ccebff5625db2f68b64b9f834488433ea2 100644 (file)
@@ -56,10 +56,10 @@ final class DependencyResolverImpl implements DependencyResolver,
     private final MBeanServer mBeanServer;
     private Integer maxDependencyDepth;
 
-    DependencyResolverImpl(ModuleIdentifier currentModule,
-                           TransactionStatus transactionStatus, ModulesHolder modulesHolder,
-                           ServiceReferenceReadableRegistry readableRegistry, BindingContextProvider bindingContextProvider,
-                           String transactionName, MBeanServer mBeanServer) {
+    DependencyResolverImpl(final ModuleIdentifier currentModule,
+                           final TransactionStatus transactionStatus, final ModulesHolder modulesHolder,
+                           final ServiceReferenceReadableRegistry readableRegistry, final BindingContextProvider bindingContextProvider,
+                           final String transactionName, final MBeanServer mBeanServer) {
         this.bindingContextProvider = bindingContextProvider;
         this.name = currentModule;
         this.transactionStatus = transactionStatus;
@@ -75,10 +75,10 @@ final class DependencyResolverImpl implements DependencyResolver,
     //TODO: check for cycles
     @Override
     public void validateDependency(
-            Class<? extends AbstractServiceInterface> expectedServiceInterface,
-            ObjectName dependentReadOnlyON, JmxAttribute jmxAttribute) {
+            final Class<? extends AbstractServiceInterface> expectedServiceInterface,
+            final ObjectName dependentReadOnlyON, final JmxAttribute jmxAttribute) {
 
-        transactionStatus.checkNotCommitted();
+        this.transactionStatus.checkNotCommitted();
         if (expectedServiceInterface == null) {
             throw new NullPointerException(
                     "Parameter 'expectedServiceInterface' is null");
@@ -96,7 +96,7 @@ final class DependencyResolverImpl implements DependencyResolver,
         // check that objectName belongs to this transaction - this should be
         // stripped
         // in DynamicWritableWrapper
-        boolean hasTransaction = ObjectNameUtil
+        final boolean hasTransaction = ObjectNameUtil
                 .getTransactionName(dependentReadOnlyON) != null;
         JmxAttributeValidationException.checkCondition(
                 !hasTransaction,
@@ -106,17 +106,17 @@ final class DependencyResolverImpl implements DependencyResolver,
             ), jmxAttribute
         );
 
-        ObjectName newDependentReadOnlyON = translateServiceRefIfPossible(dependentReadOnlyON);
+        final ObjectName newDependentReadOnlyON = translateServiceRefIfPossible(dependentReadOnlyON);
 
-        ModuleIdentifier moduleIdentifier = ObjectNameUtil.fromON(newDependentReadOnlyON, ObjectNameUtil
+        final ModuleIdentifier moduleIdentifier = ObjectNameUtil.fromON(newDependentReadOnlyON, ObjectNameUtil
                 .TYPE_MODULE);
 
-        ModuleFactory foundFactory = modulesHolder.findModuleFactory(moduleIdentifier, jmxAttribute);
+        final ModuleFactory foundFactory = this.modulesHolder.findModuleFactory(moduleIdentifier, jmxAttribute);
 
-        boolean implementsSI = foundFactory
+        final boolean implementsSI = foundFactory
                 .isModuleImplementingServiceInterface(expectedServiceInterface);
         if (!implementsSI) {
-            String message = String.format(
+            final String message = String.format(
                     "Found module factory does not expose expected service interface. "
                             + "Module name is %s : %s, expected service interface %s, dependent module ON %s , "
                             + "attribute %s",
@@ -127,18 +127,18 @@ final class DependencyResolverImpl implements DependencyResolver,
             throw new JmxAttributeValidationException(message, jmxAttribute);
         }
         synchronized (this) {
-            dependencies.add(moduleIdentifier);
+            this.dependencies.add(moduleIdentifier);
         }
     }
 
     // translate from serviceref to module ON
-    private ObjectName translateServiceRefIfPossible(ObjectName dependentReadOnlyON) {
+    private ObjectName translateServiceRefIfPossible(final ObjectName dependentReadOnlyON) {
         ObjectName translatedDependentReadOnlyON = dependentReadOnlyON;
         if (ObjectNameUtil.isServiceReference(translatedDependentReadOnlyON)) {
-            String serviceQName = ObjectNameUtil.getServiceQName(translatedDependentReadOnlyON);
-            String refName = ObjectNameUtil.getReferenceName(translatedDependentReadOnlyON);
+            final String serviceQName = ObjectNameUtil.getServiceQName(translatedDependentReadOnlyON);
+            final String refName = ObjectNameUtil.getReferenceName(translatedDependentReadOnlyON);
             translatedDependentReadOnlyON = ObjectNameUtil.withoutTransactionName( // strip again of transaction name
-                    readableRegistry.lookupConfigBeanByServiceInterfaceName(serviceQName, refName));
+                    this.readableRegistry.lookupConfigBeanByServiceInterfaceName(serviceQName, refName));
         }
         return translatedDependentReadOnlyON;
     }
@@ -148,26 +148,26 @@ final class DependencyResolverImpl implements DependencyResolver,
      */
     //TODO: check for cycles
     @Override
-    public <T> T resolveInstance(Class<T> expectedType, ObjectName dependentReadOnlyON,
-                                 JmxAttribute jmxAttribute) {
-        Module module = resolveModuleInstance(dependentReadOnlyON, jmxAttribute);
+    public <T> T resolveInstance(final Class<T> expectedType, final ObjectName dependentReadOnlyON,
+                                 final JmxAttribute jmxAttribute) {
+        final Module module = resolveModuleInstance(dependentReadOnlyON, jmxAttribute);
 
         synchronized (this) {
-            dependencies.add(module.getIdentifier());
+            this.dependencies.add(module.getIdentifier());
         }
-        AutoCloseable instance = module.getInstance();
+        final AutoCloseable instance = module.getInstance();
         if (instance == null) {
-            String message = String.format(
+            final String message = String.format(
                     "Error while %s resolving instance %s. getInstance() returned null. "
-                            + "Expected type %s , attribute %s", name,
+                            + "Expected type %s , attribute %s", this.name,
                     module.getIdentifier(), expectedType, jmxAttribute
             );
             throw new JmxAttributeValidationException(message, jmxAttribute);
         }
         try {
             return expectedType.cast(instance);
-        } catch (ClassCastException e) {
-            String message = String.format(
+        } catch (final ClassCastException e) {
+            final String message = String.format(
                     "Instance cannot be cast to expected type. Instance class is %s , "
                             + "expected type %s , attribute %s",
                     instance.getClass(), expectedType, jmxAttribute
@@ -176,43 +176,43 @@ final class DependencyResolverImpl implements DependencyResolver,
         }
     }
 
-    private Module resolveModuleInstance(ObjectName dependentReadOnlyON,
-                                 JmxAttribute jmxAttribute) {
+    private Module resolveModuleInstance(final ObjectName dependentReadOnlyON,
+                                 final JmxAttribute jmxAttribute) {
         Preconditions.checkArgument(dependentReadOnlyON != null ,"dependentReadOnlyON");
         Preconditions.checkArgument(jmxAttribute != null, "jmxAttribute");
-        ObjectName translatedDependentReadOnlyON = translateServiceRefIfPossible(dependentReadOnlyON);
-        transactionStatus.checkCommitStarted();
-        transactionStatus.checkNotCommitted();
+        final ObjectName translatedDependentReadOnlyON = translateServiceRefIfPossible(dependentReadOnlyON);
+        this.transactionStatus.checkCommitStarted();
+        this.transactionStatus.checkNotCommitted();
 
-        ModuleIdentifier dependentModuleIdentifier = ObjectNameUtil.fromON(
+        final ModuleIdentifier dependentModuleIdentifier = ObjectNameUtil.fromON(
                 translatedDependentReadOnlyON, ObjectNameUtil.TYPE_MODULE);
 
-        return Preconditions.checkNotNull(modulesHolder.findModule(dependentModuleIdentifier, jmxAttribute));
+        return Preconditions.checkNotNull(this.modulesHolder.findModule(dependentModuleIdentifier, jmxAttribute));
     }
 
     @Override
-    public boolean canReuseDependency(ObjectName objectName, JmxAttribute jmxAttribute) {
+    public boolean canReuseDependency(final ObjectName objectName, final JmxAttribute jmxAttribute) {
         Preconditions.checkNotNull(objectName);
         Preconditions.checkNotNull(jmxAttribute);
 
-        Module currentModule = resolveModuleInstance(objectName, jmxAttribute);
-        ModuleIdentifier identifier = currentModule.getIdentifier();
-        ModuleInternalTransactionalInfo moduleInternalTransactionalInfo = modulesHolder.findModuleInternalTransactionalInfo(identifier);
+        final Module currentModule = resolveModuleInstance(objectName, jmxAttribute);
+        final ModuleIdentifier identifier = currentModule.getIdentifier();
+        final ModuleInternalTransactionalInfo moduleInternalTransactionalInfo = this.modulesHolder.findModuleInternalTransactionalInfo(identifier);
 
         if(moduleInternalTransactionalInfo.hasOldModule()) {
-            Module oldModule = moduleInternalTransactionalInfo.getOldInternalInfo().getReadableModule().getModule();
+            final Module oldModule = moduleInternalTransactionalInfo.getOldInternalInfo().getReadableModule().getModule();
             return currentModule.canReuse(oldModule);
         }
         return false;
     }
 
     @Override
-    public <T extends BaseIdentity> Class<? extends T> resolveIdentity(IdentityAttributeRef identityRef, Class<T> expectedBaseClass) {
+    public <T extends BaseIdentity> Class<? extends T> resolveIdentity(final IdentityAttributeRef identityRef, final Class<T> expectedBaseClass) {
         final QName qName = QName.create(identityRef.getqNameOfIdentity());
-        Class<?> deserialized  = bindingContextProvider.getBindingContext().getIdentityClass(qName);
+        final Class<?> deserialized  = this.bindingContextProvider.getBindingContext().getIdentityClass(qName);
         if (deserialized == null) {
             throw new IllegalStateException("Unable to retrieve identity class for " + qName + ", null response from "
-                    + bindingContextProvider.getBindingContext());
+                    + this.bindingContextProvider.getBindingContext());
         }
         if (expectedBaseClass.isAssignableFrom(deserialized)) {
             return (Class<T>) deserialized;
@@ -224,49 +224,49 @@ final class DependencyResolverImpl implements DependencyResolver,
     }
 
     @Override
-    public <T extends BaseIdentity> void validateIdentity(IdentityAttributeRef identityRef, Class<T> expectedBaseClass, JmxAttribute jmxAttribute) {
+    public <T extends BaseIdentity> void validateIdentity(final IdentityAttributeRef identityRef, final Class<T> expectedBaseClass, final JmxAttribute jmxAttribute) {
         try {
             resolveIdentity(identityRef, expectedBaseClass);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             throw JmxAttributeValidationException.wrap(e, jmxAttribute);
         }
     }
 
     @Override
-    public int compareTo(DependencyResolverImpl o) {
-        transactionStatus.checkCommitStarted();
+    public int compareTo(final DependencyResolverImpl o) {
+        this.transactionStatus.checkCommitStarted();
         return Integer.compare(getMaxDependencyDepth(),
                 o.getMaxDependencyDepth());
     }
 
     int getMaxDependencyDepth() {
-        if (maxDependencyDepth == null) {
+        if (this.maxDependencyDepth == null) {
             throw new IllegalStateException("Dependency depth was not computed");
         }
-        return maxDependencyDepth;
+        return this.maxDependencyDepth;
     }
 
-    void countMaxDependencyDepth(DependencyResolverManager manager) {
+    void countMaxDependencyDepth(final DependencyResolverManager manager) {
         // We can calculate the dependency after second phase commit was started
         // Second phase commit starts after validation and validation adds the dependencies into the dependency resolver, which are necessary for the calculation
         // FIXME generated code for abstract module declares validate method as non-final
         // Overriding the validate would cause recreate every time instead of reuse + also possibly wrong close order if there is another module depending
-        transactionStatus.checkCommitStarted();
-        if (maxDependencyDepth == null) {
-            maxDependencyDepth = getMaxDepth(this, manager,
+        this.transactionStatus.checkCommitStarted();
+        if (this.maxDependencyDepth == null) {
+            this.maxDependencyDepth = getMaxDepth(this, manager,
                     new LinkedHashSet<>());
         }
     }
 
-    private static int getMaxDepth(DependencyResolverImpl impl,
-                                   DependencyResolverManager manager,
-                                   LinkedHashSet<ModuleIdentifier> chainForDetectingCycles) {
+    private static int getMaxDepth(final DependencyResolverImpl impl,
+                                   final DependencyResolverManager manager,
+                                   final LinkedHashSet<ModuleIdentifier> chainForDetectingCycles) {
         int maxDepth = 0;
-        LinkedHashSet<ModuleIdentifier> chainForDetectingCycles2 = new LinkedHashSet<>(
+        final LinkedHashSet<ModuleIdentifier> chainForDetectingCycles2 = new LinkedHashSet<>(
                 chainForDetectingCycles);
         chainForDetectingCycles2.add(impl.getIdentifier());
-        for (ModuleIdentifier dependencyName : impl.dependencies) {
-            DependencyResolverImpl dependentDRI = manager
+        for (final ModuleIdentifier dependencyName : impl.dependencies) {
+            final DependencyResolverImpl dependentDRI = manager
                     .getOrCreate(dependencyName);
             if (chainForDetectingCycles2.contains(dependencyName)) {
                 throw new IllegalStateException(String.format(
@@ -281,7 +281,7 @@ final class DependencyResolverImpl implements DependencyResolver,
                         chainForDetectingCycles2);
                 dependentDRI.maxDependencyDepth = subDepth;
             }
-            if (subDepth + 1 > maxDepth) {
+            if ((subDepth + 1) > maxDepth) {
                 maxDepth = subDepth + 1;
             }
         }
@@ -291,23 +291,23 @@ final class DependencyResolverImpl implements DependencyResolver,
 
     @Override
     public ModuleIdentifier getIdentifier() {
-        return name;
+        return this.name;
     }
 
     @Override
-    public Object getAttribute(ObjectName name, String attribute)
+    public Object getAttribute(final ObjectName name, final String attribute)
             throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException {
         ObjectName newName = translateServiceRefIfPossible(name);
         // add transaction name
-        newName = ObjectNameUtil.withTransactionName(newName, transactionName);
-        return mBeanServer.getAttribute(newName, attribute);
+        newName = ObjectNameUtil.withTransactionName(newName, this.transactionName);
+        return this.mBeanServer.getAttribute(newName, attribute);
     }
 
     @Override
-    public <T> T newMXBeanProxy(ObjectName name, Class<T> interfaceClass) {
+    public <T> T newMXBeanProxy(final ObjectName name, final Class<T> interfaceClass) {
         ObjectName newName = translateServiceRefIfPossible(name);
         // add transaction name
-        newName = ObjectNameUtil.withTransactionName(newName, transactionName);
-        return JMX.newMXBeanProxy(mBeanServer, newName, interfaceClass);
+        newName = ObjectNameUtil.withTransactionName(newName, this.transactionName);
+        return JMX.newMXBeanProxy(this.mBeanServer, newName, interfaceClass);
     }
 }