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/05/12 16:07:15 UTC
svn commit: r773905 - in
/myfaces/extensions/validator/branches/beanval_integration/trunk:
component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/
component-support/trinidad-support/src/main/java/o...
Author: gpetracek
Date: Tue May 12 14:07:14 2009
New Revision: 773905
URL: http://svn.apache.org/viewvc?rev=773905&view=rev
Log:
sync with trunk
Modified:
myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadRendererInterceptor.java
myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/FaceletsTaglibExpressionHelper.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/configuration/StaticConfigurationNames.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/MetaDataEntry.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/internal/ToDo.java
myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/ValidationInterceptorWithSkipValidationSupport.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/DateIs.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java
myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/util/CrossValidationUtils.java
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadRendererInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadRendererInterceptor.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadRendererInterceptor.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadRendererInterceptor.java Tue May 12 14:07:14 2009
@@ -26,7 +26,6 @@
import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractor;
import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.core.CustomInformation;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
@@ -39,8 +38,6 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import java.util.List;
-import java.lang.annotation.Annotation;
/**
* @author Gerhard Petracek
@@ -110,7 +107,7 @@
}
if(Boolean.TRUE.equals(skipInitialization) && !metaData.isEmpty() &&
- isSkipableValidationStrategy(validationStrategy.getClass()))
+ ExtValUtils.isSkipableValidationStrategy(validationStrategy.getClass()))
{
metaData.put(CommonMetaDataKeys.SKIP_VALIDATION, true);
}
@@ -133,38 +130,4 @@
return !(isReadOnly || isDisabled);
}
-
- @SuppressWarnings({"unchecked"})
- private boolean isSkipableValidationStrategy(Class<? extends ValidationStrategy> validationStrategyClass)
- {
- String key = ExtValContext.getContext().getInformationProviderBean()
- .get(CustomInformation.BASE_PACKAGE) + CommonMetaDataKeys.SKIP_VALIDATION.toUpperCase();
- List<Class<? extends Annotation>> markerList =
- (List<Class<? extends Annotation>>)ExtValContext.getContext().getGlobalProperty(key);
-
- if(markerList == null)
- {
- return false;
- }
-
- for(Class<? extends Annotation> currentClass : markerList)
- {
- if(currentClass.isAnnotation())
- {
- if(validationStrategyClass.isAnnotationPresent(currentClass))
- {
- return true;
- }
- }
- else
- {
- if(currentClass.isAssignableFrom(validationStrategyClass))
- {
- return true;
- }
- }
- }
-
- return false;
- }
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/interceptor/TrinidadValidationExceptionInterceptor.java Tue May 12 14:07:14 2009
@@ -24,6 +24,7 @@
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
import org.apache.myfaces.trinidad.context.RequestContext;
@@ -70,9 +71,17 @@
label = metaDataEntry.getProperty(PropertyInformationKeys.LABEL, String.class);
}
- for(int i = 0; i < 3; i++)
+ if(facesMessage instanceof LabeledMessage)
{
- ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ ((LabeledMessage)facesMessage).setLabelText(label);
+ }
+ //if someone uses a normal faces message
+ else
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ }
}
}
return true;
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java Tue May 12 14:07:14 2009
@@ -25,11 +25,10 @@
import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
import org.apache.myfaces.extensions.validator.trinidad.initializer.component.TrinidadComponentInitializer;
import org.apache.myfaces.extensions.validator.trinidad.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.trinidad.validation.message.TrinidadFacesMessageFactory;
import org.apache.myfaces.extensions.validator.trinidad.renderkit.ExtValTrinidadRendererProxy;
import org.apache.myfaces.extensions.validator.trinidad.interceptor.TrinidadValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.trinidad.interceptor.TrinidadRendererInterceptor;
-import org.apache.myfaces.extensions.validator.internal.Priority;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -42,7 +41,6 @@
@UsageInformation(UsageCategory.INTERNAL)
public class TrinidadModuleStartupListener extends AbstractStartupListener
{
- @ToDo(value = Priority.MEDIUM, description = "web.xml parameter to deactivate it")
protected void init()
{
initTrinidadSupport();
@@ -81,6 +79,10 @@
ExtValContext.getContext()
.addGlobalProperty(ExtValRendererProxy.KEY, ExtValTrinidadRendererProxy.class.getName());
+ ExtValContext.getContext()
+ .addGlobalProperty(
+ FactoryNames.FACES_MESSAGE_FACTORY.name(),
+ TrinidadFacesMessageFactory.class.getName());
/*
* if there are further incompatible renderers use the following quick-fix:
* ExtValContext.getContext()
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/util/TrinidadUtils.java Tue May 12 14:07:14 2009
@@ -43,6 +43,11 @@
public static UIComponent findLabeledEditableComponent(CoreOutputLabel coreOutputLabel)
{
//TODO
+ if(coreOutputLabel.getFor() == null)
+ {
+ return null;
+ }
+
FacesContext facesContext = FacesContext.getCurrentInstance();
UIComponent result = facesContext.getViewRoot().findComponent(coreOutputLabel.getFor());
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/CustomInformation.java Tue May 12 14:07:14 2009
@@ -48,6 +48,7 @@
VALIDATION_STRATEGY_FACTORY,
COMPONENT_META_DATA_EXTRACTOR_FACTORY,
META_DATA_TRANSFORMER_FACTORY,
+ FACES_MESSAGE_FACTORY,
MESSAGE_BUNDLE_NAME,
STATIC_STRATEGY_MAPPING_SOURCE
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java Tue May 12 14:07:14 2009
@@ -111,6 +111,8 @@
"ComponentMetaDataExtractorFactory");
customizableInfos.put(CustomInformation.META_DATA_TRANSFORMER_FACTORY,
"MetaDataTransformerFactory");
+ customizableInfos.put(CustomInformation.FACES_MESSAGE_FACTORY,
+ "FacesMessageFactory");
//conventions (the rest of the conventions are built with the help of name mappers,...
customizableInfos.put(CustomInformation.MESSAGE_BUNDLE_NAME,
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java Tue May 12 14:07:14 2009
@@ -85,6 +85,9 @@
static final String CUSTOM_META_DATA_TRANSFORMER_FACTORY = WebXmlUtils
.getInitParameter("CUSTOM_META_DATA_TRANSFORMER_FACTORY");
+ static final String CUSTOM_FACES_MESSAGE_FACTORY = WebXmlUtils
+ .getInitParameter("CUSTOM_FACES_MESSAGE_FACTORY");
+
/*
* deactivate
*/
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java Tue May 12 14:07:14 2009
@@ -20,7 +20,10 @@
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+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.ReflectionUtils;
import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
import org.apache.myfaces.extensions.validator.ExtValInformation;
@@ -33,6 +36,8 @@
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import java.io.Externalizable;
+import java.lang.reflect.Method;
+import java.util.Map;
/**
* in order to centralize the jsf version dependency within the core
@@ -178,7 +183,7 @@
" -- an el-resolver error occurred! maybe you used an invalid binding. otherwise: " +
"please report the issue, deactivate the el-resovler of extval via web.xml context-param: " +
ExtValInformation.WEBXML_PARAM_PREFIX + ".DEACTIVATE_EL_RESOLVER" +
- " and test again.");
+ " and test again.", t);
}
if(elResolver.getPath() == null || elResolver.getBaseObject() == null || elResolver.getProperty() == null)
@@ -189,28 +194,25 @@
return new PropertyDetails(elResolver.getPath(), elResolver.getBaseObject(), elResolver.getProperty());
}
+ //keep in sync with DefaultELHelper#getPropertyDetailsOfValueBinding of branch!!!
private PropertyDetails getPropertyDetailsViaReflectionFallback(UIComponent uiComponent)
{
+ FacesContext facesContext = FacesContext.getCurrentInstance();
ValueBindingExpression valueBindingExpression = getValueBindingExpression(uiComponent, false);
-
- if(valueBindingExpression == null)
- {
- return null;
- }
-
ValueBindingExpression currentValueBindingExpression =
new ValueBindingExpression(valueBindingExpression.getExpressionString());
+
String path = null;
while(currentValueBindingExpression.getBaseExpression() != null)
{
if(path == null)
{
- path = currentValueBindingExpression.getProperty();
+ path = getPropertyName(currentValueBindingExpression);
}
else
{
- path = currentValueBindingExpression.getProperty() + "." + path;
+ path = getPropertyName(currentValueBindingExpression) + "." + path;
}
currentValueBindingExpression = currentValueBindingExpression.getBaseExpression();
@@ -218,9 +220,67 @@
path = currentValueBindingExpression.getProperty() + "." + path;
- Object baseObject = getValueOfExpression(
- FacesContext.getCurrentInstance(), valueBindingExpression.getBaseExpression());
- return new PropertyDetails(path, baseObject, valueBindingExpression.getProperty());
+ Object baseObject = getValueOfExpression(facesContext, valueBindingExpression.getBaseExpression());
+
+ //in case of e.g.: #{bean[bean.passwordRepeatedPropertyName]}
+ //-> bean.passwordRepeatedPropertyName is not the final property name
+ return new PropertyDetails(path, baseObject, getPropertyName(valueBindingExpression));
+ }
+
+ private String getPropertyName(ValueBindingExpression valueBindingExpression)
+ {
+ String propertyName = valueBindingExpression.getProperty();
+
+ if(propertyName.contains("."))
+ {
+ propertyName = extractPropertyNameOfPropertyPath(propertyName);
+ }
+
+ return propertyName;
+ }
+
+ @ToDo(value = Priority.MEDIUM, description = "support for more dynamic bindings - details see inline")
+ private String extractPropertyNameOfPropertyPath(String propertyChain)
+ {
+ String[] properties = propertyChain.split("\\.");
+
+ Object currentPropertyValue = ExtValUtils.getELHelper().getBean(properties[0]);
+
+ Method currentMethod;
+ String currentPropertyName;
+ for(int i = 1; i < properties.length; i++)
+ {
+ currentPropertyName = properties[i];
+ currentMethod = ReflectionUtils.tryToGetMethod(currentPropertyValue.getClass(),
+ "get" + currentPropertyName.substring(0, 1).toUpperCase() + currentPropertyName.substring(1));
+
+ if(currentMethod == null && currentPropertyValue instanceof Map)
+ {
+ //it's ok for the simple map case - but not for e.g.:
+ //#{bean1[bean2.propertyNameProvider[ bean3.index]]}
+ //or every other complex replacement for bean3.index
+ //it might also require an adjustment at FaceletsTaglibExpressionHelper#tryToTransformToRealBinding
+ ((Map)currentPropertyValue).get(currentPropertyName);
+ }
+ else
+ {
+ currentPropertyValue = ReflectionUtils.tryToInvokeMethod(currentPropertyValue, currentMethod);
+ }
+ }
+
+ if(currentPropertyValue instanceof String)
+ {
+ return (String)currentPropertyValue;
+ }
+ else
+ {
+ if(this.logger.isErrorEnabled())
+ {
+ this.logger.error("unexpected value within map syntax: " + propertyChain +
+ " last property name: " + currentPropertyValue);
+ }
+ return null;
+ }
}
static String getOriginalValueBindingExpression(UIComponent uiComponent)
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ExtValELResolver.java Tue May 12 14:07:14 2009
@@ -18,12 +18,16 @@
*/
package org.apache.myfaces.extensions.validator.core.el;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import javax.el.ELResolver;
import javax.el.ELContext;
import javax.el.VariableMapper;
import javax.el.FunctionMapper;
import java.util.Iterator;
import java.util.Locale;
+import java.util.Map;
import java.beans.FeatureDescriptor;
/**
@@ -32,11 +36,14 @@
*/
public class ExtValELResolver extends ELResolver
{
+ protected final Log logger = LogFactory.getLog(getClass());
+
private ELResolver wrapped;
private Object baseObject;
private String property;
//forms the id for cross-validation within complex components
private String expression;
+ private boolean isPathRecordingStopped = false;
public ExtValELResolver(ELResolver elResolver)
{
@@ -55,7 +62,11 @@
public String getPath()
{
- return expression;
+ if(this.logger.isTraceEnabled())
+ {
+ this.logger.trace("extracted path: " + this.expression);
+ }
+ return this.expression;
}
public void reset()
@@ -65,17 +76,94 @@
this.expression = null;
}
+ /**
+ * path recording is performed to get a key for cross-validation<br/>
+ * every base after the first call which is null stops recording<br/>
+ * with a dynamic map syntax the last property in the middle of an expression has to be a string.
+ * such a string result continues the path recording at the next call for the current expression.
+ * <p/>
+ * example: #{bean[bean.propertyNameProvider['nameOfProperty1']]['dynBean'].property}
+ * <p/>
+ * limitation for cross-validation: nameOfProperty1 has to be of type string.
+ * other key types aren't supported yet
+ *
+ * @param elContext wrapped el-context
+ * @param base current base
+ * @param property property to resolve
+ * @return result of the delegated method call
+ */
public Object getValue(ELContext elContext, Object base, Object property)
{
+ Object result = this.wrapped.getValue(elContext, base, property);
+
+ //very first call for an expression
if(this.expression == null)
{
this.expression = (String)property;
}
+ //#{bean[dynBase.propertyName]} -> base of dynBase is null -> stop path recording
+ else if(base == null)
+ {
+ this.isPathRecordingStopped = true;
+ }
else
{
+ boolean propertyExists = false;
+ String propertyName = (String)property;
+ propertyName = propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
+
+ try
+ {
+ if(base instanceof Map)
+ {
+ if(((Map)base).containsKey(property))
+ {
+ propertyExists = true;
+ }
+ }
+ else if(base.getClass().getMethod("get" + propertyName) != null)
+ {
+ propertyExists = true;
+ }
+ }
+ catch (NoSuchMethodException e)
+ {
+ try
+ {
+ if(base.getClass().getMethod("is" + propertyName) != null)
+ {
+ propertyExists = true;
+ }
+ }
+ catch (NoSuchMethodException e1)
+ {
+ if(this.logger.isTraceEnabled())
+ {
+ this.logger.trace("property: " + property +
+ " isn't used for path - it isn't a property of " + base.getClass());
+ }
+ }
+ }
+
+ //e.g.: #{bean.subBase.property} -> here we are at subBase
+ if(propertyExists && !this.isPathRecordingStopped)
+ {
+ this.expression += "." + property;
+ }
+ else if(propertyExists && result instanceof String)
+ {
+ this.isPathRecordingStopped = false;
+ }
+ }
+
+ /*
+ if(this.isPathRecordingStopped && result instanceof String)
+ {
this.expression += "." + property;
}
- return wrapped.getValue(elContext, base, property);
+ */
+
+ return result;
}
public Class<?> getType(ELContext elContext, Object o, Object o1)
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/FaceletsTaglibExpressionHelper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/FaceletsTaglibExpressionHelper.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/FaceletsTaglibExpressionHelper.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/FaceletsTaglibExpressionHelper.java Tue May 12 14:07:14 2009
@@ -135,10 +135,11 @@
String originalBinding = addedVirtualNames.get("value");
originalBinding = originalBinding.substring(originalBinding.indexOf("{") + 1, originalBinding.indexOf("}"));
addedVirtualNames.remove("value");
- return tryToTransformToRealBinding(originalBinding, addedVirtualNames);
+ return tryToTransformToRealBinding(originalBinding, addedVirtualNames, virtualVars);
}
- private static String tryToTransformToRealBinding(String originalBinding, Map<String, String> addedVirtualNames)
+ private static String tryToTransformToRealBinding(
+ String originalBinding, Map<String, String> addedVirtualNames, Map<String, String> virtualVars)
{
originalBinding = "#{" + originalBinding + "}";
Iterator nameIterator = addedVirtualNames.keySet().iterator();
@@ -148,12 +149,44 @@
while(nameIterator.hasNext())
{
currentKey = (String) nameIterator.next();
- currentValue = addedVirtualNames.get(currentKey);
+ currentValue = addedVirtualNames.get(currentKey);
currentValue = currentValue.substring(currentValue.indexOf("{") + 1, currentValue.indexOf("}"));
+
originalBinding = originalBinding.replace("{" + currentKey + ".", "{" + currentValue + ".");
+ //dynamic base and property
+ originalBinding = originalBinding.replace("{" + currentKey + "[", "{" + currentValue + "[");
+
originalBinding = originalBinding.replace("." + currentKey + ".", "." + currentValue + ".");
- originalBinding = originalBinding.replace("[" + currentKey + "]", "[" + currentValue + "]");
+ //dynamic base and property
+ originalBinding = originalBinding.replace("." + currentKey + "[", "." + currentValue + "[");
+
+ originalBinding = originalBinding.replace("[" + currentKey + "]", "['" + currentValue + "']");
+ //dynamic base and property
+ originalBinding = originalBinding.replace("[" + currentKey + "[", "[" + currentValue + "[");
+ originalBinding = originalBinding.replace("[" + currentKey + ".", "[" + currentValue + ".");
+ }
+
+ nameIterator = virtualVars.keySet().iterator();
+
+ while(nameIterator.hasNext())
+ {
+ currentKey = (String) nameIterator.next();
+
+ currentValue = virtualVars.get(currentKey);
+
+ originalBinding = originalBinding.replace("{" + currentKey + ".", "{" + currentValue + ".");
+ //dynamic base and property
+ originalBinding = originalBinding.replace("{" + currentKey + "[", "{" + currentValue + "[");
+
+ originalBinding = originalBinding.replace("." + currentKey + ".", "." + currentValue + ".");
+ //dynamic base and property
+ originalBinding = originalBinding.replace("." + currentKey + "[", "." + currentValue + "[");
+
+ originalBinding = originalBinding.replace("[" + currentKey + "]", "['" + currentValue + "']");
+ //dynamic base and property
+ originalBinding = originalBinding.replace("[" + currentKey + "[", "[" + currentValue + "[");
+ originalBinding = originalBinding.replace("[" + currentKey + ".", "[" + currentValue + ".");
}
return originalBinding.substring(2, originalBinding.length() - 1);
@@ -510,4 +543,4 @@
return result;
}
*/
-}
\ No newline at end of file
+}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/ValueBindingExpression.java Tue May 12 14:07:14 2009
@@ -53,6 +53,7 @@
public static ValueBindingExpression replaceProperty(ValueBindingExpression valueBindingExpression,
String newProperty)
{
+ //TODO adjustments for isDynamicBaseAndProperty
if(valueBindingExpression.getProperty().endsWith("']"))
{
valueBindingExpression = valueBindingExpression.getBaseExpression();
@@ -73,6 +74,7 @@
String sourceExpression = valueBindingExpression.getExpressionString();
String result = sourceExpression.substring(0, sourceExpression.length() - 1);
+ //TODO adjustments for isDynamicBaseAndProperty
if(newProperty.startsWith("['"))
{
return new ValueBindingExpression(result + newProperty + "}");
@@ -90,7 +92,8 @@
throw new IllegalStateException(expression + " is no valid el-expression");
}
- int index1 = expression.lastIndexOf("']");
+ boolean isDynamicBaseAndProperty = expression.lastIndexOf("']") == -1;
+ int index1 = isDynamicBaseAndProperty ? expression.lastIndexOf("]") : expression.lastIndexOf("']");
int index2 = expression.lastIndexOf(".");
if(index1 > index2)
@@ -98,9 +101,18 @@
expression = expression.substring(0, index1);
int index3 = findIndexOfStartingBracket(expression);
- this.value = expression.substring(index3 + 2, index1);
+ if(isDynamicBaseAndProperty)
+ {
+ this.value = expression.substring(index3 + 1, index1);
+
+ }
+ else
+ {
+ this.value = expression.substring(index3 + 2, index1);
+ }
+
this.base = new ValueBindingExpression(expression.substring(0, index3) + "}");
- this.token = "['";
+ this.token = isDynamicBaseAndProperty ? "[" : "['";
}
else if( index2 > index1)
{
@@ -125,7 +137,7 @@
{
return this.value.substring(1, this.value.length() - 1);
}
- return this.base.value + this.token + this.value.substring(0, this.value.length()) + "']";
+ //return this.base.value + this.token + this.value.substring(0, this.value.length()) + "']";
}
return value;
}
@@ -145,6 +157,10 @@
{
return baseExpression.substring(0, baseExpression.length() - 1) + this.token + this.value + "']}";
}
+ else if("[".equals(this.token))
+ {
+ return baseExpression.substring(0, baseExpression.length() - 1) + this.token + this.value + "]}";
+ }
return baseExpression.substring(0, baseExpression.length() - 1) + this.token + this.value + "}";
}
else
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java Tue May 12 14:07:14 2009
@@ -20,6 +20,8 @@
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.core.metadata.extractor.DefaultComponentMetaDataExtractorFactory;
import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
@@ -29,6 +31,7 @@
import org.apache.myfaces.extensions.validator.core.metadata.transformer.DefaultMetaDataTransformerFactory;
import org.apache.myfaces.extensions.validator.core.validation.strategy.DefaultValidationStrategyFactory;
import org.apache.myfaces.extensions.validator.core.validation.message.resolver.DefaultMessageResolverFactory;
+import org.apache.myfaces.extensions.validator.core.validation.message.DefaultFacesMessageFactory;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -103,6 +106,11 @@
case EL_HELPER_FACTORY:
factory = createELHelperFactory();
break;
+
+ case FACES_MESSAGE_FACTORY:
+ factory = createFacesMessageFactory();
+ break;
+
default: //required by checkstyle
}
@@ -114,6 +122,7 @@
factoryMap.put(factoryName, factory);
}
+ @ToDo(value = Priority.MEDIUM, description = "add global property extension point")
protected Object createComponentMetaDataExtractorFactory()
{
Object factory = null;
@@ -138,6 +147,7 @@
return factory;
}
+ @ToDo(value = Priority.MEDIUM, description = "add global property extension point")
protected Object createValidationStrategyFactory()
{
Object factory = null;
@@ -163,6 +173,7 @@
return factory;
}
+ @ToDo(value = Priority.MEDIUM, description = "add global property extension point")
protected Object createMessageResolverFactory()
{
Object factory = null;
@@ -188,6 +199,7 @@
return factory;
}
+ @ToDo(value = Priority.MEDIUM, description = "add global property extension point")
protected Object createMetaDataTransformerFactory()
{
Object factory = null;
@@ -217,6 +229,37 @@
return new DefaultRenderKitWrapperFactory();
}
+ private Object createFacesMessageFactory()
+ {
+ Object factory = null;
+
+ List<String> facesMessageFactoryClassNames = new ArrayList<String>();
+
+ facesMessageFactoryClassNames.add(WebXmlParameter.CUSTOM_FACES_MESSAGE_FACTORY);
+ facesMessageFactoryClassNames
+ .add(ExtValContext.getContext().getInformationProviderBean()
+ .get(CustomInformation.FACES_MESSAGE_FACTORY));
+
+ Object target = ExtValContext.getContext().getGlobalProperty(CustomInformation.FACES_MESSAGE_FACTORY.name());
+ if(target != null && target instanceof String)
+ {
+ facesMessageFactoryClassNames.add((String)target);
+ }
+ facesMessageFactoryClassNames.add(DefaultFacesMessageFactory.class.getName());
+
+ for (String className : facesMessageFactoryClassNames)
+ {
+ factory = ClassUtils.tryToInstantiateClassForName(className);
+
+ if (factory != null)
+ {
+ break;
+ }
+ }
+
+ return factory;
+ }
+
private Object createELHelperFactory()
{
return new DefaultELHelperFactory();
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/FactoryNames.java Tue May 12 14:07:14 2009
@@ -33,6 +33,8 @@
MESSAGE_RESOLVER_FACTORY,
META_DATA_TRANSFORMER_FACTORY,
+ FACES_MESSAGE_FACTORY,
+
RENDERKIT_WRAPPER_FACTORY,
EL_HELPER_FACTORY
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/configuration/StaticConfigurationNames.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/configuration/StaticConfigurationNames.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/configuration/StaticConfigurationNames.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/configuration/StaticConfigurationNames.java Tue May 12 14:07:14 2009
@@ -30,5 +30,7 @@
{
META_DATA_TO_VALIDATION_STRATEGY_CONFIG,
VALIDATION_STRATEGY_TO_MESSAGE_RESOLVER_CONFIG,
- VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_CONFIG
+ VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_CONFIG,
+
+ SKIP_VALIDATION_SUPPORT_CONFIG
}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/ValidationInterceptor.java Tue May 12 14:07:14 2009
@@ -176,6 +176,9 @@
{
if(skipValidation(facesContext, uiComponent, validationStrategy, entry))
{
+ //required is a special case - reset it
+ ((EditableValueHolder)uiComponent).setRequired(false);
+
continue;
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/MetaDataEntry.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/MetaDataEntry.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/MetaDataEntry.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/MetaDataEntry.java Tue May 12 14:07:14 2009
@@ -20,6 +20,8 @@
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import java.util.Map;
import java.util.HashMap;
@@ -33,6 +35,8 @@
@UsageInformation(UsageCategory.API)
public class MetaDataEntry
{
+ protected final Log logger = LogFactory.getLog(getClass());
+
private String key;
private Object value;
private Map<String, Object> properties = new HashMap<String, Object>();
@@ -44,6 +48,11 @@
public void setKey(String key)
{
+ if(this.logger.isTraceEnabled())
+ {
+ this.logger.trace("setting meta-data key: " + key);
+ }
+
this.key = key;
}
@@ -59,12 +68,12 @@
public void setValue(Object value)
{
- this.value = value;
- }
+ if(this.logger.isTraceEnabled())
+ {
+ this.logger.trace("setting meta-data value: " + value);
+ }
- public Map<String, Object> getProperties()
- {
- return properties;
+ this.value = value;
}
public void setProperties(Map<String, Object> properties)
@@ -84,6 +93,11 @@
public void setProperty(String key, Object value)
{
+ if(this.logger.isTraceEnabled())
+ {
+ this.logger.trace("new property added key: " + key + " value: " + value + " for metadata-key: " + this.key);
+ }
+
this.properties.put(key, value);
}
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractor.java Tue May 12 14:07:14 2009
@@ -107,19 +107,9 @@
addPropertyAccessAnnotations(currentClass, propertyDetails.getProperty(), propertyInformation);
addFieldAccessAnnotations(currentClass, propertyDetails.getProperty(), propertyInformation);
- currentClass = currentClass.getSuperclass();
- }
-
- for (Class currentInterface : entityClass.getInterfaces())
- {
- currentClass = currentInterface;
+ processInterfaces(currentClass, propertyDetails, propertyInformation);
- while (currentClass != null)
- {
- addPropertyAccessAnnotations(currentClass, propertyDetails.getProperty(), propertyInformation);
-
- currentClass = currentClass.getSuperclass();
- }
+ currentClass = currentClass.getSuperclass();
}
if(logger.isTraceEnabled())
@@ -130,6 +120,17 @@
return propertyInformation;
}
+ private void processInterfaces(
+ Class currentClass, PropertyDetails propertyDetails, PropertyInformation propertyInformation)
+ {
+ for (Class currentInterface : currentClass.getInterfaces())
+ {
+ addPropertyAccessAnnotations(currentInterface, propertyDetails.getProperty(), propertyInformation);
+
+ processInterfaces(currentInterface, propertyDetails, propertyInformation);
+ }
+ }
+
protected void addPropertyAccessAnnotations(Class entity, String property,
PropertyInformation propertyInformation)
{
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererProxy.java Tue May 12 14:07:14 2009
@@ -63,7 +63,16 @@
if (!entry.isDecodeCalled())
{
entry.setDecodeCalled(true);
- wrapped.decode(facesContext, uiComponent);
+
+ try
+ {
+ this.wrapped.decode(facesContext, uiComponent);
+ }
+ catch (RuntimeException r)
+ {
+ resetComponentProxyMapping();
+ throw r;
+ }
}
else
{
@@ -83,7 +92,20 @@
if (!entry.isEncodeBeginCalled())
{
entry.setEncodeBeginCalled(true);
- wrapped.encodeBegin(facesContext, uiComponent);
+ try
+ {
+ this.wrapped.encodeBegin(facesContext, uiComponent);
+ }
+ catch (IOException e)
+ {
+ resetComponentProxyMapping();
+ throw e;
+ }
+ catch (RuntimeException r)
+ {
+ resetComponentProxyMapping();
+ throw r;
+ }
}
else
{
@@ -103,7 +125,21 @@
if (!entry.isEncodeChildrenCalled())
{
entry.setEncodeChildrenCalled(true);
- wrapped.encodeChildren(facesContext, uiComponent);
+
+ try
+ {
+ this.wrapped.encodeChildren(facesContext, uiComponent);
+ }
+ catch (IOException e)
+ {
+ resetComponentProxyMapping();
+ throw e;
+ }
+ catch (RuntimeException r)
+ {
+ resetComponentProxyMapping();
+ throw r;
+ }
}
else
{
@@ -123,7 +159,21 @@
if (!entry.isEncodeEndCalled())
{
entry.setEncodeEndCalled(true);
- wrapped.encodeEnd(facesContext, uiComponent);
+
+ try
+ {
+ this.wrapped.encodeEnd(facesContext, uiComponent);
+ }
+ catch (IOException e)
+ {
+ resetComponentProxyMapping();
+ throw e;
+ }
+ catch (RuntimeException r)
+ {
+ resetComponentProxyMapping();
+ throw r;
+ }
}
else
{
@@ -137,13 +187,29 @@
@Override
public String convertClientId(FacesContext facesContext, String s)
{
- return wrapped.convertClientId(facesContext, s);
+ try
+ {
+ return wrapped.convertClientId(facesContext, s);
+ }
+ catch (RuntimeException r)
+ {
+ resetComponentProxyMapping();
+ throw r;
+ }
}
@Override
public boolean getRendersChildren()
{
- return wrapped.getRendersChildren();
+ try
+ {
+ return wrapped.getRendersChildren();
+ }
+ catch (RuntimeException t)
+ {
+ resetComponentProxyMapping();
+ throw t;
+ }
}
@Override
@@ -154,7 +220,15 @@
if (entry.getConvertedValue() == null)
{
- entry.setConvertedValue(wrapped.getConvertedValue(facesContext, uiComponent, o));
+ try
+ {
+ entry.setConvertedValue(wrapped.getConvertedValue(facesContext, uiComponent, o));
+ }
+ catch (RuntimeException r)
+ {
+ resetComponentProxyMapping();
+ throw r;
+ }
}
else
{
@@ -207,4 +281,10 @@
return proxyStorage.get(key);
}
+
+ private void resetComponentProxyMapping()
+ {
+ //reset component proxy mapping
+ FacesContext.getCurrentInstance().getExternalContext().getRequestMap().remove(PROXY_STORAGE_NAME);
+ }
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractAnnotationValidationStrategy.java Tue May 12 14:07:14 2009
@@ -79,8 +79,7 @@
protected FacesMessage getValidationErrorFacesMassage(Annotation annotation)
{
- return new FacesMessage(FacesMessage.SEVERITY_ERROR,
- getErrorMessageSummary(annotation), getErrorMessageDetail(annotation));
+ return ExtValUtils.createFacesMessage(getErrorMessageSummary(annotation), getErrorMessageDetail(annotation));
}
protected abstract String getValidationErrorMsgKey(Annotation annotation);
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidationStrategy.java Tue May 12 14:07:14 2009
@@ -87,7 +87,10 @@
logger.trace("start processAfterValidatorException of " + getClass().getName());
}
- if (processAfterValidatorException(facesContext, uiComponent, metaDataEntry, convertedObject, e))
+ ValidatorException validatorException = new ValidatorException(
+ ExtValUtils.convertFacesMessage(e.getFacesMessage()), e.getCause());
+ if (processAfterValidatorException(
+ facesContext, uiComponent, metaDataEntry, convertedObject, validatorException))
{
if(logger.isTraceEnabled())
{
@@ -95,7 +98,7 @@
": throw original exception after processAfterValidatorException");
}
- throw e;
+ throw validatorException;
}
if(logger.isTraceEnabled())
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/internal/ToDo.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/internal/ToDo.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/internal/ToDo.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/internal/ToDo.java Tue May 12 14:07:14 2009
@@ -32,4 +32,10 @@
{
Priority value();
String description() default "";
+
+ @Target({TYPE, METHOD, FIELD})
+ @interface List
+ {
+ ToDo[] value();
+ }
}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Tue May 12 14:07:14 2009
@@ -36,10 +36,16 @@
import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractor;
import org.apache.myfaces.extensions.validator.core.metadata.extractor.ComponentMetaDataExtractorFactory;
import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
+import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationNames;
+import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfiguration;
+import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationEntry;
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.factory.FactoryNames;
import org.apache.myfaces.extensions.validator.core.factory.NameMapperAwareFactory;
+import org.apache.myfaces.extensions.validator.core.factory.FacesMessageFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
@@ -47,7 +53,8 @@
import javax.faces.application.FacesMessage;
import java.util.Map;
import java.util.MissingResourceException;
-
+import java.util.List;
+import java.util.ArrayList;
/**
* @author Gerhard Petracek
@@ -56,6 +63,8 @@
@UsageInformation(UsageCategory.INTERNAL)
public class ExtValUtils
{
+ private static final Log LOGGER = LogFactory.getLog(ExtValUtils.class);
+
private static final String JAVAX_FACES_REQUIRED = "javax.faces.component.UIInput.REQUIRED";
private static final String JAVAX_FACES_REQUIRED_DETAIL = "javax.faces.component.UIInput.REQUIRED_detail";
@@ -228,6 +237,25 @@
.getFactory(FactoryNames.EL_HELPER_FACTORY, AbstractELHelperFactory.class).create();
}
+ public static FacesMessage createFacesMessage(String summary, String detail)
+ {
+ return createFacesMessage(FacesMessage.SEVERITY_ERROR, summary, detail);
+ }
+
+ public static FacesMessage createFacesMessage(FacesMessage.Severity severity, String summary, String detail)
+ {
+ return ExtValContext.getContext().getFactoryFinder()
+ .getFactory(FactoryNames.FACES_MESSAGE_FACTORY, FacesMessageFactory.class)
+ .create(severity, summary, detail);
+ }
+
+ public static FacesMessage convertFacesMessage(FacesMessage facesMessage)
+ {
+ return ExtValContext.getContext().getFactoryFinder()
+ .getFactory(FactoryNames.FACES_MESSAGE_FACTORY, FacesMessageFactory.class)
+ .convert(facesMessage);
+ }
+
public static PropertyDetails createPropertyDetailsForNewTarget(MetaDataEntry metaDataEntry,
String targetExpression)
{
@@ -319,4 +347,76 @@
facesMessage.setSummary(facesRequiredMessage);
facesMessage.setDetail(facesRequiredMessageDetail);
}
+
+ public static boolean isSkipableValidationStrategy(Class<? extends ValidationStrategy> targetClass)
+ {
+ for(Class currentClass : ExtValUtils.getSkipValidationSupportClassList())
+ {
+ if(ExtValUtils.isSkipValidationSupported(currentClass, targetClass))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public static boolean processMetaDataEntryAfterSkipValidation(
+ Class<? extends ValidationStrategy> targetClass, MetaDataEntry entry)
+ {
+ return ExtValUtils.isSkipableValidationStrategy(targetClass) &&
+ Boolean.TRUE.equals(entry.getProperty(PropertyInformationKeys.SKIP_VALIDATION, Boolean.class));
+ }
+
+ public static List<Class> getSkipValidationSupportClassList()
+ {
+ List<StaticConfiguration<String, String>> staticConfigurationList = ExtValContext.getContext()
+ .getStaticConfiguration(StaticConfigurationNames.SKIP_VALIDATION_SUPPORT_CONFIG);
+
+ List<Class> markerList = new ArrayList<Class>();
+
+ Class currentClass;
+ for(StaticConfiguration<String, String> currentEntry : staticConfigurationList)
+ {
+ for(StaticConfigurationEntry<String, String> currentConfigurationEntry : currentEntry.getMapping())
+ {
+ currentClass = ClassUtils.tryToLoadClassForName(currentConfigurationEntry.getTarget());
+
+ if(currentClass != null)
+ {
+ markerList.add(currentClass);
+ }
+ else
+ {
+ if(LOGGER.isWarnEnabled())
+ {
+ LOGGER.warn("configuration entry provides an invalid entry: "
+ + currentConfigurationEntry.getTarget());
+ }
+ }
+ }
+ }
+
+ return markerList;
+ }
+
+ public static boolean isSkipValidationSupported(Class currentClass, Class targetClass)
+ {
+ if(currentClass.isAnnotation())
+ {
+ if(targetClass.isAnnotationPresent(currentClass))
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if(currentClass.isAssignableFrom(targetClass))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/HtmlCoreComponentsValidationExceptionInterceptor.java Tue May 12 14:07:14 2009
@@ -22,6 +22,7 @@
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationExceptionInterceptor;
import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.core.validation.message.LabeledMessage;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
@@ -57,7 +58,7 @@
{
if(processComponent(uiComponent))
{
- FacesMessage facesMessage = validatorException.getFacesMessage();
+ FacesMessage facesMessage = ExtValUtils.convertFacesMessage(validatorException.getFacesMessage());
String label = (String) ReflectionUtils.tryToInvokeMethod(uiComponent,
ReflectionUtils.tryToGetMethod(uiComponent.getClass(), "getLabel"));
@@ -73,9 +74,17 @@
label = metaDataEntry.getProperty(PropertyInformationKeys.LABEL, String.class);
}
- for(int i = 0; i < 3; i++)
+ if(facesMessage instanceof LabeledMessage)
{
- ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ ((LabeledMessage)facesMessage).setLabelText(label);
+ }
+ //if someone uses a normal faces message
+ else
+ {
+ for(int i = 0; i < 3; i++)
+ {
+ ExtValUtils.tryToPlaceLabel(facesMessage, label, i);
+ }
}
}
return true;
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java Tue May 12 14:07:14 2009
@@ -22,21 +22,18 @@
import org.apache.myfaces.extensions.validator.baseval.annotation.SkipValidationSupport;
import org.apache.myfaces.extensions.validator.core.startup.AbstractStartupListener;
import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.core.CustomInformation;
import org.apache.myfaces.extensions.validator.core.metadata.CommonMetaDataKeys;
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationInterceptor;
import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticResourceBundleConfiguration;
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.StaticInMemoryConfiguration;
import org.apache.myfaces.extensions.validator.internal.ToDo;
import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.crossval.recorder.CrossValidationUserInputRecorder;
-import java.util.List;
-import java.util.ArrayList;
-
/**
* @author Gerhard Petracek
* @since 1.x.1
@@ -92,16 +89,13 @@
ExtValContext.getContext().denyRendererInterceptor(ValidationInterceptor.class);
ExtValContext.getContext().registerRendererInterceptor(new ValidationInterceptorWithSkipValidationSupport());
- String key = ExtValContext.getContext().getInformationProviderBean()
- .get(CustomInformation.BASE_PACKAGE) + CommonMetaDataKeys.SKIP_VALIDATION.toUpperCase();
- List<Class> markerList = (List<Class>)ExtValContext.getContext().getGlobalProperty(key);
+ StaticInMemoryConfiguration config = new StaticInMemoryConfiguration();
+ //it's just required to set the target
+ config.addMapping(CommonMetaDataKeys.SKIP_VALIDATION, SkipValidationSupport.class.getName());
- if(markerList == null)
- {
- markerList = new ArrayList<Class>();
- ExtValContext.getContext().addGlobalProperty(key, markerList);
- }
-
- markerList.add(SkipValidationSupport.class);
+ ExtValContext.getContext()
+ .addStaticConfiguration(StaticConfigurationNames.SKIP_VALIDATION_SUPPORT_CONFIG, config);
+
+ //config.addMapping(CommonMetaDataKeys.SKIP_VALIDATION, RequiredStrategy.class.getName());
}
}
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/ValidationInterceptorWithSkipValidationSupport.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/ValidationInterceptorWithSkipValidationSupport.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/ValidationInterceptorWithSkipValidationSupport.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/ValidationInterceptorWithSkipValidationSupport.java Tue May 12 14:07:14 2009
@@ -22,10 +22,8 @@
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
-import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
import org.apache.myfaces.extensions.validator.core.interceptor.ValidationInterceptor;
-import org.apache.myfaces.extensions.validator.baseval.annotation.SkipValidationSupport;
-import org.apache.myfaces.extensions.validator.baseval.strategy.SkipValidationStrategy;
+import org.apache.myfaces.extensions.validator.util.PropertyValidationUtils;
import javax.faces.context.FacesContext;
import javax.faces.component.UIComponent;
@@ -43,26 +41,6 @@
ValidationStrategy validationStrategy,
MetaDataEntry metaDataEntry)
{
- if(validationStrategy.getClass().isAnnotationPresent(SkipValidationSupport.class))
- {
- Boolean skipValidation = metaDataEntry.getProperty(
- PropertyInformationKeys.SKIP_VALIDATION, Boolean.class);
-
- if(Boolean.TRUE.equals(skipValidation))
- {
- if(logger.isTraceEnabled())
- {
- logger.trace("validation of " + validationStrategy.getClass().getName() + " canceled");
- }
-
- return true;
- }
- }
- else if(validationStrategy instanceof SkipValidationStrategy)
- {
- validationStrategy.validate(facesContext, uiComponent, metaDataEntry, null);
- return true;
- }
- return false;
+ return PropertyValidationUtils.isValidationSkipped(facesContext, validationStrategy, metaDataEntry);
}
}
\ No newline at end of file
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/metadata/transformer/JoinMetaDataTransformer.java Tue May 12 14:07:14 2009
@@ -26,6 +26,7 @@
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.util.PropertyValidationUtils;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -58,10 +59,17 @@
.createPropertyDetailsForNewTarget(metaDataEntry, targetExpression);
for (MetaDataEntry entry : extractor.extract(FacesContext.getCurrentInstance(),
- propertyDetails).getMetaDataEntries())
+ propertyDetails).getMetaDataEntries())
{
validationStrategy = ExtValUtils.getValidationStrategyForMetaData(entry.getKey());
+ if(validationStrategy == null ||
+ PropertyValidationUtils.isValidationSkipped(FacesContext.getCurrentInstance(),
+ validationStrategy, entry))
+ {
+ continue;
+ }
+
metaDataTransformer = ExtValUtils.getMetaDataTransformerForValidationStrategy(validationStrategy);
if (metaDataTransformer != null)
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JoinValidationStrategy.java Tue May 12 14:07:14 2009
@@ -62,6 +62,11 @@
if (validationStrategy != null)
{
+ if(ExtValUtils.processMetaDataEntryAfterSkipValidation(validationStrategy.getClass(), entry))
+ {
+ continue;
+ }
+
validationStrategy.validate(facesContext, uiComponent, entry, convertedObject);
}
else
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/DateIs.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/DateIs.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/DateIs.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/annotation/DateIs.java Tue May 12 14:07:14 2009
@@ -18,8 +18,6 @@
*/
package org.apache.myfaces.extensions.validator.crossval.annotation;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
-import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -36,7 +34,6 @@
*/
@Target({METHOD, FIELD})
@Retention(RUNTIME)
-@ToDo(value = Priority.MEDIUM, description = "DateIsEntry (valueOf, type)")
@UsageInformation(UsageCategory.API)
public @interface DateIs
{
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/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/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/strategy/AbstractCompareStrategy.java Tue May 12 14:07:14 2009
@@ -166,7 +166,8 @@
entryOfTarget.getComponent(), entryOfTarget.getMetaDataEntry(),
entryOfTarget.getConvertedObject(), validatorException, this))
{
- facesContext.addMessage(entryOfTarget.getClientId(), validatorException.getFacesMessage());
+ facesContext.addMessage(entryOfTarget.getClientId(),
+ ExtValUtils.convertFacesMessage(validatorException.getFacesMessage()));
}
}
}
@@ -215,24 +216,12 @@
protected FacesMessage getSourceComponentErrorMessage(Annotation annotation, String summary, String detail)
{
- FacesMessage message = new FacesMessage();
-
- message.setSeverity(FacesMessage.SEVERITY_ERROR);
- message.setSummary(summary);
- message.setDetail(detail);
-
- return message;
+ return ExtValUtils.createFacesMessage(summary, detail);
}
protected FacesMessage getTargetComponentErrorMessage(Annotation foundAnnotation, String summary, String detail)
{
- FacesMessage message = new FacesMessage();
-
- message.setSeverity(FacesMessage.SEVERITY_ERROR);
- message.setSummary(summary);
- message.setDetail(detail);
-
- return message;
+ return ExtValUtils.createFacesMessage(summary, detail);
}
protected String getErrorMessageSummary(Annotation annotation, boolean isTargetComponent)
Modified: myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/util/CrossValidationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/util/CrossValidationUtils.java?rev=773905&r1=773904&r2=773905&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/util/CrossValidationUtils.java (original)
+++ myfaces/extensions/validator/branches/beanval_integration/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/util/CrossValidationUtils.java Tue May 12 14:07:14 2009
@@ -63,7 +63,7 @@
.put(CROSS_VALIDATION_STORAGE_KEY, new CrossValidationStorage());
}
- public static final String KEY_TO_CONVERTED_VALUE_MAPPING_KEY = JsfUtils.class.getName();
+ public static final String KEY_TO_CONVERTED_VALUE_MAPPING_KEY = CrossValidationUtils.class.getName();
public static Map<String, ProcessedInformationEntry> getOrInitKeyToConvertedValueMapping()
{