@Override public FeaturePackRuntime getFeaturePack(ProducerSpec producer) throws ProvisioningException { return layout.getFeaturePack(producer); }
void resolveRefMappings(ProvisioningRuntimeBuilder rt) throws ProvisioningException { if(!xmlSpec.hasFeatureRefs()) { resolvedRefTargets = Collections.emptyMap(); return; } final FeaturePackRuntimeBuilder ownFp = rt.layout.getFeaturePack(id.producer); Collection<FeatureReferenceSpec> refs = xmlSpec.getFeatureRefs(); if (refs.size() == 1) { resolvedRefTargets = Collections.singletonMap(refs.iterator().next().getName(), resolveRefMapping(rt, ownFp, refs.iterator().next())); return; } final Map<String, ResolvedFeatureSpec> tmp = new HashMap<>(refs.size()); for (FeatureReferenceSpec refSpec : refs) { tmp.put(refSpec.getName(), resolveRefMapping(rt, ownFp, refSpec)); } this.resolvedRefTargets = Collections.unmodifiableMap(tmp); }
private ConfigModelStack resolveConfigLayer(ConfigId layerId) throws ProvisioningException { ConfigModelStack layerStack = layers.get(layerId); if(layerStack == null) { layerStack = new ConfigModelStack(layerId, this); for (FeaturePackConfig fpConfig : config.getFeaturePackDeps()) { resolveConfigLayer(layout.getFeaturePack(fpConfig.getLocation().getProducer()), layerStack, layerId); } layers = CollectionUtils.put(layers, layerId, layerStack); } return layerStack; }
FeaturePackRuntimeBuilder getOrigin(final String depName) throws ProvisioningException { if(Constants.THIS.equals(depName)) { if(thisOrigin == null) { throw new ProvisioningException("Feature-pack reference 'this' cannot be used in the current context."); } return thisOrigin; } final FeaturePackLocation fpl = currentOrigin == null ? config.getFeaturePackDep(depName).getLocation() : currentOrigin.getSpec().getFeaturePackDep(depName).getLocation(); return layout.getFeaturePack(fpl.getProducer()); }
if(depSpecs.size() == 1) { final FeatureDependencySpec depSpec = depSpecs.iterator().next(); final FeaturePackRuntimeBuilder depFp = depSpec.getOrigin() == null ? rt.layout.getFeaturePack(id.producer) : rt.getOrigin(depSpec.getOrigin()); final ResolvedFeatureSpec depResolvedSpec = rt.getFeatureSpec(depFp, depSpec.getFeatureId().getSpec().getName()); return Collections.singletonMap(depResolvedSpec.resolveFeatureId(depSpec.getFeatureId().getParams()), depSpec); result.putAll(resolvedSpecDeps); final FeaturePackRuntimeBuilder ownFp = rt.layout.getFeaturePack(id.producer); for (FeatureDependencySpec userDep : depSpecs) { final FeaturePackRuntimeBuilder depFp = userDep.getOrigin() == null ? ownFp : rt.getOrigin(userDep.getOrigin());
for (ResolvedFeatureSpec resolvedSpec : layout.getFeaturePack(fpid.getProducer()).getFeatureSpecs()) { ResolvedSpecId resolved = resolvedSpec.getId(); if (wantedSpecs == null || wantedSpecs.contains(resolved)) {
private boolean resolvePackage(FeaturePackRuntimeBuilder origin, String name, PackageRuntime.Builder parent, int type) throws ProvisioningException { final FeaturePackDepsConfig fpDeps; if (origin != null) { if(origin.resolvePackage(name, this, parent, type)) { return true; } fpDeps = origin.getSpec(); } else { fpDeps = config; } if (!fpDeps.hasFeaturePackDeps()) { return false; } for (FeaturePackConfig fpDep : fpDeps.getFeaturePackDeps()) { final FeaturePackRuntimeBuilder fpDepBuilder = layout.getFeaturePack(fpDep.getLocation().getProducer()); if (setVisited(fpDepBuilder) && resolvePackage(fpDepBuilder, name, parent, type)) { return true; } } return false; }
private static void addCustomUpdates(ProvisioningPlan plan, List<FeaturePackLocation> custom, ProvisioningManager mgr) throws ProvisioningException { try (ProvisioningLayout<?> layout = mgr.getLayoutFactory().newConfigLayout(mgr.getProvisioningConfig())) { for (FeaturePackLocation loc : custom) { FeaturePackLayout fpl = layout.getFeaturePack(loc.getProducer()); FeaturePackLocation current = fpl.getFPID().getLocation(); FeaturePackUpdatePlan fpPlan = FeaturePackUpdatePlan.request(current, fpl.isTransitiveDep()).setNewLocation(loc).buildPlan(); if (fpPlan.hasNewLocation()) { plan.update(fpPlan); } } } }
private ResolvedFeatureSpec resolveRefMapping(ProvisioningRuntimeBuilder rt, FeaturePackRuntimeBuilder origin, FeatureReferenceSpec refSpec) throws ProvisioningException { try { if(refSpec.getOrigin() != null) { origin = rt.layout.getFeaturePack(origin.getSpec().getFeaturePackDep(refSpec.getOrigin()).getLocation().getProducer()); } final ResolvedFeatureSpec resolvedRefSpec = rt.getFeatureSpec(origin, refSpec.getFeature().getName()); assertRefParamMapping(refSpec, resolvedRefSpec); return resolvedRefSpec; } catch (ProvisioningDescriptionException e) { throw new ProvisioningDescriptionException(Errors.failedToResolveFeatureReference(refSpec, id), e); } }
private ResolvedFeatureSpec findFeatureSpec(FeaturePackRuntimeBuilder origin, String name, boolean switchOrigin) throws ProvisioningException { final FeaturePackDepsConfig fpDeps; if (origin != null) { if(origin.isVisited()) { return null; } final ResolvedFeatureSpec fs = origin.getFeatureSpec(name); if (fs != null) { if (switchOrigin) { currentOrigin = origin; } return fs; } fpDeps = origin.getSpec(); setVisited(origin); } else { fpDeps = config; } if (!fpDeps.hasFeaturePackDeps()) { return null; } for (FeaturePackConfig fpDep : fpDeps.getFeaturePackDeps()) { final ResolvedFeatureSpec fs = findFeatureSpec(layout.getFeaturePack(fpDep.getLocation().getProducer()), name, switchOrigin); if (fs != null) { return fs; } } return null; }
private FeatureGroup getFeatureGroupSpec(FeaturePackRuntimeBuilder origin, String name) throws ProvisioningException { final FeaturePackDepsConfig fpDeps; if(origin != null) { if(origin.isVisited()) { return null; } final FeatureGroup fg = origin.getFeatureGroupSpec(name); if(fg != null) { currentOrigin = origin; return fg; } fpDeps = origin.getSpec(); setVisited(origin); } else { fpDeps = config; } if (!fpDeps.hasFeaturePackDeps()) { return null; } for (FeaturePackConfig fpDep : fpDeps.getFeaturePackDeps()) { final FeatureGroup fg = getFeatureGroupSpec(layout.getFeaturePack(fpDep.getLocation().getProducer()), name); if (fg != null) { return fg; } } return null; }
private void processFpConfig(FeaturePackConfig fpConfig) throws ProvisioningException { final ProducerSpec producer = fpConfig.getLocation().getProducer(); thisOrigin = layout.getFeaturePack(producer); final FeaturePackRuntimeBuilder parentFp = setOrigin(thisOrigin);
private void resolveConfigLayer(FeaturePackRuntimeBuilder fp, ConfigModelStack layerStack, ConfigId layerId) throws ProvisioningException { final FeaturePackRuntimeBuilder prevOrigin = currentOrigin; try { final ConfigLayerSpec configLayer = fp.getConfigLayer(layerId); if (configLayer != null) { layerStack.pushGroup(configLayer); } if(fp.getSpec().hasFeaturePackDeps()) { for(FeaturePackConfig depConfig : fp.getSpec().getFeaturePackDeps()) { resolveConfigLayer(layout.getFeaturePack(depConfig.getLocation().getProducer()), layerStack, layerId); } } if(configLayer != null) { setOrigin(fp); processConfigLayer(layerStack, popLayer(layerStack)); } } finally { setOrigin(prevOrigin); } }
final ProvisionedFeature original = feature[0]; final ProvisionedFeature actual = feature[1]; final FeatureSpec fSpec = layout.getFeaturePack(actual.getSpecId().getProducer()).getFeatureSpec(actual.getSpecId().getName()).getSpec(); final FeatureConfig config = new FeatureConfig(fSpec.getName()); config.setOrigin(provisionedConfig.originOf(actual.getSpecId().getProducer()));
private void collectDefaultConfigs(FeaturePackConfig fpConfig) throws ProvisioningException { final ProducerSpec producer = fpConfig.getLocation().getProducer(); thisOrigin = layout.getFeaturePack(producer); final FeaturePackRuntimeBuilder parentFp = setOrigin(thisOrigin); try {
private ConfigModelStack resolveModelOnlyConfig(FeaturePackConfig fpConfig, ConfigModelStack modelOnlyStack, ConfigId configId) throws ProvisioningException { final FeaturePackRuntimeBuilder fp = layout.getFeaturePack(fpConfig.getLocation().getProducer()); final FeaturePackRuntimeBuilder prevOrigin = currentOrigin; try {