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
The following commit(s) were added to refs/heads/master by this push:
new 25b43e9 SLING-8716 - [cp2fm] content-packages have to be handled
under /apps/*/install/* path
25b43e9 is described below
commit 25b43e9f53250dc9e038018cdc945d0dd26b8f5b
Author: Simo Tripodi <[email protected]>
AuthorDate: Tue Sep 17 14:54:12 2019 +0200
SLING-8716 - [cp2fm] content-packages have to be handled under
/apps/*/install/* path
---
.../ContentPackage2FeatureModelConverter.java | 9 ++++----
.../handlers/AbstractContentPackageHandler.java | 25 +++++++++++++++++++---
.../handlers/ContentPackageEntryHandler.java | 4 ++--
.../VersionResolverContentPackageEntryHandler.java | 2 +-
.../ContentPackage2FeatureModelConverterTest.java | 2 +-
.../handlers/ContentPackageEntryHandlerTest.java | 6 ++++++
6 files changed, 37 insertions(+), 11 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 df52819..48a4ca7 100644
---
a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++
b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@ -219,7 +219,7 @@ public class ContentPackage2FeatureModelConverter extends
BaseVaultPackageScanne
// deploy the new zip content-package to the local mvn bundles
dir
- processContentPackageArchive(contentPackageArchive,
mvnPackageId, vaultPackage.getId());
+ processContentPackageArchive(contentPackageArchive, null,
mvnPackageId, vaultPackage.getId());
// finally serialize the Feature Model(s) file(s)
@@ -267,7 +267,7 @@ public class ContentPackage2FeatureModelConverter extends
BaseVaultPackageScanne
idPackageMapping.remove(pack.getId());
}
- public void processSubPackage(String path, VaultPackage vaultPackage)
throws Exception {
+ public void processSubPackage(String path, String runMode, VaultPackage
vaultPackage) throws Exception {
requireNonNull(path, "Impossible to process a null vault package");
requireNonNull(vaultPackage, "Impossible to process a null vault
package");
@@ -296,7 +296,7 @@ public class ContentPackage2FeatureModelConverter extends
BaseVaultPackageScanne
File contentPackageArchive = clonedPackage.createPackage();
// deploy the new content-package to the local mvn bundles dir and
attach it to the feature
- processContentPackageArchive(contentPackageArchive, mvnPackageId,
originalPackageId);
+ processContentPackageArchive(contentPackageArchive, runMode,
mvnPackageId, originalPackageId);
// restore the previous assembler
mainPackageAssembler = handler;
@@ -305,6 +305,7 @@ public class ContentPackage2FeatureModelConverter extends
BaseVaultPackageScanne
}
private void processContentPackageArchive(File contentPackageArchive,
+ String runMode,
ArtifactId mvnPackageId,
PackageId originalPackageId)
throws Exception {
try (VaultPackage vaultPackage = open(contentPackageArchive)) {
@@ -323,7 +324,7 @@ public class ContentPackage2FeatureModelConverter extends
BaseVaultPackageScanne
if (PackageType.CONTENT != packageType || !dropContent) {
// deploy the new content-package to the local mvn bundles dir
and attach it to the feature
artifactsDeployer.deploy(new
FileArtifactWriter(contentPackageArchive), mvnPackageId);
- featuresManager.addArtifact(null, mvnPackageId);
+ featuresManager.addArtifact(runMode, mvnPackageId);
} else {
mutableContentsIds.put(originalPackageId,
getDependencies(vaultPackage));
logger.info("Dropping package of PackageType.CONTENT {}
(content-package id: {})",
diff --git
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractContentPackageHandler.java
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractContentPackageHandler.java
index 60fc01c..4853fd2 100644
---
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractContentPackageHandler.java
+++
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractContentPackageHandler.java
@@ -20,12 +20,14 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.regex.Matcher;
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
import org.apache.jackrabbit.vault.packaging.VaultPackage;
import
org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
+import org.codehaus.plexus.util.StringUtils;
public abstract class AbstractContentPackageHandler extends
AbstractRegexEntryHandler {
@@ -34,7 +36,7 @@ public abstract class AbstractContentPackageHandler extends
AbstractRegexEntryHa
private final File temporaryDir = new
File(System.getProperty("java.io.tmpdir"), "sub-content-packages");
public AbstractContentPackageHandler() {
- super("/jcr_root/etc/packages/.+\\.zip");
+
super("/jcr_root/(?:etc/packages|apps/.+/install(?:\\.([^/]+))?)/.+.zip");
temporaryDir.mkdirs();
}
@@ -66,13 +68,30 @@ public abstract class AbstractContentPackageHandler extends
AbstractRegexEntryHa
logger.debug("Sub-content package '{}' successfully extracted to
{} ", entry.getName(), temporaryContentPackage);
}
+ Matcher matcher = getPattern().matcher(path);
+ String runMode = null;
+ // we are pretty sure it matches, here
+ if (!matcher.matches()) {
+ throw new IllegalStateException("Something went terribly wrong:
pattern '"
+ + getPattern().pattern()
+ + "' should have matched already
with path '"
+ + path
+ + "' but it does not, currently");
+ }
+
+ if (StringUtils.isNotBlank(matcher.group(1))) {
+ // there is a specified RunMode
+ runMode = matcher.group(1);
+ logger.debug("Runmode {} was extracted from path {}", runMode,
path);
+ }
+
try (VaultPackage vaultPackage =
converter.open(temporaryContentPackage)) {
- processSubPackage(path, vaultPackage, converter);
+ processSubPackage(path, runMode, vaultPackage, converter);
}
logger.info("Sub-content package '{}' processing is over",
entry.getName());
}
- protected abstract void processSubPackage(String path, VaultPackage
contentPackage, ContentPackage2FeatureModelConverter converter) throws
Exception;
+ protected abstract void processSubPackage(String path, String runMode,
VaultPackage contentPackage, ContentPackage2FeatureModelConverter converter)
throws Exception;
}
diff --git
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java
index 2fde1a0..573d01b 100644
---
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java
+++
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java
@@ -22,9 +22,9 @@ import
org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter
public final class ContentPackageEntryHandler extends
AbstractContentPackageHandler {
@Override
- protected void processSubPackage(String path, VaultPackage contentPackage,
ContentPackage2FeatureModelConverter converter)
+ protected void processSubPackage(String path, String runMode, VaultPackage
contentPackage, ContentPackage2FeatureModelConverter converter)
throws Exception {
- converter.processSubPackage(path, contentPackage);
+ converter.processSubPackage(path, runMode, contentPackage);
}
}
diff --git
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/VersionResolverContentPackageEntryHandler.java
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/VersionResolverContentPackageEntryHandler.java
index dc55464..e4e9a8e 100644
---
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/VersionResolverContentPackageEntryHandler.java
+++
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/VersionResolverContentPackageEntryHandler.java
@@ -39,7 +39,7 @@ public final class VersionResolverContentPackageEntryHandler
extends AbstractCon
}
@Override
- protected void processSubPackage(String path, VaultPackage contentPackage,
ContentPackage2FeatureModelConverter converter)
+ protected void processSubPackage(String path, String runMode, VaultPackage
contentPackage, ContentPackage2FeatureModelConverter converter)
throws Exception {
boolean addPackage = false;
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 f14a13e..7107947 100644
---
a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++
b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -121,7 +121,7 @@ public class ContentPackage2FeatureModelConverterTest {
@Test(expected = NullPointerException.class)
public void processRequiresNotNullPackage() throws Exception {
- converter.processSubPackage("", null);
+ converter.processSubPackage("", null, null);
}
@Test
diff --git
a/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java
b/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java
index a8d60ca..c6b4699 100644
---
a/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java
+++
b/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java
@@ -45,6 +45,12 @@ public final class ContentPackageEntryHandlerTest {
@Test
public void matches() {
assertTrue(contentPackageEntryhandler.matches("/jcr_root/etc/packages/asd/v6/sample/asd.content-1.0.zip"));
+
assertTrue(contentPackageEntryhandler.matches("/jcr_root/apps/showcase/install/sample/asd.content-1.0.zip"));
+ }
+
+ @Test
+ public void runModeMatches() {
+
assertTrue(contentPackageEntryhandler.matches("/jcr_root/apps/showcase/install.staging/sample/asd.content-1.0.zip"));
}
}