public Set<PackageFullDefinition> getDependentPackages(PackageDefinitionUUID packageId) { Set<PackageFullDefinition> dependentPackages = new HashSet<PackageFullDefinition>(); for (Querier querier : queriers) { Set<PackageFullDefinition> querierDependentPackagess = querier.getDependentPackages(packageId); if (querierDependentPackagess != null && !querierDependentPackagess.isEmpty()) { dependentPackages.addAll(querierDependentPackagess); } } return dependentPackages; }
public Set<PackageFullDefinition> getDependentPackages(PackageDefinitionUUID packageId) { Set<PackageFullDefinition> dependentPackages = new HashSet<PackageFullDefinition>(); for (Querier querier : queriers) { Set<PackageFullDefinition> querierDependentPackagess = querier.getDependentPackages(packageId); if (querierDependentPackagess != null && !querierDependentPackagess.isEmpty()) { dependentPackages.addAll(querierDependentPackagess); } } return dependentPackages; }
public static void removePackageDependencies(PackageFullDefinition packageDef) { final Querier journal = EnvTool.getJournalQueriers(); final Repository repository = EnvTool.getRepository(); final PackageDefinitionUUID packageUUID = packageDef.getUUID(); if (packageDef.getProcesses() != null) { for (ProcessFullDefinition process : packageDef.getProcesses()) { Set<XpdlInstance> instances = repository.getXpdlInstances(process.getUUID()); if (instances != null && !instances.isEmpty()) { throw new DeploymentRuntimeException("Error during undeployment: there are still running instances"); } } } // check that this package is not used by another package // (e.g. external reference, subflow ...) Set<PackageFullDefinition> dependentPackages = journal.getDependentPackages(packageDef.getUUID()); if (dependentPackages != null && !dependentPackages.isEmpty()) { throw new DeploymentRuntimeException("Error during undeployment: these packages depends on " + "package '" + packageUUID + "': " + dependentPackages); } // remove from processRepo if (packageDef.getProcesses() != null) { for (ProcessFullDefinition process : packageDef.getProcesses()) { repository.removeXpdlProcess(process.getUUID()); } } //remove from classRepo repository.removePackageClassData(packageUUID); ClassDataLoader.removePackageClassLoader(packageDef.getUUID()); repository.removePackageDependencies(packageDef.getUUID()); }