You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by ev...@apache.org on 2005/11/24 15:23:13 UTC

svn commit: r348740 - in /maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src: main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java

Author: evenisse
Date: Thu Nov 24 06:23:07 2005
New Revision: 348740

URL: http://svn.apache.org/viewcvs?rev=348740&view=rev
Log:
PR: WAGON-28
Submitted by: David Hawkins

Support PUT operations for file upload

Modified:
    maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
    maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java

Modified: maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java?rev=348740&r1=348739&r2=348740&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java Thu Nov 24 06:23:07 2005
@@ -23,13 +23,16 @@
 import org.apache.maven.wagon.StreamWagon;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
 import org.apache.maven.wagon.proxy.ProxyInfo;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
 
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.Authenticator;
+import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.PasswordAuthentication;
 import java.net.URL;
@@ -47,6 +50,8 @@
     private String previousProxyHost;
 
     private String previousProxyPort;
+    
+    private HttpURLConnection putConnection;
 
     public void fillInputData( InputData inputData )
         throws TransferFailedException, ResourceDoesNotExistException
@@ -89,8 +94,52 @@
     public void fillOutputData( OutputData outputData )
         throws TransferFailedException
     {
-        throw new UnsupportedOperationException( "PUT operation is not supported by Light Weight  HTTP wagon" );
+        Repository repository = getRepository();
+        String repositoryUrl = repository.getUrl();
+        
+        Resource resource = outputData.getResource();
+        try
+        {
+            URL url;
+            if ( repositoryUrl.endsWith( "/" ) )
+            {
+                url = new URL( repositoryUrl + resource.getName() );
+            }
+            else
+            {
+                url = new URL( repositoryUrl + "/" + resource.getName() );
+            }
+            putConnection = (HttpURLConnection) url.openConnection();
+            
+            putConnection.setRequestMethod("PUT");
+            putConnection.setDoOutput(true);
+            outputData.setOutputStream(putConnection.getOutputStream());
+        }
+        catch ( IOException e )
+        {
+            throw new TransferFailedException( "Error transferring file", e );
+        }
     }
+    
+    
+    public void put( File source, String resourceName )
+        throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        super.put( source, resourceName );
+        
+        try
+        {
+            if ( putConnection.getResponseCode() != HttpURLConnection.HTTP_OK )
+            {
+                throw new TransferFailedException("Unable to transfer file. HttpURLConnection returned the response code: " + putConnection.getResponseCode() );
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new TransferFailedException("Error transferring file", e);
+        }
+    }
+    
 
     public void openConnection()
         throws ConnectionException, AuthenticationException
@@ -149,6 +198,10 @@
     public void closeConnection()
         throws ConnectionException
     {
+        if ( putConnection != null )
+        {
+            putConnection.disconnect();
+        }
         if ( previousProxyHost != null )
         {
             System.setProperty( "http.proxyHost", previousProxyHost );

Modified: maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java
URL: http://svn.apache.org/viewcvs/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java?rev=348740&r1=348739&r2=348740&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/test/java/org/apache/maven/wagon/providers/http/LightweightHttpWagonTest.java Thu Nov 24 06:23:07 2005
@@ -72,12 +72,7 @@
 
         httpd = (Httpd) lookup( Httpd.ROLE );
     }
-
-    protected void fileRoundTripTesting()
-    {
-        // skip - PUT not supported
-    }
-
+    
     protected void tearDownWagonTestingFixtures()
         throws Exception
     {



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org