SLING-6670 Support CAConfig Impl 1.3.0
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1787628 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index d8ada57..9164f43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,18 +53,21 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.api</artifactId>
+ <!-- Stick with dependency version 1.1.0 as it was released with caconfig-mock-plugin 1.0.0 -->
<version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.spi</artifactId>
+ <!-- Stick with dependency version 1.2.0 as it was released with caconfig-mock-plugin 1.0.0 -->
<version>1.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.impl</artifactId>
+ <!-- Stick with dependency version 1.2.0 as it was released with caconfig-mock-plugin 1.0.0 -->
<version>1.2.0</version>
<scope>compile</scope>
</dependency>
@@ -115,6 +118,56 @@
</dependencies>
</profile>
+ <!-- Test with Sling CAConfig Impl/SPI 1.2 -->
+ <profile>
+ <id>caconfig-1.2</id>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.caconfig.api</artifactId>
+ <version>1.1.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.caconfig.spi</artifactId>
+ <version>1.2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.caconfig.impl</artifactId>
+ <version>1.2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <!-- Test with Sling CAConfig Impl/SPI 1.3 -->
+ <profile>
+ <id>caconfig-1.3</id>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.caconfig.api</artifactId>
+ <version>1.1.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.caconfig.spi</artifactId>
+ <version>1.2.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.caconfig.impl</artifactId>
+ <version>1.2.1-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ </profile>
+
</profiles>
</project>
diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
index dc06a59..6a24e0a 100644
--- a/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
+++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
@@ -24,7 +24,6 @@
import org.apache.sling.caconfig.impl.metadata.AnnotationClassConfigurationMetadataProvider;
import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.management.impl.ConfigurationManagerImpl;
-import org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer;
import org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolverImpl;
import org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexer;
import org.apache.sling.caconfig.resource.impl.def.DefaultConfigurationResourceResolvingStrategy;
@@ -36,7 +35,7 @@
/**
* Mock context plugins.
- * The plugin supports both 1.0/1.1 and 1.2+ version of the Impl/SPI.
+ * The plugin supports all versions from 1.0 to the most recent versions of the Impl/SPI.
*/
@ProviderType
public final class ContextPlugins {
@@ -82,7 +81,7 @@
if (!registerByClassName(context, "org.apache.sling.caconfig.management.impl.ContextPathStrategyMultiplexerImpl")) {
// fallback to impl 1.1
- registerByClassName(context, "org.apache.sling.caconfig.resource.impl.ContextPathStrategyMultiplexer");
+ registerByClassName(context, "org.apache.sling.caconfig.resource.impl.ContextPathStrategyMultiplexer", true);
}
context.registerInjectActivateService(new ConfigurationResourceResolvingStrategyMultiplexer());
@@ -103,7 +102,12 @@
* @param context Sling context
*/
private static void registerConfigurationResolver(SlingContextImpl context) {
- context.registerInjectActivateService(new ConfigurationPersistenceStrategyMultiplexer());
+
+ if (!registerByClassName(context, "org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexerImpl")) {
+ // fallback to impl 1.2
+ registerByClassName(context, "org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer", true);
+ }
+
context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
// only required for impl 1.2+
@@ -133,13 +137,22 @@
}
private static boolean registerByClassName(SlingContextImpl context, String className) {
+ return registerByClassName(context, className, false);
+ }
+
+ private static boolean registerByClassName(SlingContextImpl context, String className, boolean mandatory) {
try {
Class<?> clazz = Class.forName(className);
context.registerInjectActivateService(clazz.newInstance());
return true;
}
catch (ClassNotFoundException ex) {
- return false;
+ if (mandatory) {
+ throw new RuntimeException(ex.getMessage(), ex);
+ }
+ else {
+ return false;
+ }
}
catch (InstantiationException ex) {
throw new RuntimeException(ex);