This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-analyser.git
The following commit(s) were added to refs/heads/master by this push:
new 663fc11 SLING-10806 : Improve detection of embedded packages
663fc11 is described below
commit 663fc116b1c7c8b307b17b64f818a4b7d19a4a0c
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Mon Sep 13 07:11:33 2021 +0200
SLING-10806 : Improve detection of embedded packages
---
.../feature/scanner/impl/ContentPackageScanner.java | 14 +++++++++-----
.../scanner/impl/ContentPackageScannerTest.java | 7 ++++---
src/test/resources/test-content.zip | Bin 20892 -> 21428 bytes
3 files changed, 13 insertions(+), 8 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
index 14fac64..14e1af4 100644
---
a/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
+++
b/src/main/java/org/apache/sling/feature/scanner/impl/ContentPackageScanner.java
@@ -90,12 +90,9 @@ public class ContentPackageScanner {
*/
FileType detectContentFileType(final String contentPath) {
FileType fileType = null;
- if (contentPath.endsWith(".zip")) {
- // embedded content package
- fileType = FileType.PACKAGE;
- // check for libs or apps
- } else if (contentPath.startsWith("/libs/") ||
contentPath.startsWith("/apps/")) {
+ // check for install folders in libs or apps
+ if (contentPath.startsWith("/libs/") ||
contentPath.startsWith("/apps/")) {
// check if this is an install folder (I)
// install folders are either named:
@@ -132,6 +129,10 @@ public class ContentPackageScanner {
if (contentPath.endsWith(".jar")) {
fileType = FileType.BUNDLE;
+
+ } else if (contentPath.endsWith(".zip")) {
+ fileType = FileType.PACKAGE;
+
} else {
for(final String ext : CFG_EXTENSIONS) {
if ( contentPath.endsWith(ext) ) {
@@ -141,6 +142,9 @@ public class ContentPackageScanner {
}
}
}
+ } else if ( contentPath.startsWith("/etc/packages/") &&
contentPath.endsWith(".zip")) {
+ // embedded content package
+ fileType = FileType.PACKAGE;
}
return fileType;
}
diff --git
a/src/test/java/org/apache/sling/feature/scanner/impl/ContentPackageScannerTest.java
b/src/test/java/org/apache/sling/feature/scanner/impl/ContentPackageScannerTest.java
index 4a54155..6a103ee 100644
---
a/src/test/java/org/apache/sling/feature/scanner/impl/ContentPackageScannerTest.java
+++
b/src/test/java/org/apache/sling/feature/scanner/impl/ContentPackageScannerTest.java
@@ -82,7 +82,7 @@ public class ContentPackageScannerTest {
assertTrue(desc.getContentPaths().contains("/libs/a/.content.xml"));
assertTrue(desc.getContentPaths().contains("/libs/install/test-bundle.jar"));
assertTrue(desc.getContentPaths().contains("/libs/config/com.example.some.Component.xml"));
- assertTrue(desc.getContentPaths().contains("/sub-content.zip"));
+
assertTrue(desc.getContentPaths().contains("/etc/packages/org/sling/sub-content.zip"));
assertFalse(desc.getPackageProperties().isEmpty());
}
@@ -97,9 +97,10 @@ public class ContentPackageScannerTest {
public void testDetectContentFileType() {
final ContentPackageScanner scanner = new ContentPackageScanner();
- // any file ending in zip is a content package
- assertEquals(ContentPackageScanner.FileType.PACKAGE,
scanner.detectContentFileType("/etc/package/my-package.zip"));
+ // content packages need to be below /libs, /apps or /etc/packages/
+ assertEquals(ContentPackageScanner.FileType.PACKAGE,
scanner.detectContentFileType("/etc/packages/a/b/my-package.zip"));
assertEquals(ContentPackageScanner.FileType.PACKAGE,
scanner.detectContentFileType("/libs/app/install/component.zip"));
+
assertNull(scanner.detectContentFileType("/content/app/install/component.zip"));
// configs need to be below /libs, /apps in install or config folders
assertEquals(ContentPackageScanner.FileType.CONFIG,
scanner.detectContentFileType("/libs/app/install/component.cfg"));
diff --git a/src/test/resources/test-content.zip
b/src/test/resources/test-content.zip
index 672f0fa..39c255b 100644
Binary files a/src/test/resources/test-content.zip and
b/src/test/resources/test-content.zip differ