private Optional<ArtifactPluginDescriptor> findPlugin(Collection<ArtifactPluginDescriptor> appPlugins, BundleDescriptor bundleDescriptor) { for (ArtifactPluginDescriptor appPlugin : appPlugins) { if (appPlugin.getBundleDescriptor().getArtifactId().equals(bundleDescriptor.getArtifactId()) && appPlugin.getBundleDescriptor().getGroupId().equals(bundleDescriptor.getGroupId())) { return of(appPlugin); } } return empty(); }
boolean isRequestedArtifact(BundleDescriptor descriptor, String groupId, String artifactId, String version, Optional<String> classifier, String type, Supplier<Boolean> onVersionMismatch) { boolean versionResult = true; if (!descriptor.getVersion().equals(version) && !WILDCARD.equals(version)) { versionResult = onVersionMismatch.get(); } return descriptor.getGroupId().equals(groupId) && descriptor.getArtifactId().equals(artifactId) && versionResult && descriptor.getClassifier().equals(classifier) && descriptor.getType().equals(type); }
protected Optional<BundleDependency> findBundleDependency(String groupId, String artifactId, Optional<String> classifierOptional) { return dependencies.stream() .filter(bundleDependency -> bundleDependency.getDescriptor().getArtifactId().equals(artifactId) && bundleDependency.getDescriptor().getGroupId().equals(groupId) && classifierOptional .map(classifier -> classifier.equals(bundleDependency.getDescriptor().getClassifier().orElse(null))).orElse(true)) .findFirst(); }
@Override public void dispose() { registeredClassLoaders.stream().map(c -> c.unfilteredClassLoader).forEach(this::disposeClassLoader); registeredClassLoaders.clear(); descriptorMapping.forEach((descriptor, classloader) -> { try { classloader.close(); } catch (IOException e) { reportPossibleLeak(e, descriptor.getArtifactId()); } }); descriptorMapping.clear(); disposeClassLoader(ownerClassLoader); super.dispose(); }
private static boolean isResolvedDependency(BundleDescriptor availableBundleDescriptor, BundleDescriptor expectedBundleDescriptor) { return availableBundleDescriptor.getArtifactId().equals(expectedBundleDescriptor.getArtifactId()) && availableBundleDescriptor.getGroupId().equals(expectedBundleDescriptor.getGroupId()) && isCompatibleVersion(availableBundleDescriptor.getVersion(), expectedBundleDescriptor.getVersion()); }
private boolean checkArtifact(org.mule.maven.client.api.model.BundleDescriptor bundleDescriptor) { return this.domainBundleDescriptor.getGroupId().equals(bundleDescriptor.getGroupId()) && this.domainBundleDescriptor.getArtifactId().equals(bundleDescriptor.getArtifactId()) && this.domainBundleDescriptor.getVersion().equals(bundleDescriptor.getVersion()); }
private boolean isDependencyPlugin(Set<BundleDependency> dependencies, ArtifactPluginDescriptor dependencyPluginDescriptor) { for (BundleDependency pluginDependency : dependencies) { if (pluginDependency.getDescriptor().getArtifactId() .equals(dependencyPluginDescriptor.getBundleDescriptor().getArtifactId()) && pluginDependency.getDescriptor().getGroupId() .equals(dependencyPluginDescriptor.getBundleDescriptor().getGroupId()) && MULE_PLUGIN_CLASSIFIER.equals(pluginDependency.getDescriptor().getClassifier().orElse(null))) { return true; } } return false; }
private boolean isPrivilegedPluginDependency(ArtifactPluginDescriptor descriptor, ArtifactPluginDescriptor dependencyPluginDescriptor) { if (dependencyPluginDescriptor.getClassLoaderModel().getPrivilegedExportedPackages().isEmpty()) { return false; } return dependencyPluginDescriptor.getClassLoaderModel().getPrivilegedArtifacts().stream().filter( a -> a.startsWith(descriptor .getBundleDescriptor() .getGroupId() + ":" + descriptor .getBundleDescriptor() .getArtifactId())) .findFirst().isPresent(); }
private String asPath(BundleDescriptor descriptor) { String groupIdPath = getGroupIdPath(descriptor.getGroupId()); String versionPath = WILDCARD.equals(descriptor.getVersion()) ? "" : descriptor.getVersion(); return groupIdPath + PATH_SEPARATOR + descriptor.getArtifactId() + PATH_SEPARATOR + versionPath; }
private boolean areSameDependency(org.mule.tools.api.classloader.model.Plugin plugin, BundleDependency dependency) { return StringUtils.equals(dependency.getDescriptor().getGroupId(), plugin.getGroupId()) && StringUtils.equals(dependency.getDescriptor().getArtifactId(), plugin.getArtifactId()); }
@Override public void dispose() { descriptorMapping.forEach((descriptor, classloader) -> { try { classloader.close(); } catch (IOException e) { reportPossibleLeak(e, descriptor.getArtifactId()); } }); descriptorMapping.clear(); try { createResourceReleaserInstance().release(); } catch (Exception e) { LOGGER.error("Cannot create resource releaser instance", e); } super.dispose(); shutdownListeners(); }
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); }
private List<org.mule.maven.client.api.model.BundleDependency> resolveDependencies(Set<BundleDependency> additionalDependencies) { List<org.mule.maven.client.api.model.BundleDependency> resolvedAdditionalDependencies = new ArrayList<>(); additionalDependencies.stream() .map(BundleDependency::getDescriptor) .map(descriptor -> new org.mule.maven.client.api.model.BundleDescriptor.Builder() .setGroupId(descriptor.getGroupId()) .setArtifactId(descriptor.getArtifactId()) .setVersion(descriptor.getVersion()) .setType(descriptor.getType()) .setClassifier(descriptor.getClassifier().orElse(null)).build()) .forEach(bundleDescriptor -> { resolveDependency(bundleDescriptor) .forEach(additionalDep -> updateAdditionalDependencyOrFail(resolvedAdditionalDependencies, additionalDep)); }); return resolvedAdditionalDependencies; }
/** * Given a {@link BundleDescriptor} for a deployable artifact, it generates the artifact name. * <p/> * The artifact name will be unique for the each kind of artifact. * <p/> * The artifact name gets resolved based on the version of the artifact. {@link BundleDescriptor}s that only differ on the patch * version will generate the same artifact name. * * @param bundleDescriptor the bundle descriptor of the deployable archive * @return a unique artifact name within the artifact kind (app or domain). */ public static String generateArtifactName(BundleDescriptor bundleDescriptor) { MuleVersion artifactVersion = new MuleVersion(bundleDescriptor.getVersion()); return format("%s-%s-%s.%s", bundleDescriptor.getGroupId(), bundleDescriptor.getArtifactId(), artifactVersion.getMajor(), artifactVersion.getMinor()); }
private void testPatchedDependency(String application, int totalExpectedDependencies, String patchedArtifactId, String patchedArtifactVersion) throws InvalidDescriptorLoaderException, IOException { URL patchedAppUrl = getClass().getClassLoader().getResource(Paths.get(APPS_FOLDER, application).toString()); ClassLoaderModel classLoaderModel = buildClassLoaderModel(toFile(patchedAppUrl)); Set<BundleDependency> dependencies = classLoaderModel.getDependencies(); assertThat(dependencies, hasSize(totalExpectedDependencies)); List<BundleDependency> connectorsFound = dependencies.stream() .filter(bundleDependency -> bundleDependency.getDescriptor().getArtifactId().equals(patchedArtifactId)) .collect(Collectors.toList()); assertThat(connectorsFound, hasSize(1)); assertThat(connectorsFound.get(0).getDescriptor().getVersion(), is(patchedArtifactVersion)); }
boolean isRequestedArtifact(BundleDescriptor descriptor, BundleDescriptor artifact, Supplier<Boolean> onVersionMismatch) { return isRequestedArtifact(descriptor, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getClassifier(), artifact.getType(), onVersionMismatch); }
private DefaultArtifact toArtifact(BundleDependency bundleDependency) { return new DefaultArtifact(bundleDependency.getDescriptor().getGroupId(), bundleDependency.getDescriptor().getArtifactId(), bundleDependency.getDescriptor().getClassifier().orElse(null), bundleDependency.getDescriptor().getType(), bundleDependency.getDescriptor().getVersion()); } }
@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(artifactId) && bundleDependency.getDescriptor().getGroupId().equals("org.mule.tests") && bundleDependency.getDescriptor().getVersion().equals(MULE_PROJECT_VERSION); } };
@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); } };
@Override public boolean matches(Object o) { if (!(o instanceof BundleDependency)) { return false; } BundleDependency bundleDependency = (BundleDependency) o; return bundleDependency.getScope().equals(COMPILE) && !bundleDependency.getDescriptor().getClassifier().isPresent() && bundleDependency.getDescriptor().getArtifactId().equals("commons-collections") && bundleDependency.getDescriptor().getGroupId().equals("commons-collections") && bundleDependency.getDescriptor().getVersion().equals("3.2.2"); } };