Author: justin Date: Thu Dec 19 20:54:13 2013 New Revision: 1552422 URL: http://svn.apache.org/r1552422 Log: correctly handling method injection of primitives
Modified: sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/ResourceModelInterfacesTest.java sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/SimplePropertyModel.java Modified: sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java URL: http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java?rev=1552422&r1=1552421&r2=1552422&view=diff ============================================================================== --- sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java (original) +++ sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/main/java/org/apache/sling/yamf/impl/YamfAdapterFactory.java Thu Dec 19 20:54:13 2013 @@ -535,7 +535,9 @@ public class YamfAdapterFactory implemen } private boolean setMethod(Method method, Map<Method, Object> methods, Object value) { - if (value != null && method.getReturnType().isInstance(value)) { + if (value != null + && (isAcceptableType( + method.getReturnType(), value))) { methods.put(method, value); return true; } else { @@ -543,6 +545,36 @@ public class YamfAdapterFactory implemen } } + private boolean isAcceptableType(Class<?> type, Object value) { + if (type.isInstance(value)) { + return true; + } + + if (type == Integer.TYPE) { + return Integer.class.isInstance(value); + } + if (type == Long.TYPE) { + return Long.class.isInstance(value); + } + if (type == Boolean.TYPE) { + return Boolean.class.isInstance(value); + } + if (type == Double.TYPE) { + return Double.class.isInstance(value); + } + if (type == Float.TYPE) { + return Float.class.isInstance(value); + } + if (type == Short.TYPE) { + return Short.class.isInstance(value); + } + if (type == Character.TYPE) { + return Character.class.isInstance(value); + } + + return false; + } + @Activate protected void activate(final ComponentContext ctx) throws InvalidSyntaxException { this.bundleContext = ctx.getBundleContext(); Modified: sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/ResourceModelInterfacesTest.java URL: http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/ResourceModelInterfacesTest.java?rev=1552422&r1=1552421&r2=1552422&view=diff ============================================================================== --- sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/ResourceModelInterfacesTest.java (original) +++ sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/impl/ResourceModelInterfacesTest.java Thu Dec 19 20:54:13 2013 @@ -49,6 +49,7 @@ public class ResourceModelInterfacesTest Map<String, Object> map = new HashMap<String, Object>(); map.put("first", "first-value"); map.put("third", "third-value"); + map.put("fourth", true); ValueMap vm = new ValueMapDecorator(map); Resource res = mock(Resource.class); @@ -59,6 +60,7 @@ public class ResourceModelInterfacesTest assertEquals("first-value", model.getFirst()); assertNull(model.getSecond()); assertEquals("third-value", model.getThirdProperty()); + assertTrue(model.isFourth()); } @Test Modified: sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/SimplePropertyModel.java URL: http://svn.apache.org/viewvc/sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/SimplePropertyModel.java?rev=1552422&r1=1552421&r2=1552422&view=diff ============================================================================== --- sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/SimplePropertyModel.java (original) +++ sling/whiteboard/justin/yamf/org.apache.sling.yamf.impl/src/test/java/org/apache/sling/yamf/testmodels/interfaces/SimplePropertyModel.java Thu Dec 19 20:54:13 2013 @@ -36,5 +36,8 @@ public interface SimplePropertyModel { @Inject @Named("third") public String getThirdProperty(); + + @Inject + public boolean isFourth(); }