The problem is that there are two design patterns in use with these wrapped
portlets - the wrapping, and marker interfaces (such as, in our case,
PortletCustomizer).

These appear to be in conflict - you can't see the marker interfaces that a
class implements if it's wrapped.  The wrapper surfaces the wrapped class's
API, but testing "instanceof" is not made explicit in the API, so it not
surfaced by the wrapping.

I'll replace our use of PortletCustomizer marker interface with some new
method of the Portlet API, something like 'public boolean isOwnCustomizer()"
-I'm having trouble getting a good name.

I'll search for other instanceof PortletCustomizer" code and fix them all.

Do we use other marker interfaces that we should likewise fix?

I'll have a patch tonight or tomorrow for this.

- Glenn
 
--------------------------------------------
Glenn R. Golden, Systems Research Programmer
University of Michigan School of Information
[EMAIL PROTECTED]               734-615-1419
http://www-personal.si.umich.edu/~ggolden/
--------------------------------------------



> -----Original Message-----
> From: David Sean Taylor [mailto:[EMAIL PROTECTED]] 
> Sent: Thursday, March 28, 2002 5:17 PM
> To: 'Jetspeed Developers List'
> Subject: RE: CustomizerVelocityPortlet broken
> 
> 
> Ah, my suspicions were correct.
> The portlet customizer was working fine up until about the 
> same time that the wrapper stuff was committed.
> 
> > Is this CacheableStatefulPortletWrapper thing new?  It looks
> > like we need to be able to "dig in" to this, as well as into 
> > the control, to find the real portlet hiding inside.
> 
> Its new. It should always delegate to its wrapped portlet. 
> Its an interceptor, meant to put 'declarative' security 
> constraints into portlet access.
> 
> Sounds like youre on to it -- keep digging! ;)
> 
> > -----Original Message-----
> > From: Glenn Golden [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, March 28, 2002 1:15 PM
> > To: Jetspeed-Dev ([EMAIL PROTECTED])
> > Subject: CustomizerVelocityPortlet broken
> > 
> > 
> > I'm fixing the bug that a CustomizerVelocityPortlet's custom
> > customizer is no longer being called when the user customizes 
> > the portlet; instead the standard portlet customizer is used.
> > 
> > I've tracked this down to the JetspeedTool's getCustomizer()
> > call.  It's passed a "Portlet" which is a 
> > VelocityPortletControl, and digs in with
> > p.getPortlet() to get the portlet within.  The portlet is a 
> > CacheableStatefulPortletWrapper.
> > 
> > "If (p instanceof PortletCustomizer)" - well this thing is
> > NOT an instance of PortletCustomizer.
> > 
> > Looking inside this CacheableStatefulPortletWrapper, I see a
> > wrappedPortlet, which is a CustomizerVelocityPortlet...
> > 
> > Is this CacheableStatefulPortletWrapper thing new?  It looks
> > like we need to be able to "dig in" to this, as well as into 
> > the control, to find the real portlet hiding inside.
> > 
> > I'll keep looking, but if bells are ringing in anyone's heads
> > so far, please post info for me!
> > 
> > Thanks.
> > 
> > - Glenn
> >  
> > --------------------------------------------
> > Glenn R. Golden, Systems Research Programmer
> > University of Michigan School of Information
> > [EMAIL PROTECTED]               734-615-1419
> > http://www-personal.si.umich.edu/~ggolden/
> > --------------------------------------------
> > 
> > 
> > --
> > To unsubscribe, e-mail:   
> > <mailto:jetspeed-dev-> [EMAIL PROTECTED]>
> > For
> > additional commands, 
> > e-mail: <mailto:[EMAIL PROTECTED]>
> > 
> > 
> 
> 
> 
> --
> To unsubscribe, e-mail:   
> <mailto:jetspeed-dev-> [EMAIL PROTECTED]>
> For 
> additional commands, 
> e-mail: <mailto:[EMAIL PROTECTED]>
> 

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

Reply via email to