This is an automated email from the ASF dual-hosted git repository. davidb pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-extension-content.git
commit 0e202d20287e7c3d3cedc08955c2a011b655a8ca Author: David Bosschaert <[email protected]> AuthorDate: Mon Nov 26 14:09:11 2018 +0000 Update to Feature Model 0.8.0 --- pom.xml | 6 ++-- .../feature/extension/content/ContentHandler.java | 36 ++++++++++++++++------ .../content/ContentOrderMergeProcessor.java | 3 +- .../extension/content/ContentHandlerTest.java | 36 +++++++++++++++++++--- 4 files changed, 61 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index 7ffd003..d96cd2a 100644 --- a/pom.xml +++ b/pom.xml @@ -122,19 +122,19 @@ <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.feature.launcher</artifactId> - <version>0.2.1-SNAPSHOT</version> + <version>0.8.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.feature.io</artifactId> - <version>0.2.1-SNAPSHOT</version> + <version>0.8.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.feature</artifactId> - <version>0.2.1-SNAPSHOT</version> + <version>0.8.0</version> <scope>provided</scope> </dependency> <dependency> diff --git a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java index dd94747..ab4d5a6 100644 --- a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java +++ b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java @@ -22,7 +22,6 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; - import java.util.List; import java.util.Map; import java.util.Set; @@ -38,15 +37,15 @@ import org.apache.sling.feature.Artifact; import org.apache.sling.feature.Configuration; import org.apache.sling.feature.Extension; import org.apache.sling.feature.ExtensionType; -import org.apache.sling.feature.FeatureConstants; import org.apache.sling.feature.launcher.spi.LauncherPrepareContext; import org.apache.sling.feature.launcher.spi.extensions.ExtensionHandler; import org.apache.sling.feature.launcher.spi.extensions.ExtensionInstallationContext; public class ContentHandler implements ExtensionHandler { - public static final String PACKAGEREGISTRY_HOME = "packageregistry.home"; + private static final char FACTORY_CONFIG_SEPARATOR = '~'; + private static final String REPOSITORY_HOME = "repository.home"; private static final String REGISTRY_FOLDER = "packageregistry"; @@ -62,7 +61,7 @@ public class ContentHandler implements ExtensionHandler { } } - + if(!registryHome.exists()) { registryHome.mkdirs(); } @@ -97,7 +96,7 @@ public class ContentHandler implements ExtensionHandler { ExtensionInstallationContext installationContext) throws Exception { File registryHome = getRegistryHomeDir(installationContext); if (extension.getType() == ExtensionType.ARTIFACTS - && extension.getName().equals(FeatureConstants.EXTENSION_NAME_CONTENT_PACKAGES)) { + && extension.getName().equals(Extension.EXTENSION_NAME_CONTENT_PACKAGES)) { MultiValueMap orderedArtifacts = MultiValueMap.decorate(new TreeMap<Integer, Collection<Artifact>>()); for (final Artifact a : extension.getArtifacts()) { int order; @@ -119,14 +118,14 @@ public class ContentHandler implements ExtensionHandler { builder.save(baos); executionPlans.add(baos.toString("UTF-8")); } - // Workaround for too bold relocation mechanism - corresponding details at https://issues.apache.org/jira/browse/MSHADE-156 + // Workaround for too bold relocation mechanism - corresponding details at https://issues.apache.org/jira/browse/MSHADE-156 final Configuration initcfg = new Configuration("org.UNSHADE.apache.sling.jcr.packageinit.impl.ExecutionPlanRepoInitializer"); initcfg.getProperties().put("executionplans", executionPlans.toArray(new String[executionPlans.size()])); - installationContext.addConfiguration(initcfg.getPid(), initcfg.getFactoryPid(), initcfg.getProperties()); - // Workaround for too bold relocation mechanism - corresponding details at https://issues.apache.org/jira/browse/MSHADE-156 + installationContext.addConfiguration(getPid(initcfg), getFactoryPid(initcfg), initcfg.getProperties()); + // Workaround for too bold relocation mechanism - corresponding details at https://issues.apache.org/jira/browse/MSHADE-156 final Configuration registrycfg = new Configuration("org.UNSHADE.apache.jackrabbit.vault.packaging.registry.impl.FSPackageRegistry"); registrycfg.getProperties().put("homePath", registryHome.getPath()); - installationContext.addConfiguration(registrycfg.getPid(), registrycfg.getFactoryPid(), registrycfg.getProperties());; + installationContext.addConfiguration(getPid(registrycfg), getFactoryPid(registrycfg), registrycfg.getProperties()); return true; } @@ -146,7 +145,7 @@ public class ContentHandler implements ExtensionHandler { String repoHome = installationContext.getFrameworkProperties().get(REPOSITORY_HOME); if (repoHome == null) { throw new IllegalStateException("Neither registry.home set nor repository.home configured."); - } + } registryHome = Paths.get(repoHome, REGISTRY_FOLDER).toFile(); } if (!registryHome.exists()) { @@ -157,4 +156,21 @@ public class ContentHandler implements ExtensionHandler { } return registryHome; } + + static String getPid(Configuration cfg) { + String pid = cfg.getPid(); + int idx = pid.indexOf(FACTORY_CONFIG_SEPARATOR); + if (idx > 0) + return pid.substring(0, idx); + else + return pid; + } + + static String getFactoryPid(Configuration cfg) { + String pid = cfg.getPid(); + if (pid.indexOf(FACTORY_CONFIG_SEPARATOR) > 0) + return pid; + else + return null; + } } diff --git a/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java b/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java index 3d5d51e..4de97b5 100644 --- a/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java +++ b/src/main/java/org/apache/sling/feature/extension/content/ContentOrderMergeProcessor.java @@ -20,7 +20,6 @@ import org.apache.sling.feature.Artifact; import org.apache.sling.feature.Extension; import org.apache.sling.feature.ExtensionType; import org.apache.sling.feature.Feature; -import org.apache.sling.feature.FeatureConstants; import org.apache.sling.feature.builder.HandlerContext; import org.apache.sling.feature.builder.MergeHandler; @@ -49,7 +48,7 @@ public class ContentOrderMergeProcessor implements MergeHandler { @Override public boolean canMerge(Extension extension) { return extension.getType() == ExtensionType.ARTIFACTS - && extension.getName().equals(FeatureConstants.EXTENSION_NAME_CONTENT_PACKAGES); + && extension.getName().equals(Extension.EXTENSION_NAME_CONTENT_PACKAGES); } @Override diff --git a/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java b/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java index 06b7cff..49347a6 100644 --- a/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java +++ b/src/test/java/org/apache/sling/feature/extension/content/ContentHandlerTest.java @@ -18,6 +18,7 @@ package org.apache.sling.feature.extension.content; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import static org.mockito.Mockito.any; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.verify; @@ -30,6 +31,7 @@ import java.util.Iterator; import org.apache.sling.feature.Artifact; import org.apache.sling.feature.ArtifactId; +import org.apache.sling.feature.Configuration; import org.apache.sling.feature.Extension; import org.apache.sling.feature.ExtensionType; import org.apache.sling.feature.launcher.spi.LauncherPrepareContext; @@ -45,17 +47,17 @@ import org.mockito.junit.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class ContentHandlerTest { - + @Rule public TemporaryFolder testFolder = new TemporaryFolder(); - + @Mock LauncherPrepareContext prepareContext; - + @Mock ExtensionInstallationContext installationContext; - + /** * Test package A-1.0. Depends on B and C-1.X */ @@ -103,7 +105,7 @@ public class ContentHandlerTest { ext.getArtifacts().add(artifact_c); @SuppressWarnings("unchecked") ArgumentCaptor<Dictionary<String, Object>> executionPlanCaptor = ArgumentCaptor.forClass(Dictionary.class); - + ch.handle(ext, prepareContext, installationContext); verify(installationContext).addConfiguration(eq("org.UNSHADE.apache.sling.jcr.packageinit.impl.ExecutionPlanRepoInitializer"), any(), executionPlanCaptor.capture()); verify(installationContext).addConfiguration(eq("org.UNSHADE.apache.jackrabbit.vault.packaging.registry.impl.FSPackageRegistry"), any(), any()); @@ -126,4 +128,28 @@ public class ContentHandlerTest { assertEquals(expected_1, executionplans[1]); assertFalse(dictIt.hasNext()); } + + @Test + public void testGetConfigPidNormal() { + Configuration cfg = new Configuration("a.b.c"); + assertEquals("a.b.c", ContentHandler.getPid(cfg)); + } + + @Test + public void testGetConfigPidFactory() { + Configuration cfg = new Configuration("a.b.c~d"); + assertEquals("a.b.c", ContentHandler.getPid(cfg)); + } + + @Test + public void testGetFactoryPidNormal() { + Configuration cfg = new Configuration("a.b.c"); + assertNull(ContentHandler.getFactoryPid(cfg)); + } + + @Test + public void testGetFactoryPidFactory() { + Configuration cfg = new Configuration("a.b.c~d"); + assertEquals("a.b.c~d", ContentHandler.getFactoryPid(cfg)); + } }
