This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
The following commit(s) were added to refs/heads/master by this push:
new e2dc780 SLING-12956 Use feature filename including groupId
e2dc780 is described below
commit e2dc780ec226b38748d71b68b9872e9fa221adcc
Author: Konrad Windszus <[email protected]>
AuthorDate: Tue Sep 30 15:20:26 2025 +0200
SLING-12956 Use feature filename including groupId
Otherwise there can be name clashes in the flat feature output
directory.
---
.../features/DefaultFeaturesManager.java | 36 +++---
.../ContentPackage2FeatureModelConverterTest.java | 122 ++++++++++-----------
.../ConverterUserAndPermissionTest.java | 4 +-
.../features/DefaultFeaturesManagerTest.java | 36 ++++++
.../cpconverter/features/FeaturesManagerTest.java | 8 +-
5 files changed, 126 insertions(+), 80 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
b/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
index 2c93153..7bcc6b6 100644
---
a/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
+++
b/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
@@ -450,6 +450,26 @@ public class DefaultFeaturesManager implements
FeaturesManager, PackagesEventsEm
feature.getExtensions().add(apiRegions);
}
+ /**
+ *
+ * @param featureId
+ * @param prefix
+ * @return a filename for the given featureId and optional prefix
excluding the .json extension
+ */
+ static String getFeatureFileName(@NotNull ArtifactId featureId, @Nullable
String prefix) {
+ StringBuilder fileNameBuilder = new StringBuilder()
+ .append((prefix != null) ? prefix : "")
+ .append(featureId.getGroupId())
+ .append('-')
+ .append(featureId.getArtifactId());
+
+ String classifier = featureId.getClassifier();
+ if (classifier != null && !classifier.isEmpty()) {
+ fileNameBuilder.append('-').append(classifier);
+ }
+ return fileNameBuilder.toString();
+ }
+
@Override
public void serialize() throws IOException {
RunmodeMapper runmodeMapper =
RunmodeMapper.open(featureModelsOutputDirectory);
@@ -469,23 +489,13 @@ public class DefaultFeaturesManager implements
FeaturesManager, PackagesEventsEm
private void serialize(Feature feature, String runMode, RunmodeMapper
runmodeMapper) throws IOException {
addAPIRegions(feature, apiRegionExports.get(runMode));
- StringBuilder fileNameBuilder = new StringBuilder()
- .append((prefix != null) ? prefix : "")
- .append(feature.getId().getArtifactId());
-
- String classifier = feature.getId().getClassifier();
- if (classifier != null && !classifier.isEmpty()) {
- fileNameBuilder.append('-').append(classifier);
- }
+ String fileName = getFeatureFileName(feature.getId(), prefix);
if (properties != null) {
- properties.put("filename", fileNameBuilder.toString());
+ properties.put("filename", fileName);
}
- fileNameBuilder.append(JSON_FILE_EXTENSION);
-
- String fileName = fileNameBuilder.toString();
-
+ fileName = fileName + JSON_FILE_EXTENSION;
File targetFile = new File(featureModelsOutputDirectory, fileName);
if (!targetFile.getParentFile().exists()) {
targetFile.getParentFile().mkdirs();
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 55f753b..34c9b06 100644
---
a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++
b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -154,7 +154,7 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.convert(packageFile);
verifyFeatureFile(outputDirectory,
- "asd.retail.all.json",
+ "asd.sample-asd.retail.all.json",
"asd.sample:asd.retail.all:slingosgifeature:0.0.1",
Collections.singletonList("org.apache.felix:org.apache.felix.framework:6.0.1"),
Collections.singletonList("org.apache.sling.commons.log.LogManager.factory.config~asd-retail"),
@@ -163,13 +163,13 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
"asd:Asd.Retail.config:zip:cp2fm-converted:0.0.1",
"asd.sample:asd.retail.all:zip:cp2fm-converted:0.0.1"));
verifyFeatureFile(outputDirectory,
- "asd.retail.all-author.json",
+ "asd.sample-asd.retail.all-author.json",
"asd.sample:asd.retail.all:slingosgifeature:author:0.0.1",
Collections.singletonList("org.apache.sling:org.apache.sling.api:2.20.0"),
Collections.emptyList(),
Collections.emptyList());
verifyFeatureFile(outputDirectory,
- "asd.retail.all-publish.json",
+ "asd.sample-asd.retail.all-publish.json",
"asd.sample:asd.retail.all:slingosgifeature:publish:0.0.1",
Collections.singletonList("org.apache.sling:org.apache.sling.models.api:1.3.8"),
Collections.singletonList("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~asd-retail"),
@@ -185,9 +185,9 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
}
assertFalse(runModes.isEmpty());
assertTrue(runModes.containsKey("(default)"));
- assertEquals("asd.retail.all.json",
runModes.getProperty("(default)"));
- assertEquals("asd.retail.all-author.json",
runModes.getProperty("author"));
- assertEquals("asd.retail.all-publish.json",
runModes.getProperty("publish"));
+ assertEquals("asd.sample-asd.retail.all.json",
runModes.getProperty("(default)"));
+ assertEquals("asd.sample-asd.retail.all-author.json",
runModes.getProperty("author"));
+ assertEquals("asd.sample-asd.retail.all-publish.json",
runModes.getProperty("publish"));
verifyContentPackage(new File(outputDirectory,
"asd/Asd.Retail.config/0.0.1/Asd.Retail.config-0.0.1-cp2fm-converted.zip"),
"META-INF/vault/settings.xml",
@@ -235,19 +235,19 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.convert(packageFile);
verifyFeatureFile(outputDirectory,
- "asd.retail.all.json",
+ "asd.sample-asd.retail.all.json",
"asd.sample:asd.retail.all:slingosgifeature:0.0.1",
Collections.singletonList("org.apache.felix:org.apache.felix.framework:6.0.1"),
Collections.singletonList("org.apache.sling.commons.log.LogManager.factory.config~asd-retail"),
Arrays.asList("asd.sample:asd.retail.apps:zip:cp2fm-converted:0.0.1",
"asd:Asd.Retail.config:zip:cp2fm-converted:0.0.1"));
verifyFeatureFile(outputDirectory,
- "asd.retail.all-author.json",
+ "asd.sample-asd.retail.all-author.json",
"asd.sample:asd.retail.all:slingosgifeature:author:0.0.1",
Collections.singletonList("org.apache.sling:org.apache.sling.api:2.20.0"),
Collections.emptyList(),
Collections.emptyList());
verifyFeatureFile(outputDirectory,
- "asd.retail.all-publish.json",
+ "asd.sample-asd.retail.all-publish.json",
"asd.sample:asd.retail.all:slingosgifeature:publish:0.0.1",
Collections.singletonList("org.apache.sling:org.apache.sling.models.api:1.3.8"),
Collections.singletonList("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~asd-retail"),
@@ -263,9 +263,9 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
}
assertFalse(runModes.isEmpty());
assertTrue(runModes.containsKey("(default)"));
- assertEquals("asd.retail.all.json",
runModes.getProperty("(default)"));
- assertEquals("asd.retail.all-author.json",
runModes.getProperty("author"));
- assertEquals("asd.retail.all-publish.json",
runModes.getProperty("publish"));
+ assertEquals("asd.sample-asd.retail.all.json",
runModes.getProperty("(default)"));
+ assertEquals("asd.sample-asd.retail.all-author.json",
runModes.getProperty("author"));
+ assertEquals("asd.sample-asd.retail.all-publish.json",
runModes.getProperty("publish"));
verifyContentPackage(new File(outputDirectory,
"asd/Asd.Retail.config/0.0.1/Asd.Retail.config-0.0.1-cp2fm-converted.zip"),
"META-INF/vault/settings.xml",
@@ -306,20 +306,20 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.convert(packageFile);
verifyFeatureFile(outputDirectory,
- "asd.retail.all.json",
+ "asd.sample-asd.retail.all.json",
"asd.sample:asd.retail.all:slingosgifeature:0.0.1",
Collections.singletonList("org.apache.felix:org.apache.felix.framework:6.0.1"),
Collections.singletonList("org.apache.sling.commons.log.LogManager.factory.config~asd-retail"),
Arrays.asList("asd.sample:asd.retail.apps:zip:cp2fm-converted:0.0.1",
"asd:Asd.Retail.config:zip:cp2fm-converted:0.0.1"));
verifyFeatureFile(outputDirectory,
- "asd.retail.all-author.json",
+ "asd.sample-asd.retail.all-author.json",
"asd.sample:asd.retail.all:slingosgifeature:author:0.0.1",
Collections.singletonList("org.apache.sling:org.apache.sling.api:2.20.0"),
Collections.emptyList(),
Collections.emptyList());
verifyFeatureFile(outputDirectory,
- "asd.retail.all-publish.json",
+ "asd.sample-asd.retail.all-publish.json",
"asd.sample:asd.retail.all:slingosgifeature:publish:0.0.1",
Collections.singletonList("org.apache.sling:org.apache.sling.models.api:1.3.8"),
Collections.singletonList("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~asd-retail"),
@@ -335,9 +335,9 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
}
assertFalse(runModes.isEmpty());
assertTrue(runModes.containsKey("(default)"));
- assertEquals("asd.retail.all.json",
runModes.getProperty("(default)"));
- assertEquals("asd.retail.all-author.json",
runModes.getProperty("author"));
- assertEquals("asd.retail.all-publish.json",
runModes.getProperty("publish"));
+ assertEquals("asd.sample-asd.retail.all.json",
runModes.getProperty("(default)"));
+ assertEquals("asd.sample-asd.retail.all-author.json",
runModes.getProperty("author"));
+ assertEquals("asd.sample-asd.retail.all-publish.json",
runModes.getProperty("publish"));
verifyContentPackage(new File(outputDirectory,
"asd/Asd.Retail.config/0.0.1/Asd.Retail.config-0.0.1-cp2fm-converted.zip"),
"META-INF/vault/settings.xml",
@@ -441,7 +441,7 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.setEmitter(DefaultPackagesEventsEmitter.open(outDir))
.convert(cpFile);
- File featureFile = new File(outDir, "test_c.json");
+ File featureFile = new File(outDir, "my_packages-test_c.json");
try (Reader reader = new FileReader(featureFile)) {
Feature feature = FeatureJSONReader.read(reader,
featureFile.getAbsolutePath());
@@ -596,38 +596,38 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
}
assertFalse(runModes.isEmpty());
assertTrue(runModes.containsKey("(default)"));
- assertEquals("runmodetest_parentcontainer-author.json",
runModes.getProperty("author"));
+ assertEquals("asd.sample-runmodetest_parentcontainer-author.json",
runModes.getProperty("author"));
// general
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", false);
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", false);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer.json"), "io.wcm:io.wcm.handler.media:1.11.6",
false);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", false);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", false);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer.json"),
"io.wcm:io.wcm.handler.media:1.11.6", false);
// author
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", true);
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", true);
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"my_packages:test_b:zip:cp2fm-converted:1.0", true);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"io.wcm:io.wcm.handler.media:1.11.6", true);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"io.wcm:io.wcm.handler.link:1.7.02", true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"my_packages:test_b:zip:cp2fm-converted:1.0", true);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"io.wcm:io.wcm.handler.media:1.11.6", true);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"io.wcm:io.wcm.handler.link:1.7.02", true);
// publish
- assertFalse(new File(outputDirectory,
"runmodetest_parentcontainer-publish.json").exists());
+ assertFalse(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-publish.json").exists());
// author.publish (for cp converter those are not mutually
exclusive)
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.publish.json"),
"my_packages:test_c:zip:cp2fm-converted:1.0", true);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.publish.json"),
"com.composum.nodes:composum-nodes-config:2.5.3", true);
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.publish.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~c",
true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.publish.json"),
"my_packages:test_c:zip:cp2fm-converted:1.0", true);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.publish.json"),
"com.composum.nodes:composum-nodes-config:2.5.3", true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.publish.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~c",
true);
//author.dev
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~d",
true);
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~f",
true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~d",
true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~f",
true);
//author.prod
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.prod.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~e",
true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.prod.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~e",
true);
// dev
- assertFalse(new File(outputDirectory,
"runmodetest_parentcontainer-dev.json").exists());
+ assertFalse(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-dev.json").exists());
} finally {
deleteDirTree(outputDirectory);
@@ -658,33 +658,33 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
}
assertFalse(runModes.isEmpty());
assertTrue(runModes.containsKey("(default)"));
- assertEquals("runmodetest_parentcontainer-author.json",
runModes.getProperty("author"));
+ assertEquals("asd.sample-runmodetest_parentcontainer-author.json",
runModes.getProperty("author"));
// general
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", false);
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", true);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer.json"), "io.wcm:io.wcm.handler.media:1.11.6",
true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", false);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", true);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer.json"),
"io.wcm:io.wcm.handler.media:1.11.6", true);
// author
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", true);
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", false);
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"my_packages:test_b:zip:cp2fm-converted:1.0", true);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.json"),
"io.wcm:io.wcm.handler.link:1.7.02", true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"asd.sample:embedded.test.app:zip:cp2fm-converted:0.0.0", true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"my_packages:test_a:zip:cp2fm-converted:1.0", false);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"my_packages:test_b:zip:cp2fm-converted:1.0", true);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.json"),
"io.wcm:io.wcm.handler.link:1.7.02", true);
// publish
- assertContentPackage(new File(outputDirectory,
"runmodetest_parentcontainer-publish.json"),
"my_packages:test_c:zip:cp2fm-converted:1.0", true);
- assertBundleEntry(new File(outputDirectory,
"runmodetest_parentcontainer-publish.json"),
"com.composum.nodes:composum-nodes-config:2.5.3", true);
+ assertContentPackage(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-publish.json"),
"my_packages:test_c:zip:cp2fm-converted:1.0", true);
+ assertBundleEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-publish.json"),
"com.composum.nodes:composum-nodes-config:2.5.3", true);
// author.publish (for cp converter those are not mutually
exclusive)
- assertFalse(new File(outputDirectory,
"runmodetest_parentcontainer-author.publish.json").exists());
+ assertFalse(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.publish.json").exists());
//author.dev
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~d",
true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~d",
true);
//author.prod
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-author.prod.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~e",
true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-author.prod.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~e",
true);
//dev
- assertConfigEntry(new File(outputDirectory,
"runmodetest_parentcontainer-dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~f",
true);
+ assertConfigEntry(new File(outputDirectory,
"asd.sample-runmodetest_parentcontainer-dev.json"),
"org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler~f",
true);
} finally {
deleteDirTree(outputDirectory);
}
@@ -784,9 +784,9 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.setEmitter(DefaultPackagesEventsEmitter.open(outDir))
.convert(cpFile);
- assertAPIRegion(new File(outDir, "asd.retail.all.json"), "a.b.c");
- assertAPIRegion(new File(outDir, "asd.retail.all-author.json"),
"a.b.c");
- assertAPIRegion(new File(outDir, "asd.retail.all-publish.json"),
"a.b.c");
+ assertAPIRegion(new File(outDir,
"asd.sample-asd.retail.all.json"), "a.b.c");
+ assertAPIRegion(new File(outDir,
"asd.sample-asd.retail.all-author.json"), "a.b.c");
+ assertAPIRegion(new File(outDir,
"asd.sample-asd.retail.all-publish.json"), "a.b.c");
} finally {
deleteDirTree(outDir);
}
@@ -872,7 +872,7 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.convert(packageFile);
verifyFeatureFile(outputDirectory,
- "asd.retail.all.json",
+ "asd.sample-asd.retail.all.json",
"${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0:${project.version}",
Collections.singletonList("org.apache.felix:org.apache.felix.framework:6.0.1"),
Collections.singletonList("org.apache.sling.commons.log.LogManager.factory.config~asd-retail"),
@@ -881,13 +881,13 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
"asd:Asd.Retail.config:zip:cp2fm-converted:0.0.1",
"asd.sample:asd.retail.all:zip:cp2fm-converted:0.0.1"));
verifyFeatureFile(outputDirectory,
- "asd.retail.all-author.json",
+ "asd.sample-asd.retail.all-author.json",
"${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0-author:${project.version}",
Collections.singletonList("org.apache.sling:org.apache.sling.api:2.20.0"),
Collections.emptyList(),
Collections.emptyList());
verifyFeatureFile(outputDirectory,
- "asd.retail.all-publish.json",
+ "asd.sample-asd.retail.all-publish.json",
"${project.groupId}:${project.artifactId}:slingosgifeature:asd.test.all-1.0.0-publish:${project.version}",
Collections.singletonList("org.apache.sling:org.apache.sling.models.api:1.3.8"),
Collections.singletonList("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~asd-retail"),
@@ -944,7 +944,7 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.setEmitter(DefaultPackagesEventsEmitter.open(outputDirectory))
.convert(contentPackages[0]);
- File featureFile = new File(outputDirectory, "test_a.json");
+ File featureFile = new File(outputDirectory,
"my_packages-test_a.json");
try (Reader reader = new FileReader(featureFile)) {
Feature feature = FeatureJSONReader.read(reader,
featureFile.getAbsolutePath());
@@ -990,10 +990,10 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.setEmitter(DefaultPackagesEventsEmitter.open(outputDirectory))
.convert(contentPackages);
- Feature a = getFeature(outputDirectory, "test_a.json");
+ Feature a = getFeature(outputDirectory, "my_packages-test_a.json");
assertNull(a.getExtensions().getByName("content-packages"));
- Feature b = getFeature(outputDirectory, "test_b.json");
+ Feature b = getFeature(outputDirectory, "my_packages-test_b.json");
assertNotNull(b.getExtensions().getByName("content-packages"));
Artifacts artifacts =
b.getExtensions().getByName("content-packages").getArtifacts();
assertFalse(artifacts.isEmpty());
@@ -1025,7 +1025,7 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.setEmitter(DefaultPackagesEventsEmitter.open(outputDirectory))
.convert(contentPackages);
- Feature sub = getFeature(outputDirectory, "test_sub.json");
+ Feature sub = getFeature(outputDirectory,
"my_packages-test_sub.json");
assertNotNull(sub.getExtensions().getByName("content-packages"));
Artifacts artifacts =
sub.getExtensions().getByName("content-packages").getArtifacts();
@@ -1086,7 +1086,7 @@ public class ContentPackage2FeatureModelConverterTest
extends AbstractConverterT
.convert(contentPackages);
- Feature feature = getFeature(outputDirectory,
"test_generated_package.json");
+ Feature feature = getFeature(outputDirectory,
"test-test_generated_package.json");
Configurations confs = feature.getConfigurations();
assertNotNull(confs.getConfiguration("org.apache.sling.installer.provider.jcr.impl.JcrInstaller"));
diff --git
a/src/test/java/org/apache/sling/feature/cpconverter/ConverterUserAndPermissionTest.java
b/src/test/java/org/apache/sling/feature/cpconverter/ConverterUserAndPermissionTest.java
index c9ce821..ee802e1 100644
---
a/src/test/java/org/apache/sling/feature/cpconverter/ConverterUserAndPermissionTest.java
+++
b/src/test/java/org/apache/sling/feature/cpconverter/ConverterUserAndPermissionTest.java
@@ -244,7 +244,7 @@ public class ConverterUserAndPermissionTest extends
AbstractConverterTest {
expected1.add("jcr_root/var/eventproxy/.content.xml");
verifyContentPackage(converted2, notExpected2, expected2);
- try (FileReader reader = new FileReader(new File(outputDirectory,
"content.json"))) {
+ try (FileReader reader = new FileReader(new File(outputDirectory,
"b-content.json"))) {
Feature feature = FeatureJSONReader.read(reader, "content1");
Extension repoinit =
feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
if (enforcePrincipalBased) {
@@ -268,7 +268,7 @@ public class ConverterUserAndPermissionTest extends
AbstractConverterTest {
}
}
- try (FileReader reader = new FileReader(new File(outputDirectory,
"content2.json"))) {
+ try (FileReader reader = new FileReader(new File(outputDirectory,
"a-content2.json"))) {
Feature feature = FeatureJSONReader.read(reader, "content2");
Extension repoinit =
feature.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
if (enforcePrincipalBased) {
diff --git
a/src/test/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManagerTest.java
b/src/test/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManagerTest.java
new file mode 100644
index 0000000..fb30a34
--- /dev/null
+++
b/src/test/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManagerTest.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
under
+ * the License.
+ */
+package org.apache.sling.feature.cpconverter.features;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.sling.feature.ArtifactId;
+import org.junit.Test;
+
+public class DefaultFeaturesManagerTest {
+
+ @Test
+ public void testGetFeatureFileName() {
+ ArtifactId id =
ArtifactId.parse("org.apache.sling:feature-name:1.0.0");
+ assertEquals("org.apache.sling-feature-name",
DefaultFeaturesManager.getFeatureFileName(id, null));
+ id =
ArtifactId.parse("org.apache.sling:feature-name:osgi-feature:myclassifier:1.0.0");
+ assertEquals("org.apache.sling-feature-name-myclassifier",
DefaultFeaturesManager.getFeatureFileName(id, ""));
+ id = ArtifactId.parse("org.apache.sling:feature-name:1.0.0");
+ assertEquals("prefix-org.apache.sling-feature-name",
DefaultFeaturesManager.getFeatureFileName(id, "prefix-"));
+ }
+
+}
diff --git
a/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
b/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
index 61f98f1..a3ba34d 100644
---
a/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
+++
b/src/test/java/org/apache/sling/feature/cpconverter/features/FeaturesManagerTest.java
@@ -90,7 +90,7 @@ public class FeaturesManagerTest {
featuresManager.serialize();
- try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"b.json"))) {
+ try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"g-b.json"))) {
JsonParser p = Json.createParser(in);
JsonObject jo = p.getObject();
@@ -113,7 +113,7 @@ public class FeaturesManagerTest {
}
// Runmode file:
- try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"b-rm1.json"))) {
+ try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"g-b-rm1.json"))) {
JsonParser p = Json.createParser(in);
JsonObject jo = p.getObject();
@@ -148,7 +148,7 @@ public class FeaturesManagerTest {
featuresManager.serialize();
- try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"a.json"))) {
+ try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"g-a.json"))) {
JsonParser p = Json.createParser(in);
JsonObject jo = p.getObject();
@@ -171,7 +171,7 @@ public class FeaturesManagerTest {
}
// Runmode file:
- try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"a-rm1.json"))) {
+ try (InputStream in = new FileInputStream(new File(tempDir.toFile(),
"g-a-rm1.json"))) {
JsonParser p = Json.createParser(in);
JsonObject jo = p.getObject();