public static FeatureGroup forGroup(String featureGroupName) { return new FeatureGroup(null, featureGroupName); }
public static Builder builder(String featureGroupName) { return builder(featureGroupName, true); }
public FeaturePackBuilder addFeatureGroup(FeatureGroup featureGroup) throws ProvisioningDescriptionException { if (featureGroups.isEmpty()) { featureGroups = new HashMap<>(); } if (featureGroups.put(featureGroup.getName(), featureGroup) != null) { throw new ProvisioningDescriptionException("Feature-pack " + fpBuilder.getFPID() + ": duplicate feature-group name " + featureGroup.getName()); } return this; }
setOrigin(entry.getKey()); try { if (extFg.hasExcludedSpecs()) { resolvedFgc.excludedSpecs = resolveSpecIds(resolvedFgc.excludedSpecs, extFg.getExcludedSpecs()); if (extFg.hasIncludedSpecs()) { resolvedFgc.includedSpecs = resolveSpecIds(resolvedFgc.includedSpecs, extFg.getIncludedSpecs()); if (extFg.hasExcludedFeatures()) { resolvedFgc.excludedFeatures = resolveExcludedIds(resolvedFgc.excludedFeatures, extFg.getExcludedFeatures()); if (extFg.hasIncludedFeatures()) { resolvedFgc.includedFeatures = resolveIncludedIds(resolvedFgc.includedFeatures, extFg.getIncludedFeatures());
for(Map.Entry<String, FeatureGroup> entry : definedConfig.getExternalFeatureGroups().entrySet()) { final FeatureGroup fg = entry.getValue(); if(fg.hasIncludedSpecs()) { for(SpecId specId : fg.getIncludedSpecs()) { configBuilder.includeSpec(entry.getKey(), specId.getName()); if(fg.hasExcludedSpecs()) { for(SpecId specId : fg.getExcludedSpecs()) { configBuilder.excludeSpec(entry.getKey(), specId.getName());
protected ElementNode toElement(FeatureGroup featureGroup, String ns) { final ElementNode fgE = addElement(null, Element.FEATURE_GROUP_SPEC.getLocalName(), ns); if(featureGroup.getName() != null) { addAttribute(fgE, Attribute.NAME, featureGroup.getName()); } //addFeatureGroupIncludeExclude(featureGroup, ns, fgE); writeFeatureGroupSpecBody(fgE, featureGroup, ns); if(featureGroup.hasPackageDeps()) { PackageXmlWriter.writePackageDeps(featureGroup, addElement(fgE, Element.PACKAGES.getLocalName(), ns)); } return fgE; }
final FeatureGroup featureGroup = definedConfig.getExternalFeatureGroups().get(origin); if (featureGroup != null) { specs = featureGroup.getExcludedSpecs(); final FeatureGroup featureGroup = definedConfig.getExternalFeatureGroups().get(origin); if (featureGroup != null) { specs = featureGroup.getIncludedSpecs();
private FeatureGroup.Builder getExternalFgConfig(String origin) { FeatureGroup.Builder fgBuilder = externalFgConfigs.get(origin); if(fgBuilder != null) { return fgBuilder; } fgBuilder = FeatureGroup.builder(inheritFeatures); externalFgConfigs = CollectionUtils.putLinked(externalFgConfigs, origin, fgBuilder); return fgBuilder; } }
FeatureGroup getFeatureGroupSpec(String name) throws ProvisioningException { if(fgSpecs != null) { final FeatureGroup fgSpec = fgSpecs.get(name); if(fgSpec != null) { return fgSpec; } } final Path specXml = dir.resolve(Constants.FEATURE_GROUPS).resolve(name + ".xml"); if (!Files.exists(specXml)) { return null; } try (BufferedReader reader = Files.newBufferedReader(specXml)) { final FeatureGroup fgSpec = FeatureGroupXmlParser.getInstance().parse(reader); if(!fgSpec.getName().equals(name)) { throw new ProvisioningDescriptionException("Feature-pack " + getFPID() + " feature group " + fgSpec.getName() + " does not match the requested feature group name " + name); } if (fgSpecs == null) { fgSpecs = new HashMap<>(); } fgSpecs.put(name, fgSpec); return fgSpec; } catch (Exception e) { throw new ProvisioningException(Errors.parseXml(specXml), e); } }
public static FeatureGroup forGroup(String origin, String featureGroupName) { return new FeatureGroup(origin, featureGroupName); }
@Override public FeatureGroup parse(final Reader input) throws XMLStreamException, ProvisioningDescriptionException { final FeatureGroup.Builder configBuilder = FeatureGroup.builder(); XmlParsers.parse(input, configBuilder); return configBuilder.build(); } }
final FeatureGroupXmlWriter fgWriter = FeatureGroupXmlWriter.getInstance(); for(FeatureGroup fg : featureGroups.values()) { fgWriter.write(fg, fgsDir.resolve(fg.getName() + ".xml"));
public FeatureGroup build() throws ProvisioningDescriptionException { return new FeatureGroup(this); } }
protected FeatureGroupBuilderSupport(FeatureGroupSupport fg) { super(fg); this.name = fg.name; this.origin = fg.origin; this.inheritFeatures = fg.inheritFeatures; this.includedSpecs = CollectionUtils.clone(fg.includedSpecs); this.includedFeatures = CollectionUtils.clone(fg.includedFeatures); this.excludedSpecs = CollectionUtils.clone(fg.excludedSpecs); this.excludedFeatures = CollectionUtils.clone(fg.excludedFeatures); if(!fg.externalFgConfigs.isEmpty()) { for(Map.Entry<String, FeatureGroup> entry : fg.externalFgConfigs.entrySet()) { externalFgConfigs = CollectionUtils.putLinked(externalFgConfigs, entry.getKey(), FeatureGroup.builder(entry.getValue())); } } this.items = CollectionUtils.clone(fg.items); }
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); } }
throw new XMLStreamException(Attribute.INHERIT_FEATURES + " attribute can't be used w/o attribute " + Attribute.NAME); final FeatureGroup.Builder depBuilder = FeatureGroup.builder(name).setOrigin(origin); if(inheritFeatures != null) { depBuilder.setInheritFeatures(inheritFeatures);