private void raiseInvalidConfiguration(String message, XMLStreamReader reader) throws StoreException { Location location = reader.getLocation(); if (location == null) { throw new StoreException(message); } int line = location.getLineNumber(); int col = location.getColumnNumber(); throw new StoreException(message + " [" + line + "," + col + "]"); }
@ManagementOperation(description = "Uninstalls a contribution") public void uninstall(URI uri) throws ContributionUninstallException { try { contributionService.uninstall(uri); } catch (ContributionInUseException e) { throw new ContributionInUseManagementException(e.getMessage(), e.getUri(), e.getContributions()); } catch (ContributionLockedException e) { throw new ContributionLockedManagementException(e.getMessage(), e.getUri(), e.getDeployables()); } catch (ContributionException e) { // log the exception as it is not recoverable monitor.error("Error uninstalling contribution: " + uri, e); // don't rethrow the original exception since the class will not be available on the client's classpath throw new ContributionUninstallException(getErrorMessage(e)); } }
@ManagementOperation(description = "Uninstalls a profile") public void uninstallProfile(URI uri) throws ContributionUninstallException { try { contributionService.uninstallProfile(uri); } catch (ContributionInUseException e) { throw new ContributionInUseManagementException(e.getMessage(), e.getUri(), e.getContributions()); } catch (ContributionLockedException e) { throw new ContributionLockedManagementException(e.getMessage(), e.getUri(), e.getDeployables()); } catch (ContributionException e) { // log the exception as it is not recoverable monitor.error("Error uninstalling profile: " + uri, e); // don't rethrow the original exception since the class will not be available on the client's classpath throw new ContributionUninstallException(getErrorMessage(e)); } }
public void execute(ProvisionExtensionsCommand command) throws ExecutionException { try { List<URI> stored = new ArrayList<URI>(); for (URI uri : command.getExtensionUris()) { if (contributionService.exists(uri)) { // extension already provisioned continue; } URL url = resolver.resolve(uri); ContributionSource source = new FileContributionSource(uri, url, 0, true); contributionService.store(source); stored.add(uri); tracker.increment(uri); } if (stored.isEmpty()) { return; } contributionService.install(stored); domain.include(stored); } catch (ResolutionException e) { throw new ExecutionException(e); } catch (ContributionException e) { throw new ExecutionException(e); } catch (DeploymentException e) { throw new ExecutionException(e); } }
long timestamp = resource.getTimestamp(); URI uri = URI.create(name); ContributionSource source = new FileContributionSource(uri, location, timestamp, false); sources.add(source); addedResources.add(resource); try { List<URI> stored = contributionService.store(sources); List<URI> addedUris = contributionService.install(stored); notSeen.remove(source.getUri()); monitor.contributionErrors(e.getMessage()); for (FileSystemResource resource : addedResources) { resource.setState(FileSystemResourceState.ERROR);
@ManagementOperation(description = "Installs a stored contribution") public void install(URI uri) throws ContributionInstallException { try { contributionService.install(uri); } catch (ValidationException e) { // propagate validation error messages to the client List<ErrorInfo> errors = new ArrayList<ErrorInfo>(); for (ValidationFailure failure : e.getErrors()) { if (failure instanceof ArtifactValidationFailure) { ArtifactValidationFailure avf = (ArtifactValidationFailure) failure; ArtifactErrorInfo error = new ArtifactErrorInfo(avf.getArtifactName()); for (ValidationFailure entry : avf.getFailures()) { ErrorInfo info = new ErrorInfo(entry.getMessage()); error.addError(info); } errors.add(error); } else { ErrorInfo info = new ErrorInfo(failure.getMessage()); errors.add(info); } } throw new InvalidContributionException("Error installing " + uri, errors); } catch (ContributionException e) { monitor.error("Error installing: " + uri, e); // don't rethrow the original exception since the class will not be available on the client's classpath throw new ContributionInstallException(getErrorMessage(e)); } }
/** * Installs a collection of contributions. * * @param sources the contribution sources * @return the list of installed contribution URIs * @throws InitializationException if an installation error occurs */ private List<URI> installContributions(List<ContributionSource> sources) throws InitializationException { try { ContributionService contributionService = runtime.getComponent(ContributionService.class, CONTRIBUTION_SERVICE_URI); // install the contributions List<URI> stored = contributionService.store(sources); return contributionService.install(stored); } catch (ContributionException e) { state = RuntimeState.ERROR; throw new ExtensionInitializationException("Error contributing extensions", e); } } }
try { URI uri = new URI(substr); // remove the leading "/" ContributionSource source = new InputStreamContributionSource(uri, req.getInputStream()); contributionService.store(source); resp.setStatus(200); } catch (URISyntaxException e) { resp.setStatus(422); PrintWriter writer = resp.getWriter(); writer.write("<?xml version=\"1.0\" encoding=\"ASCII\"?><description>Error storing contribution: " + e.getMessage() + "</description>");
@ManagementOperation(description = "Installs a profile") public void installProfile(URI uri) throws ContributionInstallException { try { contributionService.installProfile(uri); } catch (ValidationException e) { // propagate validation error messages to the client List<ErrorInfo> errors = new ArrayList<ErrorInfo>(); for (ValidationFailure failure : e.getErrors()) { if (failure instanceof ArtifactValidationFailure) { ArtifactValidationFailure avf = (ArtifactValidationFailure) failure; ArtifactErrorInfo error = new ArtifactErrorInfo(avf.getArtifactName()); for (ValidationFailure entry : avf.getFailures()) { ErrorInfo info = new ErrorInfo(entry.getMessage()); error.addError(info); } errors.add(error); } else { ErrorInfo info = new ErrorInfo(failure.getMessage()); errors.add(info); } } throw new InvalidContributionException("Error installing " + uri, errors); } catch (ContributionException e) { monitor.error("Error installing: " + uri, e); // don't rethrow the original exception since the class will not be available on the client's classpath throw new ContributionInstallException(getErrorMessage(e)); } }
source = new SyntheticContributionSource(uri, location, extension); source = new FileContributionSource(uri, location, -1, extension);
try { ContributionOrder order = contributionService.processManifests(contributions); for (URI uri : order.getBaseContributions()) { contributionService.processContents(uri); domain.include(order.getBaseContributions()); for (URI uri : order.getIsolatedContributions()) { contributionService.processContents(uri); domain.include(Collections.singletonList(uri));
private FileContributionSource createContributionSource(File dir, String file) throws BuildException { try { File contributionFile = new File(dir, file); URI uri = URI.create(contributionFile.getName()); URL url = contributionFile.toURI().toURL(); long timestamp = System.currentTimeMillis(); return new FileContributionSource(uri, url, timestamp, false); } catch (MalformedURLException e) { throw new BuildException(e); } }
@ManagementOperation(description = "Removes a contribution") public void remove(URI uri) throws ContributionRemoveException { try { contributionService.remove(uri); } catch (ContributionException e) { monitor.error("Error removing contribution: " + uri, e); // don't rethrow the original exception since the class will not be available on the client's classpath throw new ContributionRemoveException(getErrorMessage(e)); } }
public void releaseLocks(Set<Contribution> contributions) { for (Contribution contribution : contributions) { for (Deployable deployable : contribution.getManifest().getDeployables()) { QName name = deployable.getName(); if (contribution.getLockOwners().contains(name)) { contribution.releaseLock(name); } } } }
private static int writerError(ValidationFailure failure, PrintWriter writer, int count, TYPE type) { if (failure instanceof ArtifactValidationFailure) { ArtifactValidationFailure artifactFailure = (ArtifactValidationFailure) failure; if (!errorsOnlyInContainedArtifacts(artifactFailure)) { if (type == TYPE.ERROR) { writer.write("Errors in " + artifactFailure.getArtifactName() + "\n\n"); } else { writer.write("Warnings in " + artifactFailure.getArtifactName() + "\n\n"); } } for (ValidationFailure childFailure : artifactFailure.getFailures()) { count = writerError(childFailure, writer, count, type); } } else { if (type == TYPE.ERROR) { writer.write(" ERROR: " + failure.getMessage() + "\n\n"); } else { writer.write(" WARNING: " + failure.getMessage() + "\n\n"); } ++count; } return count; }
@ManagementOperation(description = "Removes a profile from the domain") public void removeProfile(URI uri) throws ContributionRemoveException { try { contributionService.removeProfile(uri); } catch (ContributionException e) { monitor.error("Error removing profile: " + uri, e); // don't rethrow the original exception since the class will not be available on the client's classpath throw new ContributionRemoveException(getErrorMessage(e)); } }
@ManagementOperation(description = "Deploys a profile to the runtime") public void deployProfile(URI profileUri) throws DeploymentManagementException { List<URI> uris = contributionService.getContributionsInProfile(profileUri); try { for (Iterator<URI> it = uris.iterator(); it.hasNext();) { URI uri = it.next(); Contribution contribution = store.find(uri); if (contribution.isLocked()) { // only include contributions in the profile that were not previously deployed it.remove(); } } domain.include(uris); } catch (DeploymentException e) { throw new DeploymentManagementException("Error deploying profile " + profileUri + ":" + e.getMessage()); } }
@ManagementOperation(description = "Undeploys a profile") public void undeployProfile(URI uri) throws DeploymentManagementException { // the contributions must be undeployed by dependency List<URI> uris = contributionService.getSortedContributionsInProfile(uri); for (URI contributionUri : uris) { Contribution contribution = store.find(contributionUri); if (contribution == null) { throw new ContributionNotFoundException("Contribution not found: " + contributionUri); } try { domain.undeploy(contributionUri, false); } catch (DeploymentException e) { reportError(contributionUri, e); } } }
public void lock(Set<Contribution> contributions) throws CompositeAlreadyDeployedException { for (Contribution contribution : contributions) { for (Deployable deployable : contribution.getManifest().getDeployables()) { QName name = deployable.getName(); // check if the deployable has already been deployed by querying the lock owners if (contribution.getLockOwners().contains(name)) { throw new CompositeAlreadyDeployedException("Composite has already been deployed: " + name); } contribution.acquireLock(name); } } }