Author: scottbw
Date: Tue Oct 9 14:23:38 2012
New Revision: 1396044
URL: http://svn.apache.org/viewvc?rev=1396044&view=rev
Log:
Added improved handling of updates for widgets with no identifier, reusing any
previously-issued identifier. Note that one consequence is that widget
identifiers are not updated on PUT. Note also this only applies when using the
REST API, where there is a resource parameter for the widget ID. See WOOKIE-383.
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java?rev=1396044&r1=1396043&r2=1396044&view=diff
==============================================================================
---
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
(original)
+++
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
Tue Oct 9 14:23:38 2012
@@ -255,13 +255,23 @@ public class WidgetsController extends C
//
W3CWidgetFactory fac =
W3CWidgetFactoryUtils.createW3CWidgetFactory(getServletContext(), properties,
localizedMessages);
W3CWidget widgetModel = fac.parse(zipFile);
+
+ String widgetId = widgetModel.getIdentifier();
+
+ //
+ // If we have a generated ID and resourceId, use the resourceId to
override the generated widget identifier. This is a fix for WOOKIE-383
+ //
+ if
(widgetModel.getIdentifier().startsWith("http://incubator.apache.org/wookie/generated/")
&& resourceId != null){
+ widgetId = resourceId;
+ }
+
new WidgetJavascriptSyntaxAnalyzer(fac.getUnzippedWidgetDirectory());
//
// Check if the widget model corresponds to an existing installed
widget
//
IPersistenceManager persistenceManager =
PersistenceManagerFactory.getPersistenceManager();
- if (persistenceManager.findWidgetByGuid(widgetModel.getIdentifier())
== null) {
+ if (persistenceManager.findWidgetByGuid(widgetId) == null) {
//
// A new widget was created, so return 201
@@ -277,7 +287,7 @@ public class WidgetsController extends C
// Widget already exists, so update the widget metadata and
configuration details
// and return 200
//
-
WidgetFactory.update(widgetModel,persistenceManager.findWidgetByGuid(widgetModel.getIdentifier()),
true, zipFile);
+
WidgetFactory.update(widgetModel,persistenceManager.findWidgetByGuid(widgetId),
true, zipFile);
returnXml(WidgetImportHelper.createXMLWidgetDocument(widgetModel,
new File(fac.getUnzippedWidgetDirectory(), "config.xml"),
getWookieServerURL(request, "").toString(), true), response);
return false;
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=1396044&r1=1396043&r2=1396044&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/helpers/WidgetFactory.java Tue
Oct 9 14:23:38 2012
@@ -307,7 +307,12 @@ public class WidgetFactory {
widget.setDir(model.getDir());
widget.setLang(model.getLang());
widget.setDefaultLocale(model.getDefaultLocale());
- widget.setIdentifier(model.getIdentifier());
+
+ //
+ // Don't override the identifier - see WOOKIE-383
+ //
+ //widget.setIdentifier(model.getIdentifier());
+
widget.setHeight(model.getHeight());
widget.setWidth(model.getWidth());
widget.setVersion(model.getVersion());