@SuppressWarnings("unchecked") public B removeFeature(FeatureId id) throws ProvisioningDescriptionException { int index = -1; // Although that is a list, we have a single ConfigModel for a given ConfigId for (int i = 0; i < items.size(); i++) { ConfigItem ci = items.get(i); if (ci instanceof FeatureConfig) { FeatureConfig conf = (FeatureConfig) ci; if (conf.getSpecId().equals(id.getSpec())) { boolean eq = true; for (Entry<String, String> entry : id.getParams().entrySet()) { String val = conf.getParam(entry.getKey()); if (val == null || !val.equals(entry.getValue())) { eq = false; break; } } if (eq) { index = i; break; } } } } if (index == -1) { throw new ProvisioningDescriptionException("Feature " + id + " is not added"); } items = CollectionUtils.remove(items, index); return (B) this; }
private Map<ResolvedFeatureId, FeatureConfig> resolveIncludedIds(Map<ResolvedFeatureId, FeatureConfig> includedFeatures, Map<FeatureId, FeatureConfig> features) throws ProvisioningException { for (Map.Entry<FeatureId, FeatureConfig> included : features.entrySet()) { final FeatureConfig fc = new FeatureConfig(included.getValue()); final ResolvedFeatureSpec resolvedSpec = getFeatureSpec(fc.getSpecId().getName()); if (parentFeature != null) { includedFeatures = CollectionUtils.put(includedFeatures, resolvedSpec.resolveIdFromForeignKey(parentFeature.id, fc.getParentRef(), fc.getParams()), fc); } else { includedFeatures = CollectionUtils.put(includedFeatures, resolvedSpec.resolveFeatureId(fc.getParams()), fc); } } return includedFeatures; }
private static FeatureConfig getExistingFeature(ConfigModel cm, FeatureId featId) { for (ConfigItem ci : cm.getItems()) { if (ci instanceof FeatureConfig) { FeatureConfig fi = (FeatureConfig) ci; if (fi.getSpecId().equals(featId.getSpec())) { boolean eq = true; for (String name : featId.getParamNames()) { String p = fi.getParam(name); if (p == null || !p.equals(featId.getParam(name))) { eq = false; break; } } if (eq) { return fi; } } } } return null; }
public static void addFeatureConfig(ElementNode parentE, FeatureConfig fc, String ns) { final ElementNode fcE = addElement(parentE, Element.FEATURE.getLocalName(), ns); addAttribute(fcE, Attribute.SPEC, fc.getSpecId().toString()); if(fc.getParentRef() != null) { addAttribute(fcE, Attribute.PARENT_REF, fc.getParentRef()); } addFeatureConfigBody(fcE, null, fc, ns); } }
if (config.getSpecId() == null) { throw ParsingUtils.missingAttributes(reader.getLocation(), Collections.singleton(Attribute.SPEC));
private void resolveFeature(ConfigModelStack configStack, FeatureConfig fc) throws ProvisioningException { final FeaturePackRuntimeBuilder originalOrigin = currentOrigin; final ResolvedFeatureSpec spec = getFeatureSpec(fc.getSpecId().getName(), true); final ResolvedFeature originalParent = parentFeature; try { final ResolvedFeatureId resolvedId = parentFeature == null ? spec.resolveFeatureId(fc.getParams()) : spec.resolveIdFromForeignKey(parentFeature.id, fc.getParentRef(), fc.getParams()); if (configStack.isFilteredOut(spec.id, resolvedId)) { return; } parentFeature = resolveFeatureDepsAndRefs(configStack, spec, resolvedId, spec.resolveNonIdParams(parentFeature == null ? null : parentFeature.id, fc.getParentRef(), fc.getParams()), fc.getFeatureDeps()); if (fc.hasUnsetParams()) { parentFeature.unsetAllParams(fc.getUnsetParams(), true); } if (fc.hasResetParams()) { parentFeature.resetAllParams(fc.getResetParams()); } } finally { currentOrigin = originalOrigin; } processConfigItemContainer(fc); parentFeature = originalParent; }