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()); }
FeaturePackRuntime(FeaturePackRuntimeBuilder builder, ProvisioningRuntimeBuilder rt) throws ProvisioningException { super(builder.producer.getLocation().getFPID(), builder.getDir(), builder.getType()); this.spec = builder.getSpec(); this.featureSpecs = builder.featureSpecs;
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); } }
config = currentOrigin.getSpec().getDefinedConfig(configId); if(config != null) { configStack.pushConfig(config); if (currentOrigin.getSpec().hasFeaturePackDeps()) { if (currentOrigin.getSpec().hasTransitiveDeps()) { for (FeaturePackConfig fpDep : currentOrigin.getSpec().getTransitiveDeps()) { extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); for (FeaturePackConfig fpDep : currentOrigin.getSpec().getFeaturePackDeps()) { extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); if (fpConfig.isInheritPackages() && currentOrigin.getSpec().hasDefaultPackages()) { for (String packageName : currentOrigin.getSpec().getDefaultPackageNames()) { if (fpConfigStack.isPackageFilteredOut(currentOrigin.producer, packageName, false)) { continue;
++pushedCount; config = fp.getSpec().getDefinedConfig(configId); if(config != null) { if(modelOnlyStack == null) { if (fp.getSpec().hasTransitiveDeps()) { for (FeaturePackConfig fpDep : fp.getSpec().getTransitiveDeps()) { extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); if(fp.getSpec().hasFeaturePackDeps()) { for(FeaturePackConfig fpDep : fp.getSpec().getFeaturePackDeps()) { extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); if(fpDep.isConfigModelExcluded(configId) || !fpDep.isInheritModelOnlyConfigs() && !fpDep.isConfigModelIncluded(configId)) {
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 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 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 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; }
final FeaturePackSpec currentSpec = currentOrigin.getSpec(); if (currentSpec.hasDefinedConfigs()) { for (ConfigModel config : currentSpec.getDefinedConfigs()) {