/** * Returns true if the contribution should be added to the list of contributions, i.e. it is not already present and is not the host or boot * contribution. * * @param contribution the contribution * @param contributions the list of contributions * @return true if the contribution should be included */ private boolean include(Contribution contribution, List<Contribution> contributions) { URI uri = contribution.getUri(); return !contributions.contains(contribution) && !Names.HOST_CONTRIBUTION.equals(uri) && !Names.BOOT_CONTRIBUTION.equals(uri); }
public void onUninstall(Contribution contribution) { List<PersistenceOverrides> overrides = index.remove(contribution.getUri()); if (overrides != null) { for (PersistenceOverrides override : overrides) { cache.remove(override.getUnitName()); } } }
public void onUninstall(Contribution contribution) { List<PersistenceOverrides> overrides = index.remove(contribution.getUri()); if (overrides != null) { for (PersistenceOverrides override : overrides) { cache.remove(override.getUnitName()); } } }
public void onUninstall(Contribution contribution) { List<PersistenceOverrides> overrides = index.remove(contribution.getUri()); if (overrides != null) { for (PersistenceOverrides override : overrides) { cache.remove(override.getUnitName()); } } }
public void onStore(Contribution contribution) { List<URI> profiles = contribution.getProfiles(); if (profiles.isEmpty()) { return; } URI uri = contribution.getUri(); mappings.put(uri, profiles); persist(); }
public void onStore(Contribution contribution) { List<URI> profiles = contribution.getProfiles(); if (profiles.isEmpty()) { return; } URI uri = contribution.getUri(); mappings.put(uri, profiles); persist(); }
public void onRemove(Contribution contribution) { if (!contribution.isPersistent()) { return; } mappings.remove(contribution.getUri()); persist(); }
private URI createWebUri(Contribution contribution) { String context = contribution.getManifest().getContext(); if (context != null) { return URI.create(context); } return contribution.getUri(); }
public void onRemove(Contribution contribution) { if (!contribution.isPersistent()) { return; } mappings.remove(contribution.getUri()); persist(); }
/** * Creates classloader extension attachment commands. Extensions are used to allow contributions to dynamically load classes via reflection from * other contribution classloaders without declaring a dependency on them. * * @param commands the commands being provisioned * @param collated the set of contributions being provisioned collated by zone */ private void createExtensionCommands(Map<String, List<CompensatableCommand>> commands, Map<String, List<Contribution>> collated) { for (Map.Entry<String, List<Contribution>> entry : collated.entrySet()) { String zone = entry.getKey(); for (Contribution contribution : entry.getValue()) { URI contributionUri = contribution.getUri(); for (URI providerUri : contribution.getResolvedExtensionProviders()) { AttachExtensionCommand command = new AttachExtensionCommand(contributionUri, providerUri); commands.get(zone).add(command); } } } }
/** * Activates policy definitions contained in the contribution. * * @param contribution the contribution * @return the policy sets activated * @throws DeploymentException if an exception occurs when the definitions are activated */ private Set<PolicySet> activateDefinitions(Contribution contribution) throws DeploymentException { if (policyRegistry == null) { // registry not available until after bootstrap return Collections.emptySet(); } try { return policyRegistry.activateDefinitions(contribution.getUri()); } catch (PolicyActivationException e) { // TODO rollback policy activation throw new DeploymentException(e); } }
/** * Updates the repository index based on the changed contribution. * * @param contribution the changed contribution */ private void update(Contribution contribution) { if (!contribution.isPersistent()) { return; } mappings.put(contribution.getUri(), contribution.getProfiles()); persist(); }
/** * Updates the repository index based on the changed contribution. * * @param contribution the changed contribution */ private void update(Contribution contribution) { if (!contribution.isPersistent()) { return; } mappings.put(contribution.getUri(), contribution.getProfiles()); persist(); }
public void onUninstall(Contribution contribution) { URI uri = contribution.getUri(); ClassLoader classLoader = classLoaderRegistry.getClassLoader(uri); URI key; if (classLoader instanceof MultiParentClassLoader) { key = ((MultiParentClassLoader) classLoader).getNameUri(); } else { key = Names.BOOT_CONTRIBUTION; } Set<String> names = contributionCache.remove(key); if (names != null) { for (String name : names) { EntityManagerFactory factory = cache.remove(name); factory.close(); remove(name); } } }
public void onUninstall(Contribution contribution) { URI uri = contribution.getUri(); ClassLoader classLoader = classLoaderRegistry.getClassLoader(uri); URI key; if (classLoader instanceof MultiParentClassLoader) { key = ((MultiParentClassLoader) classLoader).getName(); } else { key = Names.BOOT_CONTRIBUTION; } Set<String> names = contributionCache.remove(key); if (names != null) { for (String name : names) { EntityManagerFactory factory = cache.remove(name); factory.close(); remove(name); } } }
private PhysicalClassLoaderDefinition createClassLoaderDefinition(Contribution contribution) { URI uri = contribution.getUri(); if (Names.BOOT_CONTRIBUTION.equals(uri) || Names.HOST_CONTRIBUTION.equals(uri)) { return null; } boolean provisionArtifact = contribution.getLocation() != null; // don't provision synthetic artifacts; List<Library> libraries = contribution.getManifest().getLibraries(); PhysicalClassLoaderDefinition definition = new PhysicalClassLoaderDefinition(uri, libraries, provisionArtifact); List<ContributionWire<?, ?>> contributionWires = contribution.getWires(); for (ContributionWire<?, ?> wire : contributionWires) { ClassLoaderWireGenerator generator = generators.get(wire.getClass()); if (generator == null) { // not all contribution wires resolve resources through classloaders, so skip if one is not found continue; } PhysicalClassLoaderWireDefinition wireDefinition = generator.generate(wire); definition.add(wireDefinition); } return definition; }
private Composite createComposite(WebImplementation implementation, Contribution contribution) { URI contributionUri = contribution.getUri(); String localPart = createLocalPart(contributionUri); QName compositeName = new QName(HostNamespaces.SYNTHESIZED, localPart); Composite composite = new Composite(compositeName); composite.setContributionUri(contributionUri); Component<WebImplementation> component = new Component<>(localPart, implementation); component.setContributionUri(contributionUri); composite.add(component); return composite; }
@ManagementOperation(description = "Returns metadata for all contributions deployed in a domain") public Set<ContributionInfo> getContributions() { Set<Contribution> contributions = metaDataStore.getContributions(); Set<ContributionInfo> infos = new TreeSet<ContributionInfo>(); for (Contribution contribution : contributions) { URI uri = contribution.getUri(); String state = contribution.getState().toString(); long timestamp = contribution.getTimestamp(); List<QName> deployables = new ArrayList<QName>(); for (Deployable deployable : contribution.getManifest().getDeployables()) { deployables.add(deployable.getName()); } ContributionInfo info = new ContributionInfo(uri, state, deployables, timestamp); infos.add(info); } return infos; }
private Composite createComposite(Contribution contribution) { URI contributionUri = contribution.getUri(); String localPart = createLocalPart(contributionUri); QName compositeName = new QName(Namespaces.SYNTHESIZED, localPart); Composite composite = new Composite(compositeName); composite.setContributionUri(contributionUri); WebComponentType componentType = new WebComponentType(); WebImplementation impl = new WebImplementation(); impl.setComponentType(componentType); ComponentDefinition<WebImplementation> component = new ComponentDefinition<WebImplementation>(localPart, impl); component.setContributionUri(contributionUri); composite.add(component); return composite; }
public static Composite createSystemComposite(URL compositeUrl, Contribution contribution, ClassLoader bootClassLoader, ImplementationProcessor processor) throws InitializationException { try { // load and introspect the system composite XML Loader loader = BootstrapLoaderFactory.createLoader(processor, XML_FACTORY); URI contributionUri = contribution.getUri(); IntrospectionContext introspectionContext = new DefaultIntrospectionContext(contributionUri, bootClassLoader, compositeUrl); Source source = new UrlSource(compositeUrl); Composite composite = loader.load(source, Composite.class, introspectionContext); if (introspectionContext.hasErrors()) { QName name = composite.getName(); List<ValidationFailure> errors = introspectionContext.getErrors(); List<ValidationFailure> warnings = introspectionContext.getWarnings(); throw new InvalidCompositeException(name, errors, warnings); } addContributionUri(contributionUri, composite); addResource(contribution, composite, compositeUrl); return composite; } catch (ContributionException e) { throw new InitializationException(e); } catch (LoaderException e) { throw new InitializationException(e); } }