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/11/17 17:07:03 UTC
svn commit: r881346 - in
/myfaces/extensions/validator/branches/branch_for_jsf_1_1:
core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/
validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/valid...
Author: gpetracek
Date: Tue Nov 17 16:07:02 2009
New Revision: 881346
URL: http://svn.apache.org/viewvc?rev=881346&view=rev
Log:
EXTVAL-68 and minor refactorings
Modified:
myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/extractor/DefaultGroupControllerScanningExtractor.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
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
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java
myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.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/extractor/DefaultComponentMetaDataExtractor.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java Tue Nov 17 16:07:02 2009
@@ -139,7 +139,7 @@
return ExtValUtils.getStorage(MetaDataStorage.class, MetaDataStorage.class.getName());
}
- private void extractAnnotations(
+ protected void extractAnnotations(
PropertyInformation propertyInformation, PropertyDetails propertyDetails, Class entityClass)
{
while (!Object.class.getName().equals(entityClass.getName()))
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.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/ExtValBeanValidationContext.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/ExtValBeanValidationContext.java Tue Nov 17 16:07:02 2009
@@ -25,6 +25,7 @@
import org.apache.myfaces.extensions.validator.beanval.storage.ModelValidationStorage;
import org.apache.myfaces.extensions.validator.beanval.annotation.BeanValidation;
import org.apache.myfaces.extensions.validator.beanval.annotation.ModelValidation;
+import org.apache.myfaces.extensions.validator.beanval.util.BeanValidationUtils;
import org.apache.myfaces.extensions.validator.core.validation.message.resolver.MessageResolver;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.core.storage.GroupStorage;
@@ -37,7 +38,6 @@
import javax.faces.context.FacesContext;
import javax.validation.MessageInterpolator;
-import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.util.Map;
import java.util.List;
@@ -100,7 +100,7 @@
{
this.logger.warn("fallback to the default bv validator factory");
}
- return Validation.buildDefaultValidatorFactory();
+ return BeanValidationUtils.getDefaultValidatorFactory();
}
public MessageInterpolator getMessageInterpolator()
@@ -162,7 +162,7 @@
else
{
this.defaultMessageInterpolator = new DefaultMessageInterpolator(
- Validation.buildDefaultValidatorFactory().getMessageInterpolator());
+ BeanValidationUtils.getDefaultValidatorFactory().getMessageInterpolator());
}
}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/extractor/DefaultGroupControllerScanningExtractor.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/annotation/extractor/DefaultGroupControllerScanningExtractor.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/extractor/DefaultGroupControllerScanningExtractor.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/annotation/extractor/DefaultGroupControllerScanningExtractor.java Tue Nov 17 16:07:02 2009
@@ -47,16 +47,8 @@
PropertyInformation propertyInformation = new DefaultPropertyInformation();
propertyInformation.setInformation(PropertyInformationKeys.PROPERTY_DETAILS, propertyDetails);
- findAndAddAnnotations(propertyInformation, propertyDetails, entityClass);
+ extractAnnotations(propertyInformation, propertyDetails, entityClass);
return propertyInformation;
}
-
- private void findAndAddAnnotations(PropertyInformation propertyInformation,
- PropertyDetails propertyDetails,
- Class entityClass)
- {
- addPropertyAccessAnnotations(entityClass, propertyDetails.getProperty(), propertyInformation);
- addFieldAccessAnnotations(entityClass, propertyDetails.getProperty(), propertyInformation);
- }
}
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=881346&r1=881345&r2=881346&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 Tue Nov 17 16:07:02 2009
@@ -21,6 +21,7 @@
import org.apache.myfaces.extensions.validator.beanval.BeanValidationInterceptor;
import org.apache.myfaces.extensions.validator.beanval.HtmlCoreComponentsComponentInitializer;
import org.apache.myfaces.extensions.validator.beanval.BeanAwareValidatorFactory;
+import org.apache.myfaces.extensions.validator.beanval.util.BeanValidationUtils;
import org.apache.myfaces.extensions.validator.beanval.interceptor.ExtValBeanValidationMetaDataExtractionInterceptor;
import org.apache.myfaces.extensions.validator.beanval.interceptor.BeanValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.beanval.validation.ModelValidationPhaseListener;
@@ -43,7 +44,6 @@
import org.apache.myfaces.extensions.validator.util.JsfUtils;
import javax.validation.ValidatorFactory;
-import javax.validation.Validation;
/**
* @author Gerhard Petracek
@@ -70,7 +70,7 @@
protected void registerValidatorFactory()
{
ExtValContext.getContext().addGlobalProperty(ValidatorFactory.class.getName(),
- new BeanAwareValidatorFactory(Validation.buildDefaultValidatorFactory()), false);
+ new BeanAwareValidatorFactory(BeanValidationUtils.getDefaultValidatorFactory()), false);
}
protected void registerBeanValidationInterceptor()
Modified: 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
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/util/BeanValidationUtils.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- 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 (original)
+++ 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 Tue Nov 17 16:07:02 2009
@@ -32,9 +32,12 @@
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.validation.ConstraintViolation;
+import javax.validation.ValidatorFactory;
+import javax.validation.Validation;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.Map;
/**
* @author Gerhard Petracek
@@ -45,6 +48,7 @@
{
private static final Log LOG = LogFactory.getLog(BeanValidationUtils.class);
private static ExtValBeanValidationMetaDataInternals bvmi = new ExtValBeanValidationMetaDataInternals(LOG);
+ private static final String VALIDATOR_FACTORY_KEY = "javax.faces.validator.beanValidator.ValidatorFactory";
public static void addMetaDataToContext(
UIComponent component, PropertyDetails propertyDetails, boolean processModelValidation)
@@ -144,4 +148,25 @@
bvmi.addMessages(facesMessageListWithHighSeverity);
bvmi.addMessages(facesMessageListWithLowSeverity);
}
+
+ public static ValidatorFactory getDefaultValidatorFactory()
+ {
+ Map<String, Object> applicationMap = FacesContext.getCurrentInstance().getExternalContext().getApplicationMap();
+ ValidatorFactory validatorFactory = null;
+
+ if (applicationMap.containsKey(VALIDATOR_FACTORY_KEY))
+ {
+ if (applicationMap.get(VALIDATOR_FACTORY_KEY) instanceof ValidatorFactory)
+ {
+ validatorFactory = (ValidatorFactory) applicationMap.get(VALIDATOR_FACTORY_KEY);
+ }
+ }
+
+ if (validatorFactory == null)
+ {
+ validatorFactory = Validation.buildDefaultValidatorFactory();
+ applicationMap.put(VALIDATOR_FACTORY_KEY, validatorFactory);
+ }
+ return validatorFactory;
+ }
}
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.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/util/ExtValBeanValidationMetaDataInternals.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java Tue Nov 17 16:07:02 2009
@@ -84,7 +84,8 @@
foundGroupsForPropertyValidation,
restrictedGroupsForPropertyValidation,
modelValidationEntryList,
- restrictedGroupsForModelValidation);
+ restrictedGroupsForModelValidation,
+ key.length == 2);
inspectBaseOfProperty(propertyDetails,
processModelValidation,
@@ -144,7 +145,8 @@
List<Class> foundGroupsForPropertyValidation,
List<Class> restrictedGroupsForPropertyValidation,
List<ModelValidationEntry> modelValidationEntryList,
- List<Class> restrictedGroupsForModelValidation)
+ List<Class> restrictedGroupsForModelValidation,
+ boolean isLastProperty)
{
processFieldsAndProperties(key[0] + "." + key[1],
firstBean,
@@ -153,7 +155,8 @@
restrictedGroupsForPropertyValidation,
modelValidationEntryList,
restrictedGroupsForModelValidation,
- processModelValidation);
+ processModelValidation,
+ isLastProperty);
}
private void inspectBaseOfProperty(PropertyDetails propertyDetails,
@@ -186,7 +189,8 @@
restrictedGroupsForPropertyValidation,
modelValidationEntryList,
restrictedGroupsForModelValidation,
- processModelValidation);
+ processModelValidation,
+ true);
}
private void processClass(Object objectToInspect,
@@ -224,7 +228,8 @@
List<Class> restrictedGroupsForPropertyValidation,
List<ModelValidationEntry> modelValidationEntryList,
List<Class> restrictedGroupsForModelValidation,
- boolean processModelValidation)
+ boolean processModelValidation,
+ boolean isLastProperty)
{
PropertyInformation propertyInformation = new DefaultGroupControllerScanningExtractor()
.extract(FacesContext.getCurrentInstance(), new PropertyDetails(key, base, property));
@@ -234,7 +239,7 @@
if (metaDataEntry.getValue() instanceof BeanValidation)
{
tryToProcessMetaData((BeanValidation) metaDataEntry.getValue(),
- tryToCreateNewTarget(base, property),
+ tryToCreateNewTarget(base, property, isLastProperty),
foundGroupsForPropertyValidation,
restrictedGroupsForPropertyValidation,
modelValidationEntryList,
@@ -246,7 +251,7 @@
for (BeanValidation currentBeanValidation : ((BeanValidation.List) metaDataEntry.getValue()).value())
{
tryToProcessMetaData(currentBeanValidation,
- tryToCreateNewTarget(base, property),
+ tryToCreateNewTarget(base, property, isLastProperty),
foundGroupsForPropertyValidation,
restrictedGroupsForPropertyValidation,
modelValidationEntryList,
@@ -257,8 +262,13 @@
}
}
- private Object tryToCreateNewTarget(Object base, String property)
+ private Object tryToCreateNewTarget(Object base, String property, boolean isLastProperty)
{
+ if(isLastProperty)
+ {
+ return base;
+ }
+
Object result = getValueOfProperty(base, property);
if (result == null)
@@ -645,4 +655,4 @@
facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
}
}
-}
+}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.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/validation/ModelValidationPhaseListener.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java Tue Nov 17 16:07:02 2009
@@ -111,8 +111,17 @@
continue;
}
- groupsToValidate = filterGroupsToValidate(
- modelValidationEntry, validationTarget, processedValidationTargets);
+ if(modelValidationEntry.isDisplayMessageInline())
+ {
+ groupsToValidate = modelValidationEntry.getGroups();
+ }
+ //if violation should displayed inline validation has to take place with all groups
+ //which means: global messages -> filter groups already used for the validation target
+ else
+ {
+ groupsToValidate = filterGroupsToValidate(
+ modelValidationEntry, validationTarget, processedValidationTargets);
+ }
if(!shouldContinueValidation(modelValidationEntry, groupsToValidate))
{
@@ -216,6 +225,11 @@
private Set<ConstraintViolation<Object>> validateTarget(Object validationTarget, Class[] groups)
{
+ if(groups == null || groups.length == 0)
+ {
+ return null;
+ }
+
return ExtValBeanValidationContext.getCurrentInstance()
.getValidatorFactory().usingContext()
.messageInterpolator(ExtValBeanValidationContext.getCurrentInstance().getMessageInterpolator())
Modified: myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java?rev=881346&r1=881345&r2=881346&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/branch_for_jsf_1_1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java Tue Nov 17 16:07:02 2009
@@ -158,6 +158,11 @@
{
ValidatorException validatorException = new ValidatorException(message);
+ if(entryOfTarget.getMetaDataEntry() == null)
+ {
+ entryOfTarget.setMetaDataEntry(entryOfSource.getMetaDataEntry());
+ }
+
if(ExtValUtils.executeAfterThrowingInterceptors(
entryOfTarget.getComponent(), entryOfTarget.getMetaDataEntry(),
entryOfTarget.getConvertedObject(), validatorException, this))
@@ -168,6 +173,7 @@
}
}
+ @SuppressWarnings({"ThrowableInstanceNeverThrown"})
private void processTargetComponentAsSourceComponentAfterViolation(CrossValidationStorageEntry entryOfSource)
{
//get validation error messages for the current component
@@ -180,7 +186,14 @@
if (message.getSummary() != null || message.getDetail() != null)
{
//TODO
- ExtValUtils.tryToThrowValidatorExceptionForComponent(entryOfSource.getComponent(), message, null);
+ if(ExtValUtils.executeAfterThrowingInterceptors(entryOfSource.getComponent(),
+ entryOfSource.getMetaDataEntry(),
+ entryOfSource.getConvertedObject(),
+ new ValidatorException(message),
+ this))
+ {
+ ExtValUtils.tryToThrowValidatorExceptionForComponent(entryOfSource.getComponent(), message, null);
+ }
}
else
{