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 2012/03/07 13:20:51 UTC
svn commit: r1297950 -
/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java
Author: scottbw
Date: Wed Mar 7 12:20:50 2012
New Revision: 1297950
URL: http://svn.apache.org/viewvc?rev=1297950&view=rev
Log:
Added support for downloading the original .wgt package file for a widget using content negotiation - see WOOKIE-320.
Modified:
incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.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=1297950&r1=1297949&r2=1297950&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetsController.java Wed Mar 7 12:20:50 2012
@@ -15,13 +15,17 @@
package org.apache.wookie.controller;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.configuration.Configuration;
+import org.apache.commons.io.IOUtils;
import org.apache.wookie.Messages;
import org.apache.wookie.beans.IWidget;
import org.apache.wookie.beans.util.IPersistenceManager;
@@ -90,28 +94,53 @@ public class WidgetsController extends C
}
}
- /* (non-Javadoc)
- * @see org.apache.wookie.controller.Controller#show(java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
- */
- protected void show(String resourceId, HttpServletRequest request,
- HttpServletResponse response) throws ResourceNotFoundException, IOException {
- // support "all" queries
- if ((resourceId == null) || resourceId.equals("")){
- index(resourceId, request, response);
- return;
- }
-
- IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
- IWidget widget = persistenceManager.findWidgetByGuid(resourceId);
- // attempt to get specific widget by id
- if (widget == null) {
- persistenceManager = PersistenceManagerFactory.getPersistenceManager();
- widget = persistenceManager.findById(IWidget.class, resourceId);
- }
- // return widget result
- if (widget == null) throw new ResourceNotFoundException();
- returnXml(WidgetHelper.createXMLWidgetsDocument(widget, getLocalPath(request), getLocales(request)),response);
- }
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.wookie.controller.Controller#show(java.lang.String,
+ * javax.servlet.http.HttpServletRequest,
+ * javax.servlet.http.HttpServletResponse)
+ */
+ protected void show(String resourceId, HttpServletRequest request,
+ HttpServletResponse response) throws ResourceNotFoundException,
+ IOException {
+
+ IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ // attempt to get specific widget by URI
+ IWidget widget = persistenceManager.findWidgetByGuid(resourceId);
+ // attempt to get specific widget by id
+ if (widget == null) {
+ persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+ widget = persistenceManager.findById(IWidget.class, resourceId);
+ }
+ // return widget result
+ if (widget == null)
+ throw new ResourceNotFoundException();
+
+ switch (format(request)) {
+ case XML:returnXml(WidgetHelper.createXMLWidgetsDocument(widget,getLocalPath(request), getLocales(request)), response);break;
+ case WIDGET:returnWidget(widget, response);break;
+ default:returnXml(WidgetHelper.createXMLWidgetsDocument(widget,getLocalPath(request), getLocales(request)), response);
+ }
+ }
+
+ /**
+ * Return the specified widget's original .wgt package in the response from a
+ * servlet
+ *
+ * @param widget
+ * the widget to return
+ * @param response
+ * the servlet response
+ * @throws IOException
+ */
+ protected void returnWidget(IWidget widget, HttpServletResponse response)
+ throws IOException {
+ File widgetFile = new File(widget.getPackagePath());
+ InputStream in = new FileInputStream(widgetFile);
+ OutputStream out = response.getOutputStream();
+ IOUtils.copy(in, out);
+ }
/* (non-Javadoc)
* @see org.apache.wookie.controller.Controller#index(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)