private void addDependenciesToClasspathUrls(ClassLoaderModel.ClassLoaderModelBuilder classLoaderModelBuilder, Set<BundleDependency> dependencies) { dependencies.stream() .filter(dependency -> !MULE_PLUGIN_CLASSIFIER.equals(dependency.getDescriptor().getClassifier().orElse(null))) .filter(dependency -> dependency.getBundleUri() != null) .forEach(dependency -> { try { classLoaderModelBuilder.containing(dependency.getBundleUri().toURL()); } catch (MalformedURLException e) { throw new MuleRuntimeException(e); } }); }
private Set<ArtifactPluginDescriptor> parseArtifactPluginDescriptors(PolicyTemplateDescriptor descriptor) { Set<BundleDependency> pluginDependencies = descriptor.getClassLoaderModel().getDependencies().stream() .filter(dependency -> dependency.getDescriptor().isPlugin()).collect(toSet()); return pluginDependencies.stream().map(dependency -> { try { return artifactPluginDescriptorLoader.load(new File(dependency.getBundleUri())); } catch (IOException e) { throw new MuleRuntimeException(e); } }).collect(toSet()); }
private Set<ArtifactPluginDescriptor> createArtifactPluginDescriptors(T descriptor) throws IOException { Set<ArtifactPluginDescriptor> pluginDescriptors = new HashSet<>(); for (BundleDependency bundleDependency : descriptor.getClassLoaderModel().getDependencies()) { if (bundleDependency.getDescriptor().isPlugin()) { if (bundleDependency.getBundleUri() == null) { LOGGER .warn(format("Plugin '%s' is declared as 'provided' which means that it will not be added to the artifact's classpath", bundleDependency.getDescriptor())); } else { File pluginFile = new File(bundleDependency.getBundleUri()); pluginDescriptors.add(artifactPluginDescriptorLoader.load(pluginFile, descriptor)); } } } return pluginDescriptors; } }
private Set<ArtifactPluginDescriptor> getArtifactPluginDescriptors(ApplicationDescriptor descriptor) { if (descriptor.getPlugins().isEmpty()) { Set<ArtifactPluginDescriptor> pluginDescriptors = new HashSet<>(); for (BundleDependency bundleDependency : descriptor.getClassLoaderModel().getDependencies()) { if (bundleDependency.getDescriptor().isPlugin()) { File pluginZip = new File(bundleDependency.getBundleUri()); try { pluginDescriptors.add(artifactPluginDescriptorLoader.load(pluginZip)); } catch (IOException e) { throw new IllegalStateException("Cannot create plugin descriptor: " + pluginZip.getAbsolutePath(), e); } } } return pluginDescriptors; } else { return descriptor.getPlugins(); } }
protected void findAndExportSharedLibrary(String groupId, String artifactId) { Optional<BundleDependency> bundleDependencyOptional = findBundleDependency(groupId, artifactId, empty()); BundleDependency bundleDependency = bundleDependencyOptional.orElseThrow(() -> new MuleRuntimeException(I18nMessageFactory .createStaticMessage(format( "Dependency %s:%s could not be found within the artifact %s. It must be declared within the maven dependencies of the artifact.", groupId, artifactId, artifactFolder.getName())))); JarInfo jarInfo = fileJarExplorer.explore(bundleDependency.getBundleUri()); this.exportingPackages(jarInfo.getPackages()); this.exportingResources(jarInfo.getResources()); }
private void exportBundleDependencyAndTransitiveDependencies(final BundleDependency bundleDependency) { BundleDependency resolvedBundleDependency = bundleDependency; if (bundleDependency.getBundleUri() == null) { resolvedBundleDependency = this.nonProvidedDependencies.stream() .filter(nonProvidedDependency -> nonProvidedDependency.getDescriptor().getGroupId() .equals(bundleDependency.getDescriptor().getGroupId()) && nonProvidedDependency.getDescriptor().getArtifactId().equals(bundleDependency.getDescriptor().getArtifactId())) .findAny() .orElse(bundleDependency); } JarInfo jarInfo = fileJarExplorer.explore(resolvedBundleDependency.getBundleUri()); this.exportingPackages(jarInfo.getPackages()); this.exportingResources(jarInfo.getResources()); resolvedBundleDependency.getTransitiveDependencies() .forEach(this::exportBundleDependencyAndTransitiveDependencies); }
public BundleDependency convert(org.mule.maven.client.api.model.BundleDependency mavenBundleDependency) { BundleDependency bundleDependency = cache.get(mavenBundleDependency.getDescriptor()); if ((bundleDependency != null && bundleDependency.getBundleUri() != null) || (bundleDependency != null && mavenBundleDependency.getBundleUri() == null)) { return bundleDependency; } BundleDependency.Builder builder = new BundleDependency.Builder() .setScope(BundleScope.valueOf(mavenBundleDependency.getScope().name())) .setBundleUri(mavenBundleDependency.getBundleUri()) .setTransitiveDependencies(mavenBundleDependency.getTransitiveDependencies().stream() .filter(transitiveDependency -> !org.mule.maven.client.api.model.BundleScope.PROVIDED .equals(transitiveDependency.getScope())) .map(this::convert) .collect(toSet())) .setDescriptor(convertBundleDescriptor(mavenBundleDependency.getDescriptor())); bundleDependency = builder.build(); cache.put(mavenBundleDependency.getDescriptor(), bundleDependency); return bundleDependency; }
} else { try { return new URLClassLoader(new URL[] {dependency.getBundleUri().toURL()}); } catch (MalformedURLException e) { throw new MuleRuntimeException(e);
mavenClient.getEffectiveModel(toFile(bundleDependency.getBundleUri().toURL()), of(temporaryFolder)); } else { BundleDescriptor descriptor = bundleDependency.getDescriptor();
@Override public boolean matches(Object o) { if (!(o instanceof BundleDependency)) { return false; } BundleDependency bundleDependency = (BundleDependency) o; return bundleDependency.getDescriptor().getClassifier().isPresent() && bundleDependency.getDescriptor().getClassifier().get().equals(MULE_PLUGIN_CLASSIFIER) && bundleDependency.getDescriptor().getArtifactId().equals("test-empty-plugin") && bundleDependency.getDescriptor().getGroupId().equals("org.mule.tests") && bundleDependency.getDescriptor().getVersion().equals(MULE_PROJECT_VERSION) && (hasUri ? bundleDependency.getBundleUri() != null : bundleDependency.getBundleUri() == null); } };
if (isPlugin(dependency) && !isResolvedDependency(visited, dependency.getDescriptor())) { File mulePluginLocation; if (dependency.getBundleUri() != null) { mulePluginLocation = new File(dependency.getBundleUri()); } else { throw new PluginResolutionError(format("Bundle URL should have been resolved for %s.",
@Test public void classLoaderModelWithPluginDependencyWithAnotherPlugin() throws Exception { D desc = createArtifactDescriptor(getArtifactRootFolder() + "/plugin-dependency-with-another-plugin"); ClassLoaderModel classLoaderModel = desc.getClassLoaderModel(); assertThat(classLoaderModel.getDependencies().size(), is(2)); assertThat(classLoaderModel.getDependencies(), hasItems(dependantPluginDependencyMatcher(), emptyPluginDependencyMatcher())); assertThat(classLoaderModel.getUrls().length, is(1)); classLoaderModel.getDependencies().stream() .forEach(bundleDependency -> { assertThat(asList(classLoaderModel.getUrls()), not(hasItem(bundleDependency.getBundleUri()))); }); }
@Test public void classLoaderModelWithSingleDependency() throws Exception { D desc = createArtifactDescriptor(getArtifactRootFolder() + "/single-dependency"); ClassLoaderModel classLoaderModel = desc.getClassLoaderModel(); assertThat(classLoaderModel.getDependencies(), hasSize(1)); BundleDependency commonsCollectionDependency = classLoaderModel.getDependencies().iterator().next(); assertThat(commonsCollectionDependency, commonsCollectionDependencyMatcher()); assertThat(classLoaderModel.getUrls().length, is(2)); assertThat(asList(classLoaderModel.getUrls()), hasItem(commonsCollectionDependency.getBundleUri().toURL())); }
private void addDependenciesToClasspathUrls(ClassLoaderModel.ClassLoaderModelBuilder classLoaderModelBuilder, Set<BundleDependency> dependencies) { dependencies.stream() .filter(dependency -> !MULE_PLUGIN_CLASSIFIER.equals(dependency.getDescriptor().getClassifier().orElse(null))) .filter(dependency -> dependency.getBundleUri() != null) .forEach(dependency -> { try { classLoaderModelBuilder.containing(dependency.getBundleUri().toURL()); } catch (MalformedURLException e) { throw new MuleRuntimeException(e); } }); }
private Set<ArtifactPluginDescriptor> parseArtifactPluginDescriptors(PolicyTemplateDescriptor descriptor) { Set<BundleDependency> pluginDependencies = descriptor.getClassLoaderModel().getDependencies().stream() .filter(dependency -> dependency.getDescriptor().isPlugin()).collect(toSet()); return pluginDependencies.stream().map(dependency -> { try { return artifactPluginDescriptorLoader.load(new File(dependency.getBundleUri())); } catch (IOException e) { throw new MuleRuntimeException(e); } }).collect(toSet()); }
private Set<ArtifactPluginDescriptor> createArtifactPluginDescriptors(ClassLoaderModel classLoaderModel) throws IOException { Set<ArtifactPluginDescriptor> pluginDescriptors = new HashSet<>(); for (BundleDependency bundleDependency : classLoaderModel.getDependencies()) { if (bundleDependency.getDescriptor().isPlugin()) { File pluginFile = new File(bundleDependency.getBundleUri()); pluginDescriptors.add(artifactPluginDescriptorLoader.load(pluginFile)); } } return pluginDescriptors; } }
private Set<ArtifactPluginDescriptor> getArtifactPluginDescriptors(ApplicationDescriptor descriptor) { if (descriptor.getPlugins().isEmpty()) { Set<ArtifactPluginDescriptor> pluginDescriptors = new HashSet<>(); for (BundleDependency bundleDependency : descriptor.getClassLoaderModel().getDependencies()) { if (bundleDependency.getDescriptor().isPlugin()) { File pluginZip = new File(bundleDependency.getBundleUri()); try { pluginDescriptors.add(artifactPluginDescriptorLoader.load(pluginZip)); } catch (IOException e) { throw new IllegalStateException("Cannot create plugin descriptor: " + pluginZip.getAbsolutePath(), e); } } } return pluginDescriptors; } else { return descriptor.getPlugins(); } }
.findFirst(); bundleDependencyOptional.map(bundleDependency -> { JarInfo jarInfo = fileJarExplorer.explore(bundleDependency.getBundleUri()); classLoaderModelBuilder.exportingPackages(jarInfo.getPackages()); classLoaderModelBuilder.exportingResources(jarInfo.getResources());
@Test public void classLoaderModelWithPluginDependencyWithAnotherPlugin() throws Exception { D desc = createArtifactDescriptor(getArtifactRootFolder() + "plugin-dependency-with-another-plugin"); ClassLoaderModel classLoaderModel = desc.getClassLoaderModel(); assertThat(classLoaderModel.getDependencies().size(), is(2)); assertThat(classLoaderModel.getDependencies(), hasItems(dependantPluginDependencyMatcher(), emptyPluginDependencyMatcher())); assertThat(classLoaderModel.getUrls().length, is(1)); classLoaderModel.getDependencies().stream() .forEach(bundleDependency -> { assertThat(asList(classLoaderModel.getUrls()), not(hasItem(bundleDependency.getBundleUri()))); }); }
@Test public void classLoaderModelWithSingleDependency() throws Exception { D desc = createArtifactDescriptor(getArtifactRootFolder() + "single-dependency"); ClassLoaderModel classLoaderModel = desc.getClassLoaderModel(); assertThat(classLoaderModel.getDependencies(), hasSize(1)); BundleDependency commonsCollectionDependency = classLoaderModel.getDependencies().iterator().next(); assertThat(commonsCollectionDependency, commonsCollectionDependencyMatcher()); assertThat(classLoaderModel.getUrls().length, is(2)); assertThat(asList(classLoaderModel.getUrls()), hasItem(commonsCollectionDependency.getBundleUri().toURL())); }