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 & 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 & 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;