private FeaturePackRuntimeBuilder setOrigin(String origin) throws ProvisioningException { return origin == null ? currentOrigin : setOrigin(getOrigin(origin)); }
private Map<ResolvedFeatureId, FeatureDependencySpec> resolveFeatureDeps(ConfigModelStack configStack, Collection<FeatureDependencySpec> featureDeps, final ResolvedFeatureSpec spec) throws ProvisioningException { Map<ResolvedFeatureId, FeatureDependencySpec> resolvedDeps = spec.resolveFeatureDeps(this, featureDeps); if(!resolvedDeps.isEmpty()) { for(Map.Entry<ResolvedFeatureId, FeatureDependencySpec> dep : resolvedDeps.entrySet()) { if(!dep.getValue().isInclude()) { continue; } final ResolvedFeatureId depId = dep.getKey(); if(configStack.includes(depId) || configStack.isFilteredOut(depId.specId, depId)) { continue; } final FeatureDependencySpec depSpec = dep.getValue(); final FeaturePackRuntimeBuilder originalFp = setOrigin(depSpec.getOrigin()); try { resolveFeatureDepsAndRefs(configStack, getFeatureSpec(depId.getSpecId().getName()), depId, Collections.emptyMap(), Collections.emptyList()); } finally { setOrigin(originalFp); } } } return resolvedDeps; }
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); } }
private void processConfigItemContainer(ConfigItemContainer ciContainer) throws ProvisioningException { if(!ciContainer.hasItems()) { return; } final FeaturePackRuntimeBuilder prevFpOrigin = ciContainer.isResetFeaturePackOrigin() ? setThisOrigin(currentOrigin) : null; for (ConfigItem item : ciContainer.getItems()) { final FeaturePackRuntimeBuilder originalFp = setOrigin(item.getOrigin()); try { if (item.isGroup()) { processFeatureGroup((FeatureGroup) item); } else { resolveFeature(configStack, (FeatureConfig) item); } } catch (ProvisioningException e) { if (currentOrigin == null) { throw e; } throw new ProvisioningException( item.isGroup() ? Errors.failedToProcess(currentOrigin.producer.getLocation().getFPID(), ((FeatureGroup) item).getName()) : Errors.failedToProcess(currentOrigin.producer.getLocation().getFPID(), (FeatureConfig) item), e); } finally { setOrigin(originalFp); } } if(prevFpOrigin != null) { setThisOrigin(prevFpOrigin); } }
private void collectDefaultConfigs(FeaturePackConfig fpConfig) throws ProvisioningException { final ProducerSpec producer = fpConfig.getLocation().getProducer(); thisOrigin = layout.getFeaturePack(producer); final FeaturePackRuntimeBuilder parentFp = setOrigin(thisOrigin); try { if (fpConfig.hasDefinedConfigs()) { setOrigin(parentFp);