/** * Creates a default factory */ public ArtifactPluginDescriptorFactory() { this(new ServiceRegistryDescriptorLoaderRepository(new SpiServiceRegistry()), ArtifactDescriptorValidatorBuilder.builder()); }
@Test public void discoversNoServices() throws Exception { final FileSystemServiceProviderDiscoverer serviceProviderDiscoverer = new FileSystemServiceProviderDiscoverer(containerClassLoader, serviceClassLoaderFactory, descriptorLoaderRepository, builder()); final List<ServiceAssembly> discover = serviceProviderDiscoverer.discover(); assertThat(discover, is(empty())); }
/** * Creates a default factory */ @SuppressWarnings({"unused"}) public PolicyTemplateDescriptorFactory() { this(new ArtifactPluginDescriptorLoader(new ArtifactPluginDescriptorFactory()), new ServiceRegistryDescriptorLoaderRepository(new SpiServiceRegistry()), ArtifactDescriptorValidatorBuilder.builder()); }
@Before public void setUp() throws Exception { BundleDescriptorLoader bundleDescriptorLoaderMock = mock(BundleDescriptorLoader.class); when(bundleDescriptorLoaderMock.supportsArtifactType(ArtifactType.SERVICE)).thenReturn(true); when(bundleDescriptorLoaderMock.load(Mockito.any(File.class), Mockito.any(Map.class), eq(ArtifactType.SERVICE))) .thenReturn(new BundleDescriptor.Builder() .setGroupId("mockGroupId") .setArtifactId("mockArtifactId") .setVersion("1.0.0") .setClassifier("mule-service") .setType("jar") .build()); when(descriptorLoaderRepository.get(anyString(), anyObject(), argThat(equalTo(BundleDescriptorLoader.class)))) .thenReturn(bundleDescriptorLoaderMock); when(descriptorLoaderRepository.get(anyString(), anyObject(), argThat(equalTo(ClassLoaderModelLoader.class)))) .thenReturn(mock(ClassLoaderModelLoader.class)); doNothing().when(artifactDescriptorValidator).validate(anyObject()); serviceDescriptorFactory = new ServiceDescriptorFactory(descriptorLoaderRepository, builder()); }
@Test public void verifiesThatPolicyDescriptorIsPresent() throws Exception { PolicyFileBuilder policyFileBuilder = new PolicyFileBuilder(POLICY_NAME).usingLibrary(echoTestJarFile.getAbsolutePath()); File tempFolder = createTempFolder(); unzip(policyFileBuilder.getArtifactFile(), tempFolder); PolicyTemplateDescriptorFactory descriptorFactory = new PolicyTemplateDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); expectedException.expect(ArtifactDescriptorCreateException.class); expectedException.expectMessage(allOf(containsString(ARTIFACT_DESCRIPTOR_DOES_NOT_EXISTS_ERROR), containsString(MULE_ARTIFACT_JSON_DESCRIPTOR_LOCATION))); descriptorFactory.create(tempFolder, empty()); }
@Test public void discoversServices() throws Exception { installService("fooService", FooServiceProvider.class); installService("barService", BarServiceProvider.class); ArtifactClassLoader serviceClassLoader = mock(ArtifactClassLoader.class); when(serviceClassLoaderFactory.create(argThat(any(String.class)), argThat(any(ServiceDescriptor.class)), argThat(any(ClassLoader.class)), argThat(any( ClassLoaderLookupPolicy.class)))) .thenReturn(serviceClassLoader); final FileSystemServiceProviderDiscoverer serviceProviderDiscoverer = new FileSystemServiceProviderDiscoverer(containerClassLoader, serviceClassLoaderFactory, descriptorLoaderRepository, builder()); final List<ServiceAssembly> assemblies = serviceProviderDiscoverer.discover(); assertThat(assemblies.size(), equalTo(2)); assertThat(FooServiceProvider.INVOKED, is(false)); assertThat(BarServiceProvider.INVOKED, is(false)); assemblies.forEach(l -> l.getServiceProvider().getServiceDefinition()); assertThat(FooServiceProvider.INVOKED, is(true)); assertThat(BarServiceProvider.INVOKED, is(true)); }
@Before public void setUp() throws Exception { when(classLoaderFilterFactory.create(null, null)) .thenReturn(NULL_CLASSLOADER_FILTER); when(descriptorLoaderRepository.get(MULE_LOADER_ID, PLUGIN, ClassLoaderModelLoader.class)) .thenReturn(new PluginMavenClassLoaderModelLoader(mavenClientProvider.createMavenClient( newMavenConfigurationBuilder() .localMavenRepositoryLocation(mavenClientProvider .getLocalRepositorySuppliers() .environmentMavenRepositorySupplier() .get()) .build()))); when(descriptorLoaderRepository.get(FILE_SYSTEM_POLICY_MODEL_LOADER_ID, PLUGIN, ClassLoaderModelLoader.class)) .thenReturn(new FileSystemPolicyClassLoaderModelLoader()); when(descriptorLoaderRepository.get(INVALID_LOADER_ID, PLUGIN, ClassLoaderModelLoader.class)) .thenThrow(new LoaderNotFoundException(INVALID_LOADER_ID)); when(descriptorLoaderRepository.get(PROPERTIES_BUNDLE_DESCRIPTOR_LOADER_ID, PLUGIN, BundleDescriptorLoader.class)) .thenReturn(new PropertiesBundleDescriptorLoader()); when(descriptorLoaderRepository.get(INVALID_LOADER_ID, PLUGIN, BundleDescriptorLoader.class)) .thenThrow(new LoaderNotFoundException(INVALID_LOADER_ID)); descriptorFactory = new ArtifactPluginDescriptorFactory(descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); }
.getArtifactPluginDescriptorLoader(), createDescriptorLoaderRepository(), ArtifactDescriptorValidatorBuilder.builder()));
new ApplicationDescriptorFactory(new ArtifactPluginDescriptorLoader(new ArtifactPluginDescriptorFactory()), new ServiceRegistryDescriptorLoaderRepository(new SpiServiceRegistry()), ArtifactDescriptorValidatorBuilder.builder()); applicationDescriptorFactory.setApplicationProperties(descriptor, tempProps); Map<String, String> appProps = descriptor.getAppProperties();
@Override protected DomainDescriptorFactory createDeployableDescriptorFactory() { return new DomainDescriptorFactory(new ArtifactPluginDescriptorLoader(new ArtifactPluginDescriptorFactory()), createDescriptorLoaderRepository(), ArtifactDescriptorValidatorBuilder.builder()); } }
@Override protected ApplicationDescriptorFactory createDeployableDescriptorFactory() { return new ApplicationDescriptorFactory(new ArtifactPluginDescriptorLoader(new ArtifactPluginDescriptorFactory()), createDescriptorLoaderRepository(), ArtifactDescriptorValidatorBuilder.builder()); } }
@Test public void readsPlugin() throws Exception { MulePolicyModelBuilder policyModelBuilder = new MulePolicyModelBuilder() .setName(POLICY_NAME) .setMinMuleVersion("4.0.0") .setRequiredProduct(MULE) .withBundleDescriptorLoader(createPolicyBundleDescriptorLoader(PROPERTIES_BUNDLE_DESCRIPTOR_LOADER_ID)) .withClassLoaderModelDescriptorLoader(new MuleArtifactLoaderDescriptor(MULE_LOADER_ID, emptyMap())); ArtifactPluginFileBuilder plugin1 = new ArtifactPluginFileBuilder("plugin1"); ArtifactPluginFileBuilder plugin2 = new ArtifactPluginFileBuilder("plugin2"); PolicyFileBuilder policyFileBuilder = new PolicyFileBuilder(POLICY_NAME).describedBy(policyModelBuilder.build()) .dependingOn(plugin1).dependingOn(plugin2); File tempFolder = createTempFolder(); unzip(policyFileBuilder.getArtifactFile(), tempFolder); final ArtifactPluginDescriptorFactory pluginDescriptorFactory = mock(ArtifactPluginDescriptorFactory.class); final PolicyTemplateDescriptorFactory policyTemplateDescriptorFactory = new PolicyTemplateDescriptorFactory(new ArtifactPluginDescriptorLoader(pluginDescriptorFactory), descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); final ArtifactPluginDescriptor expectedPluginDescriptor1 = new ArtifactPluginDescriptor("plugin1"); final ArtifactPluginDescriptor expectedPluginDescriptor2 = new ArtifactPluginDescriptor("plugin2"); when(pluginDescriptorFactory.create(any(), any())).thenReturn(expectedPluginDescriptor1) .thenReturn(expectedPluginDescriptor2); PolicyTemplateDescriptor descriptor = policyTemplateDescriptorFactory.create(tempFolder, empty()); Set<ArtifactPluginDescriptor> plugins = descriptor.getPlugins(); assertThat(plugins.size(), equalTo(2)); assertThat(plugins, hasItem(equalTo(expectedPluginDescriptor1))); assertThat(plugins, hasItem(equalTo(expectedPluginDescriptor2))); }
@Test public void readsRuntimeLibs() throws Exception { MulePolicyModelBuilder mulePolicyModelBuilder = new MulePolicyModelBuilder() .setName(POLICY_NAME) .setMinMuleVersion("4.0.0") .setRequiredProduct(MULE) .withBundleDescriptorLoader(createPolicyBundleDescriptorLoader(PROPERTIES_BUNDLE_DESCRIPTOR_LOADER_ID)); mulePolicyModelBuilder .withClassLoaderModelDescriptorLoader(new MuleArtifactLoaderDescriptor(FILE_SYSTEM_POLICY_MODEL_LOADER_ID, emptyMap())); PolicyFileBuilder policyFileBuilder = new PolicyFileBuilder(POLICY_NAME).usingLibrary(echoTestJarFile.getAbsolutePath()) .describedBy(mulePolicyModelBuilder.build()); File tempFolder = createTempFolder(); unzip(policyFileBuilder.getArtifactFile(), tempFolder); PolicyTemplateDescriptorFactory descriptorFactory = new PolicyTemplateDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); PolicyTemplateDescriptor desc = descriptorFactory.create(tempFolder, empty()); assertThat(desc.getClassLoaderModel().getUrls().length, equalTo(2)); assertThat(toFile(desc.getClassLoaderModel().getUrls()[0]).getPath(), equalTo(tempFolder.toString())); assertThat(toFile(desc.getClassLoaderModel().getUrls()[1]).getPath(), equalTo(new File(tempFolder, LIB_DIR + separator + JAR_FILE_NAME).toString())); }
@Test public void assignsBundleDescriptor() throws Exception { MulePolicyModelBuilder mulePolicyModelBuilder = new MulePolicyModelBuilder() .setName(POLICY_NAME) .setMinMuleVersion("4.0.0") .setRequiredProduct(MULE) .withBundleDescriptorLoader(createPolicyBundleDescriptorLoader(PROPERTIES_BUNDLE_DESCRIPTOR_LOADER_ID)) .withClassLoaderModelDescriptorLoader(new MuleArtifactLoaderDescriptor(MULE_LOADER_ID, emptyMap())); PolicyFileBuilder policyFileBuilder = new PolicyFileBuilder(POLICY_NAME).usingLibrary(echoTestJarFile.getAbsolutePath()) .describedBy(mulePolicyModelBuilder.build()); File tempFolder = createTempFolder(); unzip(policyFileBuilder.getArtifactFile(), tempFolder); PolicyTemplateDescriptorFactory descriptorFactory = new PolicyTemplateDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); PolicyTemplateDescriptor desc = descriptorFactory.create(tempFolder, empty()); assertThat(desc.getBundleDescriptor().getArtifactId(), equalTo(POLICY_NAME)); assertThat(desc.getBundleDescriptor().getGroupId(), equalTo(POLICY_GROUP_ID)); assertThat(desc.getBundleDescriptor().getClassifier().get(), equalTo(POLICY_CLASSIFIER)); assertThat(desc.getBundleDescriptor().getType(), equalTo(POLICY_ARTIFACT_TYPE)); assertThat(desc.getBundleDescriptor().getVersion(), equalTo(POLICY_VERSION)); }
descriptorLoaderRepository = new ServiceRegistryDescriptorLoaderRepository(new SpiServiceRegistry()); ArtifactDescriptorValidatorBuilder artifactDescriptorValidatorBuilder = ArtifactDescriptorValidatorBuilder.builder();
@Test public void detectsInvalidClassLoaderModelLoaderId() throws Exception { MulePolicyModelBuilder mulePolicyModelBuilder = new MulePolicyModelBuilder() .setName(POLICY_NAME) .setMinMuleVersion("4.0.0") .setRequiredProduct(MULE) .withBundleDescriptorLoader(createPolicyBundleDescriptorLoader(PROPERTIES_BUNDLE_DESCRIPTOR_LOADER_ID)) .withClassLoaderModelDescriptorLoader(new MuleArtifactLoaderDescriptor(INVALID_LOADER_ID, emptyMap())); PolicyFileBuilder policyFileBuilder = new PolicyFileBuilder(POLICY_NAME).describedBy(mulePolicyModelBuilder.build()); File tempFolder = createTempFolder(); unzip(policyFileBuilder.getArtifactFile(), tempFolder); PolicyTemplateDescriptorFactory descriptorFactory = new PolicyTemplateDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); expectedException.expect(ArtifactDescriptorCreateException.class); expectedException .expectMessage(invalidClassLoaderModelIdError(tempFolder, mulePolicyModelBuilder.getClassLoaderModelDescriptorLoader())); descriptorFactory.create(tempFolder, empty()); }
@Test public void detectsInvalidBundleDescriptorLoaderId() throws Exception { MulePolicyModelBuilder mulePolicyModelBuilder = new MulePolicyModelBuilder() .setName(POLICY_NAME) .setMinMuleVersion("4.0.0") .setRequiredProduct(MULE) .withBundleDescriptorLoader(createPolicyBundleDescriptorLoader(INVALID_LOADER_ID)) .withClassLoaderModelDescriptorLoader(new MuleArtifactLoaderDescriptor(FILE_SYSTEM_POLICY_MODEL_LOADER_ID, emptyMap())); PolicyFileBuilder policyFileBuilder = new PolicyFileBuilder(POLICY_NAME).describedBy(mulePolicyModelBuilder.build()); File tempFolder = createTempFolder(); unzip(policyFileBuilder.getArtifactFile(), tempFolder); PolicyTemplateDescriptorFactory descriptorFactory = new PolicyTemplateDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); expectedException.expect(ArtifactDescriptorCreateException.class); expectedException .expectMessage(invalidBundleDescriptorLoaderIdError(tempFolder, mulePolicyModelBuilder.getBundleDescriptorLoader())); descriptorFactory.create(tempFolder, empty()); }
public static TestApplicationFactory createTestApplicationFactory(MuleApplicationClassLoaderFactory applicationClassLoaderFactory, DomainManager domainManager, ServiceRepository serviceRepository, ExtensionModelLoaderRepository extensionModelLoaderRepository, ModuleRepository moduleRepository, DescriptorLoaderRepository descriptorLoaderRepository) { ArtifactPluginDescriptorFactory artifactPluginDescriptorFactory = new ArtifactPluginDescriptorFactory(); ArtifactPluginDescriptorLoader artifactPluginDescriptorLoader = new ArtifactPluginDescriptorLoader(artifactPluginDescriptorFactory); ApplicationDescriptorFactory applicationDescriptorFactory = new ApplicationDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); final DefaultClassLoaderManager artifactClassLoaderManager = new DefaultClassLoaderManager(); PluginDependenciesResolver pluginDependenciesResolver = new BundlePluginDependenciesResolver(artifactPluginDescriptorFactory); ApplicationClassLoaderBuilderFactory applicationClassLoaderBuilderFactory = new ApplicationClassLoaderBuilderFactory(applicationClassLoaderFactory, new TrackingArtifactClassLoaderFactory<>(artifactClassLoaderManager, new ArtifactPluginClassLoaderFactory()), new DefaultRegionPluginClassLoadersFactory(new ArtifactPluginClassLoaderFactory(), moduleRepository)); return new TestApplicationFactory(applicationClassLoaderBuilderFactory, applicationDescriptorFactory, domainManager, serviceRepository, extensionModelLoaderRepository, artifactClassLoaderManager, mock(PolicyTemplateClassLoaderBuilderFactory.class), pluginDependenciesResolver, artifactPluginDescriptorLoader); }
public static TestDomainFactory createDomainFactory( DomainClassLoaderFactory domainClassLoaderFactory, ArtifactClassLoader containerClassLoader, ServiceRepository serviceRepository, ModuleRepository moduleRepository, DescriptorLoaderRepository descriptorLoaderRepository) { ArtifactPluginDescriptorFactory artifactPluginDescriptorFactory = new ArtifactPluginDescriptorFactory(); ArtifactPluginDescriptorLoader artifactPluginDescriptorLoader = new ArtifactPluginDescriptorLoader(artifactPluginDescriptorFactory); DomainDescriptorFactory domainDescriptorFactory = new DomainDescriptorFactory(artifactPluginDescriptorLoader, descriptorLoaderRepository, ArtifactDescriptorValidatorBuilder.builder()); final DefaultClassLoaderManager artifactClassLoaderManager = new DefaultClassLoaderManager(); PluginDependenciesResolver pluginDependenciesResolver = new BundlePluginDependenciesResolver(artifactPluginDescriptorFactory); DomainClassLoaderBuilderFactory domainClassLoaderBuilderFactory = new DomainClassLoaderBuilderFactory(containerClassLoader, domainClassLoaderFactory, new DefaultRegionPluginClassLoadersFactory(new TrackingArtifactClassLoaderFactory<>(artifactClassLoaderManager, new ArtifactPluginClassLoaderFactory()), moduleRepository)); return new TestDomainFactory(artifactClassLoaderManager, serviceRepository, domainDescriptorFactory, pluginDependenciesResolver, domainClassLoaderBuilderFactory, new MuleExtensionModelLoaderManager(containerClassLoader)); }
@Override protected ApplicationDescriptor createArtifactDescriptor(String appPath) throws URISyntaxException { final ApplicationDescriptorFactory applicationDescriptorFactory = new ApplicationDescriptorFactory(new ArtifactPluginDescriptorLoader(new ArtifactPluginDescriptorFactory()), createDescriptorLoaderRepository(), ArtifactDescriptorValidatorBuilder.builder()); return applicationDescriptorFactory.create(getArtifact(appPath), empty()); }