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