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());
+ }
}
}