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 2008/08/14 00:43:59 UTC
svn commit: r685717 - in
/myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval:
referencing/strategy/ strategy/
Author: gpetracek
Date: Wed Aug 13 15:43:58 2008
New Revision: 685717
URL: http://svn.apache.org/viewvc?rev=685717&view=rev
Log:
minor fix and refactoring
Added:
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AliasCompareStrategy.java
- copied, changed from r677555, myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractAliasCompareStrategy.java
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java
- copied, changed from r677555, myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractELCompareStrategy.java
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java
- copied, changed from r677555, myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractLocalCompareStrategy.java
Removed:
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractAliasCompareStrategy.java
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractELCompareStrategy.java
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractLocalCompareStrategy.java
Modified:
myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
Copied: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AliasCompareStrategy.java (from r677555, myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractAliasCompareStrategy.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AliasCompareStrategy.java?p2=myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AliasCompareStrategy.java&p1=myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractAliasCompareStrategy.java&r1=677555&r2=685717&rev=685717&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractAliasCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AliasCompareStrategy.java Wed Aug 13 15:43:58 2008
@@ -40,7 +40,7 @@
*
* @author Gerhard Petracek
*/
-public class AbstractAliasCompareStrategy implements ReferencingStrategy {
+public class AliasCompareStrategy implements ReferencingStrategy {
protected final Log logger = LogFactory.getLog(getClass());
public boolean evalReferenceAndValidate(CrossValidationStorageEntry crossValidationStorageEntry, CrossValidationStorage crossValidationStorage, String validationTarget, AbstractCompareStrategy compareStrategy) {
@@ -182,7 +182,8 @@
boolean violationFound = false;
if (compareStrategy.isViolation(crossValidationStorageEntry.getConvertedObject(), validationTargetObject, crossValidationStorageEntry.getAnnotationEntry().getAnnotation())) {
- compareStrategy.handleTargetViolation(crossValidationStorageEntry, null);
+ //TODO use compareStrategy#useTargetComponentToDisplayErrorMsg
+ compareStrategy.processTargetComponentAfterViolation(crossValidationStorageEntry, null);
violationFound = true;
}
@@ -210,7 +211,7 @@
if (compareStrategy.isViolation(crossValidationStorageEntry.getConvertedObject(), validationTargetObject, crossValidationStorageEntry.getAnnotationEntry().getAnnotation())) {
violationFound = true;
- compareStrategy.handleTargetViolation(crossValidationStorageEntry, entry);
+ compareStrategy.processTargetComponentAfterViolation(crossValidationStorageEntry, entry);
}
validationExecuted = true;
}
Copied: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java (from r677555, myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractELCompareStrategy.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java?p2=myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java&p1=myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractELCompareStrategy.java&r1=677555&r2=685717&rev=685717&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractELCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/ELCompareStrategy.java Wed Aug 13 15:43:58 2008
@@ -36,7 +36,7 @@
*
* @author Gerhard Petracek
*/
-public class AbstractELCompareStrategy implements ReferencingStrategy {
+public class ELCompareStrategy implements ReferencingStrategy {
protected final Log logger = LogFactory.getLog(getClass());
public boolean evalReferenceAndValidate(CrossValidationStorageEntry crossValidationStorageEntry, CrossValidationStorage crossValidationStorage, String validationTarget, AbstractCompareStrategy compareStrategy) {
@@ -67,12 +67,17 @@
if (validationTargetEntry != null) {
tmpCrossValidationStorageEntry = new CrossValidationStorageEntry();
- tmpCrossValidationStorageEntry.setComponent(validationTargetEntry.getComponent());
+ //TODO test
+ if (compareStrategy.useTargetComponentToDisplayErrorMsg(crossValidationStorageEntry)) {
+ tmpCrossValidationStorageEntry.setComponent(validationTargetEntry.getComponent());
+ } else {
+ tmpCrossValidationStorageEntry.setComponent(crossValidationStorageEntry.getComponent());
+ }
tmpCrossValidationStorageEntry.setConvertedObject(validationTargetEntry.getConvertedValue());
tmpCrossValidationStorageEntry.setValidationStrategy(compareStrategy);
}
- compareStrategy.handleTargetViolation(crossValidationStorageEntry, tmpCrossValidationStorageEntry);
+ compareStrategy.processTargetComponentAfterViolation(crossValidationStorageEntry, tmpCrossValidationStorageEntry);
violationFound = true;
}
Copied: myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java (from r677555, myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractLocalCompareStrategy.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java?p2=myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java&p1=myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractLocalCompareStrategy.java&r1=677555&r2=685717&rev=685717&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/AbstractLocalCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/referencing/strategy/LocalCompareStrategy.java Wed Aug 13 15:43:58 2008
@@ -35,7 +35,7 @@
*
* @author Gerhard Petracek
*/
-public class AbstractLocalCompareStrategy implements ReferencingStrategy {
+public class LocalCompareStrategy implements ReferencingStrategy {
protected final Log logger = LogFactory.getLog(getClass());
public boolean evalReferenceAndValidate(CrossValidationStorageEntry crossValidationStorageEntry, CrossValidationStorage crossValidationStorage, String validationTarget, AbstractCompareStrategy compareStrategy) {
@@ -85,7 +85,7 @@
tmpCrossValidationStorageEntry.setConvertedObject(validationTargetEntry.getConvertedValue());
tmpCrossValidationStorageEntry.setValidationStrategy(compareStrategy);
- compareStrategy.handleTargetViolation(crossValidationStorageEntry, tmpCrossValidationStorageEntry);
+ compareStrategy.processTargetComponentAfterViolation(crossValidationStorageEntry, tmpCrossValidationStorageEntry);
violationFound = true;
}
Modified: myfaces/extensions/validator/branches/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/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java?rev=685717&r1=685716&r2=685717&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/jsf_1.1/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java Wed Aug 13 15:43:58 2008
@@ -21,9 +21,9 @@
import org.apache.myfaces.extensions.validator.core.ProcessedInformationEntry;
import org.apache.myfaces.extensions.validator.crossval.CrossValidationStorage;
import org.apache.myfaces.extensions.validator.crossval.CrossValidationStorageEntry;
-import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.AbstractAliasCompareStrategy;
-import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.AbstractELCompareStrategy;
-import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.AbstractLocalCompareStrategy;
+import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.AliasCompareStrategy;
+import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.ELCompareStrategy;
+import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.LocalCompareStrategy;
import org.apache.myfaces.extensions.validator.crossval.referencing.strategy.ReferencingStrategy;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -56,14 +56,15 @@
referencingStrategies.add(customReferencingStrategy);
}
- referencingStrategies.add(new AbstractELCompareStrategy());
- referencingStrategies.add(new AbstractAliasCompareStrategy());
- referencingStrategies.add(new AbstractLocalCompareStrategy());
+ referencingStrategies.add(new ELCompareStrategy());
+ referencingStrategies.add(new AliasCompareStrategy());
+ referencingStrategies.add(new LocalCompareStrategy());
}
}
public void processCrossValidation(CrossValidationStorageEntry crossValidationStorageEntry, CrossValidationStorage crossValidationStorage) throws ValidatorException {
+ initValidation(crossValidationStorageEntry);
String[] validationTargets = getValidationTargets(crossValidationStorageEntry.getAnnotationEntry().getAnnotation());
for (String validationTarget : validationTargets) {
@@ -84,41 +85,49 @@
return false;
}
+ //TODO
//has to be public for custom referencing strategies!!!
- public void handleTargetViolation(CrossValidationStorageEntry crossValidationStorageEntry, CrossValidationStorageEntry entry) {
+ public final void processTargetComponentAfterViolation(CrossValidationStorageEntry entryOfSource, CrossValidationStorageEntry entryOfTarget) {
+ if(!handleTargetViolation(entryOfSource, entryOfTarget)) {
+ return;
+ }
+
FacesContext facesContext = FacesContext.getCurrentInstance();
//get validation error messages for the target component
- String summary = getErrorMessageSummary(crossValidationStorageEntry.getAnnotationEntry().getAnnotation(), true);
- String details = getErrorMessageDetails(crossValidationStorageEntry.getAnnotationEntry().getAnnotation(), true);
+ String summary = getErrorMessageSummary(entryOfSource.getAnnotationEntry().getAnnotation(), true);
+ String details = getErrorMessageDetails(entryOfSource.getAnnotationEntry().getAnnotation(), true);
//validation target isn't bound to a component withing the current page (see validateFoundEntry, tryToValidateLocally and tryToValidateBindingOnly)
- if (entry == null) {
- entry = crossValidationStorageEntry;
+ if (entryOfTarget == null) {
+ entryOfTarget = entryOfSource;
}
FacesMessage message;
- if (entry.getAnnotationEntry() != null) {
- message = getTargetComponentErrorMessage(entry.getAnnotationEntry().getAnnotation(), summary, details);
+ if (entryOfTarget.getAnnotationEntry() != null) {
+ message = getTargetComponentErrorMessage(entryOfTarget.getAnnotationEntry().getAnnotation(), summary, details);
} else {
//TODO document possible side effects
//due to a missing target annotation (see: tryToValidateLocally)
- message = getTargetComponentErrorMessage(crossValidationStorageEntry.getAnnotationEntry().getAnnotation(), summary, details);
+ message = getTargetComponentErrorMessage(entryOfSource.getAnnotationEntry().getAnnotation(), summary, details);
}
if (message.getSummary() != null || message.getDetail() != null) {
- facesContext.addMessage(entry.getComponent().getClientId(facesContext), message);
+ facesContext.addMessage(entryOfTarget.getComponent().getClientId(facesContext), message);
}
}
//has to be public for custom referencing strategies!!!
- public void processSourceComponentAfterViolation(CrossValidationStorageEntry crossValidationStorageEntry) {
+ public final void processSourceComponentAfterViolation(CrossValidationStorageEntry entryOfSource) {
+ if(!handleSourceViolation(entryOfSource)) {
+ return;
+ }
//get validation error messages for the current component
- String summary = getErrorMessageSummary(crossValidationStorageEntry.getAnnotationEntry().getAnnotation(), false);
- String details = getErrorMessageDetails(crossValidationStorageEntry.getAnnotationEntry().getAnnotation(), false);
+ String summary = getErrorMessageSummary(entryOfSource.getAnnotationEntry().getAnnotation(), false);
+ String details = getErrorMessageDetails(entryOfSource.getAnnotationEntry().getAnnotation(), false);
- FacesMessage message = getSourceComponentErrorMessage(crossValidationStorageEntry.getAnnotationEntry().getAnnotation(), summary, details);
+ FacesMessage message = getSourceComponentErrorMessage(entryOfSource.getAnnotationEntry().getAnnotation(), summary, details);
if (message.getSummary() != null || message.getDetail() != null) {
//TODO
@@ -193,8 +202,26 @@
}
/*
- * recommended methods to override - have to be public for custom referencing strategies!!!
+ * optional methods - recommended to override - have to be public for custom referencing strategies!!!
*/
+ /**
+ * the usage of this method requires a new instance
+ * -> in case of validation strategy beans application/singleton isn't allowed
+ */
+ protected void initValidation(CrossValidationStorageEntry crossValidationStorageEntry) {
+ }
+
+ protected boolean handleTargetViolation(CrossValidationStorageEntry entryOfSource, CrossValidationStorageEntry entryOfTarget) {
+ return true;
+ }
+
+ protected boolean handleSourceViolation(CrossValidationStorageEntry entryOfSource) {
+ return true;
+ }
+
+ public boolean useTargetComponentToDisplayErrorMsg(CrossValidationStorageEntry crossValidationStorageEntry) {
+ return handleTargetViolation(crossValidationStorageEntry, null);
+ }
/*
* abstract methods
@@ -202,8 +229,6 @@
protected abstract String getValidationErrorMsgKey(Annotation annotation, boolean isTargetComponent);
- public abstract boolean useTargetComponentToDisplayErrorMsg(CrossValidationStorageEntry crossValidationStorageEntry);
-
/*
* implements the specific validation logic
*/