You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2014/11/20 11:18:09 UTC
svn commit: r1640710 [2/2] - in /sling/trunk/bundles/extensions/models:
api/src/main/java/org/apache/sling/models/annotations/injectorspecific/
api/src/main/java/org/apache/sling/models/spi/injectorspecific/
impl/src/main/java/org/apache/sling/models/i...
Modified: sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/ResourceModelClassesTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/ResourceModelClassesTest.java?rev=1640710&r1=1640709&r2=1640710&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/ResourceModelClassesTest.java (original)
+++ sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/ResourceModelClassesTest.java Thu Nov 20 10:18:08 2014
@@ -51,6 +51,7 @@ import org.mockito.invocation.Invocation
import org.mockito.runners.MockitoJUnitRunner;
import org.mockito.stubbing.Answer;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
import org.osgi.service.component.ComponentContext;
@RunWith(MockitoJUnitRunner.class)
@@ -71,8 +72,12 @@ public class ResourceModelClassesTest {
factory = new ModelAdapterFactory();
factory.activate(componentCtx);
- factory.bindInjector(new ValueMapInjector(), new ServicePropertiesMap(2, 2));
+ ValueMapInjector valueMapInjector = new ValueMapInjector();
+ factory.bindInjector(valueMapInjector, new ServicePropertiesMap(2, 2));
factory.bindInjector(new ChildResourceInjector(), new ServicePropertiesMap(1, 1));
+
+ factory.bindInjectAnnotationProcessorFactory(valueMapInjector,
+ Collections.<String, Object> singletonMap(Constants.SERVICE_ID, 2L));
}
@Test
@@ -205,10 +210,9 @@ public class ResourceModelClassesTest {
}
@Test
- public void testRequiredPropertyModelOptionalStrategyAvailable() {
+ public void testRequiredPropertyMissingModelOptionalStrategy() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("first", "first-value");
- map.put("third", "third-value");
ValueMap vm = spy(new ValueMapDecorator(map));
Resource res = mock(Resource.class);
@@ -217,14 +221,16 @@ public class ResourceModelClassesTest {
ResourceModelWithRequiredFieldOptionalStrategy model = factory.getAdapter(res, ResourceModelWithRequiredFieldOptionalStrategy.class);
assertNull(model);
- verify(vm).get("optional", String.class);
- verify(vm).get("required", String.class);
+ verify(vm).get("optional1", String.class);
+ verify(vm).get("required1", String.class);
}
@Test
- public void testRequiredPropertyModelOptionalStrategyNotAvailable() {
+ public void testRequiredPropertyModelOptionalStrategy() {
Map<String, Object> map = new HashMap<String, Object>();
- map.put("required", "first-value");
+ map.put("required1", "required value");
+ map.put("required2", "required value");
+ map.put("required3", "required value");
ValueMap vm = spy(new ValueMapDecorator(map));
Resource res = mock(Resource.class);
@@ -232,9 +238,11 @@ public class ResourceModelClassesTest {
ResourceModelWithRequiredFieldOptionalStrategy model = factory.getAdapter(res, ResourceModelWithRequiredFieldOptionalStrategy.class);
assertNotNull(model);
-
- verify(vm).get("optional", String.class);
- verify(vm).get("required", String.class);
+ assertEquals("required value", model.getRequired1());
+ assertEquals("required value", model.getRequired2());
+
+ verify(vm).get("optional1", String.class);
+ verify(vm).get("required1", String.class);
}
@Test
Modified: sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/injectors/SelfInjectorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/injectors/SelfInjectorTest.java?rev=1640710&r1=1640709&r2=1640710&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/injectors/SelfInjectorTest.java (original)
+++ sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/impl/injectors/SelfInjectorTest.java Thu Nov 20 10:18:08 2014
@@ -28,6 +28,8 @@ import javax.servlet.http.HttpServletReq
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.models.annotations.DefaultInjectionStrategy;
+import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.Self;
import org.apache.sling.models.impl.model.ConstructorParameter;
import org.apache.sling.models.spi.injectorspecific.StaticInjectAnnotationProcessorFactory;
@@ -48,15 +50,19 @@ public class SelfInjectorTest {
@Mock
private AnnotatedElement annotatedElement;
+ @Mock
+ private Model modelAnnotation;
+
private ConstructorParameter firstConstructorParameter;
private ConstructorParameter secondConstructorParameter;
@Before
public void setup() {
+ when(modelAnnotation.defaultInjectionStrategy()).thenReturn(DefaultInjectionStrategy.REQUIRED);
firstConstructorParameter = new ConstructorParameter(new Annotation[0], Object.class, Object.class, true, 0,
- new StaticInjectAnnotationProcessorFactory[0]);
+ new StaticInjectAnnotationProcessorFactory[0], null);
secondConstructorParameter = new ConstructorParameter(new Annotation[0], Object.class, Object.class, true, 1,
- new StaticInjectAnnotationProcessorFactory[0]);
+ new StaticInjectAnnotationProcessorFactory[0], null);
}
@Test
Modified: sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/testmodels/classes/ResourceModelWithRequiredFieldOptionalStrategy.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/testmodels/classes/ResourceModelWithRequiredFieldOptionalStrategy.java?rev=1640710&r1=1640709&r2=1640710&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/testmodels/classes/ResourceModelWithRequiredFieldOptionalStrategy.java (original)
+++ sling/trunk/bundles/extensions/models/impl/src/test/java/org/apache/sling/models/testmodels/classes/ResourceModelWithRequiredFieldOptionalStrategy.java Thu Nov 20 10:18:08 2014
@@ -22,23 +22,44 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.Required;
+import org.apache.sling.models.annotations.injectorspecific.InjectionStrategy;
+import org.apache.sling.models.annotations.injectorspecific.ResourcePath;
+import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
@Model(adaptables = Resource.class, defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class ResourceModelWithRequiredFieldOptionalStrategy {
+ // although this is marked with optional=false, this is still optional, because injectionStrategy has a higher priority (even if it is only the default)
+ // compare also with https://issues.apache.org/jira/browse/SLING-4155
+ @ValueMapValue(optional=false)
+ private String optional5;
+
@Inject
- private String optional;
+ private String optional1;
@Inject
@Required
- private String required;
+ private String required1;
+
+ @ValueMapValue
+ private String optional2;
+
+ @ValueMapValue(optional=true)
+ private String optional3;
+
+ @ValueMapValue(injectionStrategy=InjectionStrategy.OPTIONAL)
+ private String optional4;
+
+ @ValueMapValue(injectionStrategy=InjectionStrategy.REQUIRED)
+ private String required2;
- public String getRequired() {
- return required;
+ public String getRequired1() {
+ return required1;
}
- public String getOptional() {
- return optional;
+ public String getRequired2() {
+ return required2;
}
+
}