@Override public List<MuleModule> getModules() { if (modules == null) { synchronized (this) { if (modules == null) { modules = discoverModules(); if (logger.isDebugEnabled()) { logger.debug("Found {} modules: ", modules.size(), modules.stream().map(m -> m.getName()).collect(toList())); } } } } return modules; }
@Override public List<MuleModule> discover() { List<MuleModule> modules = new LinkedList<>(); Set<String> moduleNames = new HashSet<>(); try { for (Properties moduleProperties : discoverProperties(classLoader, getModulePropertiesFileName())) { final MuleModule module = createModule(moduleProperties); if (moduleNames.contains(module.getName())) { logger.warn(format("Ignoring duplicated module '%s'", module.getName())); } else { moduleNames.add(module.getName()); modules.add(module); } } } catch (IOException e) { throw new RuntimeException("Cannot discover mule modules", e); } return modules; }
private MuleModule updateModuleForTests(MuleModule discoveredModule) { Set<String> privilegedArtifacts = new HashSet<>(discoveredModule.getPrivilegedArtifacts()); privilegedArtifacts.addAll(privilegedArtifactIds); return new MuleModule(discoveredModule.getName(), discoveredModule.getExportedPackages(), discoveredModule.getExportedPaths(), discoveredModule.getPrivilegedExportedPackages(), privilegedArtifacts, discoveredModule.getExportedServices()); } }
@Test public void discoversJreModule() throws Exception { final List<MuleModule> muleModules = moduleDiscoverer.discover(); assertThat(muleModules.size(), equalTo(1)); final MuleModule muleModule = muleModules.get(0); assertThat(muleModule.getName(), equalTo(JRE_MODULE_NAME)); assertThat(muleModule.getExportedPaths(), is(not(empty()))); assertThat(muleModule.getExportedPackages(), is(not(empty()))); assertThat(muleModule.getExportedServices(), is(not(empty()))); } }
@Test public void discoversModuleWithExportedPrivilegedApi() throws Exception { runTest(moduleDiscoverer -> { List<URL> moduleProperties = new ArrayList(); moduleProperties.add(getClass().getClassLoader().getResource("moduleJavaPrivilegedApi.properties")); when(classLoader.getResources(ClasspathModuleDiscoverer.MODULE_PROPERTIES)) .thenReturn(new EnumerationAdapter(moduleProperties)); List<MuleModule> muleModules = moduleDiscoverer.discover(); assertThat(muleModules, hasSize(1)); MuleModule muleModule = muleModules.get(0); assertThat(muleModule.getName(), is("moduleJavaPrivilegedApi")); assertThat(muleModule.getExportedPackages(), is(empty())); assertThat(muleModule.getExportedPaths(), is(empty())); assertThat(muleModule.getPrivilegedExportedPackages(), contains("org.foo", "org.bar")); assertThat(muleModule.getPrivilegedArtifacts(), contains("privilegedArtifact1", "privilegedArtifact2")); assertThat(muleModule.getExportedServices(), is(empty())); }); }
@Test public void discoversModuleWithExportedResourcePackages() throws Exception { runTest(moduleDiscoverer -> { List<URL> moduleProperties = new ArrayList(); moduleProperties.add(getClass().getClassLoader().getResource("moduleResourcePackages.properties")); when(classLoader.getResources(ClasspathModuleDiscoverer.MODULE_PROPERTIES)) .thenReturn(new EnumerationAdapter(moduleProperties)); List<MuleModule> muleModules = moduleDiscoverer.discover(); assertThat(muleModules, hasSize(1)); MuleModule muleModule = muleModules.get(0); assertThat(muleModule.getName(), is("moduleResourcePackages")); assertThat(muleModule.getExportedPackages(), is(empty())); assertThat(muleModule.getExportedPaths(), containsInAnyOrder("META-INF/module.xsd", "README.txt")); assertThat(muleModule.getPrivilegedExportedPackages(), is(empty())); assertThat(muleModule.getPrivilegedArtifacts(), is(empty())); assertThat(muleModule.getExportedServices(), is(empty())); }); }
@Test public void discoversModuleWithExportedJavaPackages() throws Exception { runTest(moduleDiscoverer -> { List<URL> moduleProperties = new ArrayList(); moduleProperties.add(getClass().getClassLoader().getResource("moduleJavaPackages.properties")); when(classLoader.getResources(ClasspathModuleDiscoverer.MODULE_PROPERTIES)) .thenReturn(new EnumerationAdapter(moduleProperties)); List<MuleModule> muleModules = moduleDiscoverer.discover(); assertThat(muleModules, hasSize(1)); MuleModule muleModule = muleModules.get(0); assertThat(muleModule.getName(), is("moduleJavaPackages")); assertThat(muleModule.getExportedPackages(), contains("org.foo", "org.bar")); assertThat(muleModule.getExportedPaths(), is(empty())); assertThat(muleModule.getPrivilegedExportedPackages(), is(empty())); assertThat(muleModule.getPrivilegedArtifacts(), is(empty())); assertThat(muleModule.getExportedServices(), is(empty())); }); }
@Test public void discoversModuleWithExportedServices() throws Exception { runTest(moduleDiscoverer -> { List<URL> moduleProperties = new ArrayList(); moduleProperties.add(getClass().getClassLoader().getResource("moduleExportedServices.properties")); when(classLoader.getResources(ClasspathModuleDiscoverer.MODULE_PROPERTIES)) .thenReturn(new EnumerationAdapter(moduleProperties)); List<MuleModule> muleModules = moduleDiscoverer.discover(); assertThat(muleModules, hasSize(1)); MuleModule muleModule = muleModules.get(0); assertThat(muleModule.getName(), is("moduleExportedServices")); assertThat(muleModule.getExportedPackages(), is(empty())); assertThat(muleModule.getExportedPaths(), is(empty())); assertThat(muleModule.getPrivilegedExportedPackages(), is(empty())); assertThat(muleModule.getPrivilegedArtifacts(), is(empty())); assertThat(muleModule.getExportedServices().size(), equalTo(3)); assertThat(muleModule.getExportedServices().get(0).getServiceInterface(), equalTo("org.foo.ServiceInterface")); assertThat(muleModule.getExportedServices().get(1).getServiceInterface(), equalTo("org.foo.ServiceInterface")); assertThat(muleModule.getExportedServices().get(2).getServiceInterface(), equalTo("org.bar.ServiceInterface")); }); }
private MuleModule updateModuleForTests(MuleModule discoveredModule) { Set<String> privilegedArtifacts = new HashSet<>(discoveredModule.getPrivilegedArtifacts()); privilegedArtifacts.addAll(privilegedArtifactIds); return new MuleModule(discoveredModule.getName(), discoveredModule.getExportedPackages(), discoveredModule.getExportedPaths(), discoveredModule.getPrivilegedExportedPackages(), privilegedArtifacts, discoveredModule.getExportedServices()); } }