Author: scottbw
Date: Mon Mar 28 14:32:53 2011
New Revision: 1086255

URL: http://svn.apache.org/viewvc?rev=1086255&view=rev
Log:
Implemented updating of widgets including any changes in config.xml - 
previously Wookie just overwrote files in the package but did not update any of 
the widget metadata, resulting in some odd "caching" type behaviour as changes 
to things like height and width wouldn't "take".

Modified:
    incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
    incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
    incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java

Modified: incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java?rev=1086255&r1=1086254&r2=1086255&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java Mon 
Mar 28 14:32:53 2011
@@ -501,8 +501,8 @@ public class WidgetAdminServlet extends 
                                }       
                                else{
                                        // UPDATE
-                                       // TODO - call the manager to update 
required resources
-                                       // widget updated
+                                       // Update the widget metadata and 
configuration details
+                                       WidgetFactory.update(widgetModel, 
persistenceManager.findWidgetByGuid(widgetModel.getIdentifier()), false);
                                        request.setAttribute("message_value", 
"'"+ widgetModel.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.20")); //$NON-NLS-1$ 
//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$                                      
                                }
                        }

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=1086255&r1=1086254&r2=1086255&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Mon 
Mar 28 14:32:53 2011
@@ -301,5 +301,44 @@ public class WidgetFactory {
                persistenceManager.delete(widget);
                return true;
        } 
+       
+       /**
+        * Update a Widget with a new model
+        * @param model the updated widget model
+        * @param widget the existing widget
+        * @param grantAccessRequests set to true to grant any access requests 
defined by the model
+        */
+       public static void update( W3CWidget model, IWidget widget,  boolean 
grantAccessRequests ){
+           IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
+               if (model.getAuthor() != null){
+                       
widget.setWidgetAuthor(model.getAuthor().getAuthorName());
+                       
widget.setWidgetAuthorEmail(model.getAuthor().getEmail());
+                       widget.setWidgetAuthorHref(model.getAuthor().getHref());
+               }
+               widget.setGuid(model.getIdentifier());
+               widget.setHeight(model.getHeight());
+               widget.setWidth(model.getWidth());
+               widget.setVersion(model.getVersion());
+               
+               // Clear old values
+               widget.setStartFiles(null);
+               widget.setNames(null);
+               widget.setDescriptions(null);
+               widget.setLicenses(null);
+               widget.setFeatures(null);       
+               widget.setWidgetIcons(null);
+               widget.setPreferenceDefaults(null);
+               
+               // Set with updated values
+               createStartFiles(persistenceManager, model,widget);
+               createNames(persistenceManager, model,widget);
+               createDescriptions(persistenceManager, model,widget);
+               createIcons(persistenceManager, model, widget);
+               createLicenses(persistenceManager, model,widget);               
+               createPreferences(persistenceManager, model,widget);
+               createFeatures(persistenceManager, model,widget);
+        persistenceManager.save(widget);
+               createAccessRequests(persistenceManager, model, widget, 
grantAccessRequests);
+       }
 
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java?rev=1086255&r1=1086254&r2=1086255&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/server/ContextListener.java 
Mon Mar 28 14:32:53 2011
@@ -211,6 +211,7 @@ public class ContextListener implements 
                                                                
FlashMessage.getInstance().message(message);
                                                        } else {
                                                                String message 
= model.getLocalName("en") +"' - " + 
localizedMessages.getString("WidgetAdminServlet.20");
+                                                               
WidgetFactory.update(model, 
persistenceManager.findWidgetByGuid(model.getIdentifier()), true);
                                                                
_logger.info(message);
                                                                
FlashMessage.getInstance().message(message);
                                                        }


Reply via email to