Subject: RE: [wsrp-interfaces] copyPortlet - additional use case
It was my understanding that when a clone is performed in the 1.0 spec, there is no relationship between the original and the clone. Though, reading the spec, it seems that this is left up to the implementation:
“No relationship between the supplied Portlet and the new Portlet is defined by this specification.”
Though, any relationship seems a little awkward, since it leads to behavior which the consumer would not expect.
I definitely agree that there’s a use case for breaking relationships between clones and copies. In fact, I would argue that clone should explicitly not lead to any relationship. Is making this requirement more stringent in the 2.0 spec an option? Unfortunately, it’s likely to impact current implementations.
If we can’t change this requirement, than I would agree with Andre that this is a valid argument for having a separate method. However, I’m not sure that it’s strong an argument, since I would suspect most producers do not create this relationship and, therefore, don’t have this problem.
Say the portlet (A) in the page designer use case to be cloned/copied has properties and values: x=1 and y=2. The new copy/clone (B) would initially have the same property values for simple non-computed properties, but what about after:
A.x = 3;
B.y = 4;
What is the expected resultant value of A.y? So far, we have made no assumptions here (the write to A.x could also modify A.y if y was computed from x), but I would expect a copy/clone across registrations to help preserve A.y == 2. If we named the operation "copy" then I would be further encouraged to expect no post copy relationship between A and B, even if the two registration handles happen to reference the same registration, and this would, I think, be expected by Rich's use case, but not our necessarily our 1.0 clonePorlet.
Do we agree that there are such use cases where breaking any relationships between a portlet and its copies/clones is a requirement? If so, then a new copyPortlet operation makes sense (rather than overloading clonePortlet). Computed properties can still take on any value they like, but we would be encouraging producer/portlet property relationships to respect registrations.
Goldstein, Scott [mailto:Scott.Goldstein@vignette.com]
If I understand correctly, the only difference between clone and copy is the relevance of the registration. Therefore, I would say that this use case is applicable for both clone and copy. The clone() method, I believe, currently supports this use case due to the requirement of copying the current state from the original portlet to the clone being created. Is this not true for copy() as well?
From: Andre Kramer
Could be applicable, I agree. In selecting the use case, focused on requiring two registrations and involving an end user.