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 2009/09/11 12:46:54 UTC

svn commit: r813770 - /myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java

Author: werpu
Date: Fri Sep 11 10:46:51 2009
New Revision: 813770

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

improved the behavior reloading

Modified:
    myfaces/extensions/scripting/trunk/core/myfaces2-extensions/src/main/java/org/apache/myfaces/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.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=813770&r1=813769&r2=813770&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 Sep 11 10:46:51 2009
@@ -27,6 +27,7 @@
 import javax.faces.application.*;
 import javax.faces.component.UIComponent;
 import javax.faces.component.behavior.Behavior;
+import javax.faces.component.behavior.BehaviorBase;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.el.*;
@@ -79,7 +80,7 @@
     private void weaveDelegate() {
         if (_delegate != null) {
             _delegate = (Application) ProxyUtils.getWeaver().reloadScriptingInstance(_delegate);
-        }    
+        }
     }
 
     public ELResolver getELResolver() {
@@ -421,10 +422,15 @@
     public Behavior createBehavior(String s) throws FacesException {
         weaveDelegate();
         Behavior retVal = _delegate.createBehavior(s);
-        //TODO check if this does not break our ClientSideBehavior
-        //instances, otherwise we have to do a bypass for f:ajax or do it
-        //directly via the weaver instead of using the automated proxy
-        if (ProxyUtils.isDynamic(retVal.getClass())) {
+        //in case of a descendend of BehaviorBase we probably
+        //can count on additional functionality within the codebase we avoid
+        //therefore the interface reloading and work directly on the object
+        //still direct casts are forbidden, but parent casts are ok, which should
+        //be enough for behavior replacements on the user side, which this mechanism should
+        //cover for now
+        if (retVal instanceof BehaviorBase && ProxyUtils.isDynamic(retVal.getClass())) { //we might have casts here
+            retVal = (Behavior) ProxyUtils.getWeaver().reloadScriptingInstance(retVal);
+        } else if (ProxyUtils.isDynamic(retVal.getClass())) {
             retVal = (Behavior) ProxyUtils.createMethodReloadingProxyFromObject(retVal, Behavior.class);
         }
         return retVal;
@@ -450,7 +456,7 @@
 
     @Override
     public <T> T evaluateExpressionGet(FacesContext facesContext, String s, Class<? extends T> aClass) throws ELException {
-         weaveDelegate();
+        weaveDelegate();
         //good place for a dynamic reloading check as well
         T retVal = _delegate.evaluateExpressionGet(facesContext, s, aClass);
         if (ProxyUtils.isDynamic(retVal.getClass()))
@@ -466,25 +472,25 @@
 
     @Override
     public Map<String, String> getDefaultValidatorInfo() {
-       weaveDelegate();
-       return _delegate.getDefaultValidatorInfo();
+        weaveDelegate();
+        return _delegate.getDefaultValidatorInfo();
     }
 
     @Override
     public ProjectStage getProjectStage() {
-       weaveDelegate();
-       return _delegate.getProjectStage();
+        weaveDelegate();
+        return _delegate.getProjectStage();
     }
 
     @Override
     public ResourceHandler getResourceHandler() {
         weaveDelegate();
         ResourceHandler retVal = _delegate.getResourceHandler();
-         if (ProxyUtils.isDynamic(retVal.getClass())) {
+        if (ProxyUtils.isDynamic(retVal.getClass())) {
             retVal = (ResourceHandler) new ResourceHandlerProxy(retVal);
             setResourceHandler(retVal);
-         }
-         return retVal;
+        }
+        return retVal;
     }
 
     @Override