use of org.jboss.galleon.config.FeaturePackConfig in project galleon by wildfly.
the class ProvisioningXmlWriter method toElement.
protected ElementNode toElement(ProvisioningConfig config) {
final ElementNode install = addElement(null, Element.INSTALLATION);
writeUniverseSpecs(config, install);
if (config.hasTransitiveDeps()) {
final ElementNode transitives = addElement(install, Element.TRANSITIVE);
for (FeaturePackConfig dep : config.getTransitiveDeps()) {
writeFeaturePackConfig(addElement(transitives, Element.FEATURE_PACK), config.getUserConfiguredLocation(dep.getLocation()), dep, config.originOf(dep.getLocation().getProducer()));
}
}
if (config.hasFeaturePackDeps()) {
for (FeaturePackConfig fp : config.getFeaturePackDeps()) {
final ElementNode fpElement = addElement(install, Element.FEATURE_PACK);
writeFeaturePackConfig(fpElement, config.getUserConfiguredLocation(fp.getLocation()), fp, config.originOf(fp.getLocation().getProducer()));
}
}
writeConfigCustomizations(install, Element.INSTALLATION.getNamespace(), config);
if (config.hasOptions()) {
final Map<String, String> pluginOptions = config.getOptions();
final String[] names = pluginOptions.keySet().toArray(new String[pluginOptions.size()]);
Arrays.sort(names);
final ElementNode optionsE = addElement(install, Element.OPTIONS);
for (String name : names) {
final ElementNode optionE = addElement(optionsE, Element.OPTION);
addAttribute(optionE, Attribute.NAME, name);
final String value = pluginOptions.get(name);
if (value != null) {
addAttribute(optionE, Attribute.VALUE, value);
}
}
}
return install;
}
use of org.jboss.galleon.config.FeaturePackConfig in project galleon by wildfly.
the class FindCommand method runCommand.
@Override
protected void runCommand(PmCommandInvocation invoc) throws CommandExecutionException {
if (pattern == null && layerPattern == null) {
throw new CommandExecutionException(CliErrors.missingPattern());
} else {
if (pattern == null) {
pattern = ".Final";
}
Map<UniverseSpec, Set<Result>> results = new HashMap<>();
Map<UniverseSpec, Set<String>> exceptions = new HashMap<>();
if (!pattern.endsWith("*")) {
pattern = pattern + "*";
}
pattern = pattern.replaceAll("\\*", ".*");
List<Pattern> layersCompiledPatterns = new ArrayList<>();
if (layerPattern != null) {
for (String l : layerPattern.split(",")) {
if (!l.endsWith("*")) {
l = l + "*";
}
l = l.replaceAll("\\*", ".*");
layersCompiledPatterns.add(Pattern.compile(l));
}
}
boolean containsFrequency = pattern.contains("" + FeaturePackLocation.FREQUENCY_START);
Pattern compiledPattern = Pattern.compile(pattern);
Integer[] numResults = new Integer[1];
numResults[0] = 0;
ProgressTracker<FPID> track = null;
if (invoc.getPmSession().isTrackersEnabled()) {
track = ProgressTrackers.newFindTracker(invoc);
}
ProgressTracker<FPID> tracker = track;
invoc.getPmSession().unregisterTrackers();
// Search for an installation in the context
Path installation = null;
try {
installation = Util.lookupInstallationDir(invoc.getConfiguration().getAeshContext(), null);
} catch (ProvisioningException ex) {
// XXX OK, no installation.
}
Path finalPath = installation;
try {
Comparator<Result> locComparator = new Comparator<Result>() {
@Override
public int compare(Result o1, Result o2) {
return o1.location.toString().compareTo(o2.location.toString());
}
};
UniverseVisitor visitor = new UniverseVisitor() {
@Override
public void visit(Producer<?> producer, FeaturePackLocation loc) {
try {
if (resolvedOnly && !producer.getChannel(loc.getChannelName()).isResolved(loc)) {
return;
}
} catch (ProvisioningException ex) {
exception(loc.getUniverse(), ex);
return;
}
if (tracker != null) {
tracker.processing(loc.getFPID());
}
// Universe could have been set in the pattern, matches on
// the canonical and exposed (named universe).
FeaturePackLocation exposedLoc = invoc.getPmSession().getExposedLocation(finalPath, loc);
boolean canonicalMatch = compiledPattern.matcher(loc.toString()).matches();
boolean exposedMatch = compiledPattern.matcher(exposedLoc.toString()).matches();
// If no frequency set, matches FPL that don't contain a frequency.
if (canonicalMatch || exposedMatch) {
if ((containsFrequency && loc.getFrequency() != null) || (!containsFrequency && loc.getFrequency() == null)) {
Result result;
if (exposedMatch) {
result = new Result(exposedLoc);
} else {
result = new Result(loc);
}
if (!layersCompiledPatterns.isEmpty()) {
try {
FeaturePackConfig config = FeaturePackConfig.forLocation(loc);
ProvisioningConfig provisioning = ProvisioningConfig.builder().addFeaturePackDep(config).build();
Set<ConfigId> layers = new HashSet<>();
try (ProvisioningLayout<FeaturePackLayout> layout = invoc.getPmSession().getLayoutFactory().newConfigLayout(provisioning)) {
for (FeaturePackLayout l : layout.getOrderedFeaturePacks()) {
layers.addAll(l.loadLayers());
}
}
for (ConfigId l : layers) {
for (Pattern p : layersCompiledPatterns) {
if (p.matcher(l.getName()).matches()) {
result.layers.add(l);
}
}
}
if (!result.layers.isEmpty()) {
Set<Result> locations = results.get(loc.getUniverse());
if (locations == null) {
locations = new TreeSet<>(locComparator);
results.put(loc.getUniverse(), locations);
}
locations.add(result);
numResults[0] = numResults[0] + 1;
}
} catch (IOException | ProvisioningException ex) {
exception(loc.getUniverse(), ex);
}
} else {
Set<Result> locations = results.get(loc.getUniverse());
if (locations == null) {
locations = new TreeSet<>(locComparator);
results.put(loc.getUniverse(), locations);
}
locations.add(result);
numResults[0] = numResults[0] + 1;
}
}
}
}
@Override
public void exception(UniverseSpec spec, Exception ex) {
Set<String> set = exceptions.get(spec);
if (set == null) {
set = new HashSet<>();
exceptions.put(spec, set);
}
set.add(ex.getLocalizedMessage() == null ? ex.getMessage() : ex.getLocalizedMessage());
}
};
if (tracker != null) {
tracker.starting(-1);
}
if (fromUniverse == null) {
invoc.getPmSession().getUniverse().visitAllUniverses(visitor, true, finalPath);
} else {
invoc.getPmSession().getUniverse().visitUniverse(UniverseSpec.fromString(fromUniverse), visitor, true);
}
if (tracker != null) {
tracker.complete();
}
printExceptions(invoc, exceptions);
invoc.println(Config.getLineSeparator() + "Found " + numResults[0] + " feature pack location" + (numResults[0] > 1 ? "s." : "."));
for (Entry<UniverseSpec, Set<Result>> entry : results.entrySet()) {
for (Result loc : entry.getValue()) {
invoc.println(loc.toString());
}
}
} catch (ProvisioningException ex) {
throw new CommandExecutionException(ex.getLocalizedMessage());
}
}
}
use of org.jboss.galleon.config.FeaturePackConfig in project galleon by wildfly.
the class LayersConfigBuilder method build.
ProvisioningConfig build() throws ProvisioningException, IOException {
// Reuse existing configuration builder.
ProvisioningConfig existing = mgr.getProvisioningConfig();
ProvisioningConfig.Builder builder = null;
FeaturePackConfig.Builder fpBuilder = null;
ConfigModel.Builder configBuilder = null;
if (existing != null) {
builder = ProvisioningConfig.builder(existing);
ConfigId id = new ConfigId(model, config);
if (existing.hasDefinedConfig(id)) {
ConfigModel cmodel = existing.getDefinedConfig(id);
configBuilder = ConfigModel.builder(cmodel);
handleLayers(configBuilder, cmodel);
builder.removeConfig(id);
}
if (builder.hasFeaturePackDep(loc.getProducer())) {
FeaturePackConfig fp = existing.getFeaturePackDep(loc.getProducer());
fpBuilder = FeaturePackConfig.builder(fp);
builder.removeFeaturePackDep(fp.getLocation());
}
}
if (builder == null) {
builder = ProvisioningConfig.builder();
}
if (configBuilder == null) {
configBuilder = ConfigModel.builder(model, config);
handleLayers(configBuilder, null);
}
if (fpBuilder == null) {
fpBuilder = FeaturePackConfig.builder(loc).setInheritConfigs(false).setInheritPackages(false);
}
builder.addConfig(configBuilder.build());
builder.addFeaturePackDep(fpBuilder.build());
return builder.build();
}
use of org.jboss.galleon.config.FeaturePackConfig in project galleon by wildfly.
the class StateInfoUtil method buildDependencies.
private static String buildDependencies(PmCommandInvocation invoc, ProvisioningLayout<FeaturePackLayout> layout) throws ProvisioningException {
Map<FPID, FeaturePackConfig> configs = new HashMap<>();
List<FeaturePackLocation> dependencies = new ArrayList<>();
for (FeaturePackLayout fpLayout : layout.getOrderedFeaturePacks()) {
boolean isProduct = true;
for (FeaturePackLayout fpLayout2 : layout.getOrderedFeaturePacks()) {
if (fpLayout2.getSpec().hasTransitiveDep(fpLayout.getFPID().getProducer()) || fpLayout2.getSpec().getFeaturePackDep(fpLayout.getFPID().getProducer()) != null) {
isProduct = false;
break;
}
}
if (!isProduct) {
FeaturePackLocation loc = invoc.getPmSession().getExposedLocation(null, fpLayout.getFPID().getLocation());
dependencies.add(loc);
FeaturePackConfig transitiveConfig = layout.getConfig().getTransitiveDep(fpLayout.getFPID().getProducer());
configs.put(loc.getFPID(), transitiveConfig);
}
}
return buildDependencies(dependencies, configs);
}
use of org.jboss.galleon.config.FeaturePackConfig in project galleon by wildfly.
the class ProvisioningRuntimeBuilder method resolveModelOnlyConfig.
private ConfigModelStack resolveModelOnlyConfig(ConfigId configId) throws ProvisioningException {
boolean extendedStackLevel = false;
if (config.hasTransitiveDeps()) {
for (FeaturePackConfig fpDep : config.getTransitiveDeps()) {
extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel);
}
}
ConfigModelStack modelOnlyStack = null;
for (FeaturePackConfig fpDep : config.getFeaturePackDeps()) {
extendedStackLevel |= fpConfigStack.push(fpDep, extendedStackLevel);
if (fpDep.isConfigModelExcluded(configId) || !fpDep.isInheritModelOnlyConfigs() && !fpDep.isConfigModelIncluded(configId)) {
continue;
}
modelOnlyStack = resolveModelOnlyConfig(fpDep, modelOnlyStack, configId);
}
clearFlag(FeaturePackRuntimeBuilder.RESOLVE_MODEL_ONLY_CONFIG);
if (extendedStackLevel) {
fpConfigStack.popLevel();
}
return modelOnlyStack;
}
Aggregations