@Override public ContainerDescriptor scan(Feature feature, Extension extension, ArtifactProvider provider) throws IOException { FeatureDescriptor featureDescriptor = new FeatureDescriptorImpl(feature); for (Artifact artifact : feature.getBundles()) { File file = provider.provide(artifact.getId()); BundleDescriptor bundleDescriptor = new BundleDescriptorImpl(artifact, file, artifact.getStartOrder()); featureDescriptor.getBundleDescriptors().add(bundleDescriptor); } return featureDescriptor; }
public static void convert(File inputFile, File outputFile, FeatureProvider fp, File ... additionalInputFiles) throws UncheckedIOException { if (outputFile.exists()) { if (outputFile.lastModified() > inputFile.lastModified()) { LOGGER.debug("Skipping the generation of {} as this file already exists and is newer.", outputFile); return; } } org.apache.sling.feature.Feature feature = getFeature(inputFile); if (feature.getPrototype() != null) { feature = handlePrototype(feature, additionalInputFiles, fp); } Object featureNameVar = feature.getVariables().remove(PROVISIONING_MODEL_NAME_VARIABLE); String featureName; if (featureNameVar instanceof String) { featureName = (String) featureNameVar; } else { featureName = feature.getId().getArtifactId(); } String runMode = feature.getVariables().remove(PROVISIONING_RUNMODES); String[] runModes = null; if (runMode != null) { runModes = runMode.split(","); } Feature newFeature = new Feature(featureName); convert(newFeature, feature.getVariables(), feature.getBundles(), feature.getConfigurations(), feature.getFrameworkProperties(), feature.getExtensions(), outputFile.getAbsolutePath(), runModes); }
/** * Scan a feature * * @param feature The feature * @return The feature descriptor * @throws IOException If something goes wrong or a scanner is missing */ public FeatureDescriptor scan(final Feature feature) throws IOException { final FeatureDescriptorImpl desc = new FeatureDescriptorImpl(feature); getBundleInfos(feature.getBundles(), desc); scan(feature, feature.getExtensions(), desc); compact(desc); desc.lock(); return desc; }
private static List<org.apache.sling.feature.Feature> buildFeatures(Model model, String bareFileName, Map<String, Object> options) { final List<org.apache.sling.feature.Feature> features = new ArrayList<>(); String groupId = getOption(options, "groupId", "generated"); String version = getOption(options, "version", "1.0.0"); for(final Feature feature : model.getFeatures() ) { final String idString; String name = feature.getName(); if ( name != null ) { name = name.replaceAll("[:]", ""); if (!name.equals(bareFileName)) { name = bareFileName + "_" + name; } if ( feature.getVersion() != null ) { idString = groupId + "/" + name + "/" + feature.getVersion(); } else { idString = groupId + "/" + name + "/" + version; } } else { idString = groupId + "/feature/" + version; } final org.apache.sling.feature.Feature f = new org.apache.sling.feature.Feature(ArtifactId.parse(idString)); features.add(f); buildFromFeature(feature, f.getVariables(), f.getBundles(), f.getConfigurations(), f.getExtensions(), f.getFrameworkProperties()); if (!f.getId().getArtifactId().equals(feature.getName())) { f.getVariables().put(FeatureToProvisioning.PROVISIONING_MODEL_NAME_VARIABLE, feature.getName()); } } return features; }
private static void merge(final Feature target, final Feature source, final BuilderContext context, final List<String> artifactOverrides, final String originKey) { BuilderUtil.mergeVariables(target.getVariables(), source.getVariables(), context); BuilderUtil.mergeBundles(target.getBundles(), source.getBundles(), source, artifactOverrides, originKey); BuilderUtil.mergeConfigurations(target.getConfigurations(), source.getConfigurations()); BuilderUtil.mergeFrameworkProperties(target.getFrameworkProperties(), source.getFrameworkProperties(), context); BuilderUtil.mergeRequirements(target.getRequirements(), source.getRequirements()); BuilderUtil.mergeCapabilities(target.getCapabilities(), source.getCapabilities()); BuilderUtil.mergeExtensions(target, source, context, artifactOverrides, originKey); }
result.getBundles().clear(); result.getFrameworkProperties().clear(); result.getConfigurations().clear(); BuilderUtil.CATCHALL_OVERRIDE + BuilderUtil.OVERRIDE_SELECT_LATEST), TRACKING_KEY); for (Artifact a : result.getBundles()) { a.getMetadata().remove(TRACKING_KEY);
if ( ignoreVersion ) { while (feature.getBundles().removeSame(a)) { removed = feature.getBundles().removeExact(a);
for(final Artifact b : this.getBundles()) { result.getBundles().add(b.copy(b.getId()));