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

Reply via email to