[ http://issues.apache.org/jira/browse/JS2-260?page=all ]
     
Ate Douma resolved JS2-260:
---------------------------

    Resolution: Fixed

> Removing dependency on Pluto PortletContainerServices and providing a 
> JetspeedNamespaceMapper
> ---------------------------------------------------------------------------------------------
>
>          Key: JS2-260
>          URL: http://issues.apache.org/jira/browse/JS2-260
>      Project: Jetspeed 2
>         Type: Improvement
>   Components: Container
>     Versions: 2.0-M2
>     Reporter: Ate Douma
>     Assignee: Ate Douma
>     Priority: Minor
>      Fix For: 2.0-M3, 2.0-FINAL

>
> In my pursuit of fixing the parallel rendering problem 
> (http://issues.apache.org/jira/browse/JS2-226)
> I found out we use PortletContainerServices.prepare("jetspeed") calls several 
> times in the PortletRendererImpl.
> This method "prepares" the Pluto PortletContainer by putting the named 
> ("jetspeed") container and its environment in a Stack in a ThreadLocal.
> This is required by Pluto before the container and/or its services can be 
> accessed.
> For "normal" container interaction this need not be done by the portal as 
> Pluto does so itself.
> But, if you want/need to access its services independently *outside* a 
> container invocation this preparation must be done otherwise Pluto will throw 
> an exception.
> Because Pluto maintains the current "container" context in a ThreadLocal 
> Stack, after using the services they
> should be "released" again.
> But, although the services are "prepared" several times, they are never 
> "released", resulting in a useless
> filling of the Stack with the same context.
> After looking into this more deeply, I discovered the reason why we prepare 
> the PortletContainerServices: 
> to be able to get to the NamespaceMapper from Pluto (using 
> NamespaceAccessor.getNamespaceMapper()).
> As Jetspeed itself provides the NamespaceMapper to use by Pluto I find it odd 
> why we should need to use the
> Pluto PortletContainerServices to get back at it.
> Furthermore, we currently use the NamespaceMapper of Pluto which itself uses 
> the hardcoded "Pluto_" prefix.
> Also, I found we have our own NamespaceMapper (in commons) but that is not 
> used yet (nor does it implement
> the NamespaceMapper interface).
> As I liked to remove the unneeded (and incomplete) usage of the 
> PortletContainerServices, I decided to
> provide a complete and configurable implementation of the NamespaceMapper: 
> the JetspeedNamespaceMapper.
> This (interface) extension of the Pluto NamespaceMapper provides the option 
> to specify our own prefix.
> Default, this now is "js_", but it can be configured (even back to "Pluto_" 
> if you want) through the spring context.
> I moved our old NamespaceMapper from the commons subproject to a new 
> JetspeedNamespaceMapperImpl under the
> portal subproject keeping the package 
> org.apache.jetspeed.container.namespace, and also implemented the
> Pluto NamespaceMapper interface.
> As our own JetspeedNamespaceMapper now is a true spring component, I replaced 
> the
> NamespaceAccessor.getNamespaceMapper() calls by getting the 
> JetspeedNamespaceMapperFactory from the spring ComponentManager.
> As result, the need to call PortletContainerServices.prepare("jetspeed") is 
> now gone and I subsequently
> removed those as well.
> This doesn't solve yet the parallel rendering problem but at least the 
> container interactions are cleaner
> now.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to