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/19 17:28:09 UTC
svn commit: r1640589 - in /sling/trunk/contrib/extensions/validation:
api/src/main/java/org/apache/sling/validation/api/
core/src/main/java/org/apache/sling/validation/impl/
core/src/main/java/org/apache/sling/validation/impl/util/
core/src/test/java/o...
Author: kwin
Date: Wed Nov 19 16:28:08 2014
New Revision: 1640589
URL: http://svn.apache.org/r1640589
Log:
SLILNG-4027 removal of ValidatorLookupService
Removed:
sling/trunk/contrib/extensions/validation/api/src/main/java/org/apache/sling/validation/api/ValidatorLookupService.java
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidatorLookupServiceImpl.java
Modified:
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ChildResourceImpl.java
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java
sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
Modified: sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ChildResourceImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ChildResourceImpl.java?rev=1640589&r1=1640588&r2=1640589&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ChildResourceImpl.java (original)
+++ sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ChildResourceImpl.java Wed Nov 19 16:28:08 2014
@@ -1,11 +1,12 @@
package org.apache.sling.validation.impl;
+import java.util.Map;
import java.util.Set;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.validation.api.ChildResource;
import org.apache.sling.validation.api.ResourceProperty;
-import org.apache.sling.validation.api.ValidatorLookupService;
+import org.apache.sling.validation.api.Validator;
import org.apache.sling.validation.impl.util.JCRBuilder;
/**
@@ -16,13 +17,13 @@ public class ChildResourceImpl implement
private String name;
private Set<ResourceProperty> properties;
- public ChildResourceImpl(Resource modelResource, Resource childResource, ValidatorLookupService validatorLookupService) {
+ public ChildResourceImpl(Resource modelResource, Resource childResource, Map<String, Validator<?>> validatorsMap) {
String root = modelResource.getPath();
if (!childResource.getPath().startsWith(root)) {
throw new IllegalArgumentException("Expected resource " + childResource.getPath() + " to be under root path " + root);
}
name = childResource.getPath().replaceFirst(root + "/", "").replaceAll(Constants.CHILDREN + "/", "");
- properties = JCRBuilder.buildProperties(validatorLookupService, childResource.getChild(Constants.PROPERTIES));
+ properties = JCRBuilder.buildProperties(validatorsMap, childResource.getChild(Constants.PROPERTIES));
}
@Override
Modified: sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java?rev=1640589&r1=1640588&r2=1640589&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java (original)
+++ sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java Wed Nov 19 16:28:08 2014
@@ -18,25 +18,21 @@
*/
package org.apache.sling.validation.impl;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.jcr.query.Query;
import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.reflect.TypeUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.resource.LoginException;
@@ -54,7 +50,6 @@ import org.apache.sling.validation.api.V
import org.apache.sling.validation.api.ValidationResult;
import org.apache.sling.validation.api.ValidationService;
import org.apache.sling.validation.api.Validator;
-import org.apache.sling.validation.api.ValidatorLookupService;
import org.apache.sling.validation.api.exceptions.SlingValidationException;
import org.apache.sling.validation.impl.util.JCRBuilder;
import org.apache.sling.validation.impl.util.Trie;
@@ -66,9 +61,6 @@ import org.osgi.service.event.EventHandl
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
-
-
@Component()
@Service(ValidationService.class)
public class ValidationServiceImpl implements ValidationService, EventHandler {
@@ -79,15 +71,20 @@ public class ValidationServiceImpl imple
static final String[] TOPICS = {SlingConstants.TOPIC_RESOURCE_REMOVED, SlingConstants.TOPIC_RESOURCE_CHANGED,
SlingConstants.TOPIC_RESOURCE_ADDED};
- private Map<String, Trie<JCRValidationModel>> validationModelsCache = new ConcurrentHashMap<String, Trie<JCRValidationModel>>();
+ protected Map<String, Trie<JCRValidationModel>> validationModelsCache = new ConcurrentHashMap<String, Trie<JCRValidationModel>>();
private ThreadPool threadPool;
private ServiceRegistration eventHandlerRegistration;
@Reference
private ResourceResolverFactory rrf = null;
- @Reference
- private ValidatorLookupService validatorLookupService = null;
+ @Reference(
+ name = "validator",
+ referenceInterface = Validator.class,
+ policy = ReferencePolicy.DYNAMIC,
+ cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE
+ )
+ Map<String, Validator<?>> validators = new ConcurrentHashMap<String, Validator<?>>();
@Reference
private ThreadPoolManager tpm = null;
@@ -283,9 +280,9 @@ public class ValidationServiceImpl imple
String[].class));
Resource r = model.getChild(Constants.PROPERTIES);
if (r != null) {
- Set<ResourceProperty> resourceProperties = JCRBuilder.buildProperties(validatorLookupService, r);
+ Set<ResourceProperty> resourceProperties = JCRBuilder.buildProperties(validators, r);
if (!resourceProperties.isEmpty()) {
- List<ChildResource> children = JCRBuilder.buildChildren(model, model, validatorLookupService);
+ List<ChildResource> children = JCRBuilder.buildChildren(model, model, validators);
vm = new JCRValidationModel(jcrPath, resourceProperties, validatedResourceType, applicablePaths, children);
modelsForResourceType = validationModelsCache.get(validatedResourceType);
/**
@@ -413,4 +410,13 @@ public class ValidationServiceImpl imple
.getClass().getName() + " for resourceProperty " + relativePath + property, e);
}
}
+
+ // OSGi ################################################################################################################################
+ protected void bindValidator(Validator<?> validator, Map<?, ?> properties) {
+ validators.put(validator.getClass().getName(), validator);
+ }
+
+ protected void unbindValidator(Validator<?> validator, Map<?, ?> properties) {
+ validators.remove(validator.getClass().getName());
+ }
}
Modified: sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java?rev=1640589&r1=1640588&r2=1640589&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java (original)
+++ sling/trunk/contrib/extensions/validation/core/src/main/java/org/apache/sling/validation/impl/util/JCRBuilder.java Wed Nov 19 16:28:08 2014
@@ -33,7 +33,6 @@ import org.apache.sling.validation.api.C
import org.apache.sling.validation.api.ParameterizedValidator;
import org.apache.sling.validation.api.ResourceProperty;
import org.apache.sling.validation.api.Validator;
-import org.apache.sling.validation.api.ValidatorLookupService;
import org.apache.sling.validation.impl.ChildResourceImpl;
import org.apache.sling.validation.impl.Constants;
import org.apache.sling.validation.impl.ParameterizedValidatorImpl;
@@ -47,12 +46,12 @@ public class JCRBuilder {
/**
* Creates a set of the properties that a resource is expected to have, together with the associated validators.
*
- * @param vls the {@link ValidatorLookupService}
+ * @param validatorsMap a map containing {@link Validator}s as values and their class names as values
* @param propertiesResource the resource identifying the properties node from a validation model's structure
* @return a set of properties or an empty set if no properties are defined
* @see ResourceProperty
*/
- public static Set<ResourceProperty> buildProperties(ValidatorLookupService vls, Resource propertiesResource) {
+ public static Set<ResourceProperty> buildProperties(Map<String, Validator<?>> validatorsMap, Resource propertiesResource) {
Set<ResourceProperty> properties = new HashSet<ResourceProperty>();
if (propertiesResource != null) {
for (Resource property : propertiesResource.getChildren()) {
@@ -67,7 +66,7 @@ public class JCRBuilder {
Resource validator = validatorsIterator.next();
ValueMap validatorProperties = validator.adaptTo(ValueMap.class);
String validatorName = validator.getName();
- Validator v = vls.getValidator(validatorName);
+ Validator<?> v = validatorsMap.get(validatorName);
if (v == null) {
throw new IllegalArgumentException("Could not find validator with name '" + validatorName + "'");
}
@@ -100,18 +99,18 @@ public class JCRBuilder {
* @param modelResource the resource describing a {@link org.apache.sling.validation.api.ValidationModel}
* @param rootResource the model's resource from which to search for children (this resource has to have a {@link
* Constants#CHILDREN} node directly underneath it)
- * @param validatorLookupService the {@link ValidatorLookupService}
+ * @param validatorsMap a map containing {@link Validator}s as values and their class names as values
* @return a list of all the children resources; the list will be empty if there are no children resources
*/
public static List<ChildResource> buildChildren(Resource modelResource, Resource rootResource,
- ValidatorLookupService validatorLookupService) {
+ Map<String, Validator<?>> validatorsMap) {
List<ChildResource> children = new ArrayList<ChildResource>();
Resource childrenResource = rootResource.getChild(Constants.CHILDREN);
if (childrenResource != null) {
for (Resource child : childrenResource.getChildren()) {
- ChildResource childResource = new ChildResourceImpl(modelResource, child, validatorLookupService);
+ ChildResource childResource = new ChildResourceImpl(modelResource, child, validatorsMap);
children.add(childResource);
- children.addAll(buildChildren(modelResource, child, validatorLookupService));
+ children.addAll(buildChildren(modelResource, child, validatorsMap));
}
}
return children;
Modified: sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java?rev=1640589&r1=1640588&r2=1640589&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java (original)
+++ sling/trunk/contrib/extensions/validation/core/src/test/java/org/apache/sling/validation/impl/ValidationServiceImplTest.java Wed Nov 19 16:28:08 2014
@@ -19,8 +19,8 @@
package org.apache.sling.validation.impl;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -41,10 +41,7 @@ import org.apache.sling.api.wrappers.Val
import org.apache.sling.jcr.resource.JcrResourceConstants;
import org.apache.sling.validation.api.ValidationModel;
import org.apache.sling.validation.api.ValidationResult;
-import org.apache.sling.validation.api.ValidationService;
import org.apache.sling.validation.api.Validator;
-import org.apache.sling.validation.api.ValidatorLookupService;
-import org.apache.sling.validation.api.exceptions.SlingValidationException;
import org.apache.sling.validation.impl.setup.MockedResourceResolver;
import org.apache.sling.validation.impl.util.examplevalidators.DateValidator;
import org.apache.sling.validation.impl.validators.RegexValidator;
@@ -69,8 +66,7 @@ public class ValidationServiceImplTest {
private static ResourceResolverFactory rrf;
private static Resource appsValidatorsRoot;
private static Resource libsValidatorsRoot;
- private ValidationService validationService;
- private ValidatorLookupService validatorLookupService;
+ private ValidationServiceImpl validationService;
@BeforeClass
public static void init() throws Exception {
@@ -108,16 +104,15 @@ public class ValidationServiceImplTest {
@Before
public void setUp() {
validationService = new ValidationServiceImpl();
+ validationService.validators = new HashMap<String, Validator<?>>();
Whitebox.setInternalState(validationService, "rrf", rrf);
- validatorLookupService = mock(ValidatorLookupService.class);
+
}
@Test
public void testGetValidationModel() throws Exception {
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.validators.RegexValidator")).thenReturn(new
- RegexValidator());
- Whitebox.setInternalState(validationService, "validatorLookupService", validatorLookupService);
-
+ validationService.validators.put("org.apache.sling.validation.impl.validators.RegexValidator", new RegexValidator());
+
List<TestProperty> properties = new ArrayList<TestProperty>();
TestProperty property = new TestProperty();
property.name = "field1";
@@ -158,9 +153,7 @@ public class ValidationServiceImplTest {
@Test
public void testGetValidationModelWithOverlay() throws Exception {
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.validators.RegexValidator")).thenReturn(new
- RegexValidator());
- Whitebox.setInternalState(validationService, "validatorLookupService", validatorLookupService);
+ validationService.validators.put("org.apache.sling.validation.impl.validators.RegexValidator", new RegexValidator());
List<TestProperty> fields = new ArrayList<TestProperty>();
TestProperty field = new TestProperty();
@@ -206,15 +199,12 @@ public class ValidationServiceImplTest {
@Test()
public void testValueMapWithWrongDataType() throws Exception {
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.validators.RegexValidator")).thenReturn(new
- RegexValidator());
- Whitebox.setInternalState(validationService, "validatorLookupService", validatorLookupService);
+ validationService.validators.put("org.apache.sling.validation.impl.validators.RegexValidator", new RegexValidator());
List<TestProperty> properties = new ArrayList<TestProperty>();
TestProperty property = new TestProperty();
property.name = "field1";
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.util.examplevalidators.DateValidator")).thenReturn(new
- DateValidator());
+ validationService.validators.put("org.apache.sling.validation.impl.util.examplevalidators.DateValidator",new DateValidator());
property.validators.put("org.apache.sling.validation.impl.util.examplevalidators.DateValidator", null);
properties.add(property);
ResourceResolver rr = rrf.getAdministrativeResourceResolver(null);
@@ -247,9 +237,7 @@ public class ValidationServiceImplTest {
@Test
public void testValueMapWithCorrectDataType() throws Exception {
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.validators.RegexValidator")).thenReturn(new
- RegexValidator());
- Whitebox.setInternalState(validationService, "validatorLookupService", validatorLookupService);
+ validationService.validators.put("org.apache.sling.validation.impl.validators.RegexValidator", new RegexValidator());
List<TestProperty> fields = new ArrayList<TestProperty>();
TestProperty field = new TestProperty();
@@ -292,9 +280,7 @@ public class ValidationServiceImplTest {
@Test
public void testResourceWithMissingChildProperty() throws Exception {
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.validators.RegexValidator")).thenReturn(new
- RegexValidator());
- Whitebox.setInternalState(validationService, "validatorLookupService", validatorLookupService);
+ validationService.validators.put("org.apache.sling.validation.impl.validators.RegexValidator", new RegexValidator());
List<TestProperty> fields = new ArrayList<TestProperty>();
TestProperty property = new TestProperty();
@@ -369,9 +355,7 @@ public class ValidationServiceImplTest {
@Test
public void testResourceWithMultivalueProperties() throws Exception {
- when(validatorLookupService.getValidator("org.apache.sling.validation.impl.validators.RegexValidator")).thenReturn(new
- RegexValidator());
- Whitebox.setInternalState(validationService, "validatorLookupService", validatorLookupService);
+ validationService.validators.put("org.apache.sling.validation.impl.validators.RegexValidator", new RegexValidator());
List<TestProperty> fields = new ArrayList<TestProperty>();
TestProperty property = new TestProperty();