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 2010/07/14 14:29:01 UTC

svn commit: r964028 [1/2] - in /myfaces/extensions/validator/trunk: component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/valida...

Author: gpetracek
Date: Wed Jul 14 12:28:59 2010
New Revision: 964028

URL: http://svn.apache.org/viewvc?rev=964028&view=rev
Log:
EXTVAL-100 sync with branch

Added:
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/DefaultExtValTrinidadSupportModuleConfiguration.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadSupportModuleConfiguration.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/DefaultExtValCoreConfiguration.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValCoreConfiguration.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfiguration.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/DefaultExtValBaseValidationModuleConfiguration.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/ExtValBaseValidationModuleConfiguration.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/DefaultExtValCrossValidationModuleConfiguration.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/ExtValCrossValidationModuleConfiguration.java
Modified:
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/WebXmlParameter.java
    myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/ExtValInformation.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInternals.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInvocationOrderAwareInternals.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/ProjectStage.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/el/DefaultELHelper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractorFactory.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValLazyRendererProxy.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractStorageManager.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMetaDataStorage.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultValidationErrorMessageResolver.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/mapper/CustomConfiguredValidationStrategyToMsgResolverNameMapper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterExtractorFactory.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/core/validation/strategy/mapper/CustomConfiguredAnnotationToValidationStrategyNameMapper.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ClassUtils.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ConstraintSourceUtils.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
    myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/util/ProxyUtils.java
    myfaces/extensions/validator/trunk/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java
    myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java
    myfaces/extensions/validator/trunk/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ConstraintSourceAwareValidation6TestCase.java
    myfaces/extensions/validator/trunk/test-modules/core-tests/src/test/java/org/apache/myfaces/extensions/validator/test/core/stage/IndependentProjectStageTestCase.java
    myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java
    myfaces/extensions/validator/trunk/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/constraintsource/ConstraintSourceAwareValidation6TestCase.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/WebXmlParameter.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/message/resolver/JpaValidationErrorMessageResolver.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/CrossValidationPhaseListener.java
    myfaces/extensions/validator/trunk/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/crossval/WebXmlParameter.java

Added: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/DefaultExtValTrinidadSupportModuleConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/DefaultExtValTrinidadSupportModuleConfiguration.java?rev=964028&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/DefaultExtValTrinidadSupportModuleConfiguration.java (added)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/DefaultExtValTrinidadSupportModuleConfiguration.java Wed Jul 14 12:28:59 2010
@@ -0,0 +1,49 @@
+/*
+ * 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.trinidad;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class DefaultExtValTrinidadSupportModuleConfiguration extends ExtValTrinidadSupportModuleConfiguration
+{
+    /*
+     * web.xml config
+     */
+
+    public boolean deactivateClientSideValidation()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_CLIENT_SIDE_TRINIDAD_VALIDATION);
+    }
+
+    public boolean deactivateCoreOutputLabelInitialization()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_TRINIDAD_CORE_OUTPUT_LABEL_INITIALIZATION);
+    }
+
+    public boolean deactivateValidationExceptionInterceptor()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_TRINIDAD_VALIDATION_EXCEPTION_INTERCEPTOR);
+    }
+}

Added: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadSupportModuleConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadSupportModuleConfiguration.java?rev=964028&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadSupportModuleConfiguration.java (added)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/ExtValTrinidadSupportModuleConfiguration.java Wed Jul 14 12:28:59 2010
@@ -0,0 +1,60 @@
+/*
+ * 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.trinidad;
+
+import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.ExtValModuleConfiguration;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public abstract class ExtValTrinidadSupportModuleConfiguration implements ExtValModuleConfiguration
+{
+    private static ExtValContext extValContext = ExtValContext.getContext();
+
+    protected ExtValTrinidadSupportModuleConfiguration()
+    {
+    }
+
+    public static ExtValTrinidadSupportModuleConfiguration get()
+    {
+        return extValContext.getModuleConfiguration(ExtValTrinidadSupportModuleConfiguration.class);
+    }
+
+    @UsageInformation(UsageCategory.INTERNAL)
+    public static boolean use(ExtValTrinidadSupportModuleConfiguration config, boolean forceOverride)
+    {
+        return extValContext.addModuleConfiguration(
+                ExtValTrinidadSupportModuleConfiguration.class, config, forceOverride);
+    }
+
+    /*
+     * web.xml config
+     */
+
+    public abstract boolean deactivateClientSideValidation();
+
+    public abstract boolean deactivateCoreOutputLabelInitialization();
+
+    public abstract boolean deactivateValidationExceptionInterceptor();
+}

Modified: myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/WebXmlParameter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/WebXmlParameter.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/WebXmlParameter.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/WebXmlParameter.java Wed Jul 14 12:28:59 2010
@@ -29,7 +29,7 @@ import org.apache.myfaces.extensions.val
  * @since 1.x.1
  */
 @UsageInformation(UsageCategory.INTERNAL)
-public interface WebXmlParameter
+interface WebXmlParameter
 {
     /*
      * deactivate

Modified: myfaces/extensions/validator/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/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/trinidad/startup/TrinidadModuleStartupListener.java Wed Jul 14 12:28:59 2010
@@ -20,12 +20,14 @@ package org.apache.myfaces.extensions.va
 
 import org.apache.myfaces.extensions.validator.core.startup.AbstractStartupListener;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.storage.StorageManagerHolder;
 import org.apache.myfaces.extensions.validator.core.renderkit.AbstractRenderKitWrapperFactory;
 import org.apache.myfaces.extensions.validator.core.renderkit.ExtValRendererProxy;
 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.ExtValTrinidadSupportModuleConfiguration;
+import org.apache.myfaces.extensions.validator.trinidad.DefaultExtValTrinidadSupportModuleConfiguration;
 import org.apache.myfaces.extensions.validator.trinidad.storage.TrinidadClientValidatorStorage;
 import org.apache.myfaces.extensions.validator.trinidad.storage.DefaultClientValidatorStorageManager;
 import org.apache.myfaces.extensions.validator.trinidad.validation.message.TrinidadFacesMessageFactory;
@@ -47,8 +49,15 @@ public class TrinidadModuleStartupListen
 {
     private static final long serialVersionUID = -8034089244903966999L;
 
+    protected void initModuleConfig()
+    {
+        ExtValTrinidadSupportModuleConfiguration.use(new DefaultExtValTrinidadSupportModuleConfiguration(), false);
+    }
+
     protected void init()
     {
+        initModuleConfig();
+
         deactivateDefaultExtValRenderKitWrapperFactory();
 
         initClientSideValidationSupport();
@@ -82,7 +91,7 @@ public class TrinidadModuleStartupListen
 
     private void initClientSideValidationSupport()
     {
-        if(isClientSideValidationSupportEnabled(WebXmlParameter.DEACTIVATE_CLIENT_SIDE_TRINIDAD_VALIDATION))
+        if(!ExtValTrinidadSupportModuleConfiguration.get().deactivateClientSideValidation())
         {
             ExtValContext.getContext().addComponentInitializer(new TrinidadComponentInitializer());
         }
@@ -90,7 +99,7 @@ public class TrinidadModuleStartupListen
 
     private void initLabelInitializationSupport()
     {
-        if(isLabelInitializationEnabled(WebXmlParameter.DEACTIVATE_TRINIDAD_CORE_OUTPUT_LABEL_INITIALIZATION))
+        if(!ExtValTrinidadSupportModuleConfiguration.get().deactivateCoreOutputLabelInitialization())
         {
             ExtValContext.getContext().registerRendererInterceptor(new TrinidadRendererInterceptor());
         }
@@ -98,7 +107,7 @@ public class TrinidadModuleStartupListen
 
     private void initValidationExceptionInterception()
     {
-        if(useValidationExceptionInterception(WebXmlParameter.DEACTIVATE_TRINIDAD_VALIDATION_EXCEPTION_INTERCEPTOR))
+        if(!ExtValTrinidadSupportModuleConfiguration.get().deactivateValidationExceptionInterceptor())
         {
             ExtValContext.getContext().addValidationExceptionInterceptor(new TrinidadValidationExceptionInterceptor());
         }
@@ -131,22 +140,6 @@ public class TrinidadModuleStartupListen
                         new DefaultClientValidatorStorageManager(), false);
     }
 
-    private boolean isLabelInitializationEnabled(String deactivateInitCoreOutputLabel)
-    {
-        return deactivateInitCoreOutputLabel == null || !deactivateInitCoreOutputLabel.equalsIgnoreCase("true");
-    }
-
-    private boolean isClientSideValidationSupportEnabled(String deactivateClientSideValidation)
-    {
-        return deactivateClientSideValidation == null || !deactivateClientSideValidation.equalsIgnoreCase("true");
-    }
-
-    private boolean useValidationExceptionInterception(String deactivateTrinidadValidationExceptionInterceptor)
-    {
-        return deactivateTrinidadValidationExceptionInterceptor == null ||
-                !deactivateTrinidadValidationExceptionInterceptor.equalsIgnoreCase("true");
-    }
-
     protected void initRequiredInitialization()
     {
         if(!isRequiredInitializationDeactivated())
@@ -160,7 +153,6 @@ public class TrinidadModuleStartupListen
 
     private boolean isRequiredInitializationDeactivated()
     {
-        return "false".equalsIgnoreCase(
-                org.apache.myfaces.extensions.validator.core.WebXmlParameter.ACTIVATE_REQUIRED_INITIALIZATION);
+        return !ExtValCoreConfiguration.get().activateRequiredInitialization();
     }
 }

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/ExtValInformation.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/ExtValInformation.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/ExtValInformation.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/ExtValInformation.java Wed Jul 14 12:28:59 2010
@@ -31,7 +31,8 @@ import org.apache.myfaces.extensions.val
 @UsageInformation(UsageCategory.INTERNAL)
 public interface ExtValInformation
 {
-    static final String EXTENSIONS_VALIDATOR_BASE_PACKAGE_NAME = ExtValInformation.class.getPackage().getName();
-    static final String WEBXML_PARAM_PREFIX = ExtValInformation.class.getPackage().getName();
+    // getPackage isn't working with a custom class loader
+    static final String EXTENSIONS_VALIDATOR_BASE_PACKAGE_NAME = ClassUtils.getPackageName(ExtValInformation.class);
+    static final String WEBXML_PARAM_PREFIX = ClassUtils.getPackageName(ExtValInformation.class);
     static final String VERSION = ClassUtils.getJarVersion(ExtValInformation.class);
 }

Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/DefaultExtValCoreConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/DefaultExtValCoreConfiguration.java?rev=964028&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/DefaultExtValCoreConfiguration.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/DefaultExtValCoreConfiguration.java Wed Jul 14 12:28:59 2010
@@ -0,0 +1,271 @@
+/*
+ * 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;
+
+import org.apache.myfaces.extensions.validator.core.proxy.ProxyHelper;
+import org.apache.myfaces.extensions.validator.core.proxy.DefaultProxyHelper;
+import org.apache.myfaces.extensions.validator.core.renderkit.ExtValRendererProxy;
+import org.apache.myfaces.extensions.validator.core.validation.ConstraintSource;
+import org.apache.myfaces.extensions.validator.core.validation.IgnoreConstraintSource;
+import org.apache.myfaces.extensions.validator.core.validation.TargetProperty;
+import org.apache.myfaces.extensions.validator.core.validation.TargetPropertyId;
+import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
+import org.apache.myfaces.extensions.validator.core.validation.parameter.ValidationParameter;
+import org.apache.myfaces.extensions.validator.core.validation.parameter.ViolationSeverity;
+import org.apache.myfaces.extensions.validator.util.ClassUtils;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import java.lang.annotation.Annotation;
+
+/**
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public class DefaultExtValCoreConfiguration extends ExtValCoreConfiguration
+{
+    public String customMessageBundleBaseName()
+    {
+        return WebXmlParameter.CUSTOM_MESSAGE_BUNDLE;
+    }
+
+    public String customBasePackage()
+    {
+        return WebXmlParameter.CUSTOM_BASE_PACKAGE;
+    }
+
+    public String customInformationProviderBeanClassName()
+    {
+        return WebXmlParameter.CUSTOM_INFORMATION_PROVIDER_BEAN;
+    }
+
+    public String customComponentMetaDataExtractorClassName()
+    {
+        return WebXmlParameter.CUSTOM_COMPONENT_META_DATA_EXTRACTOR;
+    }
+
+    public String customValidationParameterExtractorClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_PARAMETER_EXTRACTOR;
+    }
+
+    public String customStaticValidationStrategyMappingSource()
+    {
+        return WebXmlParameter.CUSTOM_STATIC_VALIDATION_STRATEGY_MAPPING;
+    }
+
+    public String customComponentInitializerClassName()
+    {
+        return WebXmlParameter.CUSTOM_COMPONENT_INITIALIZER;
+    }
+
+    public String customValidationExceptionInterceptorClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_EXCEPTION_INTERCEPTOR;
+    }
+
+    public String customPropertyValidationInterceptorClassName()
+    {
+        return WebXmlParameter.CUSTOM_PROPERTY_VALIDATION_INTERCEPTOR;
+    }
+
+    public String customMetaDataExtractionInterceptorClassName()
+    {
+        return WebXmlParameter.CUSTOM_META_DATA_EXTRACTION_INTERCEPTOR;
+    }
+
+    public ProxyHelper proxyHelper()
+    {
+        String customProxyHelperClassName = WebXmlParameter.CUSTOM_PROXY_HELPER;
+
+        if (customProxyHelperClassName != null && !"".equals(customProxyHelperClassName))
+        {
+            return (ProxyHelper) ClassUtils.tryToInstantiateClassForName(customProxyHelperClassName);
+        }
+
+        return new DefaultProxyHelper();
+    }
+
+    public ProjectStageResolver projectStageResolver()
+    {
+        return new DefaultProjectStageResolver();
+    }
+
+    public Class<? extends ExtValRendererProxy> rendererProxy()
+    {
+        String proxyClassName = (String) ExtValContext.getContext().getGlobalProperty(ExtValRendererProxy.KEY);
+
+        if (proxyClassName != null && !proxyClassName.endsWith(getClass().getName()))
+        {
+            Class<? extends ExtValRendererProxy> targetClass = ClassUtils.tryToLoadClassForName(proxyClassName);
+
+            if (targetClass == null)
+            {
+                throw new IllegalStateException("a custom invalid renderer proxy is configured: " + proxyClassName);
+            }
+
+            return targetClass;
+        }
+
+        return null;
+    }
+
+    public Class violationSeverity()
+    {
+        return ViolationSeverity.class;
+    }
+
+    public String customValidationStrategyToMessageResolverNameMapperClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_STRATEGY_TO_MESSAGE_RESOLVER_NAME_MAPPER;
+    }
+
+    public String customMetaDataToValidationStrategyNameMapperClassName()
+    {
+        return WebXmlParameter.CUSTOM_META_DATA_TO_VALIDATION_STRATEGY_NAME_MAPPER;
+    }
+
+    public String customValidationStrategyToMetaDataTransformerNameMapperClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_NAME_MAPPER;
+    }
+
+    public String customMetaDataStorageFilterClassName()
+    {
+        return WebXmlParameter.CUSTOM_META_DATA_STORAGE_FILTER;
+    }
+
+    public String customValidationStrategyFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_STRATEGY_FACTORY;
+    }
+
+    public String customMessageResolverFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_MESSAGE_RESOLVER_FACTORY;
+    }
+
+    public String customComponentMetaDataExtractorFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_COMPONENT_META_DATA_EXTRACTOR_FACTORY;
+    }
+
+    public String customValidationParameterExtractorFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_PARAMETER_EXTRACTOR_FACTORY;
+    }
+
+    public String customValidationParameterFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_VALIDATION_PARAMETER_FACTORY;
+    }
+
+    public String customMetaDataTransformerFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_META_DATA_TRANSFORMER_FACTORY;
+    }
+
+    public String customStorageManagerFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_STORAGE_MANAGER_FACTORY;
+    }
+
+    public String customFacesMessageFactoryClassName()
+    {
+        return WebXmlParameter.CUSTOM_FACES_MESSAGE_FACTORY;
+    }
+
+    public Class<? extends Annotation> constraintSourceAnnotation()
+    {
+        return ConstraintSource.class;
+    }
+
+    public Class<? extends Annotation> ignoreConstraintSourceAnnotation()
+    {
+        return IgnoreConstraintSource.class;
+    }
+
+    public Class<? extends Annotation> targetPropertyAnnotation()
+    {
+        return TargetProperty.class;
+    }
+
+    public Class<? extends Annotation> targetPropertyIdAnnotation()
+    {
+        return TargetPropertyId.class;
+    }
+
+    public Class<? extends ValidationParameter> disableClientSideValidationValidationParameter()
+    {
+        return DisableClientSideValidation.class;
+    }
+
+    public boolean activateRequiredInitialization()
+    {
+        return WebXmlParameter.ACTIVATE_REQUIRED_INITIALIZATION != null &&
+                "true".equalsIgnoreCase(WebXmlParameter.ACTIVATE_REQUIRED_INITIALIZATION.trim());
+    }
+
+    public boolean deactivateDefaultConvention()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_DEFAULT_CONVENTION);
+    }
+
+    public boolean deactivateDefaultNameMappers()
+    {
+        String deactivateDefaultNameMappers = WebXmlParameter.DEACTIVATE_DEFAULT_NAME_MAPPERS;
+        return deactivateDefaultNameMappers != null && deactivateDefaultNameMappers.trim().equalsIgnoreCase("true");
+    }
+
+    public boolean deactivateElResolver()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_EL_RESOLVER);
+    }
+
+    public boolean deactivateComponentInitialization()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_COMPONENT_INITIALIZATION);
+    }
+
+    public boolean deactivateValidationParameters()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_VALIDATION_PARAMETERS);
+    }
+
+    public boolean deactivateRenderKitFactory()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_RENDER_KIT_FACTORY);
+    }
+
+    public boolean deactivateRequiredAttributeSupport()
+    {
+        return activateRequiredInitialization();
+    }
+
+    public boolean interpretEmptyStringSubmittedValuesAsNull()
+    {
+        return !"false".equalsIgnoreCase(WebXmlParameter.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL);
+    }
+
+    public boolean validateEmptyFields()
+    {
+        return !"false".equalsIgnoreCase(WebXmlParameter.VALIDATE_EMPTY_FIELDS);
+    }
+}

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java Wed Jul 14 12:28:59 2010
@@ -46,6 +46,8 @@ import java.util.concurrent.CopyOnWriteA
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 
+import static org.apache.myfaces.extensions.validator.util.WebXmlUtils.getInitParameter;
+
 /**
  * @author Gerhard Petracek
  * @since 1.x.1
@@ -61,6 +63,9 @@ public class ExtValContext
     private static final String CUSTOM_EXTVAL_CONTEXT_CLASS_NAME =
             ExtValContext.class.getName().replace(".core.", ".custom.");
 
+    private static final String CUSTOM_EXTVAL_MODULE_CONFIGURATION_RESOLVER_CLASS_NAME =
+            ExtValModuleConfigurationResolver.class.getName().replace(".core.", ".custom.");
+
     private ViolationSeverityInterpreter violationSeverityInterpreter;
     private FactoryFinder factoryFinder = DefaultFactoryFinder.getInstance();
     private Map<String, RendererInterceptor> rendererInterceptors =
@@ -73,6 +78,11 @@ public class ExtValContext
 
     private Map<String, Object> globalProperties = new HashMap<String, Object>();
 
+    private Map<Class<? extends ExtValModuleConfiguration>, ExtValModuleConfiguration> extValConfig =
+            new ConcurrentHashMap<Class<? extends ExtValModuleConfiguration>, ExtValModuleConfiguration>();
+
+    private ExtValModuleConfigurationResolver defaultModuleConfigurationResolver;
+
     private Map<StaticConfigurationNames, List<StaticConfiguration<String, String>>> staticConfigMap
             = new HashMap<StaticConfigurationNames, List<StaticConfiguration<String, String>>>();
 
@@ -83,6 +93,30 @@ public class ExtValContext
     {
         this.contextHelper = new ExtValContextInternals();
         this.invocationOrderAwareContextHelper = new ExtValContextInvocationOrderAwareInternals(this.contextHelper);
+
+        Object customExtValModuleConfigurationResolver =
+                ClassUtils.tryToInstantiateClassForName(CUSTOM_EXTVAL_MODULE_CONFIGURATION_RESOLVER_CLASS_NAME);
+
+        if(customExtValModuleConfigurationResolver instanceof ExtValModuleConfigurationResolver)
+        {
+            this.defaultModuleConfigurationResolver =
+                    (ExtValModuleConfigurationResolver)customExtValModuleConfigurationResolver;
+        }
+
+        String customExtValModuleConfigurationResolverClassName =
+                getInitParameter(null, ExtValModuleConfigurationResolver.class.getName());
+
+        if(customExtValModuleConfigurationResolverClassName != null)
+        {
+            customExtValModuleConfigurationResolver =
+                    ClassUtils.tryToInstantiateClassForName(customExtValModuleConfigurationResolverClassName);
+
+            if(customExtValModuleConfigurationResolver instanceof ExtValModuleConfigurationResolver)
+            {
+                this.defaultModuleConfigurationResolver =
+                        (ExtValModuleConfigurationResolver)customExtValModuleConfigurationResolver;
+            }
+        }
     }
 
     public static ExtValContext getContext()
@@ -408,4 +442,82 @@ public class ExtValContext
     {
         return this.globalProperties.get(name);
     }
+    
+    public <T extends ExtValModuleConfiguration> T getModuleConfiguration(Class<T> targetType)
+    {
+        ExtValModuleConfiguration result = this.extValConfig.get(targetType);
+
+        //noinspection unchecked
+        return (T)result;
+    }
+
+    public boolean addModuleConfiguration(Class<? extends ExtValModuleConfiguration> key,
+                                          ExtValModuleConfiguration extValConfig)
+    {
+        return addModuleConfiguration(key, extValConfig, true);
+    }
+
+    public boolean addModuleConfiguration(Class<? extends ExtValModuleConfiguration> key,
+                                          ExtValModuleConfiguration config,
+                                          boolean forceOverride)
+    {
+        if (this.extValConfig.containsKey(key))
+        {
+            if (!forceOverride)
+            {
+                return false;
+            }
+
+            this.logger.info("override config for key '" + config.getClass() + "'");
+        }
+
+        //anonymous class are only supported for test-cases and
+        //there we don't need a custom config defined in the web.xml
+        if(!config.getClass().isAnonymousClass())
+        {
+            config = tryToLoadCustomConfigImplementation(config);
+        }
+
+        this.extValConfig.put(key, config);
+
+        if(JsfProjectStage.is(JsfProjectStage.Development))
+        {
+            this.logger.info("config for key [" + config.getClass() + "] added");
+        }
+
+        return true;
+    }
+
+    private ExtValModuleConfiguration tryToLoadCustomConfigImplementation(ExtValModuleConfiguration config)
+    {
+
+        Class configClass = config.getClass().getSuperclass();
+
+        if(!ExtValModuleConfiguration.class.isAssignableFrom(configClass))
+        {
+            return config;
+        }
+
+        @SuppressWarnings({"unchecked"})
+        Class<? extends ExtValModuleConfiguration> configDefinitionClass =
+                (Class<? extends  ExtValModuleConfiguration>)configClass;
+
+        if(this.defaultModuleConfigurationResolver != null)
+        {
+            config = this.defaultModuleConfigurationResolver.getCustomConfiguration(configDefinitionClass);
+        }
+
+        String customConfigClassName = getInitParameter(null, configDefinitionClass.getName());
+
+        if(customConfigClassName != null)
+        {
+            Object customConfig = ClassUtils.tryToInstantiateClassForName(customConfigClassName);
+
+            if(customConfig instanceof ExtValModuleConfiguration)
+            {
+                return (ExtValModuleConfiguration)customConfig;
+            }
+        }
+        return config;
+    }
 }

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInternals.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInternals.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInternals.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInternals.java Wed Jul 14 12:28:59 2010
@@ -39,15 +39,15 @@ class ExtValContextInternals
 {
     boolean isComponentInitializationActivated()
     {
-        return !"true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_COMPONENT_INITIALIZATION);
+        return !ExtValCoreConfiguration.get().deactivateComponentInitialization();
     }
 
     @SuppressWarnings({"unchecked"})
-    InformationProviderBean initInformationProviderBean(Map applicationMap)
+    synchronized InformationProviderBean initInformationProviderBean(Map applicationMap)
     {
         List<String> informationProviderBeanClassNames = new ArrayList<String>();
 
-        informationProviderBeanClassNames.add(WebXmlParameter.CUSTOM_INFORMATION_PROVIDER_BEAN);
+        informationProviderBeanClassNames.add(ExtValCoreConfiguration.get().customInformationProviderBeanClassName());
         informationProviderBeanClassNames.add(InformationProviderBean.CUSTOM_BEAN);
 
         InformationProviderBean informationProviderBean;
@@ -72,7 +72,7 @@ class ExtValContextInternals
     }
 
     @SuppressWarnings({"unchecked"})
-    void tryToInitCustomConfiguredInformationProviderBeanClassName(Map applicationMap)
+    synchronized void tryToInitCustomConfiguredInformationProviderBeanClassName(Map applicationMap)
     {
         InformationProviderBean bean = (InformationProviderBean) ExtValUtils.getELHelper()
                 .getBean(InformationProviderBean.CUSTOM_BEAN.replace(".", "_"));

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInvocationOrderAwareInternals.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInvocationOrderAwareInternals.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInvocationOrderAwareInternals.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContextInvocationOrderAwareInternals.java Wed Jul 14 12:28:59 2010
@@ -273,7 +273,7 @@ class ExtValContextInvocationOrderAwareI
         List<String> validationExceptionInterceptorClassNames = new ArrayList<String>();
 
         validationExceptionInterceptorClassNames
-                .add(WebXmlParameter.CUSTOM_VALIDATION_EXCEPTION_INTERCEPTOR);
+                .add(ExtValCoreConfiguration.get().customValidationExceptionInterceptorClassName());
         validationExceptionInterceptorClassNames
                 .add(this.contextHelper.getInformationProviderBean().get(
                         CustomInformation.VALIDATION_EXCEPTION_INTERCEPTOR));
@@ -309,7 +309,7 @@ class ExtValContextInvocationOrderAwareI
         List<String> metaDataExtractionInterceptorClassNames = new ArrayList<String>();
 
         metaDataExtractionInterceptorClassNames
-                .add(WebXmlParameter.CUSTOM_META_DATA_EXTRACTION_INTERCEPTOR);
+                .add(ExtValCoreConfiguration.get().customMetaDataExtractionInterceptorClassName());
         metaDataExtractionInterceptorClassNames
                 .add(this.contextHelper.getInformationProviderBean().get(
                         CustomInformation.META_DATA_EXTRACTION_INTERCEPTOR));
@@ -338,7 +338,7 @@ class ExtValContextInvocationOrderAwareI
         componentInitializers = new CopyOnWriteArrayList<ComponentInitializer>();
         List<String> componentInitializerClassNames = new ArrayList<String>();
         componentInitializerClassNames
-                .add(WebXmlParameter.CUSTOM_COMPONENT_INITIALIZER);
+                .add(ExtValCoreConfiguration.get().customComponentInitializerClassName());
         componentInitializerClassNames
                 .add(this.contextHelper.getInformationProviderBean().get(CustomInformation.COMPONENT_INITIALIZER));
 
@@ -372,7 +372,7 @@ class ExtValContextInvocationOrderAwareI
         List<String> validationInterceptorClassNames = new ArrayList<String>();
 
         validationInterceptorClassNames
-                .add(WebXmlParameter.CUSTOM_PROPERTY_VALIDATION_INTERCEPTOR);
+                .add(ExtValCoreConfiguration.get().customPropertyValidationInterceptorClassName());
         validationInterceptorClassNames
                 .add(this.contextHelper.getInformationProviderBean().get(
                         CustomInformation.PROPERTY_VALIDATION_INTERCEPTOR));

Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValCoreConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValCoreConfiguration.java?rev=964028&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValCoreConfiguration.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValCoreConfiguration.java Wed Jul 14 12:28:59 2010
@@ -0,0 +1,188 @@
+/*
+ * 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;
+
+import org.apache.myfaces.extensions.validator.core.proxy.ProxyHelper;
+import org.apache.myfaces.extensions.validator.core.renderkit.ExtValRendererProxy;
+import org.apache.myfaces.extensions.validator.core.validation.parameter.ValidationParameter;
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+import java.lang.annotation.Annotation;
+import java.util.logging.Logger;
+
+/**
+ * 'custom' as prefix is used for 'optional' configurations. that means
+ * if a method returns null extval uses a different approach to find an implementation e.g. via a naming convention
+ * -> all other methods aren't allowed to return null if there is no additional rule
+ *
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public abstract class ExtValCoreConfiguration implements ExtValModuleConfiguration
+{
+    private static ExtValContext extValContext = ExtValContext.getContext();
+
+    private static final Logger LOGGER = Logger.getLogger(ExtValCoreConfiguration.class.getName());
+
+    private static final String MISSING_MODULE_CONFIG_MESSAGE =
+            "no config for " + ExtValCoreConfiguration.class.getName() + " found. " +
+            "maybe the call of ExtValCoreConfig#get is triggered before the registration process." +
+            "the default config gets used.";
+
+    protected ExtValCoreConfiguration()
+    {
+    }
+
+    public static ExtValCoreConfiguration get()
+    {
+        ExtValCoreConfiguration moduleConfig = extValContext.getModuleConfiguration(ExtValCoreConfiguration.class);
+
+        if(moduleConfig == null)
+        {
+            LOGGER.fine(MISSING_MODULE_CONFIG_MESSAGE);
+        }
+        return moduleConfig != null ? moduleConfig : new DefaultExtValCoreConfiguration();
+    }
+
+    @UsageInformation(UsageCategory.INTERNAL)
+    public static boolean use(ExtValCoreConfiguration config, boolean forceOverride)
+    {
+        return extValContext.addModuleConfiguration(ExtValCoreConfiguration.class, config, forceOverride);
+    }
+
+    /*
+     * web.xml config
+     */
+    public abstract String customMessageBundleBaseName();
+
+    public abstract String customBasePackage();
+
+    public abstract String customInformationProviderBeanClassName();
+
+    public abstract String customComponentMetaDataExtractorClassName();
+
+    public abstract String customValidationParameterExtractorClassName();
+
+    public abstract String customStaticValidationStrategyMappingSource();
+
+    public abstract String customComponentInitializerClassName();
+
+    public abstract String customValidationExceptionInterceptorClassName();
+
+    public abstract String customPropertyValidationInterceptorClassName();
+
+    public abstract String customMetaDataExtractionInterceptorClassName();
+
+    /*
+     * others
+     */
+    public abstract ProxyHelper proxyHelper();
+
+    public abstract ProjectStageResolver projectStageResolver();
+
+    public abstract Class<? extends ExtValRendererProxy> rendererProxy();
+
+    /*
+     * ConstraintSource
+     */
+
+    public abstract Class<? extends Annotation> constraintSourceAnnotation();
+
+    public abstract Class<? extends Annotation> ignoreConstraintSourceAnnotation();
+
+    public abstract Class<? extends Annotation> targetPropertyAnnotation();
+
+    public abstract Class<? extends Annotation> targetPropertyIdAnnotation();
+
+    /*
+     * validation parameter
+     */
+
+    public abstract Class violationSeverity();
+
+    public abstract Class<? extends ValidationParameter> disableClientSideValidationValidationParameter();
+
+    /*
+     * name mapper
+     */
+    public abstract String customValidationStrategyToMessageResolverNameMapperClassName();
+
+    public abstract String customMetaDataToValidationStrategyNameMapperClassName();
+
+    public abstract String customValidationStrategyToMetaDataTransformerNameMapperClassName();
+
+    /*
+     * filter
+     */
+    public abstract String customMetaDataStorageFilterClassName();
+
+    /*
+     * factories
+     */
+    public abstract String customValidationStrategyFactoryClassName();
+
+    public abstract String customMessageResolverFactoryClassName();
+
+    public abstract String customComponentMetaDataExtractorFactoryClassName();
+
+    public abstract String customValidationParameterExtractorFactoryClassName();
+
+    public abstract String customValidationParameterFactoryClassName();
+
+    public abstract String customMetaDataTransformerFactoryClassName();
+
+    public abstract String customStorageManagerFactoryClassName();
+
+    public abstract String customFacesMessageFactoryClassName();
+
+    /*
+     * activate
+     */
+    public abstract boolean activateRequiredInitialization();
+
+    /*
+     * deactivate
+     */
+    //currently just used by AbstractValidationErrorMessageResolver
+    public abstract boolean deactivateDefaultConvention();
+
+    public abstract boolean deactivateDefaultNameMappers();
+
+    public abstract boolean deactivateElResolver();
+
+    public abstract boolean deactivateComponentInitialization();
+
+    public abstract boolean deactivateValidationParameters();
+
+    public abstract boolean deactivateRenderKitFactory();
+
+    //there is nothing like DEACTIVATE_DEFAULT_VALIDATION_INTERCEPTOR
+    //use ExtValContext.getContext().denyRendererInterceptor(...) within an extval-StartupListener
+
+    public abstract boolean deactivateRequiredAttributeSupport();
+
+    /*
+     * spec parameters
+     */
+    public abstract boolean interpretEmptyStringSubmittedValuesAsNull();
+
+    public abstract boolean validateEmptyFields();
+}

Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfiguration.java?rev=964028&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfiguration.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfiguration.java Wed Jul 14 12:28:59 2010
@@ -0,0 +1,31 @@
+/*
+ * 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;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation(UsageCategory.INTERNAL)
+public interface ExtValModuleConfiguration
+{
+}

Added: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java?rev=964028&view=auto
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java (added)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValModuleConfigurationResolver.java Wed Jul 14 12:28:59 2010
@@ -0,0 +1,32 @@
+/*
+ * 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;
+
+import org.apache.myfaces.extensions.validator.internal.UsageInformation;
+import org.apache.myfaces.extensions.validator.internal.UsageCategory;
+
+/**
+ * @author Gerhard Petracek
+ * @since r4
+ */
+@UsageInformation({UsageCategory.API, UsageCategory.CUSTOMIZABLE})
+public interface ExtValModuleConfigurationResolver
+{
+    <T extends ExtValModuleConfiguration> ExtValModuleConfiguration getCustomConfiguration(Class<T> configType);
+}

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=964028&r1=964027&r2=964028&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 Wed Jul 14 12:28:59 2010
@@ -19,11 +19,11 @@
 package org.apache.myfaces.extensions.validator.core;
 
 import org.apache.myfaces.extensions.validator.ExtValInformation;
+import org.apache.myfaces.extensions.validator.util.NullValueAwareConcurrentHashMap;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
 import java.util.Map;
-import java.util.HashMap;
 import java.util.logging.Logger;
 
 /**
@@ -55,11 +55,12 @@ public class InformationProviderBean
         applyCustomValues(this.customizableInfos);
     }
 
-    private Map<CustomInformation, String> customizableInfos = new HashMap<CustomInformation, String>();
+    private Map<CustomInformation, String> customizableInfos =
+            new NullValueAwareConcurrentHashMap<CustomInformation, String>(String.class);
 
     private void setupCustomizableInformation()
     {
-        String basePackage = WebXmlParameter.CUSTOM_BASE_PACKAGE;
+        String basePackage = ExtValCoreConfiguration.get().customBasePackage();
 
         if (basePackage == null)
         {

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ProjectStage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ProjectStage.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ProjectStage.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/ProjectStage.java Wed Jul 14 12:28:59 2010
@@ -56,12 +56,11 @@ public class ProjectStage
     private static ProjectStageName getCurrentProjectStage()
     {
         //set ProjectStageResolver to null to tweak the performance
-        Object projectStageResolver = ExtValContext.getContext()
-                .getGlobalProperty(ProjectStageResolver.class.getName());
+        ProjectStageResolver projectStageResolver = ExtValCoreConfiguration.get().projectStageResolver();
 
-        if(projectStageResolver instanceof ProjectStageResolver)
+        if(projectStageResolver != null)
         {
-            return ((ProjectStageResolver)projectStageResolver).getCurrentProjectStage().getValue();
+            return (projectStageResolver).getCurrentProjectStage().getValue();
         }
         return ExtValUtils.getDefaultStageName();
     }

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=964028&r1=964027&r2=964028&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 Wed Jul 14 12:28:59 2010
@@ -29,7 +29,7 @@ import org.apache.myfaces.extensions.val
  * @since 1.x.1
  */
 @UsageInformation(UsageCategory.INTERNAL)
-public interface WebXmlParameter
+interface WebXmlParameter
 {
     /*
      * misc
@@ -121,10 +121,6 @@ public interface WebXmlParameter
     /*
      * deactivate
      */
-    @Deprecated
-    static final String DEACTIVATE_RENDERKIT = WebXmlUtils
-        .getInitParameter("DEACTIVATE_RENDERKIT");
-
     //currently just used by AbstractValidationErrorMessageResolver
     static final String DEACTIVATE_DEFAULT_CONVENTION = WebXmlUtils
         .getInitParameter("DEACTIVATE_DEFAULT_CONVENTION");

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/el/DefaultELHelper.java Wed Jul 14 12:28:59 2010
@@ -24,8 +24,8 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.extensions.validator.util.ReflectionUtils;
 import org.apache.myfaces.extensions.validator.util.ProxyUtils;
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.ExtValInformation;
 
 import javax.el.ValueExpression;
@@ -54,7 +54,7 @@ import java.util.logging.Logger;
 @UsageInformation(UsageCategory.INTERNAL)
 public class DefaultELHelper implements ELHelper
 {
-    private static final String DEACTIVATE_EL_RESOLVER = WebXmlParameter.DEACTIVATE_EL_RESOLVER;
+    private static final boolean DEACTIVATE_EL_RESOLVER = ExtValCoreConfiguration.get().deactivateElResolver();
 
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
@@ -143,7 +143,7 @@ public class DefaultELHelper implements 
 
     public PropertyDetails getPropertyDetailsOfValueBinding(UIComponent uiComponent)
     {
-        if("true".equalsIgnoreCase(DEACTIVATE_EL_RESOLVER))
+        if(DEACTIVATE_EL_RESOLVER)
         {
             return getPropertyDetailsViaReflectionFallback(uiComponent);
         }

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/factory/DefaultFactoryFinder.java Wed Jul 14 12:28:59 2010
@@ -23,9 +23,9 @@ import org.apache.myfaces.extensions.val
 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;
 import org.apache.myfaces.extensions.validator.core.CustomInformation;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.storage.DefaultStorageManagerFactory;
 import org.apache.myfaces.extensions.validator.core.el.DefaultELHelperFactory;
 import org.apache.myfaces.extensions.validator.core.renderkit.DefaultRenderKitWrapperFactory;
@@ -140,7 +140,7 @@ public class DefaultFactoryFinder implem
 
         List<String> metaDataExtractorFactoryClassNames = new ArrayList<String>();
 
-        metaDataExtractorFactoryClassNames.add(WebXmlParameter.CUSTOM_COMPONENT_META_DATA_EXTRACTOR_FACTORY);
+        metaDataExtractorFactoryClassNames.add(getCoreConfig().customComponentMetaDataExtractorFactoryClassName());
         metaDataExtractorFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                 .get(CustomInformation.COMPONENT_META_DATA_EXTRACTOR_FACTORY));
@@ -165,7 +165,7 @@ public class DefaultFactoryFinder implem
 
         List<String> validationStrategyFactoryClassNames = new ArrayList<String>();
 
-        validationStrategyFactoryClassNames.add(WebXmlParameter.CUSTOM_VALIDATION_STRATEGY_FACTORY);
+        validationStrategyFactoryClassNames.add(getCoreConfig().customValidationStrategyFactoryClassName());
         validationStrategyFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                     .get(CustomInformation.VALIDATION_STRATEGY_FACTORY));
@@ -190,7 +190,7 @@ public class DefaultFactoryFinder implem
         Object factory = null;
         List<String> messageResolverFactoryClassNames = new ArrayList<String>();
 
-        messageResolverFactoryClassNames.add(WebXmlParameter.CUSTOM_MESSAGE_RESOLVER_FACTORY);
+        messageResolverFactoryClassNames.add(getCoreConfig().customMessageResolverFactoryClassName());
         messageResolverFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                     .get(CustomInformation.MESSAGE_RESOLVER_FACTORY));
@@ -216,7 +216,7 @@ public class DefaultFactoryFinder implem
         Object factory = null;
         List<String> metaDataTransformerFactoryClassNames = new ArrayList<String>();
 
-        metaDataTransformerFactoryClassNames.add(WebXmlParameter.CUSTOM_META_DATA_TRANSFORMER_FACTORY );
+        metaDataTransformerFactoryClassNames.add(getCoreConfig().customMetaDataTransformerFactoryClassName());
         metaDataTransformerFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                     .get(CustomInformation.META_DATA_TRANSFORMER_FACTORY));
@@ -247,7 +247,7 @@ public class DefaultFactoryFinder implem
 
         List<String> facesMessageFactoryClassNames = new ArrayList<String>();
 
-        facesMessageFactoryClassNames.add(WebXmlParameter.CUSTOM_FACES_MESSAGE_FACTORY);
+        facesMessageFactoryClassNames.add(getCoreConfig().customFacesMessageFactoryClassName());
         facesMessageFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                     .get(CustomInformation.FACES_MESSAGE_FACTORY));
@@ -285,7 +285,7 @@ public class DefaultFactoryFinder implem
         List<String> validationParameterExtractorFactoryClassNames = new ArrayList<String>();
 
         validationParameterExtractorFactoryClassNames
-                .add(WebXmlParameter.CUSTOM_VALIDATION_PARAMETER_EXTRACTOR_FACTORY);
+                .add(getCoreConfig().customValidationParameterExtractorFactoryClassName());
         validationParameterExtractorFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                 .get(CustomInformation.VALIDATION_PARAMETER_EXTRACTOR_FACTORY));
@@ -310,7 +310,7 @@ public class DefaultFactoryFinder implem
         List<String> storageManagerFactoryClassNames = new ArrayList<String>();
 
         storageManagerFactoryClassNames
-                .add(WebXmlParameter.CUSTOM_STORAGE_MANAGER_FACTORY);
+                .add(getCoreConfig().customStorageManagerFactoryClassName());
         storageManagerFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                 .get(CustomInformation.STORAGE_MANAGER_FACTORY));
@@ -335,7 +335,7 @@ public class DefaultFactoryFinder implem
         List<String> validationParameterFactoryClassNames = new ArrayList<String>();
 
         validationParameterFactoryClassNames
-                .add(WebXmlParameter.CUSTOM_VALIDATION_PARAMETER_FACTORY);
+                .add(getCoreConfig().customValidationParameterFactoryClassName());
         validationParameterFactoryClassNames
             .add(ExtValContext.getContext().getInformationProviderBean()
                 .get(CustomInformation.VALIDATION_PARAMETER_FACTORY));
@@ -353,4 +353,8 @@ public class DefaultFactoryFinder implem
         return factory;
     }
 
+    private ExtValCoreConfiguration getCoreConfig()
+    {
+        return ExtValCoreConfiguration.get();
+    }
 }

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/interceptor/AbstractValidationInterceptor.java Wed Jul 14 12:28:59 2010
@@ -21,8 +21,8 @@ package org.apache.myfaces.extensions.va
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.ValidationModuleKey;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.metadata.extractor.MetaDataExtractor;
 import org.apache.myfaces.extensions.validator.core.property.PropertyInformation;
 import org.apache.myfaces.extensions.validator.core.storage.RendererInterceptorPropertyStorage;
@@ -254,7 +254,7 @@ public abstract class AbstractValidation
 
     private boolean isComponentInitializationDeactivated()
     {
-        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_COMPONENT_INITIALIZATION);
+        return ExtValCoreConfiguration.get().deactivateComponentInitialization();
     }
 
     protected boolean recordProcessedInformation()

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractorFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractorFactory.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractorFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/extractor/DefaultComponentMetaDataExtractorFactory.java Wed Jul 14 12:28:59 2010
@@ -18,9 +18,9 @@
  */
 package org.apache.myfaces.extensions.validator.core.metadata.extractor;
 
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
 import org.apache.myfaces.extensions.validator.core.CustomInformation;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
@@ -71,7 +71,7 @@ public class DefaultComponentMetaDataExt
         {
             List<String> metaDataExtractorClassNames = new ArrayList<String>();
 
-            metaDataExtractorClassNames.add(WebXmlParameter.CUSTOM_COMPONENT_META_DATA_EXTRACTOR);
+            metaDataExtractorClassNames.add(ExtValCoreConfiguration.get().customComponentMetaDataExtractorClassName());
             metaDataExtractorClassNames
                 .add(ExtValContext.getContext().getInformationProviderBean()
                     .get(CustomInformation.COMPONENT_META_DATA_EXTRACTOR));

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/metadata/transformer/mapper/CustomConfiguredValidationStrategyToMetaDataTransformerNameMapper.java Wed Jul 14 12:28:59 2010
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper;
 
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.InvocationOrder;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.core.mapper.AbstractCustomNameMapper;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
@@ -39,6 +39,6 @@ public class CustomConfiguredValidationS
 {
     protected String getCustomNameMapperClassName()
     {
-        return WebXmlParameter.CUSTOM_VALIDATION_STRATEGY_TO_META_DATA_TRANSFORMER_NAME_MAPPER;
+        return ExtValCoreConfiguration.get().customValidationStrategyToMetaDataTransformerNameMapperClassName();
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValLazyRendererProxy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValLazyRendererProxy.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValLazyRendererProxy.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValLazyRendererProxy.java Wed Jul 14 12:28:59 2010
@@ -20,8 +20,7 @@ package org.apache.myfaces.extensions.va
 
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
-import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.util.ClassUtils;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 
 import javax.faces.context.FacesContext;
 import javax.faces.render.Renderer;
@@ -109,17 +108,10 @@ class ExtValLazyRendererProxy extends Re
 
     private Renderer getLazyRenderer()
     {
-        String proxyClassName = (String) ExtValContext.getContext().getGlobalProperty(ExtValRendererProxy.KEY);
+        Class<? extends Renderer> targetClass = ExtValCoreConfiguration.get().rendererProxy();
 
-        if(proxyClassName != null && !proxyClassName.endsWith(getClass().getName()))
+        if(targetClass != null)
         {
-            Class targetClass = ClassUtils.tryToLoadClassForName(proxyClassName);
-
-            if(targetClass == null)
-            {
-                throw new IllegalStateException("a custom invalid renderer proxy is configured: " + proxyClassName);
-            }
-
             Class[] argClasses = new Class[1];
             argClasses[0] = Renderer.class;
 

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java Wed Jul 14 12:28:59 2010
@@ -68,8 +68,6 @@ public class ExtValRenderKit extends Ren
             return renderer instanceof ExtValRendererWrapper ? renderer : createWrapper(renderer);
         }
 
-        this.logger.finest("no renderer found for family " + family + " and type " + rendererType);
-
         return renderer;
     }
 

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java Wed Jul 14 12:28:59 2010
@@ -21,7 +21,7 @@ package org.apache.myfaces.extensions.va
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -99,7 +99,7 @@ public class ExtValRenderKitFactory exte
 
             if(this.defaultRenderKitWrapperFactory.isApplicationInitialized())
             {
-                this.isDeactivated = isRenderKitFactoryDeactivatedViaWebXml();
+                this.isDeactivated = isRenderKitFactoryDeactivated();
             }
             else
             {
@@ -149,9 +149,9 @@ public class ExtValRenderKitFactory exte
         return this.wrapped.getRenderKitIds();
     }
 
-    private boolean isRenderKitFactoryDeactivatedViaWebXml()
+    private boolean isRenderKitFactoryDeactivated()
     {
-        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_RENDER_KIT_FACTORY);
+        return ExtValCoreConfiguration.get().deactivateRenderKitFactory();
     }
 
     private boolean isRenderKitFactoryDeactivatedViaVMParameter()

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java Wed Jul 14 12:28:59 2010
@@ -22,10 +22,10 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.core.interceptor.RendererInterceptor;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.renderkit.exception.SkipBeforeInterceptorsException;
 import org.apache.myfaces.extensions.validator.core.renderkit.exception.SkipAfterInterceptorsException;
 import org.apache.myfaces.extensions.validator.core.renderkit.exception.SkipRendererDelegationException;
-import org.apache.myfaces.extensions.validator.util.ClassUtils;
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -59,19 +59,9 @@ public class ExtValRendererWrapper exten
 
     public ExtValRendererWrapper(Renderer renderer)
     {
-        String proxyClassName = (String)ExtValContext.getContext().getGlobalProperty(ExtValRendererProxy.KEY);
+        Class<? extends ExtValRendererProxy> proxyClass = ExtValCoreConfiguration.get().rendererProxy();
 
-        if(proxyClassName == null)
-        {
-            logger.finest("no extval renderer proxy configured");
-
-            this.wrapped = new ExtValLazyRendererProxy(renderer);
-            return;
-        }
-
-        Class targetClass = ClassUtils.tryToLoadClassForName(proxyClassName);
-
-        if(targetClass == null)
+        if(proxyClass == null)
         {
             logger.finest("no extval renderer proxy configured");
 
@@ -84,7 +74,7 @@ public class ExtValRendererWrapper exten
 
         try
         {
-            Constructor constructor = targetClass.getConstructor(argClasses);
+            Constructor constructor = proxyClass.getConstructor(argClasses);
             this.wrapped = (Renderer)constructor.newInstance(renderer);
         }
         catch (Throwable t)

Modified: myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java?rev=964028&r1=964027&r2=964028&view=diff
==============================================================================
--- myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java (original)
+++ myfaces/extensions/validator/trunk/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java Wed Jul 14 12:28:59 2010
@@ -25,7 +25,7 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
 import org.apache.myfaces.extensions.validator.core.ProjectStageResolver;
-import org.apache.myfaces.extensions.validator.core.DefaultProjectStageResolver;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
@@ -76,6 +76,8 @@ public abstract class AbstractStartupLis
                     {
                         if(!isStartupListenerDeactivated())
                         {
+                            initModuleConfig();
+
                             initProjectStageResolver();
 
                             init();
@@ -109,6 +111,11 @@ public abstract class AbstractStartupLis
         }
     }
 
+    protected void initModuleConfig()
+    {
+        //override if needed
+    }
+
     public PhaseId getPhaseId()
     {
         return PhaseId.RESTORE_VIEW;
@@ -132,7 +139,7 @@ public abstract class AbstractStartupLis
 
     protected ProjectStageResolver getProjectStageResolver()
     {
-        return new DefaultProjectStageResolver();
+        return ExtValCoreConfiguration.get().projectStageResolver();
     }
 
     protected abstract void init();