You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2010/01/15 17:44:15 UTC

svn commit: r899696 - in /myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting: jsf/dynamicdecorators/implemetations/ApplicationProxy.java jsf2/annotation/ValidatorImplementationListener.java

Author: werpu
Date: Fri Jan 15 16:44:15 2010
New Revision: 899696

URL: http://svn.apache.org/viewvc?rev=899696&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-46

adding improved rescanning for the validators

Modified:
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java?rev=899696&r1=899695&r2=899696&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java Fri Jan 15 16:44:15 2010
@@ -415,7 +415,7 @@
 
     public void addValidator(String validatorId, String validatorClass) {
         weaveDelegate();
-        if (validatorClass.equals(PurgedValidator.class.getName())) {
+/*        if (validatorClass.equals(PurgedValidator.class.getName())) {
             //purged case we do a full rescane
             WeavingContext.getWeaver().fullClassScan();
             Validator componentToChange = _delegate.createValidator(validatorId);
@@ -426,7 +426,7 @@
 
             }
             return;
-        }
+        } */
         _delegate.addValidator(validatorId, validatorClass);
     }
 
@@ -434,6 +434,9 @@
         weaveDelegate();
 
         Validator retVal = _delegate.createValidator(validatorId);
+
+        //TODO purge error assert here
+
         //the validators are recreated every request we do not have to deal with them on method level
         Validator newRetVal = (Validator) reloadInstance(retVal, ScriptingConst.ARTIFACT_TYPE_VALIDATOR);
         if (newRetVal != retVal) {

Modified: myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java?rev=899696&r1=899695&r2=899696&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java (original)
+++ myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf2/annotation/ValidatorImplementationListener.java Fri Jan 15 16:44:15 2010
@@ -22,6 +22,7 @@
 import org.apache.myfaces.scripting.jsf2.annotation.purged.PurgedValidator;
 
 import javax.faces.validator.FacesValidator;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -34,6 +35,7 @@
     private static final String PAR_VALUE = "value";
     private static final String PAR_DEFAULT = "isDefault";
 
+    Map<AnnotationEntry, String> _inverseIndex = new HashMap<AnnotationEntry, String>();
 
     public ValidatorImplementationListener() {
         /*supported annotation parameters rendererType and default*/
@@ -49,7 +51,6 @@
             this.theDefault = theDefault;
         }
 
-
         public boolean equals(Object incoming) {
             if (!(incoming instanceof AnnotationEntry)) {
                 return false;
@@ -66,6 +67,20 @@
             return firstEquals && secondEquals;
         }
 
+        @Override
+        public int hashCode() {
+            String retVal = checkForNull(value) + "_" + checkForNull(theDefault);
+            return retVal.hashCode();
+        }
+
+        private String checkForNull(String in) {
+            return (in == null) ? "" : in;
+        }
+
+        private String checkForNull(Boolean in) {
+            return (in == null) ? "" : String.valueOf(in.booleanValue());
+        }
+
         protected boolean compareValuePair(Object val1, Object val2) {
             boolean retVal = false;
             if (val1 == null) {
@@ -88,12 +103,10 @@
         }
     }
 
-
     public boolean supportsAnnotation(String annotation) {
         return annotation.equals(FacesValidator.class.getName());
     }
 
-
     @Override
     protected void addEntity(Class clazz, Map<String, Object> params) {
         String value = (String) params.get(PAR_VALUE);
@@ -101,11 +114,11 @@
 
         AnnotationEntry entry = new AnnotationEntry(value, theDefault);
         _alreadyRegistered.put(clazz.getName(), entry);
+        _inverseIndex.put(entry, clazz.getName());
 
         getApplication().addValidator(entry.getValue(), clazz.getName());
     }
 
-
     @Override
     protected boolean hasToReregister(Map params, Class clazz) {
         String value = (String) params.get(PAR_VALUE);
@@ -121,7 +134,6 @@
         return alreadyRegistered.equals(entry);
     }
 
-
     @Override
     public void purge(String className) {
         super.purge(className);
@@ -129,7 +141,12 @@
         if (entry == null) {
             return;
         }
-        _alreadyRegistered.remove(className);
-        getApplication().addValidator(entry.getValue(), PurgedValidator.class.getName());
+
+        String oldValidator = _inverseIndex.get(entry);
+        if (oldValidator.equals(className)) {
+            _alreadyRegistered.remove(className);
+            getApplication().addValidator(entry.getValue(), PurgedValidator.class.getName());
+            _inverseIndex.put(entry, PurgedValidator.class.getName());
+        }
     }
 }