Author: psharples
Date: Sat Sep 15 15:48:56 2012
New Revision: 1385094
URL: http://svn.apache.org/viewvc?rev=1385094&view=rev
Log:
Added new method in connector to enable posting a new widget by URL. Also
updated commons-io to v 2.1 to make use of URL copy routines.
Modified:
incubator/wookie/trunk/connector/java/ivy.xml
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
incubator/wookie/trunk/ivy.xml
incubator/wookie/trunk/parser/java/ivy.xml
Modified: incubator/wookie/trunk/connector/java/ivy.xml
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/ivy.xml?rev=1385094&r1=1385093&r2=1385094&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/java/ivy.xml (original)
+++ incubator/wookie/trunk/connector/java/ivy.xml Sat Sep 15 15:48:56 2012
@@ -39,6 +39,8 @@
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="deploy->default">
</dependency>
+ <dependency org="commons-io" name="commons-io" rev="2.1"
conf="deploy->default">
+ </dependency>
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.4"
conf="deploy->default">
</dependency>
</dependencies>
Modified:
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java?rev=1385094&r1=1385093&r2=1385094&view=diff
==============================================================================
---
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
(original)
+++
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
Sat Sep 15 15:48:56 2012
@@ -41,6 +41,7 @@ import javax.xml.parsers.DocumentBuilder
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
@@ -449,6 +450,46 @@ public abstract class AbstractWookieConn
return widgets;
}
+ public 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;
+ }
+
+ public Widget postWidget(String widgetStrUrl, String adminUsername,
String adminPassword ) throws WookieConnectorException {
+ Widget publishedWidget = null;
+ try {
+ URL widgetUrl = new URL(widgetStrUrl);
+ String tempUploadFolder = System.getProperty("java.io.tmpdir");
+ String filename = normalizeFileName(widgetUrl);
+ File tempWgtFile = new File(tempUploadFolder, filename);
+ FileUtils.copyURLToFile(widgetUrl, tempWgtFile, 10000, 10000); //
10 second timeouts
+ publishedWidget = postWidget(tempWgtFile, adminUsername,
adminPassword);
+ // cleanup temp file
+ if(tempWgtFile.exists()){
+ tempWgtFile.delete();
+ }
+ } catch (MalformedURLException e) {
+ throw new WookieConnectorException("Malformed url error.", e);
+ } catch (IOException e) {
+ throw new WookieConnectorException("I/O error. Problem downloading
widget from given URL", e);
+ }
+ return publishedWidget;
+ }
/**
* This function is supplied for non browser based clients enabling
them to upload a widget file to the wookie server.
@@ -533,7 +574,7 @@ public abstract class AbstractWookieConn
// ------------------ read the SERVER RESPONSE
try {
- if ( connection.getResponseCode() != 201 ) {
+ if ( connection.getResponseCode() != 201 &&
connection.getResponseCode() != 200) {
throw new IOException ( "Widget file was not
uploaded successfully." );
}
Document doc =
parseInputStreamAsDocument(connection.getInputStream());
Modified: incubator/wookie/trunk/ivy.xml
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/ivy.xml?rev=1385094&r1=1385093&r2=1385094&view=diff
==============================================================================
--- incubator/wookie/trunk/ivy.xml (original)
+++ incubator/wookie/trunk/ivy.xml Sat Sep 15 15:48:56 2012
@@ -70,7 +70,7 @@
</dependency>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="deploy->default">
</dependency>
- <dependency org="commons-io" name="commons-io" rev="1.4"
conf="deploy->default">
+ <dependency org="commons-io" name="commons-io" rev="2.1"
conf="deploy->default">
</dependency>
<dependency org="dom4j" name="dom4j" rev="1.6.1"
conf="deploy->default">
</dependency>
Modified: incubator/wookie/trunk/parser/java/ivy.xml
URL:
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/ivy.xml?rev=1385094&r1=1385093&r2=1385094&view=diff
==============================================================================
--- incubator/wookie/trunk/parser/java/ivy.xml (original)
+++ incubator/wookie/trunk/parser/java/ivy.xml Sat Sep 15 15:48:56 2012
@@ -47,7 +47,7 @@
</dependency>
<dependency org="org.apache.commons" name="commons-compress" rev="1.0"
conf="deploy->default">
</dependency>
- <dependency org="commons-io" name="commons-io" rev="1.4"
conf="deploy->default">
+ <dependency org="commons-io" name="commons-io" rev="2.1"
conf="deploy->default">
</dependency>
<dependency org="commons-httpclient" name="commons-httpclient"
rev="3.0.1" conf="deploy->default">
</dependency>