Hi, > <dependency> > + <groupId>org.apache.myfaces.portlet-bridge</groupId> > + <artifactId>portlet-bridge-api</artifactId> > + <version>1.0.0-alpha</version> > + <scope>provided</scope> > + </dependency>
I wonder fi is the right scope. Pretty much all containers don't really ship that JAR. -M > + > + <dependency> > <groupId>org.apache.myfaces.core</groupId> > <artifactId>myfaces-api</artifactId> > <version>${myfaces.version}</version> > > Modified: myfaces/trinidad/trunk/trinidad-impl/pom.xml > URL: > http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/pom.xml?rev=629242&r1=629241&r2=629242&view=diff > ============================================================================== > --- myfaces/trinidad/trunk/trinidad-impl/pom.xml (original) > +++ myfaces/trinidad/trunk/trinidad-impl/pom.xml Tue Feb 19 13:35:43 2008 > @@ -206,6 +206,11 @@ > </dependency> > > <dependency> > + <groupId>org.apache.myfaces.portlet-bridge</groupId> > + <artifactId>portlet-bridge-api</artifactId> > + </dependency> > + > + <dependency> > <groupId>org.apache.myfaces.trinidad</groupId> > <artifactId>trinidad-build</artifactId> > </dependency> > > Modified: > myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/StateManagerImpl.java > URL: > http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/StateManagerImpl.java?rev=629242&r1=629241&r2=629242&view=diff > ============================================================================== > --- > myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/StateManagerImpl.java > (original) > +++ > myfaces/trinidad/trunk/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/StateManagerImpl.java > Tue Feb 19 13:35:43 2008 > @@ -51,6 +51,11 @@ > > import java.io.IOException; > > +import javax.portlet.faces.annotation.PortletNamingContainer; > +import javax.portlet.faces.component.PortletNamingContainerUIViewRoot; > + > +import org.apache.myfaces.trinidad.util.ExternalContextUtils; > + > /** > * StateManager that handles a hybrid client/server strategy: a > * SerializedView is stored on the server, and only a small token > @@ -966,6 +971,17 @@ > UIViewRoot newRoot = (UIViewRoot) > fc.getApplication().createComponent(UIViewRoot.COMPONENT_TYPE); > > + //This code handles automatic namespacing in a JSR-301 environment > + if(ExternalContextUtils.isPortlet(fc.getExternalContext())) > + { > + //To avoid introducing a runtime dependency on the bridge, > + //this method should only be executed when we have a portlet > + //request. If we do have a portlet request then the bridge > + //should be available anyway. > + newRoot = _getPortletRoot(newRoot); > + } > + > + > // must call restoreState so that we setup attributes, listeners, > // uniqueIds, etc ... > newRoot.restoreState(fc, viewRootState); > @@ -984,6 +1000,37 @@ > > return null; > } > + > + /** > + * This should only be executed if we are currently in a Portlet Request. > + * If executed, this method introduces a dependency on the JSR-301 bridge > + * which is required for Trinidad to run in a portal environment. If > this > + * method is not run, then the bridge api's remain optional at runtime. > + * > + * This method checks the current UIViewRoot to see if it is a > + * PortletNamingContainer. If it is, then this class simply returns the > + * UIViewRoot. If it does not then the current UIViewRoot is used to > create > + * a new PortletNamingContainerUIViewRoot. > + */ > + private UIViewRoot _getPortletRoot(UIViewRoot root) > + { > + Class<? extends UIViewRoot> rootClass = root.getClass(); > + //If the current root is not the real UIViewRoot object in faces then > + //is no need to escape it. It is assumed it handles namespacing on its > + //own. This is the same as the logic in the JSR-301 Bridge spec. > + if(rootClass == UIViewRoot.class) > + { > + _LOG.fine("Creating PortletUIViewRoot for use with the portal."); > + root = new PortletNamingContainerUIViewRoot(root); > + } > + > + //TODO: Do we need a warning here if the view root is not annotated > + //properly? This could happen if another renderkit is involved and > does > + //not correctly implement JSR-301. This will NOT be an issue in Trin > only > + //environments. > + return root; > + } > + > } > > > > > -- Matthias Wessendorf further stuff: blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf mail: matzew-at-apache-dot-org