myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott O'Bryan" <darkar...@gmail.com>
Subject Re: svn commit: r629242 - in /myfaces/trinidad/trunk: pom.xml trinidad-impl/pom.xml trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/application/StateManagerImpl.java
Date Wed, 20 Feb 2008 16:48:17 GMT
Matthias,

Yeah, both of these are issues.  This should be in Trunk 1.2 and the 
demo should run without the classes in the classpath.  I'll revert my 
change in trunk and move it.  Sorry about that.

As for compile scope, I'll check it out.  The intent of this change was 
to NOT require the bridge API's in the classpath unless you are running 
in a portal.  I'll redo this so that this is the case.

Scott

Matthias Wessendorf wrote:
> Hi Scott,
>
> On Feb 20, 2008 5:26 PM, Scott O'Bryan <darkarena@gmail.com> wrote:
>   
>> The Apache MVN website says this about providing a "compile only" library:
>>
>>     "The scope you should use for this is |provided|. This indicates to
>>     Maven that the dependency will be provided at run time by its
>>     container or the JDK, for example.
>>
>>     "Dependencies with this scope will not be passed on transitively,
>>     nor will they be bundled in an package such as a WAR, or included in
>>     the runtime classpath.
>>
>> This library is a runtime only library and is only needed when running
>> in the portlet environment.  Currently Trinidad's demo's aren't portlet
>> compatible.  Until I'm able to do some of this work, I would much rather
>> this API (and the subsequent impl) not be added to the demo.
>>     
>
> I get a "java.lang.NoClassDefFoundError:
> javax/portlet/faces/component/PortletNamingContainerUIViewRoot" when
> running the demos...
> (on 1.2.6.1 branch)
> (trinidad-demos in jetty => mvn clean jetty:run -PjettyConfig)
>
> when I change the dependency (as suggested) to compile, after building
> Trinidad again, all works fine.
>
> Also, the 301-fix is now here:
> -1.0.x trunk
> -1.2.6.1 branch
>
> not in 1.2_x trunk
>
> -Matthias
>
> -Matthias
>
>   
>> Scott
>>
>>
>> Matthias Wessendorf wrote:
>>     
>>> also...
>>> doesn't this belong to the 12x trunk ?
>>> My understanding is that the JSR 301 is kind of depending on JSF 1.2
>>>
>>> -M
>>>
>>> On Feb 20, 2008 3:31 PM, Matthias Wessendorf <matzew@apache.org> wrote:
>>>
>>>       
>>>> 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
>>>>
>>>>
>>>>         
>>>
>>>
>>>       
>>     
>
>
>
>   


Mime
View raw message