static String featurePackVersionConflict(Collection<FeaturePackLocation.FPID> fpids) { final Iterator<FeaturePackLocation.FPID> i = fpids.iterator(); FeaturePackLocation.FPID fpid = i.next(); final StringBuilder buf = new StringBuilder("Please pick the desired build number for ") .append(fpid.getProducer()) .append(" explicitly in the provisioning config. Current configuration references the following versions ") .append(fpid.getBuild()); while(i.hasNext()) { fpid = i.next(); buf.append(", ").append(fpid.getBuild()); } return buf.toString(); }
private void buildDependencies(PmSession session, Set<FeaturePackLocation.FPID> dependencies, Map<String, FeatureContainer> deps) throws ProvisioningException, IOException { for (FeaturePackLocation.FPID fpid : dependencies) { String orig = Identity.buildOrigin(fpid.getProducer()); if (!deps.containsKey(orig)) { // Need to add individual featurepack. deps.put(orig, FeatureContainers.fromFeaturePackId(session, fpid, null)); } } // Remove feature-packs that would have been removed. Iterator<FeatureContainer> it = deps.values().iterator(); while (it.hasNext()) { FeatureContainer fc = it.next(); if (!dependencies.contains(fc.getFPID())) { it.remove(); } } }
private <O extends FeaturePackLayout> ProvisioningLayout(ProvisioningLayout<O> other, FeaturePackLayoutFactory<F> fpFactory, FeaturePackLayoutTransformer<F, O> transformer) throws ProvisioningException { this.layoutFactory = other.layoutFactory; this.fpFactory = fpFactory; this.config = other.config; this.options = CollectionUtils.clone(other.options); // feature-packs are processed in the reverse order and then re-ordered again // this is necessary to properly analyze and include optional package and their external dependencies int i = other.ordered.size(); ordered.ensureCapacity(i); while(--i >= 0) { final O otherFp = other.ordered.get(i); final F fp = transformer.transform(otherFp); featurePacks.put(fp.getFPID().getProducer(), fp); ordered.add(fp); } Collections.reverse(ordered); if(!other.fpPatches.isEmpty()) { fpPatches = new HashMap<>(other.fpPatches.size()); for (Map.Entry<FPID, List<O>> patchEntry : other.fpPatches.entrySet()) { final List<O> patches = patchEntry.getValue(); final List<F> convertedPatches = new ArrayList<>(patches.size()); for(O o : patches) { convertedPatches.add(transformer.transform(o)); } fpPatches.put(patchEntry.getKey(), convertedPatches); } } this.handle = other.handle; handle.incrementRefs(); }
boolean isProduct = true; for (FeaturePackLayout fpLayout2 : layout.getOrderedFeaturePacks()) { if (fpLayout2.getSpec().hasTransitiveDep(fpLayout.getFPID().getProducer()) || fpLayout2.getSpec().getFeaturePackDep(fpLayout.getFPID().getProducer()) != null) { isProduct = false; break;
gavs.put(Identity.buildOrigin(rt.getFPID().getProducer()), rt); for (PackageRuntime pkg : rt.getPackages()) { pkgBuilder.buildGroups(new PackageInfo(pkg, Identity. fromChannel(rt.getFPID().getProducer(), pkg.getName()), plugin), new PackageGroupsBuilder.PackageInfoBuilder() { @Override public PackageInfo build(Identity identity, PackageInfo parent) { fp.setPackagesRoot(Identity.buildOrigin(rt.getFPID().getProducer()), pkgBuilder.getPackagesRoot()); fp.setFeatureSpecRoot(Identity.buildOrigin(rt.getFPID().getProducer()), specsRoot);
if(fp != null) { if(branchId == null && !fpl.getBuild().equals(fp.getFPID().getBuild())) { Set<FPID> versions = conflicts.get(fp.getFPID().getProducer()); if(versions != null) { versions.add(fpl.getFPID());
switch (element) { case SPEC: readSpec(reader, LegacyGalleon1Universe.newFPID(group, artifact, version).getProducer(), config); break; default:
resolvedIdentity = Identity.fromChannel(currentRuntime.getFPID().getProducer(), identity.getName());
F patchTarget = featurePacks.get(fpSpec.getPatchFor().getProducer()); if(patchTarget == null || !patchTarget.getFPID().equals(fpSpec.getPatchFor())) { throw new ProvisioningException(Errors.patchNotApplicable(fpid, fpSpec.getPatchFor())); FeaturePackConfig installedFpConfig = config.getFeaturePackDep(fpSpec.getPatchFor().getProducer()); if(installedFpConfig == null) { installedFpConfig = config.getTransitiveDep(fpSpec.getPatchFor().getProducer()); final F installedFp = featurePacks.get(fpid.getProducer()); if(installedFp != null) { if(installedFp.isTransitiveDep() == fpConfig.isTransitive()) { if (config.hasTransitiveDep(fpid.getProducer())) { configBuilder.removeTransitiveDep(fpid); return configBuilder.addFeaturePackDep(getIndexForDepToInstall(configBuilder, fpid.getProducer()), fpConfig);
for (ResolvedFeatureSpec resolvedSpec : layout.getFeaturePack(fpid.getProducer()).getFeatureSpecs()) { ResolvedSpecId resolved = resolvedSpec.getId(); if (wantedSpecs == null || wantedSpecs.contains(resolved)) {
private ProvisioningConfig.Builder uninstall(FPID fpid, ProvisioningConfig.Builder configBuilder) throws ProvisioningException { if(allPatches.containsKey(fpid)) { final F patchFp = allPatches.get(fpid); final ProducerSpec patchTarget = patchFp.getSpec().getPatchFor().getProducer(); FeaturePackConfig targetConfig = config.getFeaturePackDep(patchTarget); if(targetConfig == null) { final F installedFp = featurePacks.get(fpid.getProducer()); if(installedFp == null) { throw new ProvisioningException(Errors.unknownFeaturePack(fpid)); throw new ProvisioningException(Errors.unknownFeaturePack(fpid)); final FeaturePackConfig fpConfig = config.getFeaturePackDep(fpid.getProducer()); if(fpConfig == null) { throw new ProvisioningException(Errors.unsatisfiedFeaturePackDep(fpid.getProducer()));
private FeaturePackConfig.Builder getFpcBuilder(FPID fpid) { FeaturePackConfig.Builder fpcBuilder = updatedDirectFps.get(fpid); if(fpcBuilder != null) { return fpcBuilder; } fpcBuilder = updatedTransitiveFps.get(fpid); if(fpcBuilder != null) { return fpcBuilder; } fpcBuilder = addedTransitiveFps.get(fpid); if(fpcBuilder != null) { return fpcBuilder; } FeaturePackConfig fpc = provisionedConfig.getFeaturePackDep(fpid.getProducer()); if(fpc != null) { fpcBuilder = FeaturePackConfig.builder(fpc); updatedDirectFps = CollectionUtils.put(updatedDirectFps, fpid, fpcBuilder); return fpcBuilder; } fpc = provisionedConfig.getTransitiveDep(fpid.getProducer()); if(fpc != null) { fpcBuilder = FeaturePackConfig.builder(fpc); updatedTransitiveFps = CollectionUtils.put(updatedTransitiveFps, fpid, fpcBuilder); return fpcBuilder; } fpcBuilder = FeaturePackConfig.transitiveBuilder(fpid.getLocation()); addedTransitiveFps = CollectionUtils.putLinked(addedTransitiveFps, fpid, fpcBuilder); return fpcBuilder; }
@Override public ProducerSpec getProducer(PmSession session) throws CommandExecutionException { if (pkg == null) { throw new CommandExecutionException("No package set."); } String fullpath = FeatureContainerPathConsumer.PACKAGES_PATH + pkg; FeatureContainerPathConsumer consumer = new FeatureContainerPathConsumer(new AllPackagesContainer(session.getState().getContainer()), false); try { PathParser.parse(fullpath, consumer); Group grp = consumer.getCurrentNode(fullpath); if (grp == null) { throw new CommandExecutionException("Invalid package " + pkg); } PackageInfo info = grp.getPackage(); if (info == null) { throw new CommandExecutionException("Invalid package " + pkg); } return info.getFPID().getProducer(); } catch (PathParserException | PathConsumerException ex) { throw new CommandExecutionException(session, CliErrors.retrieveProducerFailed(), ex); } }
private static String buildDependencies(PmCommandInvocation invoc, ProvisioningLayout<FeaturePackLayout> layout) throws ProvisioningException { Map<FPID, FeaturePackConfig> configs = new HashMap<>(); List<FeaturePackLocation> dependencies = new ArrayList<>(); for (FeaturePackLayout fpLayout : layout.getOrderedFeaturePacks()) { boolean isProduct = true; for (FeaturePackLayout fpLayout2 : layout.getOrderedFeaturePacks()) { if (fpLayout2.getSpec().hasTransitiveDep(fpLayout.getFPID().getProducer()) || fpLayout2.getSpec().getFeaturePackDep(fpLayout.getFPID().getProducer()) != null) { isProduct = false; break; } } if (!isProduct) { FeaturePackLocation loc = invoc.getPmSession().getExposedLocation(null, fpLayout.getFPID().getLocation()); dependencies.add(loc); FeaturePackConfig transitiveConfig = layout.getConfig().getTransitiveDep(fpLayout.getFPID().getProducer()); configs.put(loc.getFPID(), transitiveConfig); } } return buildDependencies(dependencies, configs); }
public static String buildPatches(PmCommandInvocation invoc, ProvisioningLayout<FeaturePackLayout> layout) throws ProvisioningException { if (!layout.hasPatches()) { return null; } Table table = new Table(Headers.PATCH, Headers.PATCH_FOR, Headers.UPDATE_CHANNEL); for (FeaturePackLayout fpLayout : layout.getOrderedFeaturePacks()) { List<FeaturePackLayout> patches = layout.getPatches(fpLayout.getFPID()); for (FeaturePackLayout patch : patches) { FeaturePackLocation loc = invoc.getPmSession().getExposedLocation(null, patch.getFPID().getLocation()); FPID patchFor = patch.getSpec().getPatchFor(); table.addLine(patch.getFPID().getBuild(), patchFor.getProducer().getName() + FeaturePackLocation.BUILD_START + patchFor.getBuild(), formatChannel(loc)); } } if (!table.isEmpty()) { table.sort(Table.SortType.ASCENDANT); return table.build(); } return null; }
public Builder addFeaturePack(ProvisionedFeaturePack fp) { featurePacks = CollectionUtils.putLinked(featurePacks, fp.getFPID().getProducer(), fp); return this; }
public FeaturePackRuntimeBuilder(FPID fpid, FeaturePackSpec spec, Path dir, int type) { super(fpid, dir, type); this.producer = fpid.getProducer(); this.dir = dir; this.spec = spec; }
@Override public boolean hasExpired(Path fpDir, FeaturePackLocation.FPID fpid) { try { boolean devBuild = universe.getUniverse(fpid.getUniverse()). getProducer(fpid.getProducer().getName()).getChannel(fpid.getChannel().getName()). isDevBuild(fpid); return devBuild && !seen.contains(fpid); } catch (ProvisioningException ex) { CliLogging.exception(ex); return true; } }