private boolean isRelevant(ResolvedFeatureGroupConfig resolvedFg) { if(resolvedFg.fg.getId() == null) { return true; } for(int i = groupStack.size() - 1; i >= 0; --i) { final ResolvedFeatureGroupConfig stacked = groupStack.get(i); if (stacked.fg.getId() == null || stacked.producer == null || resolvedFg.producer == null || !stacked.producer.equals(resolvedFg.producer) || !stacked.fg.getId().equals(resolvedFg.fg.getId())) { continue; } return !resolvedFg.isSubsetOf(stacked); } return true; }
private boolean isRelevant(ResolvedFeatureGroupConfig resolvedFg) { if(resolvedFg.fg.getId() == null) { return true; } if(!lastConfig.isRelevant(resolvedFg)) { return false; } if(configs.size() > 1) { for (int i = configs.size() - 2; i >= 0; --i) { if (!configs.get(i).isRelevant(resolvedFg)) { return false; } } } return true; } }
void processIncludedFeatures(final ResolvedFeatureGroupConfig pushedFgConfig) throws ProvisioningException { if (pushedFgConfig.includedFeatures.isEmpty()) { return; } for (Map.Entry<ResolvedFeatureId, FeatureConfig> feature : pushedFgConfig.includedFeatures.entrySet()) { final FeatureConfig includedFc = feature.getValue(); if (includedFc != null && includedFc.hasParams()) { final ResolvedFeatureId includedId = feature.getKey(); if (pushedFgConfig.configStack.isFilteredOut(includedId.specId, includedId)) { continue; } // make sure the included ID is in fact present on the feature group branch if (!pushedFgConfig.configStack.includes(includedId)) { throw new ProvisioningException(Errors.featureNotInScope(includedId, pushedFgConfig.fg.getId() == null ? "'anonymous'" : pushedFgConfig.fg.getId().toString(), currentOrigin == null ? null : currentOrigin.producer.getLocation().getFPID())); } resolveFeature(pushedFgConfig.configStack, includedFc); } } }