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/03/08 22:24:48 UTC

svn commit: r920520 - in /myfaces/extensions/validator/branches/experimental/trunk_with_extval-83: core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/ validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/v...

Author: gpetracek
Date: Mon Mar  8 21:24:47 2010
New Revision: 920520

URL: http://svn.apache.org/viewvc?rev=920520&view=rev
Log:
EXTVAL-83 minor improvements

Modified:
    myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java
    myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/MappedConstraintSourceBeanValidationModuleValidationInterceptorInternals.java

Modified: myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java?rev=920520&r1=920519&r2=920520&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java (original)
+++ myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/core/src/main/java/org/apache/myfaces/extensions/validator/core/storage/DefaultMappedConstraintSourceStorage.java Mon Mar  8 21:24:47 2010
@@ -23,9 +23,11 @@
 import org.apache.myfaces.extensions.validator.core.property.PropertyDetails;
 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.ClassUtils;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.ResourceBundle;
 
 /**
  * @author Gerhard Petracek
@@ -36,36 +38,68 @@
 {
     protected final Log logger = LogFactory.getLog(getClass());
 
-    private Map<String, PropertyDetails> propertyDetailsMap = new HashMap<String, PropertyDetails>();
+    private Map<String, Map<String, PropertyDetails>> propertyDetailsMap =
+            new HashMap<String, Map<String, PropertyDetails>>();
 
     public void storeMapping(Class originalClass, String originalProperty, PropertyDetails targetPropertyDetails)
     {
+        if(targetPropertyDetails == null)
+        {
+            if(isFilteredClass(originalClass))
+            {
+                return;
+            }
+
+            Map<String, PropertyDetails> classMap = getMapForClass(originalClass);
+            classMap.put(originalProperty, null);
+            return;
+        }
+
         PropertyDetails propertyDetails = new PropertyDetails(targetPropertyDetails.getKey(),
                 targetPropertyDetails.getBaseObject(), targetPropertyDetails.getProperty());
 
-        this.propertyDetailsMap.put(createKey(originalClass, originalProperty), propertyDetails);
+        getMapForClass(originalClass).put(originalProperty, propertyDetails);
+    }
+
+    protected boolean isFilteredClass(Class originalClass)
+    {
+        return ResourceBundle.class.isAssignableFrom(originalClass);
     }
 
     public PropertyDetails getMappedConstraintSource(Class originalClass, String originalProperty)
     {
-        PropertyDetails foundEntry = this.propertyDetailsMap.get(createKey(originalClass, originalProperty));
-        PropertyDetails result = null;
+        if(isFilteredClass(originalClass))
+        {
+            return null;
+        }
+
+        PropertyDetails foundEntry = getMapForClass(originalClass).get(originalProperty);
 
-        if(foundEntry != null)
+        if(foundEntry == null)
         {
-            result = new PropertyDetails(foundEntry.getKey(), foundEntry.getBaseObject(), foundEntry.getProperty());
+            return null;
         }
-        
-        return result;
+
+        return new PropertyDetails(foundEntry.getKey(), foundEntry.getBaseObject(), foundEntry.getProperty());
     }
 
     public boolean containsMapping(Class originalClass, String originalProperty)
     {
-        return this.propertyDetailsMap.containsKey(createKey(originalClass, originalProperty));
+        if(isFilteredClass(originalClass))
+        {
+            //avoid scanning process
+            return true;
+        }
+        return getMapForClass(originalClass).containsKey(originalProperty);
     }
 
-    private String createKey(Class originalClass, String originalProperty)
+    private Map<String, PropertyDetails> getMapForClass(Class target)
     {
-        return originalClass.getName() + "#" + originalProperty;
+        String key = ClassUtils.getClassName(target);
+        if(!this.propertyDetailsMap.containsKey(key))
+        {
+            this.propertyDetailsMap.put(key, new HashMap<String, PropertyDetails>());
+        }
+        return this.propertyDetailsMap.get(key);
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/MappedConstraintSourceBeanValidationModuleValidationInterceptorInternals.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/MappedConstraintSourceBeanValidationModuleValidationInterceptorInternals.java?rev=920520&r1=920519&r2=920520&view=diff
==============================================================================
--- myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/MappedConstraintSourceBeanValidationModuleValidationInterceptorInternals.java (original)
+++ myfaces/extensions/validator/branches/experimental/trunk_with_extval-83/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/MappedConstraintSourceBeanValidationModuleValidationInterceptorInternals.java Mon Mar  8 21:24:47 2010
@@ -32,6 +32,7 @@
 import org.apache.myfaces.extensions.validator.internal.UsageCategory;
 import org.apache.myfaces.extensions.validator.internal.UsageInformation;
 import org.apache.myfaces.extensions.validator.util.ExtValUtils;
+import org.apache.myfaces.extensions.validator.util.ClassUtils;
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
@@ -47,6 +48,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.Set;
+import java.util.Collections;
 
 /**
  * @author Gerhard Petracek
@@ -112,6 +114,11 @@
         PropertyDetails constraintSourcePropertyDetails =
                 resolveMappedConstraintSourceFor(originalKey, baseBeanClass, propertyName);
 
+        if(constraintSourcePropertyDetails == null)
+        {
+            return Collections.emptySet();
+        }
+
         baseBeanClass = (Class) constraintSourcePropertyDetails.getBaseObject();
         propertyName = constraintSourcePropertyDetails.getProperty();
 
@@ -148,11 +155,18 @@
             return getMappedConstraintSource(baseBeanClass, property);
         }
 
+        //unproxy class
+        if(ClassUtils.isProxiedClass(baseBeanClass))
+        {
+            baseBeanClass = ClassUtils.tryToLoadClassForName(ClassUtils.getClassName(baseBeanClass));
+        }
+
         Class newBaseBeanClass = findMappedClass(baseBeanClass, property);
 
         //mapped source is ignored via @IgnoreConstraintSource or there is just no mapping annotation at the target
         if(newBaseBeanClass == null)
         {
+            tryToCacheMappedConstraintSourceMetaData(baseBeanClass, property, null);
             return null;
         }