]> source.dussan.org Git - archiva.git/commitdiff
Fixing GET vs PUT logic.
authorJoakim Erdfelt <joakime@apache.org>
Tue, 16 Oct 2007 01:29:31 +0000 (01:29 +0000)
committerJoakim Erdfelt <joakime@apache.org>
Tue, 16 Oct 2007 01:29:31 +0000 (01:29 +0000)
Encountered a situation where a PUT could result in a 404.

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@584992 13f79535-47bb-0310-9956-ffa450edef68

archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java

index 07b58c5bb6cc67e5242d50848e4cb0f074d68bdc..cfa63a093068f13277e88d534c187512dcf9b781 100644 (file)
@@ -132,11 +132,15 @@ public class ProxiedDavServer
     public void process( DavServerRequest request, HttpServletResponse response )
         throws DavServerException, ServletException, IOException
     {
-        if ( WebdavMethodUtil.isReadMethod( request.getRequest().getMethod() ) )
+        boolean isGet = WebdavMethodUtil.isReadMethod( request.getRequest().getMethod() );
+        boolean isPut = WebdavMethodUtil.isWriteMethod( request.getRequest().getMethod() );
+        
+        if ( isGet )
         {
             fetchContentFromProxies( request );
         }
-        else
+
+        if ( isPut )
         {
             /* Create parent directories that don't exist when writing a file
              * This actually makes this implementation not compliant to the
@@ -153,22 +157,30 @@ public class ProxiedDavServer
             }
         }
 
-        // [MRM-503] - Metadata file need Pragma:no-cache response header.
-        if ( request.getLogicalResource().endsWith( "/maven-metadata.xml" ) )
+        if ( isGet )
         {
-            response.addHeader( "Pragma", "no-cache" );
-            response.addHeader( "Cache-Control", "no-cache" );
-        }
+            if ( resourceExists( request ) )
+            {
+                // [MRM-503] - Metadata file need Pragma:no-cache response header.
+                if ( request.getLogicalResource().endsWith( "/maven-metadata.xml" ) )
+                {
+                    response.addHeader( "Pragma", "no-cache" );
+                    response.addHeader( "Cache-Control", "no-cache" );
+                }
 
-        // TODO: [MRM-524] determine http caching options for other types of files (artifacts, sha1, md5, snapshots)
+                // TODO: [MRM-524] determine http caching options for other types of files (artifacts, sha1, md5, snapshots)
 
-        if( resourceExists( request ) )
-        {
-            davServer.process( request, response );
+                davServer.process( request, response );
+            }
+            else
+            {
+                respondResourceMissing( request, response );
+            }
         }
-        else
+
+        if ( isPut )
         {
-            respondResourceMissing( request, response );
+            davServer.process( request, response );
         }
     }