You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2017/03/17 13:39:07 UTC
svn commit: r1787379 - in /sling/trunk/bundles/extensions/models:
impl/src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java
integration-tests/src/main/java/org/apache/sling/models/it/ImplementsExtendsTest.java
Author: justin
Date: Fri Mar 17 13:39:06 2017
New Revision: 1787379
URL: http://svn.apache.org/viewvc?rev=1787379&view=rev
Log:
SLING-6658 - always include implementation class in adapterTypes list. Thanks to Dirk Rudolph for the patch!
This closes #206
Modified:
sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java
sling/trunk/bundles/extensions/models/integration-tests/src/main/java/org/apache/sling/models/it/ImplementsExtendsTest.java
Modified: sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java?rev=1787379&r1=1787378&r2=1787379&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java (original)
+++ sling/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ModelPackageBundleListener.java Fri Mar 17 13:39:06 2017
@@ -26,6 +26,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.adapter.AdapterFactory;
@@ -143,6 +144,8 @@ public class ModelPackageBundleListener
Class<?>[] adapterTypes = annotation.adapters();
if (adapterTypes.length == 0) {
adapterTypes = new Class<?>[] { implType };
+ } else if (!ArrayUtils.contains(adapterTypes, implType)) {
+ adapterTypes = (Class<?>[]) ArrayUtils.add(adapterTypes, implType);
}
// register adapter only if given adapters are valid
if (validateAdapterClasses(implType, adapterTypes)) {
@@ -156,7 +159,7 @@ public class ModelPackageBundleListener
for (String resourceType : resourceTypes) {
if (StringUtils.isNotEmpty(resourceType)) {
for (Class<?> adaptable : annotation.adaptables()) {
- adapterImplementations.registerModelToResourceType(bundle, resourceType, adaptable, adapterTypes[0]);
+ adapterImplementations.registerModelToResourceType(bundle, resourceType, adaptable, implType);
ExportServlet.ExportedObjectAccessor accessor = null;
if (adaptable == Resource.class) {
accessor = ExportServlet.RESOURCE_ACCESSOR;
Modified: sling/trunk/bundles/extensions/models/integration-tests/src/main/java/org/apache/sling/models/it/ImplementsExtendsTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/integration-tests/src/main/java/org/apache/sling/models/it/ImplementsExtendsTest.java?rev=1787379&r1=1787378&r2=1787379&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/integration-tests/src/main/java/org/apache/sling/models/it/ImplementsExtendsTest.java (original)
+++ sling/trunk/bundles/extensions/models/integration-tests/src/main/java/org/apache/sling/models/it/ImplementsExtendsTest.java Fri Mar 17 13:39:06 2017
@@ -85,12 +85,12 @@ public class ImplementsExtendsTest {
}
/**
- * Ensure that the implementation class itself cannot be adapted to if it is not part of the "adapter" property in the annotation.
+ * Ensure that the implementation class itself can be adapted to, even if it is not part of the "adapter" property in the annotation.
*/
@Test
- public void testImplementsInterfaceModel_ImplClassNotMapped() {
+ public void testImplementsInterfaceModel_ImplClassImplicitlyMapped() {
ImplementsInterfacePropertyModel model = adapterManager.getAdapter(resource, ImplementsInterfacePropertyModel.class);
- assertNull(model);
+ assertNotNull(model);
}
/**