You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/04/24 13:52:03 UTC
[sling-org-apache-sling-feature-cpconverter] 11/15: override only
supposed to affect FeatureFile, not filenames & packageIds
This is an automated email from the ASF dual-hosted git repository.
simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
commit c76dea6c98566e4945e2dcf75caa4e65da4abd1f
Author: Dominik Suess <su...@adobe.com>
AuthorDate: Fri Apr 12 09:01:50 2019 +0200
override only supposed to affect FeatureFile, not filenames & packageIds
---
.../ContentPackage2FeatureModelConverter.java | 51 ++++++++++++++-------
...ntentPackage2FeatureModelConverterLauncher.java | 4 +-
.../ContentPackage2FeatureModelConverterTest.java | 52 ++++++++++++++++++++++
3 files changed, 90 insertions(+), 17 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
index 149c673..d686eb6 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@ -93,6 +93,8 @@ public class ContentPackage2FeatureModelConverter {
private VaultPackageAssembler mainPackageAssembler = null;
private String id;
+
+ private String idOverride;
public ContentPackage2FeatureModelConverter setStrictValidation(boolean strictValidation) {
this.strictValidation = strictValidation;
@@ -148,6 +150,12 @@ public class ContentPackage2FeatureModelConverter {
this.id = id;
return this;
}
+
+ public ContentPackage2FeatureModelConverter setIdOverride(String id) {
+ this.idOverride = id;
+ return this;
+ }
+
public Feature getRunMode(String runMode) {
if (getTargetFeature() == null) {
@@ -158,19 +166,27 @@ public class ContentPackage2FeatureModelConverter {
return getTargetFeature();
}
- ArtifactId id = getTargetFeature().getId();
- final String classifier;
- if (id.getClassifier() != null && !id.getClassifier().isEmpty()) {
- classifier = id.getClassifier() + '-' + runMode;
+ ArtifactId newId = appendRunmode(getTargetFeature().getId(), runMode);
+
+ return runModes.computeIfAbsent(runMode, k -> new Feature(newId));
+ }
+
+ private ArtifactId appendRunmode(ArtifactId id, String runMode) {
+
+ ArtifactId newId;
+ if (runMode == null) {
+ newId = id;
} else {
- classifier = runMode;
- }
+ final String classifier;
+ if (id.getClassifier() != null && !id.getClassifier().isEmpty()) {
+ classifier = id.getClassifier() + '-' + runMode;
+ } else {
+ classifier = runMode;
+ }
- return runModes.computeIfAbsent(runMode, k -> new Feature(new ArtifactId(id.getGroupId(),
- id.getArtifactId(),
- id.getVersion(),
- classifier,
- id.getType())));
+ newId = new ArtifactId(id.getGroupId(), id.getArtifactId(), id.getVersion(), classifier, id.getType());
+ }
+ return newId;
}
public BundlesDeployer getArtifactDeployer() {
@@ -287,11 +303,11 @@ public class ContentPackage2FeatureModelConverter {
// finally serialize the Feature Model(s) file(s)
- seralize(targetFeature);
+ seralize(targetFeature, null);
if (!runModes.isEmpty()) {
- for (Feature runMode : runModes.values()) {
- seralize(runMode);
+ for (java.util.Map.Entry<String, Feature> runmodeEntry : runModes.entrySet()) {
+ seralize(runmodeEntry.getValue(), runmodeEntry.getKey());
}
}
}
@@ -334,7 +350,7 @@ public class ContentPackage2FeatureModelConverter {
}
}
- private void seralize(Feature feature) throws Exception {
+ private void seralize(Feature feature, String runMode) throws Exception {
StringBuilder fileName = new StringBuilder().append(feature.getId().getArtifactId());
String classifier = feature.getId().getClassifier();
@@ -348,6 +364,11 @@ public class ContentPackage2FeatureModelConverter {
logger.info("Conversion complete!", targetFile);
logger.info("Writing resulting Feature File to '{}'...", targetFile);
+
+ if ( idOverride != null ) {
+ ArtifactId idOverrride = appendRunmode(ArtifactId.parse(idOverride), runMode);
+ feature = feature.copy(idOverrride);
+ }
try (FileWriter targetWriter = new FileWriter(targetFile)) {
FeatureJSONWriter.write(targetWriter, feature);
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
index 4fe2a57..46edf6f 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
@@ -104,11 +104,11 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
.setBundlesStartOrder(bundlesStartOrder)
.setArtifactsOutputDirectory(artifactsOutputDirectory)
.setFeatureModelsOutputDirectory(featureModelsOutputDirectory)
- .setId(artifactId);
+ .setIdOverride(artifactId);
if (filteringPatterns != null && filteringPatterns.length > 0) {
for (String filteringPattern : filteringPatterns) {
- converter.addFilteringPattern(filteringPattern);
+ converter.addFilteringPattern(filteringPattern);
}
}
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
index 7fb3b15..0e06589 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -237,4 +237,56 @@ public class ContentPackage2FeatureModelConverterTest {
.convert(packageFile);
}
+
+ @Test
+ public void overrideFeatureId() throws Exception {
+ URL packageUrl = getClass().getResource("test-content-package.zip");
+ File packageFile = FileUtils.toFile(packageUrl);
+
+ File outputDirectory = new File(System.getProperty("testDirectory"), getClass().getName() + '_' + System.currentTimeMillis());
+
+ String overrideId = "${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0:${project.version}";
+ converter.setBundlesStartOrder(5)
+ .setArtifactsOutputDirectory(outputDirectory)
+ .setFeatureModelsOutputDirectory(outputDirectory)
+ .setIdOverride(overrideId)
+ .convert(packageFile);
+
+ verifyFeatureFile(outputDirectory,
+ "asd.retail.all.json",
+ "${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0:${project.version}",
+ Arrays.asList("org.apache.felix:org.apache.felix.framework:6.0.1"),
+ Arrays.asList("org.apache.sling.commons.log.LogManager.factory.config-asd-retail"),
+ Arrays.asList("asd.sample:asd.retail.all:zip:cp2fm-converted:0.0.1"));
+ verifyFeatureFile(outputDirectory,
+ "asd.retail.all-author.json",
+ "${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0-author:${project.version}",
+ Arrays.asList("org.apache.sling:org.apache.sling.api:2.20.0"),
+ Collections.emptyList(),
+ Collections.emptyList());
+ verifyFeatureFile(outputDirectory,
+ "asd.retail.all-publish.json",
+ "${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0-publish:${project.version}",
+ Arrays.asList("org.apache.sling:org.apache.sling.models.api:1.3.8"),
+ Arrays.asList("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-asd-retail"),
+ Collections.emptyList());
+
+ ZipFile zipFile = new ZipFile(new File(outputDirectory, "asd/sample/asd.retail.all/0.0.1/asd.retail.all-0.0.1-cp2fm-converted.zip"));
+ for (String expectedEntry : new String[] {
+ "jcr_root/content/asd/.content.xml",
+ "jcr_root/content/asd/resources.xml",
+ "jcr_root/apps/.content.xml",
+ "META-INF/vault/properties.xml",
+ "META-INF/vault/config.xml",
+ "META-INF/vault/settings.xml",
+ "META-INF/vault/filter.xml",
+ "META-INF/vault/definition/.content.xml",
+ "jcr_root/etc/packages/asd/test-bundles.zip",
+ "jcr_root/etc/packages/asd/test-configurations.zip",
+ "jcr_root/etc/packages/asd/test-content.zip",
+ }) {
+ assertNotNull(zipFile.getEntry(expectedEntry));
+ }
+ zipFile.close();
+ }
}