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/09/23 03:19:37 UTC
svn commit: r698056 - in /myfaces/extensions/validator/trunk:
core/src/main/java/org/apache/myfaces/extensions/validator/core/
core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/
core/src/main/java/org/apache/myfaces/extensions...
Author: gpetracek
Date: Mon Sep 22 18:19:36 2008
New Revision: 698056
URL: http://svn.apache.org/viewvc?rev=698056&view=rev
Log:
generic initialization of components
Added:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/ComponentInitializer.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializer.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializerFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/DefaultRenderingContextInitializerFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/RenderingContextInitializer.java
- copied, changed from r697737, myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/RenderingContextInitializer.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/TrinidadRenderingContextInitializer.java
- copied, changed from r697737, myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/TrinidadRenderingContextInitializer.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/DefaultMyFacesComponentInitializer.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitPropertyValidationModulePhaseListener.java
- copied, changed from r697737, myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitStaticStrategyMappingsPhaseListener.java
Removed:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/RenderingContextInitializer.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/TrinidadRenderingContextInitializer.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitStaticStrategyMappingsPhaseListener.java
Modified:
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRenderKit.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/FactoryUtils.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java
myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ValidationUtils.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/config/faces-config.xml
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java
myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRenderKit.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRenderKit.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRenderKit.java Mon Sep 22 18:19:36 2008
@@ -20,8 +20,7 @@
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
-import org.apache.myfaces.extensions.validator.util.ClassUtils;
-import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.util.FactoryUtils;
import javax.faces.context.ResponseStream;
import javax.faces.context.ResponseWriter;
@@ -44,11 +43,7 @@
public ExtValRenderKit(RenderKit wrapped)
{
- RenderingContextInitializer renderingContextInitializer =
- (RenderingContextInitializer)ClassUtils.tryToInstantiateClassForName(
- ExtValUtils.getInformationProviderBean().getRenderingContextInitializerName());
-
- renderingContextInitializer.initContext();
+ FactoryUtils.getRenderingContextInitializerFactory().create(wrapped).initContext();
this.wrapped = wrapped;
}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValRendererWrapper.java Mon Sep 22 18:19:36 2008
@@ -18,19 +18,26 @@
*/
package org.apache.myfaces.extensions.validator.core;
+import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
+import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractor;
+import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
-import org.apache.myfaces.extensions.validator.util.ValidationUtils;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
+import org.apache.myfaces.extensions.validator.util.FactoryUtils;
import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
+import org.apache.myfaces.extensions.validator.util.ValidationUtils;
-import javax.faces.component.UIComponent;
import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.ConverterException;
import javax.faces.render.Renderer;
import java.io.IOException;
import java.lang.reflect.Method;
+import java.util.Map;
+import java.util.HashMap;
/**
* Default approach to avoid proxies for converters and the adapter fallback.
@@ -64,12 +71,45 @@
public void encodeBegin(FacesContext facesContext, UIComponent uiComponent)
throws IOException
{
- if(ValidationUtils.isValueOfComponentRequired(facesContext, uiComponent))
+ initComponent(facesContext, uiComponent);
+ wrapped.encodeBegin(facesContext, uiComponent);
+ }
+
+ protected void initComponent(FacesContext facesContext, UIComponent uiComponent)
+ {
+ if(!(uiComponent instanceof EditableValueHolder))
{
- ((EditableValueHolder)uiComponent).setRequired(true);
+ return;
}
- wrapped.encodeBegin(facesContext, uiComponent);
+ ValidationStrategy validationStrategy;
+
+ AnnotationExtractor annotationExtractor = FactoryUtils.getAnnotationExtractorFactory().create();
+
+ Map<String, Object> metaData;
+ for (AnnotationEntry entry : annotationExtractor.extractAnnotations(facesContext, uiComponent))
+ {
+ validationStrategy = FactoryUtils.getValidationStrategyFactory().create(entry.getAnnotation());
+
+ if (validationStrategy != null && validationStrategy instanceof ComponentInitializer)
+ {
+ if(validationStrategy instanceof MetaDataExtractor)
+ {
+ metaData = ((MetaDataExtractor)validationStrategy).extractMetaData(entry.getAnnotation());
+ }
+ else
+ {
+ metaData = null;
+ }
+
+ if(metaData == null)
+ {
+ metaData = new HashMap<String, Object>();
+ }
+
+ ((ComponentInitializer)validationStrategy).configureComponent(facesContext, uiComponent, metaData);
+ }
+ }
}
public void encodeChildren(FacesContext facesContext, UIComponent uiComponent)
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/InformationProviderBean.java Mon Sep 22 18:19:36 2008
@@ -19,11 +19,11 @@
package org.apache.myfaces.extensions.validator.core;
import org.apache.myfaces.extensions.validator.ExtValInformation;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
+import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
import org.apache.myfaces.extensions.validator.internal.Priority;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
-import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
@@ -103,6 +103,19 @@
}
/*
+ * initializer
+ */
+ public String getCustomRenderingContextInitializer()
+ {
+ return this.basePackage + "RenderingContextInitializer";
+ }
+
+ public String getCustomComponentInitializer()
+ {
+ return this.basePackage + "ComponentInitializer";
+ }
+
+ /*
* factories
*/
public String getCustomMessageResolverFactory()
@@ -115,6 +128,16 @@
return this.basePackage + "ValidationStrategyFactory";
}
+ public String getCustomRenderingContextInitializerFactory()
+ {
+ return this.basePackage + "RenderingContextInitializerFactory";
+ }
+
+ public String getCustomComponentInitializerFactory()
+ {
+ return this.basePackage + "ComponentInitializerFactory";
+ }
+
/*
* conventions (the rest of the conventions are built with the help of name mappers,...
*/
@@ -126,10 +149,6 @@
/*
* init hook for component libs which use a rendering context (e.g. Trinidad)
*/
- public String getRenderingContextInitializerName()
- {
- return TrinidadRenderingContextInitializer.class.getName();
- }
/*
* static strategy mappings (name of property files)
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/WebXmlParameter.java Mon Sep 22 18:19:36 2008
@@ -18,10 +18,10 @@
*/
package org.apache.myfaces.extensions.validator.core;
+import org.apache.myfaces.extensions.validator.internal.Priority;
+import org.apache.myfaces.extensions.validator.internal.ToDo;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
import org.apache.myfaces.extensions.validator.internal.UsageInformation;
-import org.apache.myfaces.extensions.validator.internal.ToDo;
-import org.apache.myfaces.extensions.validator.internal.Priority;
import org.apache.myfaces.extensions.validator.util.WebXmlUtils;
/**
@@ -62,6 +62,18 @@
static final String CUSTOM_VALIDATIONSTRATEGY_MAPPING = WebXmlUtils
.getInitParameter("CUSTOM_STATIC_VALIDATIONSTRATEGY_MAPPING");
+ static final String CUSTOM_RENDERING_CONTEXT_INITIALIZER_FACTORY = WebXmlUtils
+ .getInitParameter("CUSTOM_RENDERING_CONTEXT_INITIALIZER_FACTORY");
+
+ static final String CUSTOM_RENDERING_CONTEXT_INITIALIZER = WebXmlUtils
+ .getInitParameter("CUSTOM_RENDERING_CONTEXT_INITIALIZER");
+
+ static final String CUSTOM_COMPONENT_INITIALIZER_FACTORY = WebXmlUtils
+ .getInitParameter("CUSTOM_COMPONENT_INITIALIZER_FACTORY");
+
+ static final String CUSTOM_COMPONENT_INITIALIZER = WebXmlUtils
+ .getInitParameter("CUSTOM_COMPONENT_INITIALIZER");
+
/*
* deactivate
*/
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/ComponentInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/ComponentInitializer.java?rev=698056&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/ComponentInitializer.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/ComponentInitializer.java Mon Sep 22 18:19:36 2008
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.initializer.component;
+
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation(UsageCategory.API)
+public interface ComponentInitializer
+{
+ void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData);
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializer.java?rev=698056&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializer.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializer.java Mon Sep 22 18:19:36 2008
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.initializer.component;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class DefaultComponentInitializer implements ComponentInitializer
+{
+ private static ComponentInitializer componentInitializer;
+
+ public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+ {
+ if(componentInitializer != null)
+ {
+ componentInitializer.configureComponent(facesContext, uiComponent, metaData);
+ }
+ }
+
+ @UsageInformation(UsageCategory.INTERNAL)
+ public static void setComponentInitializer(ComponentInitializer componentInitializer)
+ {
+ DefaultComponentInitializer.componentInitializer = componentInitializer;
+ }
+}
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializerFactory.java?rev=698056&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializerFactory.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/component/DefaultComponentInitializerFactory.java Mon Sep 22 18:19:36 2008
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.initializer.component;
+
+import org.apache.myfaces.extensions.validator.core.ClassMappingFactory;
+import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.util.ClassUtils;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+
+import javax.faces.component.UIComponent;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation({UsageCategory.INTERNAL, UsageCategory.CUSTOMIZABLE})
+public class DefaultComponentInitializerFactory implements
+ ClassMappingFactory<UIComponent, ComponentInitializer>
+{
+ private static Map<String, ComponentInitializer> componentToComponentInitializerMapping
+ = new HashMap<String, ComponentInitializer>();
+ private static List<String> componentInitializerClassNames = new ArrayList<String>();
+
+ static
+ {
+ componentInitializerClassNames
+ .add(WebXmlParameter.CUSTOM_COMPONENT_INITIALIZER);
+ componentInitializerClassNames
+ .add(ExtValUtils.getInformationProviderBean().getCustomComponentInitializer());
+ componentInitializerClassNames
+ .add(DefaultComponentInitializer.class.getName());
+ }
+
+ public ComponentInitializer create(UIComponent uiComponent)
+ {
+ String componentKey = uiComponent.getClass().getName();
+
+ if (componentToComponentInitializerMapping.containsKey(componentKey))
+ {
+ return componentToComponentInitializerMapping.get(componentKey);
+ }
+
+ ComponentInitializer componentInitializer;
+
+ for (String componentInitializerName : componentInitializerClassNames)
+ {
+ componentInitializer =
+ (ComponentInitializer) ClassUtils.tryToInstantiateClassForName(componentInitializerName);
+
+ if (componentInitializer != null)
+ {
+ componentToComponentInitializerMapping.put(componentKey, componentInitializer);
+ return componentInitializer;
+ }
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/DefaultRenderingContextInitializerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/DefaultRenderingContextInitializerFactory.java?rev=698056&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/DefaultRenderingContextInitializerFactory.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/DefaultRenderingContextInitializerFactory.java Mon Sep 22 18:19:36 2008
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator.core.initializer.rendering;
+
+import org.apache.myfaces.extensions.validator.core.ClassMappingFactory;
+import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.util.ClassUtils;
+import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+
+import javax.faces.render.RenderKit;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+@UsageInformation({UsageCategory.INTERNAL, UsageCategory.CUSTOMIZABLE})
+public class DefaultRenderingContextInitializerFactory implements
+ ClassMappingFactory<RenderKit, RenderingContextInitializer>
+{
+ private static Map<String, RenderingContextInitializer> renderKitToRenderingContextInitializerMapping
+ = new HashMap<String, RenderingContextInitializer>();
+ private static List<String> renderingContextClassNames = new ArrayList<String>();
+
+ static
+ {
+ renderingContextClassNames
+ .add(WebXmlParameter.CUSTOM_RENDERING_CONTEXT_INITIALIZER);
+ renderingContextClassNames
+ .add(ExtValUtils.getInformationProviderBean().getCustomRenderingContextInitializer());
+ renderingContextClassNames
+ .add(TrinidadRenderingContextInitializer.class.getName());
+ }
+
+ public RenderingContextInitializer create(RenderKit renderKit)
+ {
+ String renderKitKey = renderKit.getClass().getName();
+
+ if(renderKitToRenderingContextInitializerMapping.containsKey(renderKitKey))
+ {
+ return renderKitToRenderingContextInitializerMapping.get(renderKitKey);
+ }
+
+ RenderingContextInitializer renderingContextInitializer;
+
+ for (String renderingContextInitializerName : renderingContextClassNames)
+ {
+ renderingContextInitializer =
+ (RenderingContextInitializer)ClassUtils.tryToInstantiateClassForName(renderingContextInitializerName);
+
+ if(renderingContextInitializer != null)
+ {
+ renderKitToRenderingContextInitializerMapping.put(renderKitKey, renderingContextInitializer );
+ return renderingContextInitializer;
+ }
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
Copied: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/RenderingContextInitializer.java (from r697737, myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/RenderingContextInitializer.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/RenderingContextInitializer.java?p2=myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/RenderingContextInitializer.java&p1=myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/RenderingContextInitializer.java&r1=697737&r2=698056&rev=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/RenderingContextInitializer.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/RenderingContextInitializer.java Mon Sep 22 18:19:36 2008
@@ -16,10 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.extensions.validator.core;
+package org.apache.myfaces.extensions.validator.core.initializer.rendering;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
/**
* @author Gerhard Petracek
Copied: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/TrinidadRenderingContextInitializer.java (from r697737, myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/TrinidadRenderingContextInitializer.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/TrinidadRenderingContextInitializer.java?p2=myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/TrinidadRenderingContextInitializer.java&p1=myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/TrinidadRenderingContextInitializer.java&r1=697737&r2=698056&rev=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/TrinidadRenderingContextInitializer.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/initializer/rendering/TrinidadRenderingContextInitializer.java Mon Sep 22 18:19:36 2008
@@ -16,10 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.myfaces.extensions.validator.core;
+package org.apache.myfaces.extensions.validator.core.initializer.rendering;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.util.ClassUtils;
/**
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/AbstractValidatorAdapter.java Mon Sep 22 18:19:36 2008
@@ -21,13 +21,16 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.util.FactoryUtils;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.ConverterException;
import javax.faces.validator.ValidatorException;
+import java.util.Map;
/**
* Provides the ability to use ValidatorException (as expected by the user) instead of ConverterException.
@@ -39,7 +42,7 @@
* @since 1.x.1
*/
@UsageInformation({UsageCategory.INTERNAL, UsageCategory.REUSE})
-public abstract class AbstractValidatorAdapter implements ValidationStrategy
+public abstract class AbstractValidatorAdapter implements ValidationStrategy, ComponentInitializer
{
protected final Log logger = LogFactory.getLog(getClass());
@@ -79,6 +82,18 @@
return true;
}
+ public final void configureComponent(FacesContext facesContext,
+ UIComponent uiComponent,
+ Map<String, Object> metaData)
+ {
+ getComponentInitializer(uiComponent).configureComponent(facesContext, uiComponent, metaData);
+ }
+
+ protected ComponentInitializer getComponentInitializer(UIComponent uiComponent)
+ {
+ return FactoryUtils.getComponentInitializerFactory().create(uiComponent);
+ }
+
protected abstract void processValidation(FacesContext facesContext,
UIComponent uiComponent, AnnotationEntry annotationEntry,
Object convertedObject) throws ValidatorException;
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java Mon Sep 22 18:19:36 2008
@@ -98,7 +98,7 @@
if (annotationStrategyMapping.containsKey(annotationName))
{
- return (ValidationStrategy) getValidationStrategyInstance(annotationStrategyMapping
+ return getValidationStrategyInstance(annotationStrategyMapping
.get(annotationName));
}
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/FactoryUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/FactoryUtils.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/FactoryUtils.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/FactoryUtils.java Mon Sep 22 18:19:36 2008
@@ -22,15 +22,21 @@
import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractorFactory;
import org.apache.myfaces.extensions.validator.core.annotation.extractor.DefaultComponentAnnotationExtractorFactory;
+import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
+import org.apache.myfaces.extensions.validator.core.initializer.component.DefaultComponentInitializerFactory;
+import org.apache.myfaces.extensions.validator.core.initializer.rendering.DefaultRenderingContextInitializerFactory;
+import org.apache.myfaces.extensions.validator.core.initializer.rendering.RenderingContextInitializer;
import org.apache.myfaces.extensions.validator.core.validation.message.resolver.DefaultMessageResolverFactory;
import org.apache.myfaces.extensions.validator.core.validation.message.resolver.MessageResolver;
import org.apache.myfaces.extensions.validator.core.validation.strategy.DefaultValidationStrategyFactory;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
-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.ToDo;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import javax.faces.component.UIComponent;
+import javax.faces.render.RenderKit;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;
@@ -134,4 +140,67 @@
return messageResolverFactory;
}
+
+ private static ClassMappingFactory<RenderKit, RenderingContextInitializer> renderingContextInitializerFactory;
+
+ public static ClassMappingFactory<RenderKit, RenderingContextInitializer> getRenderingContextInitializerFactory()
+ {
+ if (renderingContextInitializerFactory == null)
+ {
+ List<String> renderingContextInitializerFactoryClassNames = new ArrayList<String>();
+
+ renderingContextInitializerFactoryClassNames
+ .add(WebXmlParameter.CUSTOM_RENDERING_CONTEXT_INITIALIZER_FACTORY);
+ renderingContextInitializerFactoryClassNames.add(ExtValUtils
+ .getInformationProviderBean()
+ .getCustomRenderingContextInitializerFactory());
+ renderingContextInitializerFactoryClassNames
+ .add(DefaultRenderingContextInitializerFactory.class.getName());
+
+ for (String className : renderingContextInitializerFactoryClassNames)
+ {
+ renderingContextInitializerFactory =
+ (ClassMappingFactory<RenderKit, RenderingContextInitializer>) ClassUtils
+ .tryToInstantiateClassForName(className);
+
+ if (renderingContextInitializerFactory != null)
+ {
+ break;
+ }
+ }
+ }
+
+ return renderingContextInitializerFactory;
+ }
+
+ private static ClassMappingFactory<UIComponent, ComponentInitializer> componentInitializerFactory;
+
+ public static ClassMappingFactory<UIComponent, ComponentInitializer> getComponentInitializerFactory()
+ {
+ if (componentInitializerFactory == null)
+ {
+ List<String> componentInitializerFactoryClassNames = new ArrayList<String>();
+
+ componentInitializerFactoryClassNames
+ .add(WebXmlParameter.CUSTOM_COMPONENT_INITIALIZER_FACTORY);
+ componentInitializerFactoryClassNames.add(ExtValUtils
+ .getInformationProviderBean()
+ .getCustomComponentInitializerFactory());
+ componentInitializerFactoryClassNames
+ .add(DefaultComponentInitializerFactory.class.getName());
+
+ for (String className : componentInitializerFactoryClassNames)
+ {
+ componentInitializerFactory = (ClassMappingFactory<UIComponent, ComponentInitializer>) ClassUtils
+ .tryToInstantiateClassForName(className);
+
+ if (componentInitializerFactory != null)
+ {
+ break;
+ }
+ }
+ }
+
+ return componentInitializerFactory;
+ }
}
\ No newline at end of file
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ReflectionUtils.java Mon Sep 22 18:19:36 2008
@@ -18,8 +18,8 @@
*/
package org.apache.myfaces.extensions.validator.util;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -70,6 +70,36 @@
return tryToInvokeMethodOfClass(target, method, null);
}
+ public static Object tryToInvokeMethodOfClassAndMethodName(String className, String methodName)
+ {
+ return tryToInvokeMethodOfClassAndMethodName(className, methodName, null);
+ }
+
+ public static Object tryToInvokeMethodOfClassAndMethodName(String className, String methodName, Object[] args)
+ {
+ Class[] targetArgs = new Class[0];
+
+ if(args != null)
+ {
+ targetArgs = new Class[args.length];
+
+ for(int i = 0; i < args.length; i++)
+ {
+ targetArgs[i] = args[i].getClass();
+ }
+ }
+
+ return tryToInvokeMethodOfClassAndMethodName(className, methodName, args, targetArgs);
+ }
+
+ public static Object tryToInvokeMethodOfClassAndMethodName(String className, String methodName,
+ Object[] args, Class[] argTypes)
+ {
+ Class targetClass = ClassUtils.tryToLoadClassForName(className);
+ Method targetMethod = tryToGetMethod(targetClass, methodName, argTypes);
+ return tryToInvokeMethodOfClass(targetClass, targetMethod, args);
+ }
+
public static Object tryToInvokeMethodOfClass(Class target, Method method, Object[] args)
{
try
Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ValidationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ValidationUtils.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ValidationUtils.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ValidationUtils.java Mon Sep 22 18:19:36 2008
@@ -23,17 +23,16 @@
import org.apache.myfaces.extensions.validator.core.annotation.AnnotationEntry;
import org.apache.myfaces.extensions.validator.core.annotation.extractor.AnnotationExtractor;
import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
-import org.apache.myfaces.extensions.validator.core.MetaDataExtractor;
-import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import java.util.Map;
/**
* @author Gerhard Petracek
+ * @since 1.x.1
*/
@UsageInformation(UsageCategory.INTERNAL)
public class ValidationUtils
@@ -71,36 +70,4 @@
}
}
}
-
- public static boolean isValueOfComponentRequired(FacesContext facesContext, UIComponent uiComponent)
- {
- if (!(uiComponent instanceof EditableValueHolder))
- {
- return false;
- }
-
- ValidationStrategy validationStrategy;
-
- AnnotationExtractor annotationExtractor = FactoryUtils
- .getAnnotationExtractorFactory().create();
- for (AnnotationEntry entry : annotationExtractor
- .extractAnnotations(facesContext, uiComponent))
- {
- validationStrategy = FactoryUtils
- .getValidationStrategyFactory().create(
- entry.getAnnotation());
-
- if (validationStrategy != null && validationStrategy instanceof MetaDataExtractor)
- {
- Map<String, Object> metaData = ((MetaDataExtractor)validationStrategy)
- .extractMetaData(entry.getAnnotation());
- if(metaData.containsKey("required"))
- {
- return (Boolean)metaData.get("required");
- }
- }
- }
-
- return false;
- }
}
Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/config/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/config/faces-config.xml?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/config/faces-config.xml (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/config/faces-config.xml Mon Sep 22 18:19:36 2008
@@ -21,7 +21,7 @@
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<lifecycle>
- <phase-listener>org.apache.myfaces.extensions.validator.InitStaticStrategyMappingsPhaseListener</phase-listener>
+ <phase-listener>org.apache.myfaces.extensions.validator.InitPropertyValidationModulePhaseListener</phase-listener>
</lifecycle>
<lifecycle>
Added: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/DefaultMyFacesComponentInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/DefaultMyFacesComponentInitializer.java?rev=698056&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/DefaultMyFacesComponentInitializer.java (added)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/DefaultMyFacesComponentInitializer.java Mon Sep 22 18:19:36 2008
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.validator;
+
+import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
+import org.apache.myfaces.extensions.validator.core.initializer.component.ComponentInitializer;
+
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.UIComponent;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import java.util.Map;
+
+/**
+ * @author Gerhard Petracek
+ * @since 1.x.1
+ */
+public class DefaultMyFacesComponentInitializer implements ComponentInitializer
+{
+ private static final String TRINIDAD_CORE_INPUT_TEXT
+ = "org.apache.myfaces.trinidad.component.core.input.CoreInputText";
+
+ public void configureComponent(FacesContext facesContext, UIComponent uiComponent, Map<String, Object> metaData)
+ {
+ configureRequiredAttribute(facesContext, uiComponent, metaData);
+ configureMaxLengthAttribute(facesContext, uiComponent, metaData);
+ }
+
+ protected void configureRequiredAttribute(FacesContext facesContext,
+ UIComponent uiComponent,
+ Map<String, Object> metaData)
+ {
+ if(metaData.containsKey("required"))
+ {
+ if((Boolean)metaData.get("required") && isComponentRequired( uiComponent ))
+ {
+ ((EditableValueHolder)uiComponent).setRequired(true);
+ }
+ }
+ }
+
+ /**
+ * if there is no special attribute at the component which should overrule
+ * the annotated property return true!
+ *
+ * @param uiComponent component which implements the EditableValueHolder interface
+ * @return false to overrule the annotated property e.g. if component is readonly
+ */
+ protected boolean isComponentRequired(UIComponent uiComponent)
+ {
+ if(uiComponent instanceof HtmlInputText)
+ {
+ HtmlInputText htmlInputText = (HtmlInputText)uiComponent;
+ return !(htmlInputText.isDisabled() || htmlInputText.isReadonly());
+ }
+ else if(TRINIDAD_CORE_INPUT_TEXT.equals(uiComponent.getClass().getName()))
+ {
+ return !(Boolean) ReflectionUtils
+ .tryToInvokeMethodOfClassAndMethodName(TRINIDAD_CORE_INPUT_TEXT, "isReadOnly");
+ }
+
+ return true;
+ }
+
+ private void configureMaxLengthAttribute(FacesContext facesContext,
+ UIComponent uiComponent,
+ Map<String, Object> metaData)
+ {
+ if(metaData.containsKey("max_length"))
+ {
+ int maxLength = (Integer)metaData.get("max_length");
+
+ if(uiComponent instanceof HtmlInputText)
+ {
+ HtmlInputText htmlInputText = (HtmlInputText)uiComponent;
+ htmlInputText.setMaxlength(maxLength);
+ }
+ else if(TRINIDAD_CORE_INPUT_TEXT.equals(uiComponent.getClass().getName()))
+ {
+ ReflectionUtils
+ .tryToInvokeMethodOfClassAndMethodName(TRINIDAD_CORE_INPUT_TEXT, "setMaximumLength",
+ new Object[] {maxLength}, new Class[] {int.class});
+ }
+
+ }
+ }
+}
Copied: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitPropertyValidationModulePhaseListener.java (from r697737, myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitStaticStrategyMappingsPhaseListener.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitPropertyValidationModulePhaseListener.java?p2=myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitPropertyValidationModulePhaseListener.java&p1=myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitStaticStrategyMappingsPhaseListener.java&r1=697737&r2=698056&rev=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitStaticStrategyMappingsPhaseListener.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/InitPropertyValidationModulePhaseListener.java Mon Sep 22 18:19:36 2008
@@ -20,17 +20,24 @@
import org.apache.myfaces.extensions.validator.baseval.WebXmlParameter;
import org.apache.myfaces.extensions.validator.core.AbstractStartupConfigListener;
+import org.apache.myfaces.extensions.validator.core.initializer.component.DefaultComponentInitializer;
import org.apache.myfaces.extensions.validator.util.ExtValUtils;
/**
* @author Gerhard Petracek
*/
-public class InitStaticStrategyMappingsPhaseListener extends
+public class InitPropertyValidationModulePhaseListener extends
AbstractStartupConfigListener
{
protected void init()
{
+ initStaticStrategyMappings();
+ initDefaultComponentInitializerName();
+ }
+
+ private void initStaticStrategyMappings()
+ {
String jpaBasedValidation = WebXmlParameter.DEACTIVATE_JPA_BASED_VALIDATION;
if (jpaBasedValidation == null
|| !jpaBasedValidation.equalsIgnoreCase("true"))
@@ -42,4 +49,9 @@
+ ".jpa_strategy_mappings");
}
}
+
+ private void initDefaultComponentInitializerName()
+ {
+ DefaultComponentInitializer.setComponentInitializer(new DefaultMyFacesComponentInitializer());
+ }
}
Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/JpaValidationStrategy.java Mon Sep 22 18:19:36 2008
@@ -81,6 +81,8 @@
{
results.put("required", true);
}
+
+ results.put("max_length", ((Column) annotation).length());
}
else if(annotation instanceof Basic)
{
Modified: myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java?rev=698056&r1=698055&r2=698056&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java (original)
+++ myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/strategy/LengthStrategy.java Mon Sep 22 18:19:36 2008
@@ -54,7 +54,8 @@
{
Map<String, Object> results = new HashMap<String, Object>();
int minimum = ((Length)annotation).minimum();
- results.put("length", minimum);
+ results.put("min_length", minimum);
+ results.put("max_length", ((Length)annotation).maximum());
if(minimum > 0)
{