+ private void assertFactoryMethods(Set<String> methods, int expectedSize) {
+
+ List<ArgumentAssertion> args = Lists.newArrayList();
+ ArgumentAssertion oldInstanceArg = new ArgumentAssertion(DynamicMBeanWithInstance.class.getCanonicalName(), "old");
+ ArgumentAssertion instanceNameArg = new ArgumentAssertion(String.class.getSimpleName(), "instanceName");
+ ArgumentAssertion dependencyResolverArg = new ArgumentAssertion(DependencyResolver.class.getCanonicalName(), "dependencyResolver");
+ ArgumentAssertion bundleContextArg = new ArgumentAssertion(BundleContext.class.getCanonicalName(), "bundleContext");
+
+ assertMethodPresent(methods, new MethodAssertion(String.class.getSimpleName(), "getImplementationName"));
+
+ args.add(instanceNameArg);
+ args.add(dependencyResolverArg);
+ args.add(bundleContextArg);
+ assertMethodPresent(methods, new MethodAssertion(Module.class.getCanonicalName(), "createModule", args));
+
+ args.add(2, oldInstanceArg);
+ assertMethodPresent(methods, new MethodAssertion(Module.class.getCanonicalName(), "createModule", args));
+
+ args.clear();
+ args.add(oldInstanceArg);
+ assertMethodPresent(methods, new MethodAssertion("org.opendaylight.controller.config.threads.java.NamingThreadFactoryModule", "handleChangedClass", args));
+
+ args.clear();
+ args.add(instanceNameArg);
+ args.add(dependencyResolverArg);
+ args.add(bundleContextArg);
+ assertMethodPresent(methods, new MethodAssertion("org.opendaylight.controller.config.threads.java.NamingThreadFactoryModule", "instantiateModule", args));
+
+
+ args.add(2, new ArgumentAssertion("org.opendaylight.controller.config.threads.java.NamingThreadFactoryModule", "oldModule"));
+ args.add(3, new ArgumentAssertion(AutoCloseable.class.getCanonicalName(), "oldInstance"));
+ assertMethodPresent(methods, new MethodAssertion("org.opendaylight.controller.config.threads.java.NamingThreadFactoryModule", "instantiateModule", args));
+
+ args.clear();
+ args.add(new ArgumentAssertion(DependencyResolverFactory.class.getCanonicalName(), "dependencyResolverFactory"));
+ args.add(bundleContextArg);
+ assertMethodPresent(methods, new MethodAssertion("java.util.Set<org.opendaylight.controller.config.threads.java.NamingThreadFactoryModule>", "getDefaultModules", args));
+
+ args.clear();
+ args.add(new ArgumentAssertion("Class<? extends org.opendaylight.controller.config.api.annotations.AbstractServiceInterface>", "serviceInterface"));
+ assertMethodPresent(methods, new MethodAssertion("boolean", "isModuleImplementingServiceInterface", args));
+
+ assertEquals(methods.size(), expectedSize);
+
+ }
+
+ private void assertMethodPresent(Set<String> methods, MethodAssertion methodAssertion) {
+ assertTrue(String.format("Generated methods did not contain %s, generated methods: %s",
+ methodAssertion.toString(), methods), methods.contains(methodAssertion.toString()));
+ }
+