Author: psharples
Date: Mon Dec  6 09:58:28 2010
New Revision: 1042557

URL: http://svn.apache.org/viewvc?rev=1042557&view=rev
Log:
Fix to allow wookie admin to delete instantiated widgets. See WOOKIE-168.

Modified:
    
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/PreferenceDelegate.java
    incubator/wookie/trunk/src/org/apache/wookie/beans/IPreference.java
    incubator/wookie/trunk/src/org/apache/wookie/beans/ISharedData.java
    
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/PreferenceImpl.java
    
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/SharedDataImpl.java
    
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java
    
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/PreferenceImpl.java
    
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/SharedDataImpl.java
    incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/PreferenceDelegate.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/PreferenceDelegate.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/PreferenceDelegate.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/ajaxmodel/impl/PreferenceDelegate.java
 Mon Dec  6 09:58:28 2010
@@ -57,4 +57,9 @@ public class PreferenceDelegate implemen
                this.readOnly = readOnly;
        }
 
+       public Object getId() {
+               // TODO 
+               return null;
+       }
+
 }

Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/IPreference.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/IPreference.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/IPreference.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/IPreference.java Mon Dec 
 6 09:58:28 2010
@@ -21,7 +21,7 @@ package org.apache.wookie.beans;
  * @author <a href="mailto:[email protected]";>Randy Watler</a>
  * @version $Id$
  */
-public interface IPreference
+public interface IPreference extends IBean
 {
     /**
      * Get widget instance preference value key.

Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/ISharedData.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/ISharedData.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/ISharedData.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/ISharedData.java Mon Dec 
 6 09:58:28 2010
@@ -21,7 +21,7 @@ package org.apache.wookie.beans;
  * @author <a href="mailto:[email protected]";>Randy Watler</a>
  * @version $Id$
  */
-public interface ISharedData
+public interface ISharedData extends IBean
 {
     /**
      * Get widget shared data value key.

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/PreferenceImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/PreferenceImpl.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/PreferenceImpl.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/PreferenceImpl.java 
Mon Dec  6 09:58:28 2010
@@ -104,4 +104,9 @@ public class PreferenceImpl implements I
     {
         this.readOnly = (readOnly ? Boolean.TRUE : Boolean.FALSE);
     }
+
+       public Object getId() {
+               // TODO is this correct - all the other elements use int field
+               return elementId;
+       }
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/SharedDataImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/SharedDataImpl.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/SharedDataImpl.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/beans/jcr/impl/SharedDataImpl.java 
Mon Dec  6 09:58:28 2010
@@ -104,4 +104,9 @@ public class SharedDataImpl implements I
     {
         this.sharedDataKey = sharedDataKey;
     }
+
+       public Object getId() {
+               // TODO is this correct - all the other elements use int field
+               return elementId;
+       }
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/JPAPersistenceManager.java
 Mon Dec  6 09:58:28 2010
@@ -142,7 +142,9 @@ public class JPAPersistenceManager imple
         BEAN_INTERFACE_TO_CLASS_MAP.put(IAccessRequest.class, 
AccessRequestImpl.class);
         BEAN_INTERFACE_TO_CLASS_MAP.put(IApiKey.class, ApiKeyImpl.class);
         BEAN_INTERFACE_TO_CLASS_MAP.put(IParticipant.class, 
ParticipantImpl.class);
+        BEAN_INTERFACE_TO_CLASS_MAP.put(IPreference.class, 
PreferenceImpl.class);
         BEAN_INTERFACE_TO_CLASS_MAP.put(IServerFeature.class, 
ServerFeatureImpl.class);
+        BEAN_INTERFACE_TO_CLASS_MAP.put(ISharedData.class, 
SharedDataImpl.class);
         BEAN_INTERFACE_TO_CLASS_MAP.put(IWhitelist.class, WhitelistImpl.class);
         BEAN_INTERFACE_TO_CLASS_MAP.put(IWidget.class, WidgetImpl.class);
         BEAN_INTERFACE_TO_CLASS_MAP.put(IWidgetDefault.class, 
WidgetDefaultImpl.class);

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/PreferenceImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/PreferenceImpl.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/PreferenceImpl.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/PreferenceImpl.java 
Mon Dec  6 09:58:28 2010
@@ -127,4 +127,12 @@ public class PreferenceImpl implements I
     {
         this.readOnly = (readOnly ? Boolean.TRUE : Boolean.FALSE);
     }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.wookie.beans.IBean#getId()
+     */
+       public Object getId() {
+             return id;
+       }
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/SharedDataImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/SharedDataImpl.java?rev=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/SharedDataImpl.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/SharedDataImpl.java 
Mon Dec  6 09:58:28 2010
@@ -122,4 +122,12 @@ public class SharedDataImpl implements I
     {
         this.sharedDataKey = sharedDataKey;
     }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.wookie.beans.IBean#getId()
+     */
+       public Object getId() {
+               return id;
+       }
 }

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=1042557&r1=1042556&r2=1042557&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Mon 
Dec  6 09:58:28 2010
@@ -21,7 +21,9 @@ import org.apache.wookie.beans.ILicense;
 import org.apache.wookie.beans.IName;
 import org.apache.wookie.beans.IParam;
 import org.apache.wookie.beans.IParticipant;
+import org.apache.wookie.beans.IPreference;
 import org.apache.wookie.beans.IPreferenceDefault;
+import org.apache.wookie.beans.ISharedData;
 import org.apache.wookie.beans.IStartFile;
 import org.apache.wookie.beans.IWidget;
 import org.apache.wookie.beans.IWidgetDefault;
@@ -247,7 +249,7 @@ public class WidgetFactory {
                // remove any widget instances for this widget
                IWidgetInstance[] instances = 
persistenceManager.findByValue(IWidgetInstance.class, "widget", widget);  
                for(IWidgetInstance instance : instances){
-                       WidgetInstanceFactory.destroy(instance);
+                       
                        // Delete all participants associated with any instances
                        //
                        // Note that we don't call this within 
WidgetInstanceFactory.destroy() as 
@@ -257,17 +259,28 @@ public class WidgetFactory {
                        //
                        // 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);
                        }
+                       
+                       // 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);
                return true;


Reply via email to