public ConfigId getId() { return new ConfigId(model, name); }
private boolean contains(List<ProvisionedConfig> configList, ConfigId depId) { int i = 0; while(i < configList.size()) { if(((ResolvedConfig)configList.get(i++)).id.equals(depId)) { return true; } } return false; }
@SuppressWarnings("unchecked") public B addConfig(ConfigModel config) throws ProvisioningDescriptionException { final ConfigId id = config.getId(); if(id.isAnonymous()) { throw new ProvisioningDescriptionException("Anonymous configs are not supported in " + getClass().getName()); } definedConfigs = CollectionUtils.putLinked(definedConfigs, id, config); this.hasModelOnlyConfigs |= config.id.isModelOnly(); return (B) this; }
private void includeLayer(ConfigModelStack configStack, ConfigId layerId) throws ProvisioningException { if(!configStack.addLayer(layerId)) { return; } final ConfigModelStack layerStack = resolveConfigLayer(layerId); if(layerStack.hasLayerDeps()) { for(ConfigLayerDependency layerDep : layerStack.getLayerDeps()) { if(configStack.isLayerExcluded(layerDep.getName())) { if(layerDep.isOptional()) { continue; } throw new ProvisioningException(Errors.unsatisfiedLayerDependency(layerId.getName(), layerDep.getName())); } includeLayer(configStack, new ConfigId(configStack.id.getModel(), layerDep.getName())); } } configStack.includedLayer(layerId); for(ResolvedFeature feature : layerStack.orderFeatures(false)) { if(configStack.isFilteredOut(feature.getSpecId(), feature.getId())) { continue; } configStack.includeFeature(feature.id, feature.spec, feature.params, feature.deps); } }
@Override public String getModel() { return id.getModel(); }
public FeaturePackBuilder addConfig(ConfigModel config, boolean asDefault) throws ProvisioningDescriptionException { final ConfigId id = config.getId(); if(id.isAnonymous()) { throw new ProvisioningDescriptionException("Feature-pack " + fpBuilder.getFPID() + ": attempt to add an anonymous config"); } if(asDefault && id.isModelOnly()) { throw new ProvisioningDescriptionException("Feature-pack " + fpBuilder.getFPID() + ": model-only config can not be added as the default one"); } if (configs.isEmpty()) { configs = new HashMap<>(); } if (configs.put(id, config) != null) { throw new ProvisioningDescriptionException("Feature-pack " + fpBuilder.getFPID() + ": duplicate config " + id); } if(asDefault) { fpBuilder.addConfig(ConfigModel.builder(id.getModel(), id.getName()).build()); } return this; }
@Override public String getName() { return id.getName(); }
@SuppressWarnings("unchecked") public B removeConfig(ConfigId id) throws ProvisioningDescriptionException { definedConfigs = CollectionUtils.remove(definedConfigs, id); // reset flag hasModelOnlyConfigs = false; for (ConfigModel cm : definedConfigs.values()) { hasModelOnlyConfigs |= cm.id.isModelOnly(); } return (B) this; }
@Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((configDeps == null) ? 0 : configDeps.hashCode()); result = prime * result + ((excludedLayers == null) ? 0 : excludedLayers.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); result = prime * result + ((includedLayers == null) ? 0 : includedLayers.hashCode()); result = prime * result + (inheritLayers ? 1231 : 1237); result = prime * result + ((props == null) ? 0 : props.hashCode()); return result; }
final ProvisioningConfig.Builder baseBuilder = initProvisioningConfig(); for (ProvisionedConfig config : provisionedState.getConfigs()) { final ConfigId provisionedId = new ConfigId(config.getModel(), config.getName()); if (!provisionedConfig.hasDefinedConfig(provisionedId)) { baseBuilder.excludeDefaultConfig(provisionedId); if(getProvisionedConfig(baseConfigs, configId.getModel(), configId.getName()) != null) { if(provisionedConfig.isInheritConfigs()) { if(!provisionedConfig.isConfigModelExcluded(configId)) {
public String getModel() { return id.getModel(); }
return; if(!config.id.isAnonymous()) { scheduledIds = CollectionUtils.add(scheduledIds, config.id); if(depId.isModelOnly()) { final Map<String, ConfigModelStack> configs = namedModelConfigs.get(depId.getModel()); if(configs == null) { throw new ProvisioningDescriptionException("Config " + config.id + " has unsatisfied dependency on config " + depId); if (depId.getModel() == null) { configStack = nameOnlyConfigs.get(depId.getName()); } else { final Map<String, ConfigModelStack> configs = namedModelConfigs.get(depId.getModel()); if(configs == null) { throw new ProvisioningDescriptionException("Config " + config.id + " has unsatisfied dependency on config " + depId); configStack = configs.get(depId.getName());
List<ProvisionedConfig> getResolvedConfigs() throws ProvisioningException { final int configsTotal = configsToBuild.size(); if(configsTotal == 0) { return Collections.emptyList(); } List<ProvisionedConfig> configList = new ArrayList<>(configsTotal); for(Map.Entry<ConfigId, ConfigModelStack> entry : configsToBuild.entrySet()) { final ConfigId id = entry.getKey(); if(id.getName() == null || contains(configList, id)) { continue; } orderConfig(entry.getValue(), configList, Collections.emptySet()); } return configList.size() > 0 ? Collections.unmodifiableList(configList) : configList; }
private static boolean isFilteredOut(ConfigCustomizations configCustoms, ConfigId configId) { if(configId.isAnonymous()) { return !configCustoms.isInheritConfigs(); } if(configId.isModelOnly()) { return configCustoms.isConfigModelExcluded(configId) || !configCustoms.isInheritModelOnlyConfigs(); } if(configCustoms.isInheritConfigs()) { if(configCustoms.isConfigExcluded(configId)) { return true; } if(configCustoms.isConfigModelExcluded(configId)) { if(configCustoms.isConfigIncluded(configId)) { return false; } return true; } return false; } if(configCustoms.isConfigIncluded(configId)) { return false; } if(configCustoms.isConfigModelIncluded(configId)) { if(configCustoms.isConfigExcluded(configId)) { return true; } return false; } return true; }
public FeaturePackBuilder addConfig(ConfigModel config) throws ProvisioningDescriptionException { return addConfig(config, !config.getId().isModelOnly()); }
@Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append(location.toString()); if (!layers.isEmpty()) { builder.append(" layers[ "); for (ConfigId l : layers) { builder.append(l.getModel()).append("/").append(l.getName()).append(" "); } builder.append("]"); } return builder.toString(); } }
public ConfigId getId() { return new ConfigId(model, name); }
public String getModel() { return id.getModel(); }