X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator-plugin%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fplugin%2FJMXGeneratorTest.java;h=e87259b48f380505d6ddcc25ab77830559778ba4;hp=1945cac1c270919d10b59481139581e848c87f0a;hb=b43daac0b7a097f2f5585f38ba475bcc1540b776;hpb=de12565a7795af98788f8150eb0072f9c985f4a1 diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java index 1945cac1c2..e87259b48f 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/JMXGeneratorTest.java @@ -7,38 +7,43 @@ */ package org.opendaylight.controller.config.yangjmxgenerator.plugin; -import com.google.common.base.Predicate; +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.opendaylight.controller.config.yangjmxgenerator.PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX; +import com.github.javaparser.JavaParser; +import com.github.javaparser.ParseException; +import com.github.javaparser.ast.CompilationUnit; import com.google.common.collect.Collections2; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; import com.google.common.io.Files; -import org.apache.commons.io.FileUtils; -import org.apache.maven.plugin.logging.Log; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Set; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import org.apache.maven.project.MavenProject; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.compiler.IProblem; -import org.eclipse.jdt.core.dom.AST; -import org.eclipse.jdt.core.dom.ASTParser; -import org.eclipse.jdt.core.dom.ASTVisitor; -import org.eclipse.jdt.core.dom.CompilationUnit; -import org.eclipse.jdt.core.dom.FieldDeclaration; -import org.eclipse.jdt.core.dom.MethodDeclaration; -import org.eclipse.jdt.core.dom.NormalAnnotation; -import org.eclipse.jdt.core.dom.PackageDeclaration; -import org.eclipse.jdt.core.dom.TypeDeclaration; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.config.api.DependencyResolver; import org.opendaylight.controller.config.api.DependencyResolverFactory; import org.opendaylight.controller.config.api.DynamicMBeanWithInstance; -import org.opendaylight.controller.config.api.annotations.Description; -import org.opendaylight.controller.config.api.annotations.RequireInterface; -import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation; +import org.opendaylight.controller.config.spi.AbstractModule; import org.opendaylight.controller.config.spi.Module; import org.opendaylight.controller.config.spi.ModuleFactory; import org.opendaylight.controller.config.yangjmxgenerator.ConfigConstants; -import org.opendaylight.controller.config.yangjmxgenerator.PackageTranslatorTest; import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntryTest; import org.osgi.framework.BundleContext; import org.xml.sax.ErrorHandler; @@ -46,46 +51,17 @@ import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.fail; -import static org.junit.matchers.JUnitMatchers.containsString; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; - //TODO: refactor public class JMXGeneratorTest extends AbstractGeneratorTest { JMXGenerator jmxGenerator; - protected final HashMap map = Maps.newHashMap(); + protected final HashMap map = new HashMap<>(); protected File outputBaseDir; File generatedResourcesDir; private static final List expectedModuleFileNames = ServiceInterfaceEntryTest - .toFileNames("[AbstractAsyncEventBusModule.java, AbstractAsyncEventBusModuleFactory.java, AbstractDynamicThreadPoolModule.java, AbstractDynamicThreadPoolModuleFactory.java, AbstractEventBusModule.java, AbstractEventBusModuleFactory.java, AbstractNamingThreadFactoryModule.java, AbstractNamingThreadFactoryModuleFactory.java, AbstractThreadPoolRegistryImplModule.java, AbstractThreadPoolRegistryImplModuleFactory.java, AsyncEventBusModule.java, AsyncEventBusModuleFactory.java, AsyncEventBusModuleMXBean.java, AsyncEventBusRuntimeMXBean.java, AsyncEventBusRuntimeRegistration.java, AsyncEventBusRuntimeRegistrator.java, DynamicThreadPoolModule.java, DynamicThreadPoolModuleFactory.java, DynamicThreadPoolModuleMXBean.java, DynamicThreadPoolRuntimeMXBean.java, DynamicThreadPoolRuntimeRegistration.java, DynamicThreadPoolRuntimeRegistrator.java, EventBusModule.java, EventBusModuleFactory.java, EventBusModuleMXBean.java, EventRuntimeMXBean.java, EventRuntimeRegistration.java, InnerStreamList.java, NamingThreadFactoryModule.java, NamingThreadFactoryModuleFactory.java, NamingThreadFactoryModuleMXBean.java, NamingThreadFactoryRuntimeMXBean.java, NamingThreadFactoryRuntimeRegistration.java, NamingThreadFactoryRuntimeRegistrator.java, Peer.java, StreamRuntimeMXBean.java, StreamRuntimeRegistration.java, ThreadPoolRegistryImplModule.java, ThreadPoolRegistryImplModuleFactory.java, ThreadPoolRegistryImplModuleMXBean.java, ThreadRuntimeMXBean.java, ThreadRuntimeRegistration.java, ThreadStreamRuntimeMXBean.java, ThreadStreamRuntimeRegistration.java]"); + .toFileNames("[AbstractAsyncEventBusModule.java, AbstractAsyncEventBusModuleFactory.java, AbstractDynamicThreadPoolModule.java, AbstractDynamicThreadPoolModuleFactory.java, AbstractEventBusModule.java, AbstractEventBusModuleFactory.java, AbstractNamingThreadFactoryModule.java, AbstractNamingThreadFactoryModuleFactory.java, AbstractThreadPoolRegistryImplModule.java, AbstractThreadPoolRegistryImplModuleFactory.java, AsyncEventBusModule.java, AsyncEventBusModuleFactory.java, AsyncEventBusModuleMXBean.java, AsyncEventBusRuntimeMXBean.java, AsyncEventBusRuntimeRegistration.java, AsyncEventBusRuntimeRegistrator.java, DynamicThreadPoolModule.java, DynamicThreadPoolModuleFactory.java, DynamicThreadPoolModuleMXBean.java, DynamicThreadPoolRuntimeMXBean.java, DynamicThreadPoolRuntimeRegistration.java, DynamicThreadPoolRuntimeRegistrator.java, EventBusModule.java, EventBusModuleFactory.java, EventBusModuleMXBean.java, EventRuntimeMXBean.java, EventRuntimeRegistration.java, FromGrouping.java, InnerStreamList.java, NamingThreadFactoryModule.java, NamingThreadFactoryModuleFactory.java, NamingThreadFactoryModuleMXBean.java, NamingThreadFactoryRuntimeMXBean.java, NamingThreadFactoryRuntimeRegistration.java, NamingThreadFactoryRuntimeRegistrator.java, Peer.java, StreamRuntimeMXBean.java, StreamRuntimeRegistration.java, ThreadPoolRegistryImplModule.java, ThreadPoolRegistryImplModuleFactory.java, ThreadPoolRegistryImplModuleMXBean.java, ThreadRuntimeMXBean.java, ThreadRuntimeRegistration.java, ThreadStreamRuntimeMXBean.java, ThreadStreamRuntimeRegistration.java]"); private static final List expectedBGPNames = ServiceInterfaceEntryTest .toFileNames("[AbstractBgpListenerImplModule.java, " + "AbstractBgpListenerImplModuleFactory.java, " + @@ -108,34 +84,24 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { "NetconfTestFiles1ImplModuleMXBean.java, NetconfTestFiles1ImplRuntimeMXBean.java, " + "NetconfTestFiles1ImplRuntimeRegistration.java, NetconfTestFiles1ImplRuntimeRegistrator.java, TestFileImplModule.java, TestFileImplModuleFactory.java, TestFileImplModuleMXBean.java, TestFileImplRuntimeMXBean.java, TestFileImplRuntimeRegistration.java, TestFileImplRuntimeRegistrator.java, TestFiles1ImplModule.java, TestFiles1ImplModuleFactory.java, TestFiles1ImplModuleMXBean.java, TestFiles1ImplRuntimeMXBean.java, TestFiles1ImplRuntimeRegistration.java, TestFiles1ImplRuntimeRegistrator.java]"); private static final List expectedAllFileNames = ServiceInterfaceEntryTest - .toFileNames("[AbstractAsyncEventBusModule.java, AbstractAsyncEventBusModuleFactory.java, AbstractBgpListenerImplModule.java, AbstractBgpListenerImplModuleFactory.java, AbstractDynamicThreadPoolModule.java, AbstractDynamicThreadPoolModuleFactory.java, AbstractEventBusModule.java, AbstractEventBusModuleFactory.java, AbstractNamingThreadFactoryModule.java, AbstractNamingThreadFactoryModuleFactory.java, AbstractNetconfTestFileImplModule.java, AbstractNetconfTestFileImplModuleFactory.java, AbstractNetconfTestFiles1ImplModule.java, AbstractNetconfTestFiles1ImplModuleFactory.java, AbstractNetconfTestImplModule.java, AbstractNetconfTestImplModuleFactory.java, AbstractTestFileImplModule.java, AbstractTestFileImplModuleFactory.java, AbstractTestFiles1ImplModule.java, AbstractTestFiles1ImplModuleFactory.java, AbstractTestImplModule.java, AbstractTestImplModuleFactory.java, AbstractThreadPoolRegistryImplModule.java, AbstractThreadPoolRegistryImplModuleFactory.java, AsyncEventBusModule.java, AsyncEventBusModuleFactory.java, AsyncEventBusModuleMXBean.java, AsyncEventBusRuntimeMXBean.java, AsyncEventBusRuntimeRegistration.java, AsyncEventBusRuntimeRegistrator.java, AutoCloseableServiceInterface.java, BgpListenerImplModule.java, BgpListenerImplModuleFactory.java, BgpListenerImplModuleMXBean.java, BgpListenerImplRuntimeMXBean.java, BgpListenerImplRuntimeRegistration.java, BgpListenerImplRuntimeRegistrator.java, ComplexDtoBInner.java, ComplexList.java, Deep.java, DtoA.java, DtoA.java, DtoA.java, DtoA1.java, DtoAInner.java, DtoAInnerInner.java, DtoB.java, DtoC.java, DynamicThreadPoolModule.java, DynamicThreadPoolModuleFactory.java, DynamicThreadPoolModuleMXBean.java, DynamicThreadPoolRuntimeMXBean.java, DynamicThreadPoolRuntimeRegistration.java, DynamicThreadPoolRuntimeRegistrator.java, EventBusModule.java, EventBusModuleFactory.java, EventBusModuleMXBean.java, EventBusServiceInterface.java, EventRuntimeMXBean.java, EventRuntimeRegistration.java, InnerStreamList.java, NamingThreadFactoryModule.java, NamingThreadFactoryModuleFactory.java, NamingThreadFactoryModuleMXBean.java, NamingThreadFactoryRuntimeMXBean.java, NamingThreadFactoryRuntimeRegistration.java, NamingThreadFactoryRuntimeRegistrator.java, NetconfTestFileImplModule.java, NetconfTestFileImplModuleFactory.java, NetconfTestFileImplModuleMXBean.java, NetconfTestFileImplRuntimeMXBean.java, NetconfTestFileImplRuntimeRegistration.java, NetconfTestFileImplRuntimeRegistrator.java, NetconfTestFiles1ImplModule.java, NetconfTestFiles1ImplModuleFactory.java, NetconfTestFiles1ImplModuleMXBean.java, NetconfTestFiles1ImplRuntimeMXBean.java, NetconfTestFiles1ImplRuntimeRegistration.java, NetconfTestFiles1ImplRuntimeRegistrator.java, NetconfTestImplModule.java, NetconfTestImplModuleFactory.java, NetconfTestImplModuleMXBean.java, NetconfTestImplRuntimeMXBean.java, NetconfTestImplRuntimeRegistration.java, NetconfTestImplRuntimeRegistrator.java, Peer.java, Peer.java, PeersRuntimeMXBean.java, PeersRuntimeRegistration.java, ScheduledThreadPoolServiceInterface.java, SimpleList.java, StreamRuntimeMXBean.java, StreamRuntimeRegistration.java, TestFileImplModule.java, TestFileImplModuleFactory.java, TestFileImplModuleMXBean.java, TestFileImplRuntimeMXBean.java, TestFileImplRuntimeRegistration.java, TestFileImplRuntimeRegistrator.java, TestFiles1ImplModule.java, TestFiles1ImplModuleFactory.java, TestFiles1ImplModuleMXBean.java, TestFiles1ImplRuntimeMXBean.java, TestFiles1ImplRuntimeRegistration.java, TestFiles1ImplRuntimeRegistrator.java, TestImplModule.java, TestImplModuleFactory.java, TestImplModuleMXBean.java, TestImplRuntimeMXBean.java, TestImplRuntimeRegistration.java, TestImplRuntimeRegistrator.java, ThreadFactoryServiceInterface.java, ThreadPoolRegistryImplModule.java, ThreadPoolRegistryImplModuleFactory.java, ThreadPoolRegistryImplModuleMXBean.java, ThreadPoolServiceInterface.java, ThreadRuntimeMXBean.java, ThreadRuntimeRegistration.java, ThreadStreamRuntimeMXBean.java, ThreadStreamRuntimeRegistration.java]"); + .toFileNames("[AbstractAsyncEventBusModule.java, AbstractAsyncEventBusModuleFactory.java, AbstractBgpListenerImplModule.java, AbstractBgpListenerImplModuleFactory.java, AbstractDynamicThreadPoolModule.java, AbstractDynamicThreadPoolModuleFactory.java, AbstractEventBusModule.java, AbstractEventBusModuleFactory.java, AbstractNamingThreadFactoryModule.java, AbstractNamingThreadFactoryModuleFactory.java, AbstractNetconfTestFileImplModule.java, AbstractNetconfTestFileImplModuleFactory.java, AbstractNetconfTestFiles1ImplModule.java, AbstractNetconfTestFiles1ImplModuleFactory.java, AbstractNetconfTestImplModule.java, AbstractNetconfTestImplModuleFactory.java, AbstractTestFileImplModule.java, AbstractTestFileImplModuleFactory.java, AbstractTestFiles1ImplModule.java, AbstractTestFiles1ImplModuleFactory.java, AbstractTestImplModule.java, AbstractTestImplModuleFactory.java, AbstractThreadPoolRegistryImplModule.java, AbstractThreadPoolRegistryImplModuleFactory.java, AsyncEventBusModule.java, AsyncEventBusModuleFactory.java, AsyncEventBusModuleMXBean.java, AsyncEventBusRuntimeMXBean.java, AsyncEventBusRuntimeRegistration.java, AsyncEventBusRuntimeRegistrator.java, AutoCloseableServiceInterface.java, BgpListenerImplModule.java, BgpListenerImplModuleFactory.java, BgpListenerImplModuleMXBean.java, BgpListenerImplRuntimeMXBean.java, BgpListenerImplRuntimeRegistration.java, BgpListenerImplRuntimeRegistrator.java, ComplexDtoBInner.java, ComplexList.java, Deep.java, DtoA.java, DtoA.java, DtoA.java, DtoA1.java, DtoAInner.java, DtoAInnerInner.java, DtoB.java, DtoC.java, DynamicThreadPoolModule.java, DynamicThreadPoolModuleFactory.java, DynamicThreadPoolModuleMXBean.java, DynamicThreadPoolRuntimeMXBean.java, DynamicThreadPoolRuntimeRegistration.java, DynamicThreadPoolRuntimeRegistrator.java, EventBusModule.java, EventBusModuleFactory.java, EventBusModuleMXBean.java, EventBusServiceInterface.java, EventRuntimeMXBean.java, EventRuntimeRegistration.java, FromGrouping.java, InnerStreamList.java, NamingThreadFactoryModule.java, NamingThreadFactoryModuleFactory.java, NamingThreadFactoryModuleMXBean.java, NamingThreadFactoryRuntimeMXBean.java, NamingThreadFactoryRuntimeRegistration.java, NamingThreadFactoryRuntimeRegistrator.java, NetconfTestFileImplModule.java, NetconfTestFileImplModuleFactory.java, NetconfTestFileImplModuleMXBean.java, NetconfTestFileImplRuntimeMXBean.java, NetconfTestFileImplRuntimeRegistration.java, NetconfTestFileImplRuntimeRegistrator.java, NetconfTestFiles1ImplModule.java, NetconfTestFiles1ImplModuleFactory.java, NetconfTestFiles1ImplModuleMXBean.java, NetconfTestFiles1ImplRuntimeMXBean.java, NetconfTestFiles1ImplRuntimeRegistration.java, NetconfTestFiles1ImplRuntimeRegistrator.java, NetconfTestImplModule.java, NetconfTestImplModuleFactory.java, NetconfTestImplModuleMXBean.java, NetconfTestImplRuntimeMXBean.java, NetconfTestImplRuntimeRegistration.java, NetconfTestImplRuntimeRegistrator.java, Peer.java, Peer.java, PeersRuntimeMXBean.java, PeersRuntimeRegistration.java, ScheduledThreadPoolServiceInterface.java, SimpleList.java, StreamRuntimeMXBean.java, StreamRuntimeRegistration.java, TestFileImplModule.java, TestFileImplModuleFactory.java, TestFileImplModuleMXBean.java, TestFileImplRuntimeMXBean.java, TestFileImplRuntimeRegistration.java, TestFileImplRuntimeRegistrator.java, TestFiles1ImplModule.java, TestFiles1ImplModuleFactory.java, TestFiles1ImplModuleMXBean.java, TestFiles1ImplRuntimeMXBean.java, TestFiles1ImplRuntimeRegistration.java, TestFiles1ImplRuntimeRegistrator.java, TestImplModule.java, TestImplModuleFactory.java, TestImplModuleMXBean.java, TestImplRuntimeMXBean.java, TestImplRuntimeRegistration.java, TestImplRuntimeRegistrator.java, ThreadFactoryServiceInterface.java, ThreadPoolRegistryImplModule.java, ThreadPoolRegistryImplModuleFactory.java, ThreadPoolRegistryImplModuleMXBean.java, ThreadPoolServiceInterface.java, ThreadRuntimeMXBean.java, ThreadRuntimeRegistration.java, ThreadStreamRuntimeMXBean.java, ThreadStreamRuntimeRegistration.java]"); private static final List expectedGenerateMBEsListNames = ServiceInterfaceEntryTest .toFileNames("[AbstractBgpListenerImplModule.java, AbstractBgpListenerImplModuleFactory.java, BgpListenerImplModule.java, BgpListenerImplModuleFactory.java, BgpListenerImplModuleMXBean.java, BgpListenerImplRuntimeMXBean.java, BgpListenerImplRuntimeRegistration.java, BgpListenerImplRuntimeRegistrator.java, PeersRuntimeMXBean.java, PeersRuntimeRegistration.java]"); @Before public void setUp() { map.put(JMXGenerator.NAMESPACE_TO_PACKAGE_PREFIX + "1", - ConfigConstants.CONFIG_NAMESPACE - + JMXGenerator.NAMESPACE_TO_PACKAGE_DIVIDER - + PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX); + ConfigConstants.CONFIG_NAMESPACE + JMXGenerator.NAMESPACE_TO_PACKAGE_DIVIDER + EXPECTED_PACKAGE_PREFIX); map.put(JMXGenerator.MODULE_FACTORY_FILE_BOOLEAN, "false"); - jmxGenerator = new JMXGenerator(new FreeMarkerCodeWriterImpl()); + jmxGenerator = new JMXGenerator(new CodeWriter()); jmxGenerator.setAdditionalConfig(map); File targetDir = new File(generatorOutputPath, "target"); generatedResourcesDir = new File(targetDir, "generated-resources"); jmxGenerator.setResourceBaseDir(generatedResourcesDir); - Log mockedLog = mock(Log.class); - doReturn(false).when(mockedLog).isDebugEnabled(); - doNothing().when(mockedLog).debug(any(CharSequence.class)); - doNothing().when(mockedLog).info(any(CharSequence.class)); - doNothing().when(mockedLog).error(any(CharSequence.class), - any(Throwable.class)); - jmxGenerator.setLog(mockedLog); MavenProject project = mock(MavenProject.class); doReturn(generatorOutputPath).when(project).getBasedir(); jmxGenerator.setMavenProject(project); - outputBaseDir = JMXGenerator.concatFolders(targetDir, - "generated-sources", "config"); + outputBaseDir = JMXGenerator.concatFolders(targetDir, "generated-sources", "config"); } @Test @@ -158,18 +124,19 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { verifyModuleFactoryFile(false); } - private void verifyModuleFactoryFile(boolean shouldBePresent) { + private void verifyModuleFactoryFile(final boolean shouldBePresent) { File factoryFile = new File(generatedResourcesDir, "META-INF" + File.separator + "services" + File.separator + ModuleFactory.class.getName()); - if (!shouldBePresent) + if (!shouldBePresent) { assertFalse("Factory file should not be generated", factoryFile.exists()); - else + } else { assertTrue("Factory file should be generated", factoryFile.exists()); + } } - public static List toFileNames(Collection files) { + private static List toFileNames(final Collection files) { List result = new ArrayList<>(); for (File f : files) { result.add(f.getName()); @@ -179,72 +146,53 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { } @Test - public void generateSIEsTest() throws IOException { + public void generateSIEsTest() throws IOException, ParseException { Collection files = jmxGenerator.generateSources(context, - outputBaseDir, Sets.newHashSet(threadsModule)); - assertEquals(ServiceInterfaceEntryTest.expectedSIEFileNames, - toFileNames(files)); - - Map verifiers = Maps.newHashMap(); - - for (File file : files) { - verifiers.put(file.getName(), new SieASTVisitor()); - } - - processGeneratedCode(files, verifiers); + outputBaseDir, Collections.singleton(threadsModule)); + assertEquals(ServiceInterfaceEntryTest.expectedSIEFileNames, toFileNames(files)); for (File file : files) { String fileName = file.getName(); - SieASTVisitor verifier = (SieASTVisitor) verifiers.get(fileName); + SieASTVisitor verifier = new SieASTVisitor(EXPECTED_PACKAGE_PREFIX + ".threads", fileName); + verifyFile(file, verifier); - assertEquals(fileName.substring(0, fileName.length() - 5), - verifier.type); - assertThat( - verifier.extnds, + assertThat(verifier.extnds, containsString("org.opendaylight.controller.config.api.annotations.AbstractServiceInterface")); - assertEquals(PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads", verifier.packageName); assertNotNull(verifier.javadoc); - if ("ThreadPoolServiceInterface.java".equals(fileName)) { - assertContains(verifier.descriptionAnotValue, - "A simple pool of threads able to execute work."); + switch (fileName) { + case "ThreadPoolServiceInterface.java": + assertContains(verifier.descriptionAnotValue, "A simple pool of threads able to execute work."); assertContains(verifier.sieAnnotValue, "threadpool"); - assertContains(verifier.sieAnnotOsgiRegistrationType, - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threadpool.ThreadPool.class"); - } else if ("ScheduledThreadPoolServiceInterface.java" - .equals(fileName)) { + assertContains(verifier.sieAnnotOsgiRegistrationType, EXPECTED_PACKAGE_PREFIX + ".threadpool.ThreadPool.class"); + break; + case "ScheduledThreadPoolServiceInterface.java": assertContains(verifier.extnds, - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.ThreadPoolServiceInterface"); - assertContains( - verifier.descriptionAnotValue, + EXPECTED_PACKAGE_PREFIX + ".threads.ThreadPoolServiceInterface"); + assertContains(verifier.descriptionAnotValue, "An extension of the simple pool of threads able to schedule work to be executed at some point in time."); assertContains(verifier.sieAnnotValue, "scheduled-threadpool"); assertContains(verifier.sieAnnotOsgiRegistrationType, - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threadpool.ScheduledThreadPool.class"); - } else if ("EventBusServiceInterface.java".equals(fileName)) { - assertContains( - verifier.descriptionAnotValue, + EXPECTED_PACKAGE_PREFIX + ".threadpool.ScheduledThreadPool.class"); + break; + case "EventBusServiceInterface.java": + assertContains(verifier.descriptionAnotValue, "Service representing an event bus. The service acts as message router between event producers and event consumers"); assertContains(verifier.sieAnnotValue, "eventbus"); - assertContains(verifier.sieAnnotOsgiRegistrationType, - "com.google.common.eventbus.EventBus.class"); - } else if ("ThreadFactoryServiceInterface.java".equals(fileName)) { - assertContains( - verifier.descriptionAnotValue, + assertContains(verifier.sieAnnotOsgiRegistrationType, "com.google.common.eventbus.EventBus.class"); + break; + case "ThreadFactoryServiceInterface.java": + assertContains( verifier.descriptionAnotValue, "Service representing a ThreadFactory instance. It is directly useful in Java world, where various library pieces need to create threads and you may want to inject a customized thread implementation."); assertContains(verifier.sieAnnotValue, "threadfactory"); assertContains(verifier.sieAnnotOsgiRegistrationType, "java.util.concurrent.ThreadFactory.class"); - - } else if ("ScheduledExecutorServiceServiceInterface.java" - .equals(fileName)) { + break; + case "ScheduledExecutorServiceServiceInterface.java": assertContains(verifier.sieAnnotOsgiRegistrationType, "java.util.concurrent.ScheduledExecutorService.class"); - } else { + break; + default: fail("Unknown generated sie " + fileName); } } @@ -256,8 +204,8 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { map.put(JMXGenerator.MODULE_FACTORY_FILE_BOOLEAN, "randomValue"); jmxGenerator.setAdditionalConfig(map); - Collection files = jmxGenerator.generateSources(context, - outputBaseDir, Sets.newHashSet(bgpListenerJavaModule)); + Collection files = jmxGenerator.generateSources(context, outputBaseDir, + Collections.singleton(bgpListenerJavaModule)); assertEquals(expectedGenerateMBEsListNames, toFileNames(files)); } @@ -268,191 +216,116 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { map.put(JMXGenerator.MODULE_FACTORY_FILE_BOOLEAN, "randomValue"); jmxGenerator.setAdditionalConfig(map); - Collection files = jmxGenerator.generateSources(context, - outputBaseDir, Sets.newHashSet(threadsJavaModule)); + Collection files = jmxGenerator.generateSources(context, outputBaseDir, + Collections.singleton(threadsJavaModule)); assertEquals(expectedModuleFileNames, toFileNames(files)); - Map verifiers = Maps.newHashMap(); - - Collection xmlFiles = Collections2.filter(files, - new Predicate() { - - @Override - public boolean apply(File input) { - return input.getName().endsWith("xml"); - } - }); - - Collection javaFiles = Collections2.filter(files, - new Predicate() { - - @Override - public boolean apply(File input) { - return input.getName().endsWith("java"); - } - }); - - MbeASTVisitor abstractDynamicThreadPoolModuleVisitor = null; - MbeASTVisitor asyncEventBusModuleMXBeanVisitor = null; - MbeASTVisitor abstractNamingThreadFactoryModuleFactoryVisitor = null; - MbeASTVisitor asyncEventBusModuleVisitor = null; - MbeASTVisitor eventBusModuleFactoryVisitor = null; - - for (File file : javaFiles) { - String name = file.getName(); - MbeASTVisitor visitor = new MbeASTVisitor(); - verifiers.put(name, visitor); - if (name.equals("AbstractDynamicThreadPoolModule.java")) - abstractDynamicThreadPoolModuleVisitor = visitor; - if (name.equals("AsyncEventBusModuleMXBean.java")) - asyncEventBusModuleMXBeanVisitor = visitor; - if (name.equals("AbstractNamingThreadFactoryModuleFactory.java")) - abstractNamingThreadFactoryModuleFactoryVisitor = visitor; - if (name.equals("AsyncEventBusModule.java")) - asyncEventBusModuleVisitor = visitor; - if (name.equals("EventBusModuleFactory.java")) - eventBusModuleFactoryVisitor = visitor; - } + for (File file : files) { + final String name = file.getName(); + if (!name.endsWith("java")) { + continue; + } - processGeneratedCode(javaFiles, verifiers); + MbeASTVisitor visitor = new MbeASTVisitor(EXPECTED_PACKAGE_PREFIX + ".threads.java", name); + + verifyFile(file, visitor); + + switch (name) { + case "AbstractDynamicThreadPoolModule.java": + assertAbstractDynamicThreadPoolModule(visitor); + break; + case "AsyncEventBusModuleMXBean.java": + assertEquals("Incorrenct number of generated methods", 4, visitor.methods.size()); + break; + case "AbstractNamingThreadFactoryModuleFactory.java": + assertAbstractNamingThreadFactoryModuleFactory(visitor); + break; + case "AsyncEventBusModule.java": + assertContains(visitor.extnds, EXPECTED_PACKAGE_PREFIX + ".threads.java.AbstractAsyncEventBusModule"); + visitor.assertFields(0); + assertEquals("Incorrenct number of generated methods", 2, visitor.methods.size()); + visitor.assertConstructors(2); + visitor.assertMethodDescriptions(0); + visitor.assertMethodJavadocs(0); + break; + case "EventBusModuleFactory.java": + assertContains(visitor.extnds, + EXPECTED_PACKAGE_PREFIX + ".threads.java.AbstractEventBusModuleFactory"); + visitor.assertFields(0); + assertEquals("Incorrenct number of generated methods", 0, visitor.methods.size()); + visitor.assertConstructors(0); + visitor.assertMethodDescriptions(0); + visitor.assertMethodJavadocs(0); + break; + } + } - assertAbstractDynamicThreadPoolModule(abstractDynamicThreadPoolModuleVisitor); - assertAsyncEventBusModuleMXBean(asyncEventBusModuleMXBeanVisitor); - assertAbstractNamingThreadFactoryModuleFactory(abstractNamingThreadFactoryModuleFactoryVisitor); - assertAsyncEventBusModule(asyncEventBusModuleVisitor); - assertEventBusModuleFactory(eventBusModuleFactoryVisitor); + verifyXmlFiles(Collections2.filter(files, input -> input.getName().endsWith("xml"))); - verifyXmlFiles(xmlFiles); // verify ModuleFactory file - File moduleFactoryFile = JMXGenerator.concatFolders( - generatedResourcesDir, "META-INF", "services", + File moduleFactoryFile = JMXGenerator.concatFolders(generatedResourcesDir, "META-INF", "services", ModuleFactory.class.getName()); - assertThat(moduleFactoryFile.exists(), is(true)); - Set lines = Sets.newHashSet(FileUtils - .readLines(moduleFactoryFile)); - Set expectedLines = Sets.newHashSet(// - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.EventBusModuleFactory",// - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.AsyncEventBusModuleFactory", // - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.DynamicThreadPoolModuleFactory",// - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.NamingThreadFactoryModuleFactory", // - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.ThreadPoolRegistryImplModuleFactory"); - - - assertThat(lines, equalTo(expectedLines)); - + assertTrue(moduleFactoryFile.exists()); + Set lines = ImmutableSet.copyOf(Files.readLines(moduleFactoryFile, StandardCharsets.UTF_8)); + Set expectedLines = ImmutableSet.of( + EXPECTED_PACKAGE_PREFIX + ".threads.java.EventBusModuleFactory", + EXPECTED_PACKAGE_PREFIX + ".threads.java.AsyncEventBusModuleFactory", + EXPECTED_PACKAGE_PREFIX + ".threads.java.DynamicThreadPoolModuleFactory", + EXPECTED_PACKAGE_PREFIX + ".threads.java.NamingThreadFactoryModuleFactory", + EXPECTED_PACKAGE_PREFIX + ".threads.java.ThreadPoolRegistryImplModuleFactory"); + + assertEquals(expectedLines, lines); } - private void verifyXmlFiles(Collection xmlFiles) throws Exception { + private static void verifyXmlFiles(final Collection xmlFiles) throws Exception { ErrorHandler errorHandler = new ErrorHandler() { @Override - public void warning(SAXParseException exception) + public void warning(final SAXParseException exception) throws SAXException { - fail("Generated blueprint xml is not well formed " - + exception.getMessage()); + fail("Generated blueprint xml is not well formed " + exception.getMessage()); } @Override - public void fatalError(SAXParseException exception) + public void fatalError(final SAXParseException exception) throws SAXException { - fail("Generated blueprint xml is not well formed " - + exception.getMessage()); + fail("Generated blueprint xml is not well formed " + exception.getMessage()); } @Override - public void error(SAXParseException exception) throws SAXException { - fail("Generated blueprint xml is not well formed " - + exception.getMessage()); + public void error(final SAXParseException exception) throws SAXException { + fail("Generated blueprint xml is not well formed " + exception.getMessage()); } }; - for (File file : xmlFiles) { - DocumentBuilderFactory factory = DocumentBuilderFactory - .newInstance(); - factory.setValidating(false); - factory.setNamespaceAware(true); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setValidating(false); + factory.setNamespaceAware(true); + for (File file : xmlFiles) { DocumentBuilder builder = factory.newDocumentBuilder(); - builder.setErrorHandler(errorHandler); builder.parse(new InputSource(file.getPath())); } - } - private void assertEventBusModuleFactory(MbeASTVisitor visitor) { - assertEquals(PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java", visitor.packageName); - assertEquals("EventBusModuleFactory", visitor.type); - assertContains(visitor.extnds, - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.AbstractEventBusModuleFactory"); - - assertEquals(0, visitor.fieldDeclarations.size()); - - assertEquals("Incorrenct number of generated methods", 0, - visitor.methods.size()); - assertEquals("Incorrenct number of generated constructors", 0, - visitor.constructors.size()); - assertEquals("Incorrenct number of generated method descriptions", 0, - visitor.methodDescriptions.size()); - assertEquals("Incorrenct number of generated method javadoc", 0, - visitor.methodJavadoc.size()); - } + private static void assertAbstractNamingThreadFactoryModuleFactory( final MbeASTVisitor visitor) { + assertContains(visitor.implmts, "org.opendaylight.controller.config.spi.ModuleFactory"); - private void assertAsyncEventBusModule(MbeASTVisitor visitor) { - assertEquals(PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java", visitor.packageName); - assertEquals("AsyncEventBusModule", visitor.type); - assertContains(visitor.extnds, - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.AbstractAsyncEventBusModule"); - - assertEquals(0, visitor.fieldDeclarations.size()); - - assertEquals("Incorrenct number of generated methods", 2, - visitor.methods.size()); - assertEquals("Incorrenct number of generated constructors", 2, - visitor.constructors.size()); - assertEquals("Incorrenct number of generated method descriptions", 0, - visitor.methodDescriptions.size()); - assertEquals("Incorrenct number of generated method javadoc", 0, - visitor.methodJavadoc.size()); - } - - private void assertAbstractNamingThreadFactoryModuleFactory( - MbeASTVisitor visitor) { - assertEquals(PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java", visitor.packageName); - assertEquals("AbstractNamingThreadFactoryModuleFactory", visitor.type); - assertContains(visitor.implmts, - "org.opendaylight.controller.config.spi.ModuleFactory"); - Set fieldDeclarations = visitor.fieldDeclarations; - assertDeclaredField(fieldDeclarations, - "public static final java.lang.String NAME=\"threadfactory-naming\""); - assertDeclaredField( - fieldDeclarations, - "private static final java.util.Set> serviceIfcs=new java.util.HashSet>()"); - - assertEquals(2, fieldDeclarations.size()); - - assertFactoryMethods(visitor.methods, 8); - assertEquals("Incorrenct number of generated method descriptions", 0, - visitor.methodDescriptions.size()); - assertEquals("Incorrenct number of generated method javadoc", 0, - visitor.methodJavadoc.size()); + visitor.assertFields(2); + visitor.assertField("public static final java.lang.String NAME = \"threadfactory-naming\""); + visitor.assertField( + "private static final java.util.Set> serviceIfcs"); + assertFactoryMethods(visitor.methods, 10); + visitor.assertMethodDescriptions(0); + visitor.assertMethodJavadocs(0); } - private void assertFactoryMethods(Set methods, int expectedSize) { + private static void assertFactoryMethods(final Set methods, final int expectedSize) { - List args = Lists.newArrayList(); + List args = new ArrayList<>(); ArgumentAssertion oldInstanceArg = new ArgumentAssertion(DynamicMBeanWithInstance.class.getCanonicalName(), "old"); ArgumentAssertion instanceNameArg = new ArgumentAssertion(String.class.getSimpleName(), "instanceName"); ArgumentAssertion dependencyResolverArg = new ArgumentAssertion(DependencyResolver.class.getCanonicalName(), "dependencyResolver"); @@ -492,263 +365,66 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { args.add(new ArgumentAssertion("Class", "serviceInterface")); assertMethodPresent(methods, new MethodAssertion("boolean", "isModuleImplementingServiceInterface", args)); - assertEquals(methods.size(), expectedSize); - + assertEquals(expectedSize, methods.size()); } - private void assertMethodPresent(Set methods, MethodAssertion methodAssertion) { + private static void assertMethodPresent(final Set methods, final MethodAssertion methodAssertion) { assertTrue(String.format("Generated methods did not contain %s, generated methods: %s", methodAssertion.toString(), methods), methods.contains(methodAssertion.toString())); } - private void assertAsyncEventBusModuleMXBean(MbeASTVisitor visitor) { - assertEquals(PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java", visitor.packageName); - assertEquals("AsyncEventBusModuleMXBean", visitor.type); - - assertEquals("Incorrenct number of generated methods", 2, - visitor.methods.size()); - } - - private void assertAbstractDynamicThreadPoolModule(MbeASTVisitor visitor) { - assertEquals(PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java", visitor.packageName); + private static void assertAbstractDynamicThreadPoolModule(final MbeASTVisitor visitor) { assertNotNull(visitor.javadoc); - assertContains(visitor.descriptionAnotValue, - "threadpool-dynamic description"); - assertEquals("AbstractDynamicThreadPoolModule", visitor.type); + assertContains(visitor.descriptionAnotValue, "threadpool-dynamic description"); assertContains(visitor.implmts, - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.java.DynamicThreadPoolModuleMXBean", - Module.class.getCanonicalName(), - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.ScheduledThreadPoolServiceInterface", - PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.ThreadPoolServiceInterface"); - assertEquals(2, visitor.constructors.size()); - Set fieldDeclarations = visitor.fieldDeclarations; - assertDeclaredField(fieldDeclarations, - "private java.lang.Long maximumSize"); - assertDeclaredField(fieldDeclarations, - "private javax.management.ObjectName threadfactory"); - assertDeclaredField(fieldDeclarations, - "private java.util.concurrent.ThreadFactory threadfactoryDependency"); - assertDeclaredField(fieldDeclarations, - "private java.lang.Long keepAlive=new java.lang.Long(\"10\")"); - assertDeclaredField(fieldDeclarations, - "private java.lang.Long coreSize"); - assertDeclaredField(fieldDeclarations, "private byte[] binary"); - assertEquals(22, fieldDeclarations.size()); + EXPECTED_PACKAGE_PREFIX + ".threads.java.DynamicThreadPoolModuleMXBean", + EXPECTED_PACKAGE_PREFIX + ".threads.ScheduledThreadPoolServiceInterface", + EXPECTED_PACKAGE_PREFIX + ".threads.ThreadPoolServiceInterface"); + assertContains(visitor.extnds, AbstractModule.class.getCanonicalName()); + visitor.assertConstructors(2); + visitor.assertFields(17); + visitor.assertField("private java.lang.Long maximumSize"); + visitor.assertField("private javax.management.ObjectName threadfactory"); + visitor.assertField("private java.util.concurrent.ThreadFactory threadfactoryDependency"); + visitor.assertField("private java.lang.Long keepAlive = java.lang.Long.valueOf(\"10\")"); + visitor.assertField("private java.lang.Long coreSize"); + visitor.assertField("private byte[] binary"); assertEquals(1, visitor.requireIfc.size()); String reqIfc = visitor.requireIfc.get("setThreadfactory"); assertNotNull("Missing generated setter for threadfactory", reqIfc); - assertContains(reqIfc, PackageTranslatorTest.EXPECTED_PACKAGE_PREFIX - + ".threads.ThreadFactoryServiceInterface"); - - assertEquals("Incorrenct number of generated methods", 27, - visitor.methods.size()); - assertEquals("Incorrenct number of generated method descriptions", 3, - visitor.methodDescriptions.size()); - assertEquals("Incorrenct number of generated method javadoc", 3, - visitor.methodJavadoc.size()); - assertNotNull("Missing javadoc for setMaximumSize method " + visitor.methodJavadoc, - visitor.methodJavadoc.get("void setMaximumSize(java.lang.Long maximumSize)")); - } + assertContains(reqIfc, EXPECTED_PACKAGE_PREFIX + ".threads.ThreadFactoryServiceInterface"); - private void assertDeclaredField(Set fieldDeclarations, - String declaration) { - assertTrue("Missing field " + declaration + ", got: " - + fieldDeclarations, - fieldDeclarations.contains(declaration + ";\n")); - } + assertEquals("Incorrenct number of generated methods", 26, visitor.methods.size()); + visitor.assertMethodDescriptions(3); + visitor.assertMethodJavadocs(3); + visitor.assertMethodJavadoc("setMaximumSize", "void setMaximumSize(java.lang.Long maximumSize)"); - private static class SieASTVisitor extends ASTVisitor { - protected String packageName, descriptionAnotValue, sieAnnotValue, - sieAnnotOsgiRegistrationType, type, extnds, javadoc; - protected Map methodDescriptions = Maps.newHashMap(); - - @Override - public boolean visit(PackageDeclaration node) { - packageName = node.getName().toString(); - return super.visit(node); - } - - @Override - public boolean visit(NormalAnnotation node) { - if (node.getTypeName().toString() - .equals(Description.class.getCanonicalName())) { - if (node.getParent() instanceof TypeDeclaration) { - descriptionAnotValue = node.values().get(0).toString(); - } else if (node.getParent() instanceof MethodDeclaration) { - String descr = node.values().get(0).toString(); - methodDescriptions.put(((MethodDeclaration) node - .getParent()).getName().toString(), descr); - } - } else if (node - .getTypeName() - .toString() - .equals(ServiceInterfaceAnnotation.class.getCanonicalName())) { - String text1 = node.values().get(0).toString(); - String text2 = node.values().get(1).toString(); - if (text1.contains("value")) { - sieAnnotValue = text1; - sieAnnotOsgiRegistrationType = text2; - } else { - sieAnnotValue = text2; - sieAnnotOsgiRegistrationType = text1; - } - } - return super.visit(node); - } - - @Override - public boolean visit(TypeDeclaration node) { - javadoc = node.getJavadoc() == null ? null : node.getJavadoc() - .toString(); - type = node.getName().toString(); - List superIfcs = node.superInterfaceTypes(); - extnds = superIfcs != null && !superIfcs.isEmpty() ? superIfcs - .toString() : null; - return super.visit(node); - } } - private static class MbeASTVisitor extends SieASTVisitor { - private String implmts; - private final Set fieldDeclarations = Sets.newHashSet(); - private final Set constructors = Sets.newHashSet(); - private final Set methods = new HashSet(); - private final Map requireIfc = Maps.newHashMap(); - private final Map methodJavadoc = Maps.newHashMap(); - - @Override - public boolean visit(NormalAnnotation node) { - boolean result = super.visit(node); - if (node.getTypeName().toString() - .equals(RequireInterface.class.getCanonicalName()) - && node.getParent() instanceof MethodDeclaration) { - // remember only top level description annotation - String reqVal = node.values().get(0).toString(); - requireIfc.put(((MethodDeclaration) node.getParent()).getName() - .toString(), reqVal); - } - return result; - } - - @Override - public boolean visit(FieldDeclaration node) { - fieldDeclarations.add(node.toString()); - return super.visit(node); - } - - @Override - public boolean visit(MethodDeclaration node) { - if (node.isConstructor()) - constructors.add(node.toString()); - else { - String methodSignature = node.getReturnType2() + " " + node.getName() + "("; - boolean first = true; - for (Object o : node.parameters()) { - if (first){ - first = false; - } else { - methodSignature += ","; - } - methodSignature += o.toString(); - } - methodSignature += ")"; - methods.add(methodSignature); - if (node.getJavadoc() != null) { - methodJavadoc.put(methodSignature, node.getJavadoc().toString()); - } - } - return super.visit(node); - } - - @Override - public boolean visit(TypeDeclaration node) { - boolean visit = super.visit(node); - List superIfcs = node.superInterfaceTypes(); - implmts = superIfcs != null && !superIfcs.isEmpty() ? superIfcs - .toString() : null; - extnds = node.getSuperclassType() == null ? null : node - .getSuperclassType().toString(); - return visit; - } - - } - - private void assertContains(String source, String... contained) { + private static void assertContains(final String source, final String... contained) { for (String string : contained) { assertThat(source, containsString(string)); } } - private void processGeneratedCode(Collection files, - Map verifiers) throws IOException { - ASTParser parser = ASTParser.newParser(AST.JLS3); - Map options = JavaCore.getOptions(); - JavaCore.setComplianceOptions(JavaCore.VERSION_1_7, options); - parser.setCompilerOptions(options); - - parser.setKind(ASTParser.K_COMPILATION_UNIT); - - for (File file : files) { - char[] source = readFileAsChars(file); - parser.setSource(source); - parser.setResolveBindings(true); - - CompilationUnit cu = (CompilationUnit) parser.createAST(null); - // Check for compilation problems in generated file - for (IProblem c : cu.getProblems()) { - // 1610613332 = Syntax error, annotations are only available if - // source level is 5.0 - if (c.getID() == 1610613332) - continue; - // 1610613332 = Syntax error, parameterized types are only - // available if source level is 5.0 - if (c.getID() == 1610613329) - continue; - if (c.getID() == 1610613328) // 'for each' statements are only available if source level is 5.0 - continue; - fail("Error in generated source code " + file + ":" - + c.getSourceLineNumber() + " id: " + c.getID() + " message:" + c.toString()); - } - - ASTVisitor visitor = verifiers.get(file.getName()); - if (visitor == null) - fail("Unknown generated file " + file.getName()); - cu.accept(visitor); - - } - } - - public static char[] readFileAsChars(File file) throws IOException { - List readLines = Files - .readLines(file, Charset.forName("utf-8")); - char[] retVal = new char[0]; - for (String string : readLines) { - char[] line = string.toCharArray(); - int beforeLength = retVal.length; - retVal = Arrays.copyOf(retVal, retVal.length + line.length + 1); - System.arraycopy(line, 0, retVal, beforeLength, line.length); - retVal[retVal.length - 1] = '\n'; - } - return retVal; + private static void verifyFile(final File file, final AbstractVerifier verifier) throws ParseException, IOException { + final CompilationUnit cu = JavaParser.parse(file); + cu.accept(verifier, null); + verifier.verify(); } - private static class MethodAssertion extends ArgumentAssertion{ + private static class MethodAssertion extends ArgumentAssertion { - private List arguments; + private final List arguments; - MethodAssertion(String type, String name, List arguments) { + MethodAssertion(final String type, final String name, final List arguments) { super(type, name); this.arguments = arguments; } - MethodAssertion(String type, String name) { + MethodAssertion(final String type, final String name) { this(type, name, Collections.emptyList()); } @@ -762,8 +438,9 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { for (ArgumentAssertion argument : arguments) { sb.append(argument.type).append(' '); sb.append(argument.name); - if(++i != arguments.size()) - sb.append(','); + if(++i != arguments.size()) { + sb.append(", "); + } } sb.append(')'); return sb.toString(); @@ -774,7 +451,7 @@ public class JMXGeneratorTest extends AbstractGeneratorTest { protected final String type, name; - private ArgumentAssertion(String type, String name) { + private ArgumentAssertion(final String type, final String name) { this.type = type; this.name = name; }