You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2011/04/15 16:21:36 UTC
svn commit: r1092717 -
/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
Author: scottbw
Date: Fri Apr 15 14:21:36 2011
New Revision: 1092717
URL: http://svn.apache.org/viewvc?rev=1092717&view=rev
Log:
Destroy shared data and participants consistently when deleting a widget
Modified:
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
Modified: incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java?rev=1092717&r1=1092716&r2=1092717&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Fri Apr 15 14:21:36 2011
@@ -267,36 +267,33 @@ public class WidgetFactory {
IWidgetInstance[] instances = persistenceManager.findByValue(IWidgetInstance.class, "widget", widget);
for(IWidgetInstance instance : instances){
- // Delete all participants associated with any instances
+ // Delete all participants and shared data associated with any instances
//
// Note that we don't call this within WidgetInstanceFactory.destroy() as
// if called in a different context (to remove just one instance) it would
- // have the side effect of deleting participants from other instances,
+ // have the side effect of deleting participants and shared data from other instances,
// not just the one being deleted.
//
// Note also that we have to use the instance as the hook for removing participants as there is no
// specific query for getting participants for a widget.
//
IParticipant[] participants = persistenceManager.findParticipants(instance);
- for (IParticipant participant:participants){
- persistenceManager.delete(participant);
- }
-
+ persistenceManager.delete(participants);
+ ISharedData[] sharedData = SharedDataHelper.findSharedData(instance);
+ persistenceManager.delete(sharedData);
+
// remove any preferences
IPreference[] preferences = persistenceManager.findByValue(IPreference.class, "widgetInstance", instance);
persistenceManager.delete(preferences);
// remove the instance
WidgetInstanceFactory.destroy(instance);
+
}
// remove any AccessRequests
IAccessRequest[] accessRequests = persistenceManager.findByValue(IAccessRequest.class, "widget", widget);
persistenceManager.delete(accessRequests);
-
- //remove SharedDataEntries
- ISharedData[] sharedData = persistenceManager.findByValue(ISharedData.class, "widget", widget);
- persistenceManager.delete(sharedData);
// remove the widget itself
persistenceManager.delete(widget);