Subject: Re: [wsrp-interfaces] Questions regarding getPortletDescription()
Like Subbu said, right now if a Consumer wants to reread the portlet descriptionfor a POP, they have to get the entire ServiceDescription and search for the POP'sportlet description. While it seems nice to say that we expect the Consumer tocache the ServiceDescription and thus not request it very often, the use caseswe are talking about are not when the Consumer just wants the ServiceDescriptionfor the sake of getting the ServiceDescription. There are more times when theConsumer wants to update only some subset of POPs metadata, and because of theissues Scott has raised (the getPortletDescription() is sensitive to the UserContext),if the Consumer wants the "full" POP description it must request the entireServiceDescription again as this is assured to have the "full" POP description.Getting the "full" POP description from the ServiceDescription seems to be inefficientand it would be better if the Consumer could request the "full" POP description byusing the getPortletDescription() call (i.e. irrespective of a user).Christopher-----Original Message-----First off on the question of "This makes me wonder if I should completely ignore what’s found in the ServiceDescription to avoid using incorrect information." I would advise the opposite. getServiceDescription() defines the complete function of a portlet. If you are choosing to pass the additional context information to getPortletDescription() then you are in effect checking with the producer what subset of this complete function this particular context can use. Because all producers must be defensive an assume they will be called to do things in inappropriate contexts a consumer can safely try any operation directly [without checking first] and then deal with the resulting fault/denial. And given getPortletDescription is an extra roundtrip in general its more advisable to not call it and just try the operation. That being said there may be some circumstances in some consumers where its considered important to prevent the user from invoking function that isn't available -- for example one might want to restrict the view of a toolbox of portlets that can be added to a "page" to only those portlets this user can access/see. This feature allows us to meet this type of [hopefully limited] use case.
From: Michael Freedman [mailto:Michael.Freedman@oracle.com]
Sent: Thursday, June 03, 2004 4:07 PM
Subject: Re: [wsrp-interfaces] Questions regarding getPortletDescription()
As for the comments about cumbersome, can you describe the use cases that are making this cumbersome? I recall we expected the consumer would [generally] be caching this information hence getServiceDescription would not be called very often.
Coco, Christopher wrote:
I agree that this process is cumbersome and not necessarily desirable. Christopher -----Original Message----- From: Subbu Allamaraju [mailto:email@example.com] Sent: Thursday, June 03, 2004 2:21 PM To: firstname.lastname@example.org Subject: Re: [wsrp-interfaces] Questions regarding getPortletDescription() This is a good point, and I agree that there is scope for confusion. On a related note, based on the implementation experience, I wish there is a getPortletDescription operation on the Service Description interface. Right now, if a consumer wants to find out the description of a POP, it must get the complete service description and look for the particular portlet. This is cumbersome for both the consumer and the producer. Did we ever discuss this during 1.0? Regards, Subbu Goldstein, Scott wrote:Thanks, again, for the info Rich. It might be worth considering changing the language of the getPortletDescription() section to clarify expected behavior. The existence of the UserContext parameter together with the statements: “This operation allows a Producer to provide information about the Portlets it offers in a contextsensitive manner.” and “Consumers may choose to alter how they interact with a Portlet based on the metadata contained in the returned PortletDescriptionResponse.” leads me to believe, as a Consumer developer, that the content returned from this operation will be different than that in the ServiceDescription. This makes me wonder if I should completely ignore what’s found in the ServiceDescription to avoid using incorrect information. Scott ------------------------------------------------------------------------ *From:* Rich Thompson [mailto:email@example.com] *Sent:* Thursday, June 03, 2004 3:26 AM *To:* firstname.lastname@example.org *Subject:* RE: [wsrp-interfaces] Questions regarding getPortletDescription() Agreed. Rich *"Coco, Christopher" <Christopher.Coco@vignette.com>* 06/02/2004 08:10 PM To "Goldstein, Scott" <Scott.Goldstein@vignette.com>, Rich Thompson/Watson/IBM@IBMUS, <email@example.com> cc Subject RE: [wsrp-interfaces] Questions regarding getPortletDescription() From my understanding, as long as the call is for a POP as CCPs aren't listed in the ServiceDescription. Christopher -----Original Message-----* From:* Goldstein, Scott * Sent:* Wednesday, June 02, 2004 5:08 PM* To:* Rich Thompson; firstname.lastname@example.org* Subject:* RE: [wsrp-interfaces] Questions regarding getPortletDescription() Thanks for the info, Rich. So, just to be completely clear, in the case that the metadata is not updated in any fashion by the producer, if I were to call getPortletDescription() with a UserContext containing all of the Producers’ user categories, I would be guaranteed to receive the same structure as if I had called getServiceDescription(). Correct? Scott ------------------------------------------------------------------------ *From:* Rich Thompson [mailto:email@example.com] * Sent:* Wednesday, June 02, 2004 8:57 AM* To:* firstname.lastname@example.org* Subject:* Re: [wsrp-interfaces] Questions regarding getPortletDescription() Thanks for your persistence ... sometimes as we get busy we hope that others will supply the answers :} The data in GetPortletDescriptionResponse is the same that is included in the array returned by getServiceDescription() with a few caveats. The data is allowed to change (portlet data updated, user access rights, etc) and most Producers will only return data from getServiceDescription() for their POPs while getPortletDescription() can be invoked against any portletHandle. Rich *"Goldstein, Scott" <Scott.Goldstein@vignette.com>* 06/02/2004 11:31 AM To <email@example.com> cc Subject [wsrp-interfaces] Questions regarding getPortletDescription() I haven’t received a reply to my message I sent out last week, so I thought I would try to resend it. If you have any answers to the questions below, please reply. Thanks. I have the following questions regarding the getPortletDescription() operation: 1. How does the data returned in the PortletDescriptionResponse relate to the portlet description contained within the ServiceDescription? Must they be identical? Or, can the producer change the data based on the user context. For instance, could the producer not specify a particular supported mode if the user is not an admin? 2. If the answer to #1 is that they can be different, then is there a way to ensure, when calling this method, that the PortletDescription returned would be equal to that in the ServiceDescription? Perhaps by sending all of the possible User Categories? 3. If the answer to #1 is that they must be the same, then is the only use of the UserContext attribute to allow the producer to throw an AccessDenied Fault? Will passing all user categories avoid this? Essentially, I’m trying to understand the intended use of getPortletDescription() and if it can be used as an optimization to update portlet meta data without having to retrieve the full service description. Thanks for the information. Scott