OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

wsrp-interop message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [wsrp-interop] cloneBeforeWrite when using ProducerOfferedPortlets


Title:
Rich,
   The level of independence you describe doesn't seem right/consistent to me.  I would prefer [thought] this field answered the question "which portlets in this producer are clonable"?  I don't think there is value to answering the question "is pre-cloning this portlet an effective implementation strategy"?  Using the field to answer the first question is interesting because there is no other way to determine this information.  A consumer can figure whether no portlets in the producer are clonable if the producer doesn't expose the portlet management interface.  However, unless we use this field it can't determine if/which portlets in this producer can be cloned when the portlet management interface is supported.  This is interesting meta data that allows a consumer to make implementation decisions.  On the other hand if a consumer must assume all portlets in a producer are clonable unless the associated port isn't available, using this field to indicate that pre-cloning is/isn't an effective implementation strategy is of little use.  Pre-cloning isn't more efficient -- clone on demand as a by product is always the most efficient.  So I see little value in including a [confusing] optimization flag that says "go ahead an use the less efficient implementation even though you have to support the more efficient one anyway".  However, I can see some value for my interpretation in those situations where clone on demand isn't an option -- i.e. the portlet doesn't receive an action.  The most specific one being when the portlet is added to the portlet repository in the Portal however you can even view adding a portlet to a page as an example.  These are "portal events" that don't correspond to underlying portlet calls/actions.  If the consumer knows the answer to the question "which portlets are clonable" it can make implementation choices to always clone [those that are clonable] when these events occur.  

So my preference at this point is to either drop hasUserSpecificState because its misleading and has little value or to modify its meaning to indicate this portlet is clonable.
     -Mike-


Rich Thompson wrote:

1. The hasUserSpecificState flag is independent of whether or not clones are allowed. It simply states to the Consumer that the portlet is going to store user specific state so that the Consumer can clone the portlet before the first usage rather than receiving a clone back on the first interaction. This flag was added due to the thinking that many portlets would use a shared customization rather than user specific persistent state. This becomes easier to manage if the number of clones is not increased simply because a new user has registered with the Consumer.

2. I did not mean to imply the Producer choosing to clone outside of portletStateChange="cloneBeforeWrite" (or a clonePortlet() invocation), but do see how that could have been read into my comments. I think the spec does limit the Producer to these two times for when it may clone a portlet.

Rich Thompson




David Ward <david.ward@oracle.com>

06/30/2003 09:30 AM

       
        To:        Rich Thompson/Watson/IBM@IBMUS
        cc:        wsrp-interop@lists.oasis-open.org
        Subject:        Re: [wsrp-interop] cloneBeforeWrite when using ProducerOfferedPortlets



Yes so hasUserSpecificState = true => allow user specific clones

does hasUserSpecificState = false => don't allow user specific clones? If not, then this flag seems rather pointless, as you still seem to have the possiblity of user-specific clones being created (so you may as well clone the portlet on addition to the page all the time to prevent cache invalidations in the future).

Are you also saying you would expect the producer to clone the POP even when portletStateChange != cloneBeforeWrite? This makes the "readWrite" and "cloneBeforeWrite" values sound equivalent.

Dave

Rich Thompson wrote:


The purpose of this flag (has UserSpecificState) is for those cases where a portlet always has state specific to the user (e.g. an email portlet). It is purely an optimization allowing the Consumer to clone the portlet for the user on first view of a page containing it.


I would agree that using a value of cloneBeforeWrite for portletStateChange (the new name) would be better when using POPs. There was some discussion about whether this type of case should have its own fault message (CloneRequired), but the decision was that it would be rare enough that OperationFailed or PortletStateChangeRequired would be suffice.


I would note that the one down side of throwing the PortletStateChangeRequired fault rather than cloning the POP is that the Consumer is unable to associate the cloned portlet with any current session while the Producer can do such a change while doing the clone (one of the big advantages of the clone-on-write semantics).


Rich Thompson
OASIS WSRP TC Chair
Interaction Middleware and Standards for Portal Server
IBM T.J. Watson Research Center / Yorktown Heights, NY
Phone: (914) 945-3225    email:
richt2@us.ibm.com


David Ward <david.ward@oracle.com>

06/27/2003 01:09 PM

       
       To:        Richard Jacob
<richard.jacob@de.ibm.com>
       cc:        wsrp-interop@lists.oasis-open.org

       Subject:        Re: [wsrp-interop] cloneBeforeWrite when using ProducerOfferedPortlets




Shouldn't you be setting state change to "cloneBeforeWrite" in this case? As far as I understand, the producer-offered entities are read-only.

I still have questions about the meaning of hasUserSpecificState from Andre's testing. Does hasUserSpecificState=false mean the consumer should never have to call cloneEntity() or send "cloneBeforeWrite"? If not, then what is the purpose of this flag?

Andre's portlets are returning hasUserSpecificState=false, even though they expect to be able to update state and hence clone new copies of the producer offered entity.

Regards

Dave

Richard Jacob wrote:

Hi,

the Oracle producer throws a StateChangeRequiredFault if our consumer uses
a producer offered portlet (POP) and wants to change the persistent state
in edit mode of portlet E:0:default for example.
We have the InteractionParams.stateChange set to "readwrite" allowing the
producer to write.

I think the flag hasUserSpecificState in PortletDescription encourages the
consumer to clone, but it is not required to clone.
I think if a consumer using a POP allows the portlet to change its state,
the producer should perform a clone before write here.
The spec says for the PortletStateChangeRequiredFault:  Used when a Portlet
needs to modify its persistent state, but has been prevented from doing so.
So my understanding is that this fault should only be thrown if the
consumer indicates "readonly" to the portlet but the portlet needs to
change its persistent state on an action.

If we interpreted the flag hasUserSpecificState=true as the requirement to
clone, producers not exposing the PortletManagement interface could never
have portlets that change their persistent state.

What do people think?

Mit freundlichen Gruessen / best regards,

      Richard Jacob
______________________________________________________
IBM Lab Boeblingen, Germany
Dept.8288, WebSphere Portal Server Development
Phone: ++49 7031 16-3469  -  Fax: ++49 7031 16-4888
Email:
mailto:richard.jacob@de.ibm.com


You may leave a Technical Committee at any time by visiting
http://www.oasis-open.org/apps/org/workgroup/wsrp-interop/members/leave_workgroup.php

 

--

David Ward
Principal Software Engineer
Oracle Portal
Oracle European Development Centre
520 Oracle Parkway
Thames Valley Park
Reading
Berkshire RG6 1RA
UK
Email:
david.ward@oracle.com
Tel:
+44 118 924 5079
Fax:
+44 118 924 5005






--

David Ward
Principal Software Engineer
Oracle Portal
Oracle European Development Centre
520 Oracle Parkway
Thames Valley Park
Reading
Berkshire RG6 1RA
UK
Email:
david.ward@oracle.com
Tel:
+44 118 924 5079
Fax:
+44 118 924 5005







[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]