You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2009/10/12 20:46:09 UTC
svn commit: r824452 [1/2] - in
/myfaces/extensions/validator/branches/branch_for_jsf_1_1:
core/src/main/java/org/apache/myfaces/extensions/validator/core/
core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/
core/src/main/java/o...
Author: gpetracek
Date: Mon Oct 12 18:46:08 2009
New Revision: 824452
URL: http://svn.apache.org/viewvc?rev=824452&view=rev
Log:
small refactorings
Added:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/Nested.java
- copied, changed from r824375, myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorInternals.java
- copied, changed from r824375, myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/HtmlCoreComponentsComponentInitializer.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
- copied, changed from r824212, myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/util/BeanValidationUtils.java
Removed:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/util/BeanValidationUtils.java
Modified:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/interceptor/PropertyValidationGroupProvider.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java
Copied: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/Nested.java (from r824375, myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/Nested.java?p2=myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/Nested.java&p1=myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java&r1=824375&r2=824452&rev=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/Nested.java Mon Oct 12 18:46:08 2009
@@ -16,18 +16,27 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.extensions.validator.core.mapper;
+package org.apache.myfaces.extensions.validator.core;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Documented;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+
/**
- * marker interface
+ * marker annotation e.g. to mark sub-name-mappers
*
* @author Gerhard Petracek
* @since x.x.3
*/
+@Target(TYPE)
+@Retention(RUNTIME)
+@Documented
@UsageInformation(UsageCategory.API)
-public interface SubNameMapper<T> extends NameMapper<T>
+public @interface Nested
{
-}
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java Mon Oct 12 18:46:08 2009
@@ -113,7 +113,7 @@
protected Object transformValueForValidation(Object convertedObject)
{
- if ("".equals(convertedObject) && interpretEmptyStringAsNull())
+ if ("".equals(convertedObject) && interpretEmptyStringValuesAsNull())
{
return null;
}
@@ -143,10 +143,9 @@
return !"false".equalsIgnoreCase(WebXmlParameter.VALIDATE_EMPTY_FIELDS);
}
- protected boolean interpretEmptyStringAsNull()
+ protected boolean interpretEmptyStringValuesAsNull()
{
- //to deactivate: the parameter has to be explicitly false
- return !"false".equalsIgnoreCase(WebXmlParameter.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL);
+ return ExtValUtils.interpretEmptyStringValuesAsNull();
}
protected abstract void processValidation(
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/mapper/SubMapperAwareNameMapper.java Mon Oct 12 18:46:08 2009
@@ -30,5 +30,5 @@
@UsageInformation(UsageCategory.API)
public interface SubMapperAwareNameMapper<T> extends NameMapper<T>
{
- void addNameMapper(SubNameMapper<T> nameMapper);
-}
+ void addNameMapper(NameMapper<T> nameMapper);
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/DefaultMetaDataTransformerFactory.java Mon Oct 12 18:46:08 2009
@@ -25,7 +25,7 @@
import org.apache.myfaces.extensions.validator.core.validation.strategy.IdentifiableValidationStrategy;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
-import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
+import org.apache.myfaces.extensions.validator.core.Nested;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfiguration;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationNames;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationEntry;
@@ -62,8 +62,8 @@
private Map<String, String> validationStrategyToMetaDataTransformerMapping;
private List<NameMapper<ValidationStrategy>> nameMapperList = new ArrayList<NameMapper<ValidationStrategy>>();
- private List<SubNameMapper<ValidationStrategy>> subNameMapperList =
- new ArrayList<SubNameMapper<ValidationStrategy>>();
+ private List<NameMapper<ValidationStrategy>> subNameMapperList =
+ new ArrayList<NameMapper<ValidationStrategy>>();
public DefaultMetaDataTransformerFactory()
{
@@ -227,8 +227,7 @@
protected List<NameMapper<ValidationStrategy>> getNameMapperList()
{
- return new SortedNameMapperList<NameMapper<ValidationStrategy>, SubNameMapper<ValidationStrategy>>(
- this.nameMapperList, this.subNameMapperList);
+ return new SortedNameMapperList<NameMapper<ValidationStrategy>>(this.nameMapperList, this.subNameMapperList);
}
@Override
@@ -253,9 +252,13 @@
{
if(validationStrategyNameMapper instanceof SubMapperAwareNameMapper)
{
- for(SubNameMapper<ValidationStrategy> nameMapper : this.subNameMapperList)
+ for(NameMapper<ValidationStrategy> nameMapper : this.subNameMapperList)
{
- ((SubMapperAwareNameMapper<ValidationStrategy>)validationStrategyNameMapper).addNameMapper(nameMapper);
+ if(nameMapper.getClass().isAnnotationPresent(Nested.class))
+ {
+ ((SubMapperAwareNameMapper<ValidationStrategy>)validationStrategyNameMapper)
+ .addNameMapper(nameMapper);
+ }
}
}
}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/SortedNameMapperList.java Mon Oct 12 18:46:08 2009
@@ -20,7 +20,7 @@
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
-import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
+import org.apache.myfaces.extensions.validator.core.Nested;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
@@ -37,12 +37,12 @@
* @since x.x.3
*/
@UsageInformation({UsageCategory.INTERNAL})
-class SortedNameMapperList<T extends NameMapper, S extends SubNameMapper> implements List<T>
+class SortedNameMapperList<T extends NameMapper> implements List<T>
{
private List<T> wrapped;
- private List<S> globalSubNameMapperList;
+ private List<T> globalSubNameMapperList;
- SortedNameMapperList(List<T> wrapped, List<S> subNameMapperList)
+ SortedNameMapperList(List<T> wrapped, List<T> subNameMapperList)
{
this.wrapped = wrapped;
this.globalSubNameMapperList = subNameMapperList;
@@ -50,9 +50,9 @@
public boolean add(T t)
{
- if (t instanceof SubNameMapper /*due to a restriction in java*/)
+ if (t != null && t.getClass().isAnnotationPresent(Nested.class))
{
- return addSubNameMapper((S) t);
+ return addSubNameMapper(t);
}
else
{
@@ -74,7 +74,7 @@
}
@SuppressWarnings({"unchecked"})
- private boolean addSubNameMapper(S subNameMapper)
+ private boolean addSubNameMapper(T subNameMapper)
{
boolean result = false;
for (NameMapper nameMapper : this.wrapped)
@@ -90,7 +90,7 @@
return result;
}
- private void tryToAddMapperAsGlobalSubNameMapper(S subNameMapper)
+ private void tryToAddMapperAsGlobalSubNameMapper(T subNameMapper)
{
if(!this.globalSubNameMapperList.contains(subNameMapper))
{
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/ValidationStrategyToMetaDataTransformerSubMapperAwareNameMapper.java Mon Oct 12 18:46:08 2009
@@ -20,7 +20,7 @@
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
import org.apache.myfaces.extensions.validator.core.mapper.SubMapperAwareNameMapper;
-import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
+import org.apache.myfaces.extensions.validator.core.Nested;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -39,9 +39,9 @@
{
private List<NameMapper<ValidationStrategy>> subNameMappers = new ArrayList<NameMapper<ValidationStrategy>>();
- public void addNameMapper(SubNameMapper<ValidationStrategy> nameMapper)
+ public void addNameMapper(NameMapper<ValidationStrategy> nameMapper)
{
- if(!this.subNameMappers.contains(nameMapper))
+ if(!this.subNameMappers.contains(nameMapper) && nameMapper.getClass().isAnnotationPresent(Nested.class))
{
this.subNameMappers.add(nameMapper);
}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Mon Oct 12 18:46:08 2009
@@ -27,6 +27,7 @@
import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
import org.apache.myfaces.extensions.validator.core.factory.ClassMappingFactory;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.storage.StorageManager;
import org.apache.myfaces.extensions.validator.core.mapper.NameMapper;
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationExceptionInterceptor;
@@ -620,4 +621,15 @@
return metaDataResult;
}
+
+ public static boolean interpretEmptyStringValuesAsNull()
+ {
+ //to deactivate: the parameter has to be explicitly false
+ return !"false".equalsIgnoreCase(WebXmlParameter.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL);
+ }
+
+ public static PropertyDetails getPropertyDetails(PropertyInformation propertyInformation)
+ {
+ return propertyInformation.getInformation(PropertyInformationKeys.PROPERTY_DETAILS, PropertyDetails.class);
+ }
}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptor.java Mon Oct 12 18:46:08 2009
@@ -29,7 +29,7 @@
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
-import util.BeanValidationUtils;
+import org.apache.myfaces.extensions.validator.beanval.util.BeanValidationUtils;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -61,12 +61,13 @@
logger.trace("start to init component " + uiComponent.getClass().getName());
}
- BeanValidationInterceptorUtils bviUtils = new BeanValidationInterceptorUtils(this.logger);
+ BeanValidationInterceptorInternals bviUtils = new BeanValidationInterceptorInternals(this.logger);
PropertyDetails propertyDetails = bviUtils.extractPropertyDetails(facesContext, uiComponent);
if (propertyDetails != null)
{
+ BeanValidationUtils.addMetaDataToContext(uiComponent, propertyDetails);
bviUtils.initComponentWithPropertyDetails(facesContext, uiComponent, propertyDetails);
}
@@ -99,6 +100,9 @@
logger.trace("jsr303 start validation");
}
+ BeanValidationUtils.addMetaDataToContext(
+ uiComponent, ExtValUtils.getPropertyDetails(propertyInformation));
+
if (!executeGlobalBeforeValidationInterceptors(
facesContext, uiComponent, convertedObject, propertyInformation))
{
@@ -125,7 +129,7 @@
protected boolean hasBeanValidationConstraints(PropertyInformation propertyInformation)
{
- return new BeanValidationInterceptorUtils(this.logger).hasBeanValidationConstraints(propertyInformation);
+ return new BeanValidationInterceptorInternals(this.logger).hasBeanValidationConstraints(propertyInformation);
}
protected void processFieldValidation(FacesContext facesContext,
@@ -133,7 +137,7 @@
Object convertedObject,
PropertyInformation propertyInformation)
{
- new BeanValidationInterceptorUtils(this.logger).validate(
+ new BeanValidationInterceptorInternals(this.logger).validate(
facesContext, uiComponent, convertedObject, propertyInformation, supportMultipleViolationsPerField());
}
Copied: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorInternals.java (from r824375, myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorInternals.java?p2=myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorInternals.java&p1=myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java&r1=824375&r2=824452&rev=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/BeanValidationInterceptorInternals.java Mon Oct 12 18:46:08 2009
@@ -36,6 +36,7 @@
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.validation.ConstraintViolation;
+import javax.validation.groups.Default;
import javax.validation.metadata.BeanDescriptor;
import javax.validation.metadata.ConstraintDescriptor;
import javax.validation.metadata.ElementDescriptor;
@@ -49,11 +50,11 @@
* @since x.x.3
*/
@UsageInformation(UsageCategory.INTERNAL)
-class BeanValidationInterceptorUtils
+class BeanValidationInterceptorInternals
{
private Log logger;
- BeanValidationInterceptorUtils(Log logger)
+ BeanValidationInterceptorInternals(Log logger)
{
this.logger = logger;
}
@@ -81,6 +82,10 @@
{
return;
}
+ else if(foundGroups.length == 0)
+ {
+ foundGroups = new Class[]{Default.class};
+ }
ElementDescriptor elementDescriptor = getDescriptorFor(
propertyDetails.getBaseObject().getClass(), propertyDetails.getProperty());
@@ -141,7 +146,7 @@
boolean hasBeanValidationConstraints(PropertyInformation propertyInformation)
{
- PropertyDetails propertyDetails = getPropertyDetails(propertyInformation);
+ PropertyDetails propertyDetails = ExtValUtils.getPropertyDetails(propertyInformation);
return getDescriptorFor(propertyDetails.getBaseObject().getClass(), propertyDetails.getProperty()) != null;
}
@@ -244,18 +249,12 @@
private Class getBaseClassType(PropertyInformation propertyInformation)
{
- return getPropertyDetails(propertyInformation).getBaseObject().getClass();
+ return ExtValUtils.getPropertyDetails(propertyInformation).getBaseObject().getClass();
}
private String getPropertyToValidate(PropertyInformation propertyInformation)
{
- return getPropertyDetails(propertyInformation).getProperty();
- }
-
- private PropertyDetails getPropertyDetails(PropertyInformation propertyInformation)
- {
- return propertyInformation.getInformation(
- PropertyInformationKeys.PROPERTY_DETAILS, PropertyDetails.class);
+ return ExtValUtils.getPropertyDetails(propertyInformation).getProperty();
}
//override this method in the jsf 2.0 version
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/HtmlCoreComponentsComponentInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/HtmlCoreComponentsComponentInitializer.java?rev=824452&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/HtmlCoreComponentsComponentInitializer.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/HtmlCoreComponentsComponentInitializer.java Mon Oct 12 18:46:08 2009
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.beanval;
+
+import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
+import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.component.html.HtmlInputSecret;
+import javax.faces.component.html.HtmlSelectBooleanCheckbox;
+import javax.faces.component.html.HtmlSelectOneListbox;
+import javax.faces.component.html.HtmlSelectOneMenu;
+import javax.faces.component.html.HtmlSelectOneRadio;
+import javax.faces.component.html.HtmlSelectManyCheckbox;
+import javax.faces.component.html.HtmlSelectManyListbox;
+import javax.faces.component.html.HtmlSelectManyMenu;
+import javax.faces.component.html.HtmlInputTextarea;
+import javax.faces.context.FacesContext;
+import java.util.Map;
+
+/**
+ * keep in sync with: org.apache.myfaces.extensions.validator.HtmlCoreComponentsComponentInitializer
+ *
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class HtmlCoreComponentsComponentInitializer implements ComponentInitializer
+{
+ public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+ {
+ if(processComponent(uiComponent))
+ {
+ configureRequiredAttribute(facesContext, uiComponent, metaData);
+ configureMaxLengthAttribute(facesContext, uiComponent, metaData);
+ }
+ }
+
+ protected void configureRequiredAttribute(FacesContext facesContext,
+ UIComponent uiComponent,
+ Map<String, Object> metaData)
+ {
+ if(!ExtValUtils.interpretEmptyStringValuesAsNull())
+ {
+ return;
+ }
+
+ if(Boolean.TRUE.equals(metaData.get(CommonMetaDataKeys.REQUIRED)) ||
+ Boolean.TRUE.equals(isComponentRequired(uiComponent)))
+ {
+ ((EditableValueHolder)uiComponent).setRequired(true);
+ }
+ else
+ {
+ ((EditableValueHolder)uiComponent).setRequired(false);
+ }
+ }
+
+ protected boolean processComponent(UIComponent uiComponent)
+ {
+ return uiComponent instanceof HtmlInputText ||
+ uiComponent instanceof HtmlInputSecret ||
+ uiComponent instanceof HtmlSelectBooleanCheckbox ||
+ uiComponent instanceof HtmlSelectOneListbox ||
+ uiComponent instanceof HtmlSelectOneMenu ||
+ uiComponent instanceof HtmlSelectOneRadio ||
+ uiComponent instanceof HtmlSelectManyCheckbox ||
+ uiComponent instanceof HtmlSelectManyListbox ||
+ uiComponent instanceof HtmlSelectManyMenu ||
+ uiComponent instanceof HtmlInputTextarea;
+ }
+
+ /**
+ * if there is no special attribute at the component which should overrule
+ * the annotated property return true!
+ *
+ * @param uiComponent component which implements the EditableValueHolder interface
+ * @return false to overrule the annotated property e.g. if component is readonly
+ */
+ protected Boolean isComponentRequired(UIComponent uiComponent)
+ {
+ boolean isReadOnly = !Boolean.FALSE.equals(ReflectionUtils.tryToInvokeMethod(
+ uiComponent, ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "isReadonly")));
+ boolean isDisabled = !Boolean.FALSE.equals(ReflectionUtils.tryToInvokeMethod(
+ uiComponent, ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "isDisabled")));
+
+ return !(isReadOnly || isDisabled);
+ }
+
+ protected void configureMaxLengthAttribute(FacesContext facesContext,
+ UIComponent uiComponent,
+ Map<String, Object> metaData)
+ {
+ if(metaData.containsKey(CommonMetaDataKeys.MAX_LENGTH))
+ {
+ Object maxLength = metaData.get(CommonMetaDataKeys.MAX_LENGTH);
+
+ if(!(maxLength instanceof Integer))
+ {
+ return;
+ }
+ if(uiComponent instanceof HtmlInputText)
+ {
+ HtmlInputText htmlInputText = (HtmlInputText)uiComponent;
+ htmlInputText.setMaxlength((Integer)maxLength);
+ }
+ }
+ }
+}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/interceptor/PropertyValidationGroupProvider.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/interceptor/PropertyValidationGroupProvider.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/interceptor/PropertyValidationGroupProvider.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/interceptor/PropertyValidationGroupProvider.java Mon Oct 12 18:46:08 2009
@@ -18,34 +18,15 @@
*/
package org.apache.myfaces.extensions.validator.beanval.interceptor;
-import org.apache.myfaces.extensions.validator.core.interceptor.PropertyValidationInterceptor;
-import org.apache.myfaces.extensions.validator.core.property.PropertyInformation;
-import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
-import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
-import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
-import org.apache.myfaces.extensions.validator.core.el.ELHelper;
-import org.apache.myfaces.extensions.validator.core.el.ValueBindingExpression;
-import org.apache.myfaces.extensions.validator.core.ValidationModuleAware;
-import org.apache.myfaces.extensions.validator.util.ExtValUtils;
-import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
-import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationEntry;
-import org.apache.myfaces.extensions.validator.beanval.ExtValBeanValidationContext;
-import org.apache.myfaces.extensions.validator.beanval.BeanValidationModuleKey;
-import org.apache.myfaces.extensions.validator.beanval.annotation.extractor.DefaultGroupControllerScanningExtractor;
-import org.apache.myfaces.extensions.validator.beanval.annotation.BeanValidation;
-import org.apache.myfaces.extensions.validator.beanval.annotation.ModelValidation;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
-import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.extensions.validator.beanval.BeanValidationModuleKey;
+import org.apache.myfaces.extensions.validator.core.ValidationModuleAware;
+import org.apache.myfaces.extensions.validator.core.interceptor.PropertyValidationInterceptor;
-import javax.faces.context.FacesContext;
import javax.faces.component.UIComponent;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Arrays;
+import javax.faces.context.FacesContext;
import java.util.Map;
-import java.lang.reflect.Method;
/**
* validation interceptor which extracts all groups for the validation process
@@ -53,6 +34,7 @@
* @author Gerhard Petracek
* @since x.x.3
*/
+@Deprecated
public class PropertyValidationGroupProvider implements PropertyValidationInterceptor, ValidationModuleAware
{
protected final Log logger = LogFactory.getLog(getClass());
@@ -62,11 +44,6 @@
Object convertedObject,
Map<String, Object> properties)
{
- if(properties.containsKey(PropertyInformation.class.getName()))
- {
- addMetaDataToContext(
- (PropertyInformation)properties.get(PropertyInformation.class.getName()), uiComponent);
- }
return true;
}
@@ -78,412 +55,8 @@
//not used
}
- protected void addMetaDataToContext(PropertyInformation propertyInformation, UIComponent component)
- {
- PropertyDetails propertyDetails = propertyInformation
- .getInformation(PropertyInformationKeys.PROPERTY_DETAILS, PropertyDetails.class);
-
- String[] key = propertyDetails.getKey().split("\\.");
-
- Object firstBean = ExtValUtils.getELHelper().getBean(key[0]);
-
- List<Class> foundGroupsForPropertyValidation = new ArrayList<Class>();
- List<Class> restrictedGroupsForPropertyValidation = new ArrayList<Class>();
- List<ModelValidationEntry> modelValidationEntryList = new ArrayList<ModelValidationEntry>();
- List<Class> restrictedGroupsForModelValidation = new ArrayList<Class>();
-
- //extract bv-controller-annotation of
-
- //first bean
- processClass(firstBean,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- //first property
- processFieldsAndProperties(key[0] + "." + key[1],
- firstBean,
- key[1],
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- //base object (of target property)
- processClass(propertyDetails.getBaseObject(),
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- //last property
- processFieldsAndProperties(
- propertyDetails.getKey(),
- propertyDetails.getBaseObject(),
- propertyDetails.getProperty(),
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- ExtValBeanValidationContext extValBeanValidationContext = ExtValBeanValidationContext.getCurrentInstance();
- String currentViewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
-
- String clientId = component.getClientId(FacesContext.getCurrentInstance());
-
- processFoundGroups(extValBeanValidationContext, currentViewId, clientId,
- foundGroupsForPropertyValidation);
-
- processRestrictedGroups(extValBeanValidationContext, currentViewId, clientId,
- restrictedGroupsForPropertyValidation);
-
- initModelValidation(extValBeanValidationContext, currentViewId, component, propertyDetails,
- modelValidationEntryList, restrictedGroupsForModelValidation);
- }
-
- private void processClass(Object objectToInspect,
- List<Class> foundGroupsForPropertyValidation,
- List<Class> restrictedGroupsForPropertyValidation,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- Class classToInspect = objectToInspect.getClass();
- while (!Object.class.getName().equals(classToInspect.getName()))
- {
- transferGroupValidationInformationToFoundGroups(objectToInspect,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- processInterfaces(objectToInspect.getClass(), objectToInspect,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- classToInspect = classToInspect.getSuperclass();
- }
- }
-
- private void processFieldsAndProperties(String key,
- Object base,
- String property, List<Class> foundGroupsForPropertyValidation,
- List<Class> restrictedGroupsForPropertyValidation,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- PropertyInformation propertyInformation = new DefaultGroupControllerScanningExtractor()
- .extract(FacesContext.getCurrentInstance(), new PropertyDetails(key, base, property));
-
- for (MetaDataEntry metaDataEntry : propertyInformation.getMetaDataEntries())
- {
- if (metaDataEntry.getValue() instanceof BeanValidation)
- {
- processMetaData((BeanValidation) metaDataEntry.getValue(),
- base,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
- }
- else if(metaDataEntry.getValue() instanceof BeanValidation.List)
- {
- for(BeanValidation currentBeanValidation : ((BeanValidation.List)metaDataEntry.getValue()).value())
- {
- processMetaData(currentBeanValidation,
- base,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
- }
- }
- }
- }
-
- protected void processFoundGroups(ExtValBeanValidationContext extValBeanValidationContext,
- String currentViewId,
- String clientId,
- List<Class> foundGroupsForPropertyValidation)
- {
- /*
- * add found groups to context
- */
- for (Class currentGroupClass : foundGroupsForPropertyValidation)
- {
- extValBeanValidationContext.addGroup(currentGroupClass, currentViewId, clientId);
- }
- }
-
- protected void processRestrictedGroups(ExtValBeanValidationContext extValBeanValidationContext,
- String currentViewId,
- String clientId,
- List<Class> restrictedGroupsForPropertyValidation)
- {
- /*
- * add restricted groups
- */
- for (Class currentGroupClass : restrictedGroupsForPropertyValidation)
- {
- extValBeanValidationContext.restrictGroup(currentGroupClass, currentViewId, clientId);
- }
- }
-
- protected void initModelValidation(ExtValBeanValidationContext extValBeanValidationContext,
- String currentViewId,
- UIComponent component,
- PropertyDetails propertyDetails,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- /*
- * add model validation entry list
- */
- for(ModelValidationEntry modelValidationEntry : modelValidationEntryList)
- {
- for(Class restrictedGroup : restrictedGroupsForModelValidation)
- {
- modelValidationEntry.removeGroup(restrictedGroup);
- }
-
- if(modelValidationEntry.getGroups().length > 0)
- {
- addTargetsForModelValidation(modelValidationEntry, propertyDetails.getBaseObject());
- extValBeanValidationContext.addModelValidationEntry(modelValidationEntry, currentViewId, component);
- }
- }
- }
-
- private void transferGroupValidationInformationToFoundGroups(Object objectToInspect,
- List<Class> foundGroupsForPropertyValidation,
- List<Class> restrictedGroupsForPropertyValidation,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- if (objectToInspect.getClass().isAnnotationPresent(BeanValidation.class))
- {
- processMetaData(objectToInspect.getClass().getAnnotation(BeanValidation.class),
- objectToInspect,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
- }
- else if (objectToInspect.getClass().isAnnotationPresent(BeanValidation.List.class))
- {
- for(BeanValidation currentBeanValidation :
- (objectToInspect.getClass().getAnnotation(BeanValidation.List.class)).value())
- {
- processMetaData(currentBeanValidation,
- objectToInspect,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
- }
- }
- }
-
- private void processInterfaces(Class currentClass,
- Object metaDataSourceObject,
- List<Class> foundGroupsForPropertyValidation,
- List<Class> restrictedGroupsForPropertyValidation,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- for (Class currentInterface : currentClass.getInterfaces())
- {
- transferGroupValidationInformationToFoundGroups(metaDataSourceObject,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
-
- processInterfaces(currentInterface, metaDataSourceObject,
- foundGroupsForPropertyValidation,
- restrictedGroupsForPropertyValidation,
- modelValidationEntryList,
- restrictedGroupsForModelValidation);
- }
- }
-
- protected void processMetaData(BeanValidation beanValidation,
- Object metaDataSourceObject,
- List<Class> foundGroupsForPropertyValidation,
- List<Class> restrictedGroupsForPropertyValidation,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- for (String currentViewId : beanValidation.viewIds())
- {
- if ((currentViewId.equals(FacesContext.getCurrentInstance().getViewRoot().getViewId()) ||
- currentViewId.equals("*")) && isValidationPermitted(beanValidation))
- {
- if(isModelValidation(beanValidation))
- {
- addModelValidationEntry(
- beanValidation, metaDataSourceObject,
- modelValidationEntryList, restrictedGroupsForModelValidation);
- }
- else
- {
- processGroups(
- beanValidation, foundGroupsForPropertyValidation, restrictedGroupsForPropertyValidation);
- }
-
- return;
- }
- }
- }
-
- private void addTargetsForModelValidation(ModelValidationEntry modelValidationEntry, Object defaultTarget)
- {
- if(modelValidationEntry.getMetaData().validationTargets().length == 1 &&
- modelValidationEntry.getMetaData().validationTargets()[0].equals(ModelValidation.DEFAULT_TARGET))
- {
- modelValidationEntry.addValidationTarget(defaultTarget);
- }
- else
- {
- Object target;
- for(String modelValidationTarget : modelValidationEntry.getMetaData().validationTargets())
- {
- target = resolveTarget(modelValidationEntry.getMetaDataSourceObject(), modelValidationTarget);
-
- if(target == null && this.logger.isErrorEnabled())
- {
- this.logger.error("target unreachable - source class: " +
- modelValidationEntry.getMetaDataSourceObject().getClass().getName() +
- " target to resolve: " + modelValidationTarget);
- }
-
- modelValidationEntry.addValidationTarget(target);
- }
- }
- }
-
- private boolean isValidationPermitted(BeanValidation beanValidation)
- {
- ELHelper elHelper = ExtValUtils.getELHelper();
-
- for(String condition : beanValidation.conditions())
- {
- if(elHelper.isELTermWellFormed(condition) &&
- elHelper.isELTermValid(FacesContext.getCurrentInstance(), condition))
- {
- if(Boolean.TRUE.equals(
- elHelper.getValueOfExpression(
- FacesContext.getCurrentInstance(), new ValueBindingExpression(condition))))
- {
- return true;
- }
- }
- else
- {
- if(this.logger.isErrorEnabled())
- {
- this.logger.error("an invalid condition is used: " + condition);
- }
- }
- }
- return false;
- }
-
- private boolean isModelValidation(BeanValidation beanValidation)
- {
- return beanValidation.modelValidation().isActive();
- }
-
- private void addModelValidationEntry(BeanValidation beanValidation,
- Object metaDataSourceObject,
- List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
- {
- ModelValidationEntry modelValidationEntry = new ModelValidationEntry();
-
- modelValidationEntry.setGroups(Arrays.asList(beanValidation.useGroups()));
- modelValidationEntry.setMetaData(beanValidation.modelValidation());
- modelValidationEntry.setMetaDataSourceObject(metaDataSourceObject);
-
- if(beanValidation.restrictGroups().length > 0)
- {
- restrictedGroupsForModelValidation.addAll(Arrays.asList(beanValidation.restrictGroups()));
- }
-
- modelValidationEntryList.add(modelValidationEntry);
- }
-
- private void processGroups(BeanValidation beanValidation,
- List<Class> foundGroupsForPropertyValidation,
- List<Class> restrictedGroupsForPropertyValidation)
- {
- foundGroupsForPropertyValidation.addAll(Arrays.asList(beanValidation.useGroups()));
-
- if(beanValidation.restrictGroups().length > 0)
- {
- restrictedGroupsForPropertyValidation.addAll(Arrays.asList(beanValidation.restrictGroups()));
- }
- }
-
- private Object resolveTarget(Object metaDataSourceObject, String modelValidationTarget)
- {
- ELHelper elHelper = ExtValUtils.getELHelper();
-
- if(elHelper.isELTermWellFormed(modelValidationTarget))
- {
- if(elHelper.isELTermValid(FacesContext.getCurrentInstance(), modelValidationTarget))
- {
- return elHelper.getValueOfExpression(
- FacesContext.getCurrentInstance(), new ValueBindingExpression(modelValidationTarget));
- }
- else
- {
- if(this.logger.isErrorEnabled())
- {
- this.logger.error("an invalid binding is used: " + modelValidationTarget);
- }
- }
- }
-
- String[] properties = modelValidationTarget.split("\\.");
-
- Object result = metaDataSourceObject;
- for(String property : properties)
- {
- result = getValueOfProperty(result, property);
-
- if(result == null)
- {
- return null;
- }
- }
-
- return result;
- }
-
- @ToDo(value = Priority.HIGH, description = "move to util class - the original method is in LocalCompareStrategy")
- protected Object getValueOfProperty(Object base, String property)
- {
- property = property.substring(0,1).toUpperCase() + property.substring(1, property.length());
- Method targetMethod = ReflectionUtils.tryToGetMethod(base.getClass(), "get" + property);
-
- if(targetMethod == null)
- {
- targetMethod = ReflectionUtils.tryToGetMethod(base.getClass(), "is" + property);
- }
-
- if(targetMethod == null)
- {
- throw new IllegalStateException(
- "class " + base.getClass() + " has no public get/is " + property.toLowerCase());
- }
- return ReflectionUtils.tryToInvokeMethod(base, targetMethod);
- }
-
public String[] getModuleKeys()
{
- return new String[] {BeanValidationModuleKey.class.getName()};
+ return new String[]{BeanValidationModuleKey.class.getName()};
}
}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java?rev=824452&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/NotNullMetaDataTransformer.java Mon Oct 12 18:46:08 2009
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.beanval.metadata.transformer;
+
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.MetaDataTransformer;
+import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
+import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
+
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+public class NotNullMetaDataTransformer implements MetaDataTransformer
+{
+ public Map<String, Object> convertMetaData(MetaDataEntry metaDataEntry)
+ {
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put(CommonMetaDataKeys.WEAK_REQUIRED, true);
+ return results;
+ }
+}
Added: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java?rev=824452&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java (added)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/NotNullNameMapper.java Mon Oct 12 18:46:08 2009
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper;
+
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.Nested;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
+ .AbstractValidationStrategyToMetaDataTransformerNameMapper;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
+import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.NotNullMetaDataTransformer;
+
+import javax.validation.metadata.ConstraintDescriptor;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author Gerhard Petracek
+ * @since x.x.3
+ */
+@Nested
+@UsageInformation({UsageCategory.INTERNAL})
+public class NotNullNameMapper extends AbstractValidationStrategyToMetaDataTransformerNameMapper
+{
+ public String createName(ValidationStrategy source)
+ {
+ if(source instanceof BeanValidationVirtualValidationStrategy)
+ {
+ BeanValidationVirtualValidationStrategy beanValidationAdapter =
+ (BeanValidationVirtualValidationStrategy)source;
+
+ ConstraintDescriptor descriptor = beanValidationAdapter.getConstraintDescriptor();
+
+ if(NotNull.class.getName().equals(descriptor.getAnnotation().annotationType().getName()))
+ {
+ return NotNullMetaDataTransformer.class.getName();
+ }
+ }
+ return null;
+ }
+}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/metadata/transformer/mapper/SizeNameMapper.java Mon Oct 12 18:46:08 2009
@@ -19,7 +19,9 @@
package org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
-import org.apache.myfaces.extensions.validator.core.mapper.SubNameMapper;
+import org.apache.myfaces.extensions.validator.core.Nested;
+import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
+ .AbstractValidationStrategyToMetaDataTransformerNameMapper;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.beanval.validation.strategy.BeanValidationVirtualValidationStrategy;
@@ -32,8 +34,9 @@
* @author Gerhard Petracek
* @since x.x.3
*/
+@Nested
@UsageInformation({UsageCategory.INTERNAL})
-public class SizeNameMapper implements SubNameMapper<ValidationStrategy>
+public class SizeNameMapper extends AbstractValidationStrategyToMetaDataTransformerNameMapper
{
public String createName(ValidationStrategy source)
{
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java?rev=824452&r1=824451&r2=824452&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/startup/BeanValidationStartupListener.java Mon Oct 12 18:46:08 2009
@@ -19,9 +19,10 @@
package org.apache.myfaces.extensions.validator.beanval.startup;
import org.apache.myfaces.extensions.validator.beanval.BeanValidationInterceptor;
+import org.apache.myfaces.extensions.validator.beanval.HtmlCoreComponentsComponentInitializer;
import org.apache.myfaces.extensions.validator.beanval.validation.ModelValidationPhaseListener;
-import org.apache.myfaces.extensions.validator.beanval.interceptor.PropertyValidationGroupProvider;
import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper.SizeNameMapper;
+import org.apache.myfaces.extensions.validator.beanval.metadata.transformer.mapper.NotNullNameMapper;
import org.apache.myfaces.extensions.validator.beanval.storage.DefaultModelValidationStorageManager;
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationStorage;
import org.apache.myfaces.extensions.validator.beanval.storage.mapper.BeanValidationGroupStorageNameMapper;
@@ -35,8 +36,6 @@
import org.apache.myfaces.extensions.validator.core.storage.StorageManagerHolder;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
-import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
import org.apache.myfaces.extensions.validator.util.JsfUtils;
@@ -61,6 +60,7 @@
registerGroupStorageNameMapper();
registerModelValidationStorageNameMapper();
registerModelValidationPhaseListener();
+ registerComponentInitializers();
}
protected void registerValidatorFactory()
@@ -74,15 +74,16 @@
ExtValContext.getContext().registerRendererInterceptor(new BeanValidationInterceptor());
}
+ @Deprecated
protected void registerValidationGroupProvider()
{
- ExtValContext.getContext().addPropertyValidationInterceptor(new PropertyValidationGroupProvider());
+ //ExtValContext.getContext().addPropertyValidationInterceptor(new PropertyValidationGroupProvider());
}
- @ToDo(Priority.HIGH)
protected void registerMetaDataTransformerNameMapper()
{
ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(new SizeNameMapper());
+ ExtValUtils.registerValidationStrategyToMetaDataTransformerNameMapper(new NotNullNameMapper());
}
@SuppressWarnings({"unchecked"})
@@ -118,6 +119,11 @@
JsfUtils.registerPhaseListener(new ModelValidationPhaseListener());
}
+ protected void registerComponentInitializers()
+ {
+ ExtValContext.getContext().addComponentInitializer(new HtmlCoreComponentsComponentInitializer());
+ }
+
private StorageManagerHolder getStorageManagerHolder()
{
return (ExtValContext.getContext()