public B addFeaturePackDep(FeaturePackConfig dependency) throws ProvisioningDescriptionException { return addFeaturePackDep(null, dependency); }
public B updateFeaturePackDep(FeaturePackLocation fpl) throws ProvisioningDescriptionException { return addFeaturePackDepResolved(null, FeaturePackConfig.forLocation(resolveUniverseSpec(fpl)), true); }
@SuppressWarnings("unchecked") public B initUniverses(FeaturePackDepsConfig original) throws ProvisioningDescriptionException { if (original.defaultUniverse != null) { setDefaultUniverse(original.defaultUniverse); } for (Map.Entry<String, UniverseSpec> universe : original.universeSpecs.entrySet()) { addUniverse(universe.getKey(), universe.getValue()); } return (B) this; }
static FeaturePackLocation resolveUniverse(FeaturePackDepsConfigBuilder<?> builder, FeaturePackLocation location) throws XMLStreamException { if(location.getUniverse() == null) { if(!builder.hasDefaultUniverse()) { throw new XMLStreamException("Failed to parse feature-pack configuration for " + location + ": default universe was not configured"); } location = new FeaturePackLocation(builder.getDefaultUniverse(), location.getProducerName(), location.getChannelName(), location.getFrequency(), location.getBuild()); } else { final UniverseSpec resolvedConfig = builder.getUniverseSpec(location.getUniverse().toString()); if(resolvedConfig != null) { location = new FeaturePackLocation(resolvedConfig, location.getProducerName(), location.getChannelName(), location.getFrequency(), location.getBuild()); } } return location; }
public B addFeaturePackDep(String origin, FeaturePackConfig dependency) throws ProvisioningDescriptionException { final UniverseSpec configuredUniverse = getConfiguredUniverse(dependency.getLocation()); return addFeaturePackDepResolved(origin, configuredUniverse == null ? dependency : FeaturePackConfig.builder(dependency.getLocation().replaceUniverse(configuredUniverse)).init(dependency).build(), false); }
@SuppressWarnings("unchecked") public B removeTransitiveDep(FPID fpid) throws ProvisioningException { final FeaturePackLocation fpl = resolveUniverseSpec(fpid.getLocation()); final ProducerSpec producer = fpl.getProducer(); final FeaturePackConfig fpDep = transitiveDeps.get(producer); if(fpDep == null) { throw new ProvisioningException(Errors.unknownFeaturePack(fpid)); } if(!fpDep.getLocation().equals(fpl)) { throw new ProvisioningException(Errors.unknownFeaturePack(fpid)); } if(transitiveDeps.size() == 1) { transitiveDeps = Collections.emptyMap(); return (B) this; } else { transitiveDeps = CollectionUtils.remove(transitiveDeps, producer); } updateOriginMappings(producer); return (B) this; }
@SuppressWarnings("unchecked") public B addFeaturePackDep(int index, FeaturePackConfig dependency) throws ProvisioningDescriptionException { if (index >= fpDeps.size()) { addFeaturePackDep(dependency); return (B) this; } FeaturePackLocation fpl = dependency.getLocation(); final UniverseSpec resolvedUniverse = getConfiguredUniverse(fpl); if(resolvedUniverse != null) { fpl = fpl.replaceUniverse(resolvedUniverse); dependency = FeaturePackConfig.builder(fpl).init(dependency).build(); } if (fpDeps.containsKey(fpl.getProducer())) { throw new ProvisioningDescriptionException(Errors.featurePackAlreadyConfigured(fpl.getProducer())); } // reconstruct the linkedMap. Map<ProducerSpec, FeaturePackConfig> tmp = Collections.emptyMap(); int i = 0; for (Entry<ProducerSpec, FeaturePackConfig> entry : fpDeps.entrySet()) { if (i == index) { tmp = CollectionUtils.putLinked(tmp, fpl.getProducer(), dependency); } tmp = CollectionUtils.putLinked(tmp, entry.getKey(), entry.getValue()); i += 1; } fpDeps = tmp; return (B) this; }
public B setDefaultUniverse(UniverseSpec universeSpec) throws ProvisioningDescriptionException { return addUniverse(null, universeSpec); }
public boolean hasUniverse(String name) { if(name == null) { return hasDefaultUniverse(); } return universeSpecs.containsKey(name); }
@SuppressWarnings("unchecked") public B clearFeaturePackDeps() { fpDeps = Collections.emptyMap(); fpDepsByOrigin = Collections.emptyMap(); producerOrigins = Collections.emptyMap(); transitiveDeps = Collections.emptyMap(); resetConfigs(); return (B) this; }
public FeaturePackLocation resolveUniverseSpec(FeaturePackLocation fpl) { final UniverseSpec resolved = getConfiguredUniverse(fpl); return resolved == null ? fpl : fpl.replaceUniverse(resolved); }
public B setDefaultUniverse(String factory, String location) throws ProvisioningDescriptionException { return setDefaultUniverse(new UniverseSpec(factory, location)); }
public int getFeaturePackDepIndex(FeaturePackLocation fpl) throws ProvisioningException { fpl = resolveUniverseSpec(fpl); final ProducerSpec producer = fpl.getProducer(); final FeaturePackConfig fpDep = fpDeps.get(producer); if (fpDep == null) { throw new ProvisioningException(Errors.unknownFeaturePack(fpl.getFPID())); } if (!fpDep.getLocation().equals(fpl)) { throw new ProvisioningException(Errors.unknownFeaturePack(fpl.getFPID())); } int i = 0; for (ProducerSpec depProducer : fpDeps.keySet()) { if (depProducer.equals(producer)) { break; } i += 1; } return i; }
static FeaturePackLocation resolveUniverse(FeaturePackDepsConfigBuilder<?> builder, FeaturePackLocation location) throws XMLStreamException { if(location.getUniverse() == null) { if(!builder.hasDefaultUniverse()) { throw new XMLStreamException("Failed to parse feature-pack configuration for " + location + ": default universe was not configured"); } location = new FeaturePackLocation(builder.getDefaultUniverse(), location.getProducerName(), location.getChannelName(), location.getFrequency(), location.getBuild()); } else { final UniverseSpec resolvedConfig = builder.getUniverseSpec(location.getUniverse().toString()); if(resolvedConfig != null) { location = new FeaturePackLocation(resolvedConfig, location.getProducerName(), location.getChannelName(), location.getFrequency(), location.getBuild()); } } return location; }
public B updateFeaturePackDep(String origin, FeaturePackConfig dependency) throws ProvisioningDescriptionException { final UniverseSpec configuredUniverse = getConfiguredUniverse(dependency.getLocation()); return addFeaturePackDepResolved(origin, configuredUniverse == null ? dependency : FeaturePackConfig.builder(dependency.getLocation().replaceUniverse(configuredUniverse)).init(dependency).build(), true); }
@SuppressWarnings("unchecked") public B removeFeaturePackDep(FeaturePackLocation fpl) throws ProvisioningException { fpl = resolveUniverseSpec(fpl); final ProducerSpec producer = fpl.getProducer(); final FeaturePackConfig fpDep = fpDeps.get(producer); if(fpDep == null) { throw new ProvisioningException(Errors.unknownFeaturePack(fpl.getFPID())); } if(!fpDep.getLocation().getFPID().equals(fpl.getFPID())) { throw new ProvisioningException(Errors.unknownFeaturePack(fpl.getFPID())); } if(fpDeps.size() == 1) { fpDeps = Collections.emptyMap(); } else { fpDeps = CollectionUtils.remove(fpDeps, producer); } updateOriginMappings(producer); return (B) this; }
public B addUniverse(String name, String factory, String location) throws ProvisioningDescriptionException { return addUniverse(name, new UniverseSpec(factory, location)); }
public B updateTransitiveDep(FeaturePackLocation fpl) throws ProvisioningDescriptionException { return addFeaturePackDepResolved(null, FeaturePackConfig.forTransitiveDep(resolveUniverseSpec(fpl)), true); }
private static void readUniverse(XMLExtendedStreamReader reader, FeaturePackDepsConfigBuilder<?> fpBuilder) throws XMLStreamException { String name = null; String factory = null; String location = null; final int count = reader.getAttributeCount(); for (int i = 0; i < count; i++) { final Attribute attribute = Attribute.of(reader.getAttributeName(i).getLocalPart()); switch (attribute) { case FACTORY: factory = reader.getAttributeValue(i); break; case NAME: name = reader.getAttributeValue(i); break; case LOCATION: location = reader.getAttributeValue(i); break; default: throw ParsingUtils.unexpectedContent(reader); } } ParsingUtils.parseNoContent(reader); try { fpBuilder.addUniverse(name, factory, location); } catch (ProvisioningDescriptionException e) { throw new XMLStreamException("Failed to parse universe declaration", e); } }
case XMLStreamConstants.END_ELEMENT: { try { builder.addFeaturePackDep(origin, depBuilder.build()); } catch (ProvisioningDescriptionException e) { final StringBuilder buf = new StringBuilder();