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/06/23 01:04:21 UTC

svn commit: r957073 [2/3] - in /myfaces/extensions/validator/branches/branch_for_extval-100: component-support/generic-support/src/main/java/org/apache/myfaces/extensions/validator/generic/renderkit/ component-support/trinidad-support/src/main/java/org...

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKit.java Tue Jun 22 23:04:19 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/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRenderKitFactory.java Tue Jun 22 23:04:19 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/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/renderkit/ExtValRendererWrapper.java Tue Jun 22 23:04:19 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/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/AbstractStartupListener.java Tue Jun 22 23:04:19 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();

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/startup/ExtValStartupListener.java Tue Jun 22 23:04:19 2010
@@ -26,7 +26,8 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.core.interceptor.FacesMessagePropertyValidationInterceptor;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
 import org.apache.myfaces.extensions.validator.core.CustomInformation;
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
+import org.apache.myfaces.extensions.validator.core.DefaultExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.PhaseIdRecordingPhaseListener;
 import org.apache.myfaces.extensions.validator.core.metadata.transformer.mapper
         .BeanValidationStrategyToMetaDataTransformerNameMapper;
@@ -61,10 +62,6 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.core.validation.parameter.DefaultViolationSeverityInterpreter;
 import org.apache.myfaces.extensions.validator.core.validation.parameter.ViolationSeverity;
 import org.apache.myfaces.extensions.validator.core.validation.parameter.DisableClientSideValidation;
-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.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.myfaces.extensions.validator.util.JsfUtils;
@@ -79,6 +76,11 @@ public class ExtValStartupListener exten
 {
     private static final long serialVersionUID = -2504826421086572012L;
 
+    protected void initModuleConfig()
+    {
+        ExtValCoreConfiguration.use(new DefaultExtValCoreConfiguration(), false);
+    }
+
     protected void init()
     {
         if(ExtValInformation.VERSION != null)
@@ -100,15 +102,13 @@ public class ExtValStartupListener exten
         initViolationSeverityKey();
         initDisableClientSideValidationKey();
         initRequiredInitialization();
-        initDefaultConstraintSourceAnnotations();
 
         executeCustomStartupListener();
     }
 
     private void initNameMappers()
     {
-        String deactivateDefaultNameMappers = WebXmlParameter.DEACTIVATE_DEFAULT_NAME_MAPPERS;
-        if ((deactivateDefaultNameMappers != null && deactivateDefaultNameMappers.equalsIgnoreCase("true")))
+        if (ExtValCoreConfiguration.get().deactivateDefaultNameMappers())
         {
             return;
         }
@@ -201,50 +201,45 @@ public class ExtValStartupListener exten
         JsfUtils.registerPhaseListener(new PhaseIdRecordingPhaseListener());
     }
 
+    @Deprecated
     private void initViolationSeverityKey()
     {
-        ExtValContext.getContext().addGlobalProperty(ViolationSeverity.class.getName(), ViolationSeverity.class, false);
+        ExtValContext.getContext().addGlobalProperty(ViolationSeverity.class.getName(),
+                ExtValCoreConfiguration.get().violationSeverity(), false);
     }
 
+    @Deprecated
     private void initDisableClientSideValidationKey()
     {
-        ExtValContext.getContext().addGlobalProperty(
-                DisableClientSideValidation.class.getName(), DisableClientSideValidation.class, false);
+        ExtValContext.getContext().addGlobalProperty(DisableClientSideValidation.class.getName(),
+                ExtValCoreConfiguration.get().disableClientSideValidationValidationParameter(), false);
     }
 
     private void initRequiredInitialization()
     {
-        if(WebXmlParameter.ACTIVATE_REQUIRED_INITIALIZATION != null)
-        {
-            boolean requiredInitialization = "true".equalsIgnoreCase(WebXmlParameter.ACTIVATE_REQUIRED_INITIALIZATION);
+        boolean requiredInitialization = ExtValCoreConfiguration.get().activateRequiredInitialization();
 
-            ExtValContext.getContext().addGlobalProperty("mode:init:required", requiredInitialization, false);
+        //noinspection deprecation
+        addRequiredInitializationAsGlobalProperty(requiredInitialization);
 
-            if(requiredInitialization)
-            {
-                deactivateRequiredAttributeSupport();
-            }
-        }
+        initRequiredAttributeSupport();
     }
 
-    private void initDefaultConstraintSourceAnnotations()
+    @Deprecated
+    private void addRequiredInitializationAsGlobalProperty(boolean requiredInitialization)
     {
-        ExtValContext.getContext()
-                .addGlobalProperty(ConstraintSource.class.getName(), ConstraintSource.class, false);
-        ExtValContext.getContext()
-                .addGlobalProperty(IgnoreConstraintSource.class.getName(), IgnoreConstraintSource.class, false);
-        ExtValContext.getContext()
-                .addGlobalProperty(TargetProperty.class.getName(), TargetProperty.class, false);
-        ExtValContext.getContext()
-                .addGlobalProperty(TargetPropertyId.class.getName(), TargetPropertyId.class, false);
+        ExtValContext.getContext().addGlobalProperty("mode:init:required", requiredInitialization, false);
     }
 
     /**
      * if it's configured that required init should happen,
      * it's required to deactivate the support for the required attribute
      */
-    private void deactivateRequiredAttributeSupport()
+    @Deprecated
+    private void initRequiredAttributeSupport()
     {
-        ExtValContext.getContext().addGlobalProperty("mode:reset:required", Boolean.TRUE, false);
+        ExtValContext.getContext().addGlobalProperty("mode:reset:required",
+                ExtValCoreConfiguration.get().deactivateRequiredAttributeSupport(),
+                false);
     }
 }

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractApplicationScopeAwareStorageManager.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractApplicationScopeAwareStorageManager.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractApplicationScopeAwareStorageManager.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractApplicationScopeAwareStorageManager.java Tue Jun 22 23:04:19 2010
@@ -23,7 +23,7 @@ import static org.apache.myfaces.extensi
 
 import javax.faces.context.FacesContext;
 import java.util.Map;
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * generic storage manager implementation which stores the storage implementations in the application scope
@@ -41,8 +41,12 @@ public abstract class AbstractApplicatio
 
         if(!applicationMap.containsKey(getStorageManagerKey()))
         {
-            storageMap = new HashMap<String, T>();
-            applicationMap.put(getStorageManagerKey(), storageMap);
+            storageMap = new ConcurrentHashMap<String, T>();
+
+            synchronized (applicationMap)
+            {
+                applicationMap.put(getStorageManagerKey(), storageMap);
+            }
         }
 
         return (Map<String, T>)applicationMap.get(getStorageManagerKey());

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractStorageManager.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractStorageManager.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractStorageManager.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/AbstractStorageManager.java Tue Jun 22 23:04:19 2010
@@ -79,14 +79,17 @@ public abstract class AbstractStorageMan
 
         if(!storageMap.containsKey(storageKey))
         {
-            storageMap.put(storageKey, (T)ClassUtils.tryToInstantiateClassForName(storageClassName));
+            synchronized (storageMap)
+            {
+                storageMap.put(storageKey, (T)ClassUtils.tryToInstantiateClassForName(storageClassName));
+            }
         }
         return storageMap.get(storageKey);
     }
 
     protected abstract Map<String, T> resolveStorageMap();
 
-    public void reset(String storageKey)
+    public synchronized void reset(String storageKey)
     {
         Map<String, T> storageMap = resolveStorageMap();
 

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java Tue Jun 22 23:04:19 2010
@@ -22,10 +22,11 @@ import org.apache.myfaces.extensions.val
 import static org.apache.myfaces.extensions.validator.internal.UsageCategory.INTERNAL;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ProxyUtils;
+import org.apache.myfaces.extensions.validator.util.NullValueAwareConcurrentHashMap;
 
-import java.util.HashMap;
 import java.util.Map;
 import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 
 /**
@@ -38,7 +39,7 @@ public class DefaultMappedConstraintSour
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
     private Map<String, Map<String, PropertyDetails>> propertyDetailsMap =
-            new HashMap<String, Map<String, PropertyDetails>>();
+            new ConcurrentHashMap<String, Map<String, PropertyDetails>>();
 
     public void storeMapping(Class originalClass, String originalProperty, PropertyDetails targetPropertyDetails)
     {
@@ -97,8 +98,14 @@ public class DefaultMappedConstraintSour
         String key = ProxyUtils.getClassName(target);
         if(!this.propertyDetailsMap.containsKey(key))
         {
-            this.propertyDetailsMap.put(key, new HashMap<String, PropertyDetails>());
+            this.propertyDetailsMap
+                    .put(key, new NullValueAwareConcurrentHashMap<String, PropertyDetails>(createDefaultValue()));
         }
         return this.propertyDetailsMap.get(key);
     }
+
+    private PropertyDetails createDefaultValue()
+    {
+        return new PropertyDetails(null, null, null);
+    }
 }

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMetaDataStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMetaDataStorage.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMetaDataStorage.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMetaDataStorage.java Tue Jun 22 23:04:19 2010
@@ -27,16 +27,17 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.core.property.PropertyInformationKeys;
 import org.apache.myfaces.extensions.validator.core.property.DefaultPropertyInformation;
 import org.apache.myfaces.extensions.validator.core.metadata.MetaDataEntry;
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.CustomInformation;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ProxyUtils;
+import org.apache.myfaces.extensions.validator.util.NullValueAwareConcurrentHashMap;
 
 import java.util.Map;
-import java.util.HashMap;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 
 /**
@@ -49,7 +50,7 @@ public class DefaultMetaDataStorage impl
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
     private Map<String, Map<String, PropertyInformation>> cachedPropertyInformation =
-            new HashMap<String, Map<String, PropertyInformation>>();
+            new ConcurrentHashMap<String, Map<String, PropertyInformation>>();
 
     private List<MetaDataStorageFilter> metaDataStorageFilters = new ArrayList<MetaDataStorageFilter>();
     private List<Class<? extends MetaDataStorageFilter>> deniedMetaDataFilters =
@@ -65,7 +66,7 @@ public class DefaultMetaDataStorage impl
         List<String> metaDataStorageFilterClassNames = new ArrayList<String>();
 
         metaDataStorageFilterClassNames
-            .add(WebXmlParameter.CUSTOM_META_DATA_STORAGE_FILTER);
+            .add(ExtValCoreConfiguration.get().customMetaDataStorageFilterClassName());
         metaDataStorageFilterClassNames
             .add(ExtValContext.getContext().getInformationProviderBean().get(
                     CustomInformation.META_DATA_STORAGE_FILTER));
@@ -112,6 +113,11 @@ public class DefaultMetaDataStorage impl
     {
         PropertyInformation propertyInformation = getMapForClass(targetClass).get(targetProperty);
 
+        if(propertyInformation == null)
+        {
+            return new MetaDataEntry[]{};
+        }
+        
         PropertyInformation clonedPropertyInformation = new DefaultPropertyInformation();
         copyMetaData(propertyInformation, clonedPropertyInformation);
 
@@ -210,11 +216,17 @@ public class DefaultMetaDataStorage impl
         String key = ProxyUtils.getClassName(target);
         if(!this.cachedPropertyInformation.containsKey(key))
         {
-            this.cachedPropertyInformation.put(key, new HashMap<String, PropertyInformation>());
+            this.cachedPropertyInformation
+                    .put(key, new NullValueAwareConcurrentHashMap<String, PropertyInformation>(createDefaultValue()));
         }
         return this.cachedPropertyInformation.get(key);
     }
 
+    private PropertyInformation createDefaultValue()
+    {
+        return new DefaultPropertyInformation();
+    }
+
     private Class<? extends MetaDataStorageFilter> getStorageFilterClass(MetaDataStorageFilter storageFilter)
     {
         return ProxyUtils.getUnproxiedClass(storageFilter.getClass(), MetaDataStorageFilter.class);

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultPropertyStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultPropertyStorage.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultPropertyStorage.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultPropertyStorage.java Tue Jun 22 23:04:19 2010
@@ -24,8 +24,9 @@ import org.apache.myfaces.extensions.val
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.HashMap;
 import java.util.Map;
+import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 
 /**
@@ -37,15 +38,15 @@ public class DefaultPropertyStorage impl
 {
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
-    private Map<String, Map<String, Field>> fieldMap = new HashMap<String, Map<String, Field>>();
-    private Map<String, Map<String, Method>> methodMap = new HashMap<String, Map<String, Method>>();
+    private Map<String, Map<String, Field>> fieldMap = new ConcurrentHashMap<String, Map<String, Field>>();
+    private Map<String, Map<String, Method>> methodMap = new ConcurrentHashMap<String, Map<String, Method>>();
 
-    public void storeField(Class targetClass, String property, Field field)
+    public synchronized void storeField(Class targetClass, String property, Field field)
     {
         getFieldMapForClass(targetClass).put(property, field);
     }
 
-    public void storeMethod(Class targetClass, String property, Method method)
+    public synchronized void storeMethod(Class targetClass, String property, Method method)
     {
         getMethodMapForClass(targetClass).put(property,  method);
     }

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultStorageManagerFactory.java Tue Jun 22 23:04:19 2010
@@ -32,7 +32,7 @@ import static org.apache.myfaces.extensi
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 
 /**
@@ -49,7 +49,7 @@ public class DefaultStorageManagerFactor
 
     private boolean lazyStaticMappingApplied = false;
     private List<NameMapper<Class>> nameMapperList = new ArrayList<NameMapper<Class>>();
-    private Map<Class, StorageManager> storageTypeToStorageManagerMap = new HashMap<Class, StorageManager>();
+    private Map<Class, StorageManager> storageTypeToStorageManagerMap = new ConcurrentHashMap<Class, StorageManager>();
 
     public DefaultStorageManagerFactory()
     {
@@ -156,7 +156,7 @@ public class DefaultStorageManagerFactor
         return this.nameMapperList;
     }
 
-    public void setStorageManager(Class storageType, StorageManager storageManager, boolean override)
+    public synchronized void setStorageManager(Class storageType, StorageManager storageManager, boolean override)
     {
         if(!this.storageTypeToStorageManagerMap.containsKey(storageType) ||
                 (this.storageTypeToStorageManagerMap.containsKey(storageType) && override))

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/AbstractValidationErrorMessageResolver.java Tue Jun 22 23:04:19 2010
@@ -18,9 +18,9 @@
  */
 package org.apache.myfaces.extensions.validator.core.validation.message.resolver;
 
-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.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
@@ -46,7 +46,7 @@ public abstract class AbstractValidation
 
     protected final Logger logger = Logger.getLogger(getClass().getName());
 
-    private static String deactivateDefaultConvention = WebXmlParameter.DEACTIVATE_DEFAULT_CONVENTION;
+    private static boolean deactivateDefaultConvention = ExtValCoreConfiguration.get().deactivateDefaultConvention();
     private static ResourceBundle defaultBundle = null;
     private String messageBundleBaseName;
     //with jsf 1.1 only available if there is a custom bean
@@ -162,8 +162,7 @@ public abstract class AbstractValidation
 
     private String tryToUseMessageBundleConvention(String key, Locale locale)
     {
-        if ((deactivateDefaultConvention == null || !deactivateDefaultConvention.equalsIgnoreCase("true"))
-            && isDefaultMessageBundleConventionActive())
+        if ((deactivateDefaultConvention) && isDefaultMessageBundleConventionActive())
         {
             if (defaultBundle == null)
             {
@@ -175,7 +174,7 @@ public abstract class AbstractValidation
                 catch (Exception e)
                 {
                     //do nothing
-                    deactivateDefaultConvention = "true";
+                    deactivateDefaultConvention = true;
                 }
             }
 

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultMessageResolverFactory.java Tue Jun 22 23:04:19 2010
@@ -28,13 +28,13 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ProxyUtils;
+import org.apache.myfaces.extensions.validator.util.NullValueAwareConcurrentHashMap;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
 import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
@@ -106,7 +106,7 @@ public class DefaultMessageResolverFacto
 
     private synchronized void initStaticMappings()
     {
-        strategyMessageResolverMapping = new HashMap<String, String>();
+        strategyMessageResolverMapping = new NullValueAwareConcurrentHashMap<String, String>(String.class);
 
         //setup internal static mappings
         for (StaticConfiguration<String, String> staticConfig :

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultValidationErrorMessageResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultValidationErrorMessageResolver.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultValidationErrorMessageResolver.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/DefaultValidationErrorMessageResolver.java Tue Jun 22 23:04:19 2010
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.core.validation.message.resolver;
 
-import org.apache.myfaces.extensions.validator.core.WebXmlParameter;
 import org.apache.myfaces.extensions.validator.core.InternalConventionProvider;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 
@@ -33,7 +33,7 @@ import org.apache.myfaces.extensions.val
 @UsageInformation({UsageCategory.INTERNAL, UsageCategory.CUSTOMIZABLE})
 public class DefaultValidationErrorMessageResolver extends AbstractValidationErrorMessageResolver
 {
-    private static final String CUSTOM_BUNDLE = WebXmlParameter.CUSTOM_MESSAGE_BUNDLE;
+    private static final String CUSTOM_BUNDLE = ExtValCoreConfiguration.get().customMessageBundleBaseName();
 
     //not used at the moment - just for a convention
     protected String getBaseName()
@@ -45,4 +45,4 @@ public class DefaultValidationErrorMessa
     {
         return CUSTOM_BUNDLE;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/mapper/CustomConfiguredValidationStrategyToMsgResolverNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/mapper/CustomConfiguredValidationStrategyToMsgResolverNameMapper.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/mapper/CustomConfiguredValidationStrategyToMsgResolverNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/message/resolver/mapper/CustomConfiguredValidationStrategyToMsgResolverNameMapper.java Tue Jun 22 23:04:19 2010
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.core.validation.message.resolver.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.mapper.AbstractCustomNameMapper;
 import org.apache.myfaces.extensions.validator.core.validation.strategy.ValidationStrategy;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
@@ -40,6 +40,6 @@ public class CustomConfiguredValidationS
 
     protected String getCustomNameMapperClassName()
     {
-        return WebXmlParameter.CUSTOM_VALIDATION_STRATEGY_TO_MESSAGE_RESOLVER_NAME_MAPPER;
+        return ExtValCoreConfiguration.get().customValidationStrategyToMessageResolverNameMapperClassName();
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterExtractorFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterExtractorFactory.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterExtractorFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterExtractorFactory.java Tue Jun 22 23:04:19 2010
@@ -20,9 +20,9 @@ package org.apache.myfaces.extensions.va
 
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
-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 java.util.ArrayList;
@@ -51,7 +51,8 @@ public class DefaultValidationParameterE
         {
             List<String> validationParameterExtractorClassNames = new ArrayList<String>();
 
-            validationParameterExtractorClassNames.add(WebXmlParameter.CUSTOM_VALIDATION_PARAMETER_EXTRACTOR);
+            validationParameterExtractorClassNames
+                    .add(ExtValCoreConfiguration.get().customValidationParameterExtractorClassName());
             validationParameterExtractorClassNames
                 .add(ExtValContext.getContext().getInformationProviderBean()
                     .get(CustomInformation.VALIDATION_PARAMETER_EXTRACTOR));
@@ -73,4 +74,4 @@ public class DefaultValidationParameterE
 
         return validationParameterExtractor;
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterFactory.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/parameter/DefaultValidationParameterFactory.java Tue Jun 22 23:04:19 2010
@@ -27,7 +27,7 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -40,7 +40,7 @@ import java.util.Map;
 @UsageInformation(UsageCategory.INTERNAL)
 public class DefaultValidationParameterFactory implements ClassMappingFactory<Class, Class>
 {
-    private Map<Class, Class> parameterMapping = new HashMap<Class, Class>();
+    private Map<Class, Class> parameterMapping = new ConcurrentHashMap<Class, Class>();
 
     public Class create(Class source)
     {
@@ -120,4 +120,4 @@ public class DefaultValidationParameterF
     {
         this.parameterMapping.put(source, target);
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/DefaultValidationStrategyFactory.java Tue Jun 22 23:04:19 2010
@@ -20,9 +20,9 @@ package org.apache.myfaces.extensions.va
 
 import org.apache.myfaces.extensions.validator.core.factory.ClassMappingFactory;
 import org.apache.myfaces.extensions.validator.core.factory.AbstractNameMapperAwareFactory;
-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.mapper.NameMapper;
 import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfiguration;
 import org.apache.myfaces.extensions.validator.core.initializer.configuration.StaticConfigurationEntry;
@@ -32,13 +32,13 @@ import org.apache.myfaces.extensions.val
     .AnnotationToValidationStrategyBeanNameMapper;
 import org.apache.myfaces.extensions.validator.util.ClassUtils;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.util.NullValueAwareConcurrentHashMap;
 import org.apache.myfaces.extensions.validator.internal.ToDo;
 import org.apache.myfaces.extensions.validator.internal.Priority;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.MissingResourceException;
@@ -132,7 +132,7 @@ public class DefaultValidationStrategyFa
     @ToDo(value = Priority.MEDIUM, description = "logging")
     private synchronized void initStaticMappings()
     {
-        metaDataKeyToValidationStrategyMapping = new HashMap<String, String>();
+        metaDataKeyToValidationStrategyMapping = new NullValueAwareConcurrentHashMap<String, String>(String.class);
 
         //setup internal static mappings
         for (StaticConfiguration<String, String> staticConfig :
@@ -158,7 +158,7 @@ public class DefaultValidationStrategyFa
         }
 
         //setup custom mapping - overrides all other mappings
-        String customMappingBaseName = WebXmlParameter.CUSTOM_STATIC_VALIDATION_STRATEGY_MAPPING;
+        String customMappingBaseName = ExtValCoreConfiguration.get().customStaticValidationStrategyMappingSource();
         if (customMappingBaseName != null)
         {
             try

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/mapper/CustomConfiguredAnnotationToValidationStrategyNameMapper.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/mapper/CustomConfiguredAnnotationToValidationStrategyNameMapper.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/mapper/CustomConfiguredAnnotationToValidationStrategyNameMapper.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/core/validation/strategy/mapper/CustomConfiguredAnnotationToValidationStrategyNameMapper.java Tue Jun 22 23:04:19 2010
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator.core.validation.strategy.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.mapper.AbstractCustomNameMapper;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
@@ -38,6 +38,6 @@ public class CustomConfiguredAnnotationT
 {
     protected String getCustomNameMapperClassName()
     {
-        return WebXmlParameter.CUSTOM_META_DATA_TO_VALIDATION_STRATEGY_NAME_MAPPER;
+        return ExtValCoreConfiguration.get().customMetaDataToValidationStrategyNameMapperClassName();
     }
 }

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ConstraintSourceUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ConstraintSourceUtils.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ConstraintSourceUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ConstraintSourceUtils.java Tue Jun 22 23:04:19 2010
@@ -23,13 +23,9 @@ import java.lang.reflect.Field;
 import java.beans.Introspector;
 import java.lang.reflect.Method;
 
-import org.apache.myfaces.extensions.validator.core.ExtValContext;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
 import org.apache.myfaces.extensions.validator.core.storage.MappedConstraintSourceStorage;
-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.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
@@ -98,8 +94,8 @@ public final class ConstraintSourceUtils
 
     private static Class findMappedClass(Class baseBeanClass, String property)
     {
-        Class<? extends Annotation> constraintSourceAnnotationImplementation = (Class) ExtValContext.getContext()
-                .getGlobalProperty(ConstraintSource.class.getName());
+        Class<? extends Annotation> constraintSourceAnnotationImplementation = ExtValCoreConfiguration.get()
+                .constraintSourceAnnotation();
 
         Annotation foundConstraintSourceAnnotation = tryToGetAnnotationFromProperty(
                 baseBeanClass, property, constraintSourceAnnotationImplementation);
@@ -152,12 +148,12 @@ public final class ConstraintSourceUtils
 
     private static Class<? extends Annotation> getTargetPropertyAnnotationImplementation()
     {
-        return (Class) ExtValContext.getContext().getGlobalProperty(TargetProperty.class.getName());
+        return ExtValCoreConfiguration.get().targetPropertyAnnotation();
     }
 
     private static Class<? extends Annotation> getTargetPropertyIdAnnotationImplementation()
     {
-        return (Class) ExtValContext.getContext().getGlobalProperty(TargetPropertyId.class.getName());
+        return ExtValCoreConfiguration.get().targetPropertyIdAnnotation();
     }
 
     private static String extractNewPropertyName(Class targetClass, Annotation annotation)
@@ -284,7 +280,7 @@ public final class ConstraintSourceUtils
 
     private static Class<? extends Annotation> getIgnoreConstraintSourceAnnotationImplementation()
     {
-        return (Class) ExtValContext.getContext().getGlobalProperty(IgnoreConstraintSource.class.getName());
+        return (Class) ExtValCoreConfiguration.get().ignoreConstraintSourceAnnotation();
     }
 
     private static Annotation tryToGetAnnotationFromField(

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ExtValUtils.java Tue Jun 22 23:04:19 2010
@@ -19,7 +19,7 @@
 package org.apache.myfaces.extensions.validator.util;
 
 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.ValidationModuleKey;
 import org.apache.myfaces.extensions.validator.core.ProjectStageName;
 import org.apache.myfaces.extensions.validator.core.el.AbstractELHelperFactory;
@@ -532,7 +532,7 @@ public class ExtValUtils
 
     private static boolean isValidationParameterExtractionDeactivated()
     {
-        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_VALIDATION_PARAMETERS);
+        return ExtValCoreConfiguration.get().deactivateValidationParameters();
     }
 
     public static boolean executeLocalBeforeValidationInterceptors(FacesContext facesContext,
@@ -803,12 +803,12 @@ public class ExtValUtils
     public static boolean interpretEmptyStringValuesAsNull()
     {
         //to deactivate: the parameter has to be explicitly false
-        return !"false".equalsIgnoreCase(WebXmlParameter.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL);
+        return ExtValCoreConfiguration.get().interpretEmptyStringSubmittedValuesAsNull();
     }
 
     public static boolean validateEmptyFields()
     {
-        return !"false".equalsIgnoreCase(WebXmlParameter.VALIDATE_EMPTY_FIELDS);
+        return ExtValCoreConfiguration.get().validateEmptyFields();
     }
 
     public static PropertyDetails getPropertyDetails(PropertyInformation propertyInformation)
@@ -975,7 +975,7 @@ public class ExtValUtils
      */
     public static boolean isRequiredInitializationActive()
     {
-        return Boolean.TRUE.equals(ExtValContext.getContext().getGlobalProperty("mode:init:required"));
+        return ExtValCoreConfiguration.get().activateRequiredInitialization();
     }
 
     /**
@@ -987,7 +987,7 @@ public class ExtValUtils
      */
     public static boolean isRequiredResetActivated()
     {
-        return Boolean.TRUE.equals(ExtValContext.getContext().getGlobalProperty("mode:reset:required"));
+        return ExtValCoreConfiguration.get().deactivateRequiredAttributeSupport();
     }
 
     public static ProjectStageName getDefaultStageName()

Added: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/NullValueAwareConcurrentHashMap.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/NullValueAwareConcurrentHashMap.java?rev=957073&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/NullValueAwareConcurrentHashMap.java (added)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/NullValueAwareConcurrentHashMap.java Tue Jun 22 23:04:19 2010
@@ -0,0 +1,104 @@
+/*
+ * 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.util;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.Map;
+
+/**
+ * in some cases we have to store null values to avoid re-evaluation
+ * 
+ * @author Gerhard Petracek
+ */
+public class NullValueAwareConcurrentHashMap<K, V> extends ConcurrentHashMap<K, V>
+{
+    private static final long serialVersionUID = -7294527213622879543L;
+
+    private V nullMarkerValue;
+
+    protected NullValueAwareConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
+    {
+        super(initialCapacity, loadFactor, concurrencyLevel);
+    }
+
+    protected NullValueAwareConcurrentHashMap(int initialCapacity, float loadFactor)
+    {
+        super(initialCapacity, loadFactor);
+    }
+
+    protected NullValueAwareConcurrentHashMap(int initialCapacity)
+    {
+        super(initialCapacity);
+    }
+
+    protected NullValueAwareConcurrentHashMap(Map<? extends K, ? extends V> m)
+    {
+        super(m);
+    }
+
+    public NullValueAwareConcurrentHashMap(V nullMarkerValue)
+    {
+        this.nullMarkerValue = nullMarkerValue;
+    }
+
+    public NullValueAwareConcurrentHashMap(Class<? extends V> nullMarkerValueClass)
+    {
+        if(nullMarkerValueClass.getName().equals(Object.class.getName()))
+        {
+            //noinspection unchecked
+            nullMarkerValue = (V)new DefaultNullMarker();
+        }
+        else if(nullMarkerValueClass.getName().equals(String.class.getName()))
+        {
+            //noinspection unchecked
+            nullMarkerValue = (V)"{null}";
+        }
+        else
+        {
+            nullMarkerValue = ClassUtils.tryToInstantiateClass(nullMarkerValueClass);
+        }
+    }
+
+    @Override
+    public V put(K key, V value)
+    {
+        if(value == null)
+        {
+            return super.put(key, nullMarkerValue);
+        }
+        return super.put(key, value);
+    }
+
+    @Override
+    public V get(Object key)
+    {
+        V result = super.get(key);
+
+        if(nullMarkerValue.equals(result))
+        {
+            return null;
+        }
+
+        return result;
+    }
+
+    private class DefaultNullMarker
+    {
+    }
+}

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ProxyUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ProxyUtils.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ProxyUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/core/src/main/java/org/apache/myfaces/extensions/validator/util/ProxyUtils.java Tue Jun 22 23:04:19 2010
@@ -20,7 +20,7 @@ package org.apache.myfaces.extensions.va
 
 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.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 
@@ -73,26 +73,8 @@ public class ProxyUtils
                 return new DefaultProxyHelper();
             }
 
-            proxyHelper = createProxyHelper();
+            proxyHelper = ExtValCoreConfiguration.get().proxyHelper();
         }
         return proxyHelper;
     }
-
-    //don't use the default approach (factory finder) - ProxyHelper is called too often...
-    private static ProxyHelper createProxyHelper()
-    {
-        String customProxyHelperClassName = WebXmlParameter.CUSTOM_PROXY_HELPER;
-
-        ProxyHelper result = null;
-        if(customProxyHelperClassName != null && !"".equals(customProxyHelperClassName))
-        {
-            result = (ProxyHelper)ClassUtils.tryToInstantiateClassForName(customProxyHelperClassName);
-        }
-        if(result == null)
-        {
-            result = new DefaultProxyHelper();
-        }
-
-        return result;
-    }
 }

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/base-test-infrastructure/src/test/java/org/apache/myfaces/extensions/validator/test/base/AbstractExValTestCase.java Tue Jun 22 23:04:19 2010
@@ -30,7 +30,8 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.core.factory.DefaultFactoryFinder;
 import org.apache.myfaces.extensions.validator.core.factory.FactoryNames;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
-import org.apache.myfaces.extensions.validator.core.ProjectStageResolver;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
+import org.apache.myfaces.extensions.validator.core.DefaultExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.core.el.AbstractELHelperFactory;
 import org.apache.myfaces.extensions.validator.core.el.ELHelper;
 import org.apache.myfaces.shared_impl.config.MyfacesConfig;
@@ -174,10 +175,15 @@ public abstract class AbstractExValTestC
             private static final long serialVersionUID = -3861810605160281884L;
 
             @Override
+            protected void initModuleConfig()
+            {
+                ExtValCoreConfiguration.use(new DefaultExtValCoreConfiguration(), true);
+            }
+
+            @Override
             protected void init()
             {
-                ExtValContext.getContext()
-                        .addGlobalProperty(ProjectStageResolver.class.getName(), getProjectStageResolver(), false);
+                initModuleConfig();
                 super.init();
             }
         }.init();

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/AbstractBeanValidationTestCase.java Tue Jun 22 23:04:19 2010
@@ -41,6 +41,7 @@ public class AbstractBeanValidationTestC
             @Override
             protected void init()
             {
+                super.initModuleConfig();
                 super.init();
             }
         }.init();

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ConstraintSourceAwareValidation6TestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ConstraintSourceAwareValidation6TestCase.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ConstraintSourceAwareValidation6TestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/bean-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/beanval/ConstraintSourceAwareValidation6TestCase.java Tue Jun 22 23:04:19 2010
@@ -20,18 +20,16 @@ package org.apache.myfaces.extensions.va
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
-import org.apache.myfaces.extensions.validator.test.beanval.model.ConstraintSourceAware6Bean;
+import org.apache.myfaces.extensions.validator.core.DefaultExtValCoreConfiguration;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.test.beanval.custom.CustomConstraintSource;
 import org.apache.myfaces.extensions.validator.test.beanval.custom.CustomIgnoreConstraintSource;
 import org.apache.myfaces.extensions.validator.test.beanval.custom.CustomTargetProperty;
 import org.apache.myfaces.extensions.validator.test.beanval.custom.CustomTargetPropertyId;
-import org.apache.myfaces.extensions.validator.core.ExtValContext;
-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.test.beanval.model.ConstraintSourceAware6Bean;
 
 import javax.faces.application.FacesMessage;
+import java.lang.annotation.Annotation;
 
 /**
  * EXTVAL-83
@@ -59,12 +57,32 @@ public class ConstraintSourceAwareValida
     protected void setUp() throws Exception
     {
         super.setUp();
-        ExtValContext extValContext = ExtValContext.getContext();
 
-        extValContext.addGlobalProperty(ConstraintSource.class.getName(), CustomConstraintSource.class);
-        extValContext.addGlobalProperty(IgnoreConstraintSource.class.getName(), CustomIgnoreConstraintSource.class);
-        extValContext.addGlobalProperty(TargetProperty.class.getName(), CustomTargetProperty.class);
-        extValContext.addGlobalProperty(TargetPropertyId.class.getName(), CustomTargetPropertyId.class);
+        ExtValCoreConfiguration.use(new DefaultExtValCoreConfiguration() {
+            @Override
+            public Class<? extends Annotation> constraintSourceAnnotation()
+            {
+                return CustomConstraintSource.class;
+            }
+
+            @Override
+            public Class<? extends Annotation> ignoreConstraintSourceAnnotation()
+            {
+                return CustomIgnoreConstraintSource.class;
+            }
+
+            @Override
+            public Class<? extends Annotation> targetPropertyAnnotation()
+            {
+                return CustomTargetProperty.class;
+            }
+
+            @Override
+            public Class<? extends Annotation> targetPropertyIdAnnotation()
+            {
+                return CustomTargetPropertyId.class;
+            }
+        }, true);
     }
 
     public void testCustomAnnotations1()

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/core-tests/src/test/java/org/apache/myfaces/extensions/validator/test/core/stage/IndependentProjectStageTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/core-tests/src/test/java/org/apache/myfaces/extensions/validator/test/core/stage/IndependentProjectStageTestCase.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/core-tests/src/test/java/org/apache/myfaces/extensions/validator/test/core/stage/IndependentProjectStageTestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/core-tests/src/test/java/org/apache/myfaces/extensions/validator/test/core/stage/IndependentProjectStageTestCase.java Tue Jun 22 23:04:19 2010
@@ -49,51 +49,58 @@ public class IndependentProjectStageTest
     {
         super.setUp();
 
-        ExtValContext.getContext().addGlobalProperty(ProjectStageResolver.class.getName(), new DefaultProjectStageResolver()
+        ExtValCoreConfiguration.use(new DefaultExtValCoreConfiguration()
         {
             @Override
-            public ProjectStage getCurrentProjectStage()
+            public ProjectStageResolver projectStageResolver()
             {
-                String jsfProjectStageName = resolveProjectStageName("javax.faces.PROJECT_STAGE");
-                String independentProjectStageName = resolveProjectStageName(INDEPENDENT_PROJECT_STAGE);
-
-                if (!(jsfProjectStageName == null || "".equals(jsfProjectStageName)))
+                return new DefaultProjectStageResolver()
                 {
-                    ProjectStageName result = ProjectStage.createStageName(jsfProjectStageName.trim());
-                    for(JsfProjectStage jsfProjectStage : JsfProjectStage.values())
+                    @Override
+                    public ProjectStage getCurrentProjectStage()
                     {
-                        if(jsfProjectStage.getValue().equals(result))
+                        String jsfProjectStageName = resolveProjectStageName("javax.faces.PROJECT_STAGE");
+                        String independentProjectStageName = resolveProjectStageName(INDEPENDENT_PROJECT_STAGE);
+
+                        if (!(jsfProjectStageName == null || "".equals(jsfProjectStageName)))
                         {
-                            return ProjectStage.createStage(result);
+                            ProjectStageName result = ProjectStage.createStageName(jsfProjectStageName.trim());
+                            for (JsfProjectStage jsfProjectStage : JsfProjectStage.values())
+                            {
+                                if (jsfProjectStage.getValue().equals(result))
+                                {
+                                    return ProjectStage.createStage(result);
+                                }
+                            }
                         }
-                    }
-                }
-
-                if(!(independentProjectStageName == null || "".equals(independentProjectStageName)))
-                {
-                    ProjectStageName independentResult = ProjectStage.createStageName(independentProjectStageName.trim());
 
-                    //check jsf stage values first
-                    ProjectStageName result = ProjectStage.createStageName(independentProjectStageName.trim());
-                    for(JsfProjectStage jsfProjectStage : JsfProjectStage.values())
-                    {
-                        if(jsfProjectStage.getValue().equals(result))
+                        if (!(independentProjectStageName == null || "".equals(independentProjectStageName)))
                         {
-                            return ProjectStage.createStage(result);
+                            ProjectStageName independentResult = ProjectStage.createStageName(independentProjectStageName.trim());
+
+                            //check jsf stage values first
+                            ProjectStageName result = ProjectStage.createStageName(independentProjectStageName.trim());
+                            for (JsfProjectStage jsfProjectStage : JsfProjectStage.values())
+                            {
+                                if (jsfProjectStage.getValue().equals(result))
+                                {
+                                    return ProjectStage.createStage(result);
+                                }
+                            }
+
+                            //check custom stage values
+                            if (ProjectStage.createStageName(CUSTOM_DEV).equals(independentResult) ||
+                                    ProjectStage.createStageName(CUSTOM_TEST).equals(independentResult))
+                            {
+                                return ProjectStage.createStage(independentResult);
+                            }
                         }
-                    }
 
-                    //check custom stage values
-                    if(ProjectStage.createStageName(CUSTOM_DEV).equals(independentResult) ||
-                            ProjectStage.createStageName(CUSTOM_TEST).equals(independentResult))
-                    {
-                        return ProjectStage.createStage(independentResult);
+                        return createProjectStage(ProjectStage.createStageName(CUSTOM_PROD));
                     }
-                }
-
-                return createProjectStage(ProjectStage.createStageName(CUSTOM_PROD));
+                };
             }
-        });
+        }, true);
     }
 
     private String resolveProjectStageName(String parameterName)
@@ -113,7 +120,6 @@ public class IndependentProjectStageTest
     protected void tearDown() throws Exception
     {
         super.tearDown();
-        ExtValContext.getContext().addGlobalProperty(ProjectStageResolver.class.getName(), new DefaultProjectStageResolver());
     }
 
     public void testDevelopmentStage()
@@ -165,4 +171,4 @@ public class IndependentProjectStageTest
     {
         assertFalse(ProjectStage.is(ProjectStage.createStageName(CUSTOM_TEST)));
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/AbstractPropertyValidationTestCase.java Tue Jun 22 23:04:19 2010
@@ -40,6 +40,7 @@ public abstract class AbstractPropertyVa
             @Override
             protected void init()
             {
+                super.initModuleConfig();
                 super.init();
             }
         }.init();

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/constraintsource/ConstraintSourceAwareValidation6TestCase.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/constraintsource/ConstraintSourceAwareValidation6TestCase.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/constraintsource/ConstraintSourceAwareValidation6TestCase.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/test-modules/property-validation-tests/src/test/java/org/apache/myfaces/extensions/validator/test/propval/constraintsource/ConstraintSourceAwareValidation6TestCase.java Tue Jun 22 23:04:19 2010
@@ -1,21 +1,18 @@
 package org.apache.myfaces.extensions.validator.test.propval.constraintsource;
 
-import javax.faces.application.FacesMessage;
-
 import junit.framework.Test;
 import junit.framework.TestSuite;
-
-import org.apache.myfaces.extensions.validator.core.ExtValContext;
-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.DefaultExtValCoreConfiguration;
+import org.apache.myfaces.extensions.validator.core.ExtValCoreConfiguration;
 import org.apache.myfaces.extensions.validator.test.propval.constraintsource.custom.CustomConstraintSource;
 import org.apache.myfaces.extensions.validator.test.propval.constraintsource.custom.CustomIgnoreConstraintSource;
 import org.apache.myfaces.extensions.validator.test.propval.constraintsource.custom.CustomTargetProperty;
 import org.apache.myfaces.extensions.validator.test.propval.constraintsource.custom.CustomTargetPropertyId;
 import org.apache.myfaces.extensions.validator.test.propval.constraintsource.model.ConstraintSourceAware6Bean;
 
+import javax.faces.application.FacesMessage;
+import java.lang.annotation.Annotation;
+
 public class ConstraintSourceAwareValidation6TestCase extends
         AbstractConstraintSourceTestCase<ConstraintSourceAware6Bean>
 {
@@ -38,16 +35,31 @@ public class ConstraintSourceAwareValida
     protected void setUp() throws Exception
     {
         super.setUp();
-        ExtValContext extValContext = ExtValContext.getContext();
-
-        extValContext.addGlobalProperty(ConstraintSource.class.getName(),
-                CustomConstraintSource.class);
-        extValContext.addGlobalProperty(IgnoreConstraintSource.class.getName(),
-                CustomIgnoreConstraintSource.class);
-        extValContext.addGlobalProperty(TargetProperty.class.getName(),
-                CustomTargetProperty.class);
-        extValContext.addGlobalProperty(TargetPropertyId.class.getName(),
-                CustomTargetPropertyId.class);
+        ExtValCoreConfiguration.use(new DefaultExtValCoreConfiguration() {
+            @Override
+            public Class<? extends Annotation> constraintSourceAnnotation()
+            {
+                return CustomConstraintSource.class;
+            }
+
+            @Override
+            public Class<? extends Annotation> ignoreConstraintSourceAnnotation()
+            {
+                return CustomIgnoreConstraintSource.class;
+            }
+
+            @Override
+            public Class<? extends Annotation> targetPropertyAnnotation()
+            {
+                return CustomTargetProperty.class;
+            }
+
+            @Override
+            public Class<? extends Annotation> targetPropertyIdAnnotation()
+            {
+                return CustomTargetPropertyId.class;
+            }
+        }, true);
     }
 
     public void testCustomAnnotations1()

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/BeanValidationUtils.java Tue Jun 22 23:04:19 2010
@@ -221,7 +221,11 @@ public class BeanValidationUtils
         if (validatorFactory == null)
         {
             validatorFactory = Validation.buildDefaultValidatorFactory();
-            applicationMap.put(VALIDATOR_FACTORY_KEY, validatorFactory);
+
+            synchronized (applicationMap)
+            {
+                applicationMap.put(VALIDATOR_FACTORY_KEY, validatorFactory);
+            }
         }
         return validatorFactory;
     }

Modified: myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java?rev=957073&r1=957072&r2=957073&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java (original)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/PropertyValidationModuleStartupListener.java Tue Jun 22 23:04:19 2010
@@ -18,7 +18,8 @@
  */
 package org.apache.myfaces.extensions.validator;
 
-import org.apache.myfaces.extensions.validator.baseval.WebXmlParameter;
+import org.apache.myfaces.extensions.validator.baseval.ExtValBaseValidationModuleConfiguration;
+import org.apache.myfaces.extensions.validator.baseval.DefaultExtValBaseValidationModuleConfiguration;
 import org.apache.myfaces.extensions.validator.baseval.annotation.SkipValidationSupport;
 import org.apache.myfaces.extensions.validator.core.startup.AbstractStartupListener;
 import org.apache.myfaces.extensions.validator.core.ExtValContext;
@@ -44,6 +45,8 @@ import org.apache.myfaces.extensions.val
 import org.apache.myfaces.extensions.validator.crossval.storage.mapper.CrossValidationStorageNameMapper;
 import org.apache.myfaces.extensions.validator.crossval.storage.mapper.ProcessedInformationStorageNameMapper;
 import org.apache.myfaces.extensions.validator.crossval.CrossValidationPhaseListener;
+import org.apache.myfaces.extensions.validator.crossval.ExtValCrossValidationModuleConfiguration;
+import org.apache.myfaces.extensions.validator.crossval.DefaultExtValCrossValidationModuleConfiguration;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
 import org.apache.myfaces.extensions.validator.util.JsfUtils;
 
@@ -56,6 +59,12 @@ public class PropertyValidationModuleSta
 {
     private static final long serialVersionUID = -2474361612857222283L;
 
+    protected void initModuleConfig()
+    {
+        ExtValBaseValidationModuleConfiguration.use(new DefaultExtValBaseValidationModuleConfiguration(), false);
+        ExtValCrossValidationModuleConfiguration.use(new DefaultExtValCrossValidationModuleConfiguration(), false);
+    }
+    
     protected void init()
     {
         initProcessedInformationRecorders();
@@ -76,9 +85,7 @@ public class PropertyValidationModuleSta
 
     private void initStaticStrategyMappings()
     {
-        String jpaBasedValidation = WebXmlParameter.DEACTIVATE_JPA_BASED_VALIDATION;
-        if (jpaBasedValidation == null
-                || !jpaBasedValidation.equalsIgnoreCase("true"))
+        if (!ExtValBaseValidationModuleConfiguration.get().deactivateJpaBasedValidation())
         {
             StaticConfiguration<String, String> staticConfig = new StaticResourceBundleConfiguration();
             staticConfig.setSourceOfMapping(

Added: myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/DefaultExtValBaseValidationModuleConfiguration.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/DefaultExtValBaseValidationModuleConfiguration.java?rev=957073&view=auto
==============================================================================
--- myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/DefaultExtValBaseValidationModuleConfiguration.java (added)
+++ myfaces/extensions/validator/branches/branch_for_extval-100/validation-modules/property-validation/src/main/java/org/apache/myfaces/extensions/validator/baseval/DefaultExtValBaseValidationModuleConfiguration.java Tue Jun 22 23:04:19 2010
@@ -0,0 +1,40 @@
+/*
+ * 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.baseval;
+
+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 DefaultExtValBaseValidationModuleConfiguration extends ExtValBaseValidationModuleConfiguration
+{
+    public String jpaValidationErrorMessages()
+    {
+        return WebXmlParameter.VALIDATION_MESSAGES_JPA;
+    }
+
+    public boolean deactivateJpaBasedValidation()
+    {
+        return "true".equalsIgnoreCase(WebXmlParameter.DEACTIVATE_JPA_BASED_VALIDATION);
+    }
+}