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>


Reply via email to