You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mf...@apache.org on 2011/03/30 03:04:47 UTC
svn commit: r1086817 - in /myfaces/portlet-bridge/core/tags/3.0.0-alpha: ./
api/src/main/java/javax/portlet/faces/ api/src/main/resources/META-INF/
assembly/src/main/resources/META-INF/
impl/src/main/java/org/apache/myfaces/portlet/faces/application/ i...
Author: mfreedman
Date: Wed Mar 30 01:04:46 2011
New Revision: 1086817
URL: http://svn.apache.org/viewvc?rev=1086817&view=rev
Log:
PORTLETBRIDGE-204: Bridge doesn't work with Mojarra 2.0.4.b09 (merged from Trunk)
Added:
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletRenderKitWrapperImpl.java
- copied unchanged from r1086816, myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletRenderKitWrapperImpl.java
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletResponseStateManagerImpl.java
- copied unchanged from r1086816, myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletResponseStateManagerImpl.java
Removed:
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/services/javax.faces.application.ApplicationFactory
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/services/javax.faces.context.ExternalContextFactory
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/services/javax.faces.context.FacesContextFactory
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/services/javax.faces.view.ViewDeclarationLanguageFactory
Modified:
myfaces/portlet-bridge/core/tags/3.0.0-alpha/ (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/java/javax/portlet/faces/Bridge.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/java/javax/portlet/faces/BridgeUtil.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/resources/META-INF/NOTICE (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/assembly/src/main/resources/META-INF/NOTICE (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java (contents, props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/view/AggregatingViewDeclatationLanguage.java
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java (contents, props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeRenderRequestWrapper.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletPartialViewContextImpl.java
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/QueryString.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/config/FacesConfigurationProcessor.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterMap.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterValuesMap.java (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/NOTICE (props changed)
myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/faces-config.xml
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x:888894-923981
-/myfaces/portlet-bridge/core/trunk_3.0.x:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/java/javax/portlet/faces/Bridge.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/Bridge.java:888894-923981,950308-997838
-/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/java/javax/portlet/faces/Bridge.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/java/javax/portlet/faces/Bridge.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/java/javax/portlet/faces/BridgeUtil.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/BridgeUtil.java:888894-923981,925027
-/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/java/javax/portlet/faces/BridgeUtil.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/java/javax/portlet/faces/BridgeUtil.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java:888894-923981,950308-997838
-/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/java/javax/portlet/faces/GenericFacesPortlet.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/api/src/main/resources/META-INF/NOTICE
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,3 +1,3 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/api/src/main/resources/META-INF/NOTICE:888894-923981
-/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/resources/META-INF/NOTICE:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/api/src/main/resources/META-INF/NOTICE:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
/myfaces/portlet-bridge/trunk/api/src/main/resources/META-INF/NOTICE:588229-629933
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/assembly/src/main/resources/META-INF/NOTICE
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,3 +1,3 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/assembly/src/main/resources/META-INF/NOTICE:888894-923981
-/myfaces/portlet-bridge/core/trunk_3.0.x/assembly/src/main/resources/META-INF/NOTICE:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/assembly/src/main/resources/META-INF/NOTICE:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
/myfaces/portlet-bridge/trunk/assembly/src/main/resources/META-INF/NOTICE:588229-629933
Modified: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java?rev=1086817&r1=1086816&r2=1086817&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java (original)
+++ myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java Wed Mar 30 01:04:46 2011
@@ -19,18 +19,27 @@
package org.apache.myfaces.portlet.faces.application;
+
import java.io.IOException;
import java.io.StringWriter;
+import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.faces.FactoryFinder;
import javax.faces.application.StateManager;
import javax.faces.application.StateManagerWrapper;
+import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
import javax.faces.render.ResponseStateManager;
+import javax.portlet.faces.Bridge;
import javax.portlet.faces.BridgeUtil;
import org.apache.myfaces.portlet.faces.bridge.BridgeImpl;
@@ -39,35 +48,80 @@ public class PortletStateManagerImpl
extends StateManagerWrapper
{
private StateManager mDelegatee = null;
-
+ private HashMap<String, RenderKit> mWrappedRenderKits = null;
+ private RenderKitFactory mRenderKitFactory = null;
+
public PortletStateManagerImpl(StateManager sm)
{
mDelegatee = sm;
+ mWrappedRenderKits = new HashMap<String, RenderKit>(5);
}
+ public UIViewRoot restoreView(FacesContext context,
+ String viewId,
+ String renderKitId) throws IllegalArgumentException
+ {
+ UIViewRoot result = null;
+
+ if (renderKitId == null) throw new IllegalArgumentException("null renderKitId in restoreView.");
+
+
+ // Only wrap the RenderKit and use if needed for this restore:
+ if (BridgeUtil.getPortletRequestPhase() == Bridge.PortletPhase.RENDER_PHASE &&
+ context.getExternalContext().getRequestMap().get(BridgeImpl.SAVED_VIEW_STATE) != null)
+ {
+ RenderKit curRK = getRenderKitFactory().getRenderKit(context, renderKitId);
+ RenderKit rk = mWrappedRenderKits.get(renderKitId);
+ if (!curRK.equals(rk))
+ {
+ if (rk == null)
+ {
+ rk = new PortletRenderKitWrapperImpl(curRK);
+ mWrappedRenderKits.put(renderKitId, rk);
+ }
+ getRenderKitFactory().addRenderKit(renderKitId, rk);
+ }
+
+ result = super.restoreView(context, viewId, renderKitId);
+
+ // now restore the unwrapped renderKit
+ getRenderKitFactory().addRenderKit(renderKitId, curRK);
+ }
+ else
+ {
+ result = super.restoreView(context, viewId, renderKitId);
+ }
+
+ return result;
+
+ }
+
+
+
/*
* Override saveView so we can grab the returned state and place
* it in the request scope so the Bridge can find it and use for subsequent
* renders that occur in this managed bridge (action) request scope.
- *
+ *
* Basically what is going one here is that JSF either stores the entire state
* or at least enough info to get back to its entire state in a hidden field
* represented by the VIEW_STATE_PARAM. In addition the existence of this
* parameter in any given request is used to determine if one is running in a
- * postback or not.
+ * postback or not.
* Because in the portlet environment renders occur in a separate request from
- * action we need to preserve this parameter in the first request after an
+ * action we need to preserve this parameter in the first request after an
* action so JSF will know its in a postback. However after the first render
* following an action additional renders can occur (before the next action).
* These renders also need to signal they are running in a postback by exposing
- * this parameter however the value should not be the one that was sent to the
+ * this parameter however the value should not be the one that was sent to the
* original action but rather the one that resulted after the last render.
- *
+ *
* To do this the Bridge has to catch the value that is being written into
- * the hidden field. It does this by overriding writeState and replace the
+ * the hidden field. It does this by overriding writeState and replace the
* value its maintaining for the VIEW_STATE_PARAM with this value written as
* a String.
*/
+
public void writeState(FacesContext context, Object state)
throws IOException
{
@@ -83,31 +137,31 @@ public class PortletStateManagerImpl
StringWriter stringWriter = new StringWriter(128);
ResponseWriter newRW = oldRW.cloneWithWriter(stringWriter);
context.setResponseWriter(newRW);
-
+
super.writeState(context, state);
-
+
// Restore real responsewriter
context.setResponseWriter(oldRW);
-
+
// Get written state
newRW.flush();
String stateValue = new String(stringWriter.getBuffer());
-
+
// Write it to the old response writer
oldRW.write(stateValue);
-
+
// Now extract the parameter value from the buffer:
stateValue = extractViewStateParamValue(stateValue);
-
- if (stateValue != null)
+
+ if (stateValue != null)
{
Map<String, Object> m = context.getExternalContext().getRequestMap();
m.put(BridgeImpl.UPDATED_VIEW_STATE_PARAM, stateValue);
}
-
+
}
-
+
public void writeState(FacesContext context, SerializedView state)
throws IOException
{
@@ -123,42 +177,44 @@ public class PortletStateManagerImpl
StringWriter stringWriter = new StringWriter(128);
ResponseWriter newRW = oldRW.cloneWithWriter(stringWriter);
context.setResponseWriter(newRW);
-
+
super.writeState(context, state);
-
+
// Restore real responsewriter
context.setResponseWriter(oldRW);
-
+
// Get written state
newRW.flush();
String stateValue = new String(stringWriter.getBuffer());
-
+
// Write it to the old response writer
oldRW.write(stateValue);
-
+
// Now extract the parameter value from the buffer:
stateValue = extractViewStateParamValue(stateValue);
-
- if (stateValue != null)
+
+ if (stateValue != null)
{
Map<String, Object> m = context.getExternalContext().getRequestMap();
m.put(BridgeImpl.UPDATED_VIEW_STATE_PARAM, stateValue);
}
-
+
}
-
+
+
public StateManager getWrapped()
{
return mDelegatee;
}
-
+
private String extractViewStateParamValue(String buf)
{
// Locate the VIEW_STATE_PARAM field
int i = buf.indexOf(ResponseStateManager.VIEW_STATE_PARAM);
- if (i < 0) return null;
-
+ if (i < 0)
+ return null;
+
// now locate the end of the element so don't read beyond it.
// TODO: improve finding end of element/attribute as these values
// could exist in the VIEW_STATE_PARAM output
@@ -168,25 +224,41 @@ public class PortletStateManagerImpl
end = buf.indexOf(">", i);
if (end < 0)
return null;
-
+
// now locate the value attribute
int valStart = buf.indexOf("value", i);
- if (valStart < 0 || valStart > end)
+ if (valStart < 0 || valStart > end)
{
// must be earlier in the element
buf = buf.substring(0, end);
end = buf.length() - 1;
i = buf.lastIndexOf("<");
- if (i < 0) return null;
+ if (i < 0)
+ return null;
valStart = buf.indexOf("value", i);
- if (valStart < 0) return null;
+ if (valStart < 0)
+ return null;
}
-
+
// now extract the value between the quotes
valStart = buf.indexOf('"', valStart);
- if (valStart < 0) return null;
+ if (valStart < 0)
+ return null;
int valEnd = buf.indexOf('"', valStart + 1);
- if (valEnd < 0 || valEnd > end) return null;
+ if (valEnd < 0 || valEnd > end)
+ return null;
return buf.substring(valStart + 1, valEnd);
}
+
+
+ protected RenderKitFactory getRenderKitFactory()
+ {
+ if (mRenderKitFactory == null)
+ {
+ mRenderKitFactory = (RenderKitFactory)FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ }
+ return mRenderKitFactory;
+ }
+
+
}
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java:888894-923981,929300
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/application/PortletStateManagerImpl.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Modified: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/view/AggregatingViewDeclatationLanguage.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/view/AggregatingViewDeclatationLanguage.java?rev=1086817&r1=1086816&r2=1086817&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/view/AggregatingViewDeclatationLanguage.java (original)
+++ myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/application/view/AggregatingViewDeclatationLanguage.java Wed Mar 30 01:04:46 2011
@@ -15,6 +15,7 @@ import java.beans.BeanInfo;
import java.io.IOException;
import javax.faces.application.Resource;
+import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.view.StateManagementStrategy;
@@ -120,7 +121,18 @@ class AggregatingViewDeclatationLanguage
@Override
public UIViewRoot restoreView(FacesContext arg0, String arg1)
{
- return mPrimary.restoreView(arg0, arg1);
+ UIViewRoot vr = mPrimary.restoreView(arg0, arg1);
+
+
+ // Workaround Trinidad bug where it doesn't set the renderkit Id in the VR
+ // after/during restore -- which causes a NPE in Mojarra 1.2.0.4
+ if (vr != null && vr.getRenderKitId() == null)
+ {
+ ViewHandler outerViewHandler =
+ arg0.getApplication().getViewHandler();
+ vr.setRenderKitId(outerViewHandler.calculateRenderKitId(arg0));
+ }
+ return vr;
}
}
Modified: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java?rev=1086817&r1=1086816&r2=1086817&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java (original)
+++ myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java Wed Mar 30 01:04:46 2011
@@ -51,15 +51,20 @@ import javax.faces.FactoryFinder;
import javax.faces.application.Application;
import javax.faces.application.ApplicationFactory;
import javax.faces.application.FacesMessage;
+import javax.faces.application.StateManager;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.ExceptionHandler;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.FacesContextFactory;
+import javax.faces.event.AbortProcessingException;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
+import javax.faces.event.PostConstructApplicationEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
import javax.faces.lifecycle.Lifecycle;
import javax.faces.lifecycle.LifecycleFactory;
import javax.faces.render.ResponseStateManager;
@@ -117,6 +122,7 @@ import javax.servlet.http.HttpSessionBin
import javax.servlet.http.HttpSessionEvent;
+import org.apache.myfaces.portlet.faces.application.PortletStateManagerImpl;
import org.apache.myfaces.portlet.faces.bridge.wrapper.BridgePortletRequestWrapper;
import org.apache.myfaces.portlet.faces.bridge.wrapper.BridgeRenderRequestWrapper;
import org.apache.myfaces.portlet.faces.context.PortletExceptionHanderFactoryImpl;
@@ -128,7 +134,7 @@ import org.apache.myfaces.portlet.faces.
import org.apache.myfaces.portlet.faces.util.config.WebConfigurationProcessor;
public class BridgeImpl
- implements Bridge, ELContextListener, PhaseListener, ServletRequestAttributeListener
+ implements Bridge, ELContextListener, PhaseListener, ServletRequestAttributeListener, SystemEventListener
{
private static final long serialVersionUID = 5807626987246270989L;
@@ -159,6 +165,8 @@ public class BridgeImpl
private static final String NULL_VIEW_STATE_PARAM_VALUE = "org.apache.myfaces.portlet.faces.nullViewState";
private static final String CACHED_VIEWROOT_LOCALE = "org.apache.myfaces.portlet.faces.cachedViewRootLocale";
private static final String PROCESSED_PUBLIC_PARAMS ="org.apache.myfaces.portlet.faces.processedPublicParams";
+ public static final String SAVED_VIEW_STATE = "org.apache.myfaces.portlet.faces.includeInScope.saveViewState";
+
private static final int DEFAULT_MAX_MANAGED_REQUEST_SCOPES = 100;
private Boolean mPreserveActionParams = Boolean.FALSE;
@@ -287,7 +295,28 @@ public class BridgeImpl
mInitialized = true;
}
-
+
+ @Override
+ public void processEvent(SystemEvent event) throws AbortProcessingException
+ {
+ if(event instanceof PostConstructApplicationEvent)
+ {
+ // Install the Bridge StateManager -- wrapping the others -- we need to
+ // be first (ratehr than last) so the action/render view save/restore will work
+ Application app = ((PostConstructApplicationEvent) event).getApplication();
+ app.setStateManager(new PortletStateManagerImpl(app.getStateManager()));
+ }
+ }
+
+
+ @Override
+ public boolean isListenerForSource(Object source)
+ {
+ //only for Application
+ return (source instanceof Application);
+
+ }
+
public void doFacesRequest(ActionRequest request, ActionResponse response)
throws BridgeException,
BridgeDefaultViewNotSpecifiedException,
@@ -1649,19 +1678,23 @@ public class BridgeImpl
saveFacesMessageState(context);
// now place the viewRoot in the request scope
+ /*
UIViewRoot vr = context.getViewRoot();
Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
requestMap.put(FACES_VIEWROOT, vr);
// Preserve the FC scope so its not lost when restart this lifecycle in the render
- HashMap<Object, Object> preserved = mPreservedFacesContextScopeAttrs(context);
+ HashMap<Object, Object> preserved = preserveFacesContextScopeAttrs(context);
if (preserved != null)
{
requestMap.put(FACES_CONTEXT_SCOPE, preserved);
}
+ */
+ context.getExternalContext().getRequestMap().put(SAVED_VIEW_STATE, context.getApplication().getStateManager().saveView(context));
+
}
- private HashMap<Object, Object> mPreservedFacesContextScopeAttrs(FacesContext context)
+ private HashMap<Object, Object> preserveFacesContextScopeAttrs(FacesContext context)
{
if (mPreservedFacesContextScopeAttrs == null || mPreservedFacesContextScopeAttrs.isEmpty())
{
@@ -1695,6 +1728,7 @@ public class BridgeImpl
private boolean restoreFacesView(FacesContext context, String scopeId)
{
+ /*
Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
UIViewRoot viewRoot = (UIViewRoot) requestMap.remove(FACES_VIEWROOT);
if (viewRoot != null)
@@ -1724,6 +1758,8 @@ public class BridgeImpl
// Messages get restored in a phase listener
return viewRoot != null;
+ */
+ return false;
}
private void saveActionParams(FacesContext context)
@@ -1825,6 +1861,7 @@ public class BridgeImpl
// be in the scope (as well as its FC scope. Remove it so its not used again.
// get the managedScopeMap
scopeMap.remove(FACES_VIEWROOT);
+ scopeMap.remove(SAVED_VIEW_STATE);
Map<Object, Object> attrs = (Map<Object, Object>) scopeMap.remove(FACES_CONTEXT_SCOPE);
if (attrs != null)
{
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java:888894-923981,925027-997838
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/BridgeImpl.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeRenderRequestWrapper.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeRenderRequestWrapper.java:888894-923981,925027-929723
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeRenderRequestWrapper.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/bridge/wrapper/BridgeRenderRequestWrapper.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java:888894-923981,925027-1033781
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletExternalContextImpl.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Modified: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletPartialViewContextImpl.java
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletPartialViewContextImpl.java?rev=1086817&r1=1086816&r2=1086817&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletPartialViewContextImpl.java (original)
+++ myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/context/PortletPartialViewContextImpl.java Wed Mar 30 01:04:46 2011
@@ -150,7 +150,7 @@ public class PortletPartialViewContextIm
private String fixUpClientId(String id, String bridgeVRPrefix)
{
- if (!id.startsWith(bridgeVRPrefix))
+ if (!id.startsWith("@") && !id.startsWith(bridgeVRPrefix))
{
id = new StringBuffer(bridgeVRPrefix).append(":").append(id).toString();
}
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/QueryString.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/QueryString.java:888894-923981,946789-982807
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/QueryString.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/QueryString.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/config/FacesConfigurationProcessor.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/config/FacesConfigurationProcessor.java:888894-923981,987340
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/config/FacesConfigurationProcessor.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/config/FacesConfigurationProcessor.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterMap.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterMap.java:888894-923981,925027-997838
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterMap.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterMap.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterValuesMap.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,2 +1,2 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterValuesMap.java:888894-923981,925027-997838
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterValuesMap.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/java/org/apache/myfaces/portlet/faces/util/map/PortletRequestParameterValuesMap.java:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
Propchange: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/NOTICE
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 30 01:04:46 2011
@@ -1,3 +1,3 @@
/myfaces/portlet-bridge/core/trunk_2.0.x/impl/src/main/resources/META-INF/NOTICE:888894-923981
-/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/resources/META-INF/NOTICE:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093
+/myfaces/portlet-bridge/core/trunk_3.0.x/impl/src/main/resources/META-INF/NOTICE:1068501,1068512,1068521,1078973,1078986,1079843-1083069,1083072,1083088-1083093,1086816
/myfaces/portlet-bridge/trunk/impl/src/main/resources/META-INF/NOTICE:588229-629933
Modified: myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/faces-config.xml?rev=1086817&r1=1086816&r2=1086817&view=diff
==============================================================================
--- myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/faces-config.xml (original)
+++ myfaces/portlet-bridge/core/tags/3.0.0-alpha/impl/src/main/resources/META-INF/faces-config.xml Wed Mar 30 01:04:46 2011
@@ -22,10 +22,26 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
+ <name>MyFacesPortletBridge</name>
+ <ordering>
+ <before><others/></before>
+ </ordering>
+
<application>
+ <!-- StateManager is installed manually by bridge in the PostConstructApplicationEvent so we can wrap
+ all other and be first to be called - needed to handle save/restore across action -->
<view-handler>org.apache.myfaces.portlet.faces.application.PortletViewHandlerImpl</view-handler>
- <state-manager>org.apache.myfaces.portlet.faces.application.PortletStateManagerImpl</state-manager>
<el-resolver>org.apache.myfaces.portlet.faces.el.PortletELResolver</el-resolver>
+
+ <!-- Application is started -->
+ <system-event-listener>
+ <system-event-listener-class>
+ org.apache.myfaces.portlet.faces.bridge.BridgeImpl
+ </system-event-listener-class>
+ <system-event-class>
+ javax.faces.event.PostConstructApplicationEvent
+ </system-event-class>
+ </system-event-listener>
<application-extension>
<bridge:excluded-attributes>
<bridge:excluded-attribute>com.sun.faces.*</bridge:excluded-attribute>
@@ -39,6 +55,10 @@
</application-extension>
</application>
<factory>
+ <application-factory>org.apache.myfaces.portlet.faces.application.PortletApplicationFactoryImpl</application-factory>
+ <faces-context-factory>org.apache.myfaces.portlet.faces.context.PortletFacesContextFactoryImpl</faces-context-factory>
+ <external-context-factory>org.apache.myfaces.portlet.faces.context.PortletExternalContextFactoryImpl</external-context-factory>
+ <view-declaration-language-factory>org.apache.myfaces.portlet.faces.application.view.PortletViewDeclarationLanguageFactoryImpl</view-declaration-language-factory>
<exception-handler-factory>org.apache.myfaces.portlet.faces.context.PortletExceptionHanderFactoryImpl</exception-handler-factory>
<partial-view-context-factory>org.apache.myfaces.portlet.faces.context.PortletPartialViewContextFactoryImpl</partial-view-context-factory>
</factory>