Use copies when merging extensions rather than the original object
Previously the original extension objects were used which caused
extension content to bleed into the wrong features.
diff --git a/pom.xml b/pom.xml
index b53e3e8..afb9f41 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,27 +114,32 @@
</build>
<dependencies>
<dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>org.apache.jackrabbit.vault</artifactId>
<version>3.2.5-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.feature.launcher</artifactId>
- <version>0.8.0</version>
+ <artifactId>org.apache.sling.feature</artifactId>
+ <version>0.8.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.feature.io</artifactId>
- <version>0.8.0</version>
+ <version>0.8.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.feature</artifactId>
- <version>0.8.0</version>
+ <artifactId>org.apache.sling.feature.launcher</artifactId>
+ <version>0.8.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
diff --git a/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java b/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java
index 4de97b5..2d18a82 100644
--- a/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java
+++ b/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java
@@ -58,7 +58,7 @@
processFeature(source, sourceEx);
if (targetEx == null) {
- target.getExtensions().add(sourceEx);
+ target.getExtensions().add(sourceEx.copy());
return;
}
for (final Artifact a : sourceEx.getArtifacts()) {
@@ -70,7 +70,7 @@
if (replace) {
targetEx.getArtifacts().removeSame(a.getId());
- targetEx.getArtifacts().add(a);
+ targetEx.getArtifacts().add(a.copy(a.getId()));
}
}
}