Author: psharples
Date: Tue Sep 25 09:38:06 2012
New Revision: 1389773

URL: http://svn.apache.org/viewvc?rev=1389773&view=rev
Log:
Updates to the wookie provider. Now implements post widget by url.

Modified:
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetMarketplaceService.java
    
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetMarketplaceService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetMarketplaceService.java?rev=1389773&r1=1389772&r2=1389773&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetMarketplaceService.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultWidgetMarketplaceService.java
 Tue Sep 25 09:38:06 2012
@@ -63,8 +63,8 @@ public class DefaultWidgetMarketplaceSer
     private Map<String, WidgetMetadataResolver> widgetMetadataResolverMap;
     private static final String DEFAULT_URL = null;
     private static final Logger logger = 
LoggerFactory.getLogger(DefaultWidgetMarketplaceService.class);
-    private static final String SEARCH = 
"search?q=${SEARCHTERM}&start=${OFFSET}&resultsize=${LIMIT}";
-    private static final String CATEGORY = 
"tag/${CATEGORY}/widgets?start=${OFFSET}&resultsize=${LIMIT}";      
+    private static final String SEARCH = 
"search?q=${SEARCHTERM}&start=${OFFSET}&rows=${LIMIT}";
+    private static final String CATEGORY = 
"tag/${CATEGORY}/widgets?start=${OFFSET}&rows=${LIMIT}";    
     private static final String DETAIL = "widget/${ID}";
     private static final String CATEGORY_LIST = "tag/all";
     
@@ -87,8 +87,12 @@ public class DefaultWidgetMarketplaceSer
     public SearchResult<Widget> getWidgetsByFreeTextSearch(String searchTerm,
             int offset, int pageSize) throws Exception{
         if (getStoreUrl() == null) throw new Exception("External marketplace 
URL not configured");
+        // commented out because encoding the searchTerm here ends up with
+        // it being encoded twice 
+        // String encodedSearchTerm = URLEncoder.encode(searchTerm, "UTF-8");
+        String encodedSearchTerm = searchTerm;
         String url = getStoreUrl() + SEARCH;
-        url = url.replace("${SEARCHTERM}", searchTerm);
+        url = url.replace("${SEARCHTERM}", encodedSearchTerm);
         url = url.replace("${OFFSET}", String.valueOf(offset));
         url = url.replace("${LIMIT}", String.valueOf(pageSize));
         SearchResult<Widget> result = executeQuery(url);

Modified: 
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java?rev=1389773&r1=1389772&r2=1389773&view=diff
==============================================================================
--- 
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java
 (original)
+++ 
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/service/impl/WookieWidgetService.java
 Tue Sep 25 09:38:06 2012
@@ -18,10 +18,14 @@
  */
 
 package org.apache.rave.provider.w3c.service.impl;
+import java.io.File;
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.Widget;
 import org.apache.rave.portal.service.WidgetProviderService;
@@ -91,18 +95,24 @@ public class WookieWidgetService impleme
     }
     
     @SuppressWarnings("deprecation")
-    public Widget publishWidgetUrlToWookie(String widgetUrl){
+    public Widget publishWidgetUrlToWookie(String widgetStrUrl){
         Widget widget = null;
+        File tempWgtFile = null;
         try {
             if(adminUsername.equals(null) || adminUsername.equals("") || 
adminPassword.equals(null) || adminPassword.equals("")){
                 throw new WookieConnectorException("Either the wookie username 
or password is not defined in portal.properties", null);
             }
             connectorService = getWookieConnectorService(wookieServerUrl, 
wookieApiKey, "");
-            // TODO - replace dummy line below with the commented out version, 
when bundled with wookie 0.13.0
+            // TODO - replace code with line below when bundled with wookie 
0.13.0
+            // wookie-0.13.0 can accept postWidget with a url parameter as 
well as file parameter
             //org.apache.wookie.connector.framework.Widget wookieWidget = 
connectorService.postWidget(widgetUrl, adminUsername, adminPassword);
-            org.apache.wookie.connector.framework.Widget wookieWidget = 
-                new 
org.apache.wookie.connector.framework.Widget("http://wookietempurl.com";, 
"name", "description", null, 
-                        "200", "400", "0.1", "author", "license");
+            
+            URL widgetUrl = new URL(widgetStrUrl);
+            String tempUploadFolder = System.getProperty("java.io.tmpdir");
+            String filename = normalizeFileName(widgetUrl);
+            tempWgtFile = new File(tempUploadFolder, filename);
+            FileUtils.copyURLToFile(widgetUrl, tempWgtFile, 10000, 10000);
+            org.apache.wookie.connector.framework.Widget wookieWidget = 
connectorService.postWidget(tempWgtFile,  adminUsername, adminPassword);
             widget = new W3CWidget();
             widget.setUrl(wookieWidget.getIdentifier());
             widget.setDescription(wookieWidget.getDescription());
@@ -111,10 +121,39 @@ public class WookieWidgetService impleme
             widget.setThumbnailUrl(wookieWidget.getIcon().toString());
         } catch (WookieConnectorException e) {
             logger.error(e.getMessage());
+        } catch (MalformedURLException e) {
+            logger.error("Malformed url error. " + e.getMessage());
+        } catch (IOException e) {
+            logger.error("I/O error. Problem downloading widget from given 
URL" + e.getMessage());
+        }
+        finally{
+            if(tempWgtFile.exists()){
+                tempWgtFile.delete();
+            }
         }
         return widget;
     }
 
+    private String normalizeFileName(URL urlPath){
+        String filename;
+        String[] parts = urlPath.getFile().split("/");
+        if(parts[parts.length-1].length() < 1){
+           filename = "unknown.wgt";
+        }else{
+            filename = parts[parts.length-1];
+        }
+        if(filename.indexOf('.') == -1){
+           filename = filename + ".wgt"; 
+        }
+        else{
+            if(!filename.endsWith(".wgt")){
+                String[] split = filename.split("\\.");
+                filename = split[0] + ".wgt";
+            }
+        }
+        return filename;
+    }
+
     /**
      * Gets the Widget Instance corresponding to the RegionWidget and the 
Viewer
      * @param widget the type of Widget to obtain


Reply via email to