You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/05/08 13:00:41 UTC

[sling-org-apache-sling-feature-cpconverter] branch master updated: EntryHandler moved to the proper package added Handlers manager service and default implementation

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 fad334f  EntryHandler moved to the proper package added Handlers manager service and default implementation
fad334f is described below

commit fad334fa808c921ba02f94b270905163e893dd47
Author: stripodi <st...@simos-mbp>
AuthorDate: Wed May 8 15:00:34 2019 +0200

    EntryHandler moved to the proper package
    added Handlers manager service and default implementation
---
 pom.xml                                            |  2 +-
 .../ContentPackage2FeatureModelConverter.java      | 32 ++++++++++------------
 ...ntentPackage2FeatureModelConverterLauncher.java |  2 ++
 .../handlers/AbstractRegexEntryHandler.java        |  1 -
 ...ndler.java => DefaultEntryHandlersManager.java} | 32 ++++++++++------------
 .../{spi => handlers}/EntryHandler.java            |  2 +-
 .../EntryHandlersManager.java}                     | 10 ++++---
 .../feature/cpconverter/handlers/package-info.java |  6 ++--
 .../cpconverter/vltpkg/VaultPackageAssembler.java  |  2 +-
 ...ling.feature.cpconverter.handlers.EntryHandler} |  0
 .../ContentPackage2FeatureModelConverterTest.java  |  4 ++-
 .../handlers/BundleEntryHandlerTest.java           |  1 -
 .../handlers/ContentPackageEntryHandlerTest.java   |  1 -
 13 files changed, 45 insertions(+), 50 deletions(-)

diff --git a/pom.xml b/pom.xml
index b7f697c..7f7acd2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -226,7 +226,7 @@
         <artifactId>apache-rat-plugin</artifactId>
           <configuration>
           <excludes>
-            <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler</exclude>
+            <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.handlers.EntryHandler</exclude>
             <exclude>src/main/legal/NOTICE-with-deps</exclude>
           </excludes>
         </configuration>
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 3bb7fce..2f8fa75 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@ -19,8 +19,6 @@ package org.apache.sling.feature.cpconverter;
 import static java.util.Objects.requireNonNull;
 
 import java.io.File;
-import java.util.Iterator;
-import java.util.ServiceLoader;
 
 import org.apache.jackrabbit.vault.fs.io.Archive;
 import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
@@ -33,7 +31,8 @@ import org.apache.sling.feature.cpconverter.artifacts.ArtifactsDeployer;
 import org.apache.sling.feature.cpconverter.artifacts.FileArtifactWriter;
 import org.apache.sling.feature.cpconverter.features.FeaturesManager;
 import org.apache.sling.feature.cpconverter.filtering.ResourceFilter;
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
+import org.apache.sling.feature.cpconverter.handlers.EntryHandler;
+import org.apache.sling.feature.cpconverter.handlers.EntryHandlersManager;
 import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,7 +51,7 @@ public class ContentPackage2FeatureModelConverter {
 
     private final boolean strictValidation;
 
-    private final ServiceLoader<EntryHandler> entryHandlers = ServiceLoader.load(EntryHandler.class);
+    private EntryHandlersManager handlersManager;
 
     private AclManager aclManager;
 
@@ -76,6 +75,11 @@ public class ContentPackage2FeatureModelConverter {
         return strictValidation;
     }
 
+    public ContentPackage2FeatureModelConverter setEntryHandlersManager(EntryHandlersManager handlersManager) {
+        this.handlersManager = handlersManager;
+        return this;
+    }
+
     public FeaturesManager getFeaturesManager() {
         return featuresManager;
     }
@@ -242,7 +246,12 @@ public class ContentPackage2FeatureModelConverter {
                                                + " not allowed by user configuration, please check configured filtering patterns");
         }
 
-        getEntryHandlerByEntryPath(entryPath).handle(entryPath, archive, entry, this);
+        EntryHandler entryHandler = handlersManager.getEntryHandlerByEntryPath(entryPath);
+        if (entryHandler == null) {
+            entryHandler = mainPackageAssembler;
+        }
+
+        entryHandler.handle(entryPath, archive, entry, this);
 
         logger.info("Entry {} successfully processed.", entryPath);
     }
@@ -255,17 +264,4 @@ public class ContentPackage2FeatureModelConverter {
         return path + '/' + entryName;
     }
 
-    private EntryHandler getEntryHandlerByEntryPath(String path) {
-        Iterator<EntryHandler> entryHandlersIterator = entryHandlers.iterator();
-        while (entryHandlersIterator.hasNext()) {
-            EntryHandler entryHandler = entryHandlersIterator.next();
-
-            if (entryHandler.matches(path)) {
-                return entryHandler;
-            }
-        }
-
-        return mainPackageAssembler;
-    }
-
 }
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
index 93f2149..fd5ef42 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
@@ -36,6 +36,7 @@ import org.apache.sling.feature.cpconverter.acl.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.artifacts.DefaultArtifactsDeployer;
 import org.apache.sling.feature.cpconverter.features.DefaultFeaturesManager;
 import org.apache.sling.feature.cpconverter.filtering.RegexBasedResourceFilter;
+import org.apache.sling.feature.cpconverter.handlers.DefaultEntryHandlersManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -125,6 +126,7 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
                                                                                                             artifactIdOverride,
                                                                                                             properties))
                                                              .setBundlesDeployer(new DefaultArtifactsDeployer(artifactsOutputDirectory))
+                                                             .setEntryHandlersManager(new DefaultEntryHandlersManager())
                                                              .setAclManager(new DefaultAclManager());
 
             if (filteringPatterns != null && filteringPatterns.length > 0) {
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
index f34d866..4898d12 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
@@ -18,7 +18,6 @@ package org.apache.sling.feature.cpconverter.handlers;
 
 import java.util.regex.Pattern;
 
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java
similarity index 58%
copy from src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
copy to src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java
index f34d866..16039a9 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/DefaultEntryHandlersManager.java
@@ -16,29 +16,25 @@
  */
 package org.apache.sling.feature.cpconverter.handlers;
 
-import java.util.regex.Pattern;
+import java.util.Iterator;
+import java.util.ServiceLoader;
 
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+public class DefaultEntryHandlersManager implements EntryHandlersManager {
 
-abstract class AbstractRegexEntryHandler implements EntryHandler {
-
-    protected final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final Pattern pattern;
-
-    public AbstractRegexEntryHandler(String regex) {
-        pattern = Pattern.compile(regex);
-    }
+    private final ServiceLoader<EntryHandler> entryHandlers = ServiceLoader.load(EntryHandler.class);
 
     @Override
-    public final boolean matches(String path) {
-        return pattern.matcher(path).matches();
-    }
+    public EntryHandler getEntryHandlerByEntryPath(String path) {
+        Iterator<EntryHandler> entryHandlersIterator = entryHandlers.iterator();
+        while (entryHandlersIterator.hasNext()) {
+            EntryHandler entryHandler = entryHandlersIterator.next();
+
+            if (entryHandler.matches(path)) {
+                return entryHandler;
+            }
+        }
 
-    protected final Pattern getPattern() {
-        return pattern;
+        return null;
     }
 
 }
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/EntryHandler.java
similarity index 95%
rename from src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java
rename to src/main/java/org/apache/sling/feature/cpconverter/handlers/EntryHandler.java
index 51e3835..5518313 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/EntryHandler.java
@@ -14,7 +14,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.sling.feature.cpconverter.spi;
+package org.apache.sling.feature.cpconverter.handlers;
 
 import org.apache.jackrabbit.vault.fs.io.Archive;
 import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/spi/package-info.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/EntryHandlersManager.java
similarity index 83%
rename from src/main/java/org/apache/sling/feature/cpconverter/spi/package-info.java
rename to src/main/java/org/apache/sling/feature/cpconverter/handlers/EntryHandlersManager.java
index 4d66b84..c2052b0 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/spi/package-info.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/EntryHandlersManager.java
@@ -14,8 +14,10 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
+package org.apache.sling.feature.cpconverter.handlers;
 
-/**
- * Definition of services that can be plugged at runtime to extend the converter tool.
- */
-package org.apache.sling.feature.cpconverter.spi;
+public interface EntryHandlersManager {
+
+    EntryHandler getEntryHandlerByEntryPath(String path);
+
+}
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java
index 85df1d5..143ddb9 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java
@@ -16,8 +16,8 @@
  */
 
 /**
- * Default implementations of the <i>org.apache.sling.feature.cpconverter.spi.EntryHandler</i> service
- * to handle resources while scanning Apache Jackrabbit Vault packages,
- * such as OSGi bundles &amp; configurations and nested content packages.
+ * Definition and default implementations of the <i>org.apache.sling.feature.cpconverter.handlers.EntryHandler</i>
+ * service to handle resources while scanning Apache Jackrabbit Vault packages,
+ * such as ACLs, OSGi bundles &amp; configurations and nested content packages.
  */
 package org.apache.sling.feature.cpconverter.handlers;
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
index 48e77d1..fd3c754 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
@@ -37,7 +37,7 @@ import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
 import org.apache.jackrabbit.vault.packaging.PackageProperties;
 import org.apache.jackrabbit.vault.packaging.VaultPackage;
 import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
+import org.apache.sling.feature.cpconverter.handlers.EntryHandler;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.jar.JarArchiver;
 import org.codehaus.plexus.archiver.util.DefaultFileSet;
diff --git a/src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler b/src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.handlers.EntryHandler
similarity index 100%
rename from src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler
rename to src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.handlers.EntryHandler
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 2a043cb..556ab04 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -41,6 +41,7 @@ import org.apache.sling.feature.cpconverter.acl.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.artifacts.DefaultArtifactsDeployer;
 import org.apache.sling.feature.cpconverter.features.DefaultFeaturesManager;
 import org.apache.sling.feature.cpconverter.filtering.RegexBasedResourceFilter;
+import org.apache.sling.feature.cpconverter.handlers.DefaultEntryHandlersManager;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
 import org.junit.After;
 import org.junit.Before;
@@ -53,7 +54,8 @@ public class ContentPackage2FeatureModelConverterTest {
     @Before
     public void setUp() {
         converter = new ContentPackage2FeatureModelConverter()
-                   .setAclManager(new DefaultAclManager());
+                    .setEntryHandlersManager(new DefaultEntryHandlersManager())
+                    .setAclManager(new DefaultAclManager());
     }
 
     @After
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java
index 142890b..24a9e19 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java
@@ -38,7 +38,6 @@ import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter
 import org.apache.sling.feature.cpconverter.artifacts.DefaultArtifactsDeployer;
 import org.apache.sling.feature.cpconverter.features.DefaultFeaturesManager;
 import org.apache.sling.feature.cpconverter.features.FeaturesManager;
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
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 185bce0..526f309 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
@@ -19,7 +19,6 @@ package org.apache.sling.feature.cpconverter.handlers;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;