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/06/08 19:28:24 UTC
svn commit: r952742 - in
/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations:
ApplicationProxy.java ELResolverProxy.java
Author: werpu
Date: Tue Jun 8 17:28:24 2010
New Revision: 952742
URL: http://svn.apache.org/viewvc?rev=952742&view=rev
Log:
https://issues.apache.org/jira/browse/EXTSCRIPT-134
Modified:
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java
myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ELResolverProxy.java
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java?rev=952742&r1=952741&r2=952742&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ApplicationProxy.java Tue Jun 8 17:28:24 2010
@@ -122,22 +122,24 @@ public class ApplicationProxy extends Ap
*/
Map<EventHandlerProxyEntry, EventHandlerProxyEntry> _eventHandlerIdx = new ConcurrentHashMap<EventHandlerProxyEntry, EventHandlerProxyEntry>();
+ volatile static boolean elResolverAdded = false;
+ volatile static boolean varResolverAdded = false;
+
+
public ApplicationProxy(Application delegate) {
_delegate = delegate;
}
public void addELResolver(ELResolver elResolver) {
weaveDelegate();
- //This can be problematic if several libraries add their own proxies
- // that way then might get get a cyclic stack
- //under normal circumstances this should not happen
- //because addElResolver is called once and getElResolver
- //does not change the stack afterwards in the worst case
- //we might get 2 of our proxies in the delegate stack
-
- //the same goes for the rest of the factory stuff
- if (!(elResolver instanceof ELResolverProxy))
+ if(!elResolverAdded) {
+ //ordering hints are unsufficient here we make
+ //sure our proxy is added as second in the chain
+ //also this method works as well on
+ //jsf 1.2 while hints only work in jsf2
elResolver = new ELResolverProxy(elResolver);
+ elResolverAdded = true;
+ }
_delegate.addELResolver(elResolver);
}
@@ -150,9 +152,6 @@ public class ApplicationProxy extends Ap
public ELResolver getELResolver() {
weaveDelegate();
ELResolver retVal = _delegate.getELResolver();
- if (!(retVal instanceof ELResolverProxy)) {
- retVal = new ELResolverProxy(retVal);
- }
return retVal;
}
@@ -265,8 +264,8 @@ public class ApplicationProxy extends Ap
//defined in the setter to speed things up a little
NavigationHandler retVal = _delegate.getNavigationHandler();
- if (retVal != null && WeavingContext.isDynamic(retVal.getClass()))
- retVal = new NavigationHandlerProxy(retVal);
+ //if (retVal != null && WeavingContext.isDynamic(retVal.getClass()))
+ // retVal = new NavigationHandlerProxy(retVal);
return retVal;
}
@@ -293,18 +292,16 @@ public class ApplicationProxy extends Ap
@SuppressWarnings("deprecation")
public VariableResolver getVariableResolver() {
weaveDelegate();
- VariableResolver variableResolver = _delegate.getVariableResolver();
- if (!(variableResolver instanceof VariableResolverProxy))
- variableResolver = new VariableResolverProxy(variableResolver);
- return variableResolver;
+ return _delegate.getVariableResolver();
}
@SuppressWarnings("deprecation")
public void setVariableResolver(VariableResolver variableResolver) {
weaveDelegate();
- if (!(variableResolver instanceof VariableResolverProxy))
+ if(!varResolverAdded) {
variableResolver = new VariableResolverProxy(variableResolver);
-
+ varResolverAdded = true;
+ }
_delegate.setVariableResolver(variableResolver);
}
@@ -653,14 +650,14 @@ public class ApplicationProxy extends Ap
public ResourceHandler getResourceHandler() {
weaveDelegate();
ResourceHandler retVal = _delegate.getResourceHandler();
- if(WeavingContext.isDynamic(retVal.getClass())) {
- return new ResourceHandlerProxy(retVal);
- }
- //ResourceHandler newHandler = (ResourceHandler) reloadInstance(retVal, ScriptingConst.ARTIFACT_TYPE_RESOURCEHANDLER);
- //if (newHandler != retVal) {
- // return _delegate.getResourceHandler();
- //}
+ /*if (WeavingContext.isDynamic(retVal.getClass())) {
+ ResourceHandler newHandler = (ResourceHandler) reloadInstance(retVal, ScriptingConst.ARTIFACT_TYPE_RESOURCEHANDLER);
+ if (newHandler != retVal) {
+ _delegate.setResourceHandler(newHandler);
+ return newHandler;
+ }
+ } */
return retVal;
}
@@ -679,11 +676,16 @@ public class ApplicationProxy extends Ap
@Override
public void setResourceHandler(ResourceHandler resourceHandler) {
weaveDelegate();
- _delegate.setResourceHandler(resourceHandler);
- ResourceHandler handler = _delegate.getResourceHandler();
- if (handler instanceof PurgedResourceHandler) {
- WeavingContext.getWeaver().fullClassScan();
+ if (WeavingContext.isDynamic(resourceHandler.getClass())) {
+ ResourceHandler proxy = new ResourceHandlerProxy(resourceHandler);
+ resourceHandler = proxy;
}
+
+ _delegate.setResourceHandler(resourceHandler);
+ //ResourceHandler handler = _delegate.getResourceHandler();
+ //if (handler instanceof PurgedResourceHandler) {
+ // WeavingContext.getWeaver().fullClassScan();
+ //}
}
@Override
Modified: myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ELResolverProxy.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ELResolverProxy.java?rev=952742&r1=952741&r2=952742&view=diff
==============================================================================
--- myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ELResolverProxy.java (original)
+++ myfaces/extensions/scripting/trunk/extscript-core-root/extscript-myfaces2-extensions/src/main/java/org/apache/myfaces/extensions/scripting/jsf/dynamicdecorators/implemetations/ELResolverProxy.java Tue Jun 8 17:28:24 2010
@@ -18,7 +18,6 @@
*/
package org.apache.myfaces.extensions.scripting.jsf.dynamicdecorators.implemetations;
-import org.apache.myfaces.config.RuntimeConfig;
import org.apache.myfaces.extensions.scripting.api.Decorated;
import org.apache.myfaces.extensions.scripting.api.ScriptingConst;
import org.apache.myfaces.extensions.scripting.core.util.WeavingContext;
@@ -26,10 +25,9 @@ import org.apache.myfaces.extensions.scr
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ELResolver;
-import javax.faces.context.FacesContext;
+import java.io.IOException;
+import java.io.ObjectInputStream;
import java.util.Iterator;
-import java.util.Map;
-import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -42,7 +40,7 @@ public class ELResolverProxy extends ELR
Logger log = Logger.getLogger(ELResolverProxy.class.getName());
ELResolver _delegate = null;
- static ThreadLocal<Boolean> _getValue = new ThreadLocal<Boolean>();
+ // static ThreadLocal<Boolean> _getValue = new ThreadLocal<Boolean>();
public Object getValue(ELContext elContext, final Object base, final Object property) throws NullPointerException, ELException {
@@ -60,50 +58,13 @@ public class ELResolverProxy extends ELR
return newRetVal;
- } /*else if (retVal == null) {
- retVal = reloadAnnotatedBean(elContext, base, property, null);
- }*/
+ }
return retVal;
}
- @Deprecated
- //soon do be removed
- private Object reloadAnnotatedBean(ELContext elContext, Object base, Object property, Object newRetVal) {
- //Avoid recursive calls into ourselves here
-
- try {
- if (_getValue.get() != null && _getValue.get().equals(Boolean.TRUE)) {
- return newRetVal;
- }
- _getValue.set(Boolean.TRUE);
- //base == null means bean el
- //TODO is this code still needed, the scan should have a proper
- //information base at the time of the el consumption anyway
- //since it is triggered already
- //this looks like old code to me where we did the annotation scan two phased!
- if (base == null) {
- final FacesContext facesContext = FacesContext.getCurrentInstance();
- RuntimeConfig config = RuntimeConfig.getCurrentInstance(facesContext.getExternalContext());
- Map<String, org.apache.myfaces.config.element.ManagedBean> mbeans = config.getManagedBeans();
- if (!((String)property).startsWith("javax_") && (!((String)property).startsWith("org_") && !mbeans.containsKey(property.toString()))) {
- if (log.isLoggable(Level.FINE)) {
- log.log(Level.FINE, "[EXT-SCRIPTING] ElResolverProxy.getValue old bean not existing we have to perform a full annotation scan");
- }
- setValue(elContext, base, property, null);
-
- //we only trigger this if the bean was deregistered, we now can reregister it again
- WeavingContext.getWeaver().fullClassScan();
- newRetVal = _delegate.getValue(elContext, base, property);
- }
- }
- } finally {
- _getValue.set(Boolean.FALSE);
- }
- return newRetVal;
- }
public Class<?> getType(ELContext elContext, Object o, Object o1) throws NullPointerException, ELException {
Class<?> retVal = _delegate.getType(elContext, o, o1);
@@ -133,12 +94,26 @@ public class ELResolverProxy extends ELR
return _delegate.getCommonPropertyType(elContext, o);
}
+
public ELResolverProxy(ELResolver delegate) {
_delegate = delegate;
}
+ public ELResolverProxy() {
+
+ }
+
public Object getDelegate() {
return _delegate; //To change body of implemented methods use File | Settings | File Templates.
}
+
+ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
+ {
+ // our "pseudo-constructor"
+ in.defaultReadObject();
+ log = Logger.getLogger(ELResolverProxy.class.getName());
+
+ }
+
}