void popLevel() { if(isEmpty()) { return; } if(levels.size() == 1) { levels.clear(); lastPushed = null; } else { levels.remove(levels.size() - 1); lastPushed = levels.get(levels.size() - 1); } }
boolean isFilteredOut(ProducerSpec producer, ConfigId configId, boolean fromPrevLevel) { int i = levels.size() - (fromPrevLevel ? 2 : 1); while(i >= 0) { if(levels.get(i--).isFilteredOut(producer, configId)) { return true; } } return isFilteredOut(config, configId); }
boolean push(FeaturePackConfig fpConfig, boolean extendCurrentLevel) { if(!isRelevant(fpConfig)) { return false; } if(extendCurrentLevel) { lastPushed.addFpConfig(fpConfig); return true; } final Level newLevel = new Level(); newLevel.addFpConfig(fpConfig); levels.add(newLevel); lastPushed = newLevel; return true; }
if(config.hasTransitiveDeps()) { for (FeaturePackConfig fpConfig : config.getTransitiveDeps()) { extendedStackLevel |= fpConfigStack.push(fpConfig, extendedStackLevel); extendedStackLevel |= fpConfigStack.push(fpConfig, extendedStackLevel); while(fpConfigStack.hasNext()) { collectDefaultConfigs(fpConfigStack.next()); fpConfigStack.popLevel();
private boolean isRelevant(FeaturePackConfig fpConfig) { if(isEmpty()) { return true; final int inheritPkgs = isInheritPackages(producer); if(inheritPkgs == INHERIT_PKGS_NOT_FOUND || inheritPkgs == INHERIT_PKGS_TRANSITIVE && !fpConfig.isTransitive()) { return true; if(fpConfig.hasExcludedPackages()) { for(String excluded : fpConfig.getExcludedPackages()) { if(!isPackageExcluded(producer, excluded) && !isPackageIncluded(producer, excluded)) { return true; if(!isPackageIncluded(producer, included.getName()) && !isPackageExcluded(producer, included.getName())) { return true;
void processPackageDeps(final PackageDepsSpec pkgDeps, PackageRuntime.Builder parent) throws ProvisioningException { if (pkgDeps.hasLocalPackageDeps()) { for (PackageDependencySpec dep : pkgDeps.getLocalPackageDeps()) { if(fpConfigStack.isPackageExcluded(currentOrigin.producer, dep.getName())) { if(!dep.isOptional()) { throw new UnsatisfiedPackageDependencyException(currentOrigin.getFPID(), dep.getName()); try { for (PackageDependencySpec dep : pkgDeps.getExternalPackageDeps(origin)) { if (fpConfigStack.isPackageExcluded(currentOrigin.producer, dep.getName())) { if (!dep.isOptional()) { throw new UnsatisfiedPackageDependencyException(currentOrigin.getFPID(), dep.getName());
private ProvisioningRuntime doBuild() throws ProvisioningException { fpConfigStack = new FpStack(config); if(config.hasTransitiveDeps()) { for (FeaturePackConfig fpConfig : config.getTransitiveDeps()) { extendedStackLevel |= fpConfigStack.push(fpConfig, extendedStackLevel); extendedStackLevel |= fpConfigStack.push(fpConfig, extendedStackLevel); while(fpConfigStack.hasNext()) { processFpConfig(fpConfigStack.next()); fpConfigStack.popLevel();
for(ConfigModel config : fpConfig.getDefinedConfigs()) { final ConfigId id = config.getId(); if(id.isModelOnly() || fpConfigStack.isFilteredOut(producer, id, true)) { continue; for (ConfigModel config : currentSpec.getDefinedConfigs()) { final ConfigId id = config.getId(); if (id.isModelOnly() || fpConfigStack.isFilteredOut(producer, id, false)) { continue; if (currentSpec.hasTransitiveDeps()) { for (FeaturePackConfig fpDep : currentSpec.getTransitiveDeps()) { extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); while (fpConfigStack.hasNext()) { collectDefaultConfigs(fpConfigStack.next()); fpConfigStack.popLevel();
if (config != null && !fpConfigStack.isFilteredOut(producer, configId, true)) { configStack.pushConfig(config); fpConfigStacks = CollectionUtils.add(fpConfigStacks, configStack); if (fpConfig.isTransitive() || fpConfigStack.isFilteredOut(producer, configId, false)) { continue; if (currentOrigin.getSpec().hasTransitiveDeps()) { for (FeaturePackConfig fpDep : currentOrigin.getSpec().getTransitiveDeps()) { extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel); while (fpConfigStack.hasNext()) { processFpConfig(fpConfigStack.next()); if (fpConfigStack.isPackageFilteredOut(currentOrigin.producer, packageName, false)) { continue; if (fpConfigStack.isPackageFilteredOut(currentOrigin.producer, pkgConfig.getName(), true)) { continue; fpConfigStack.popLevel();