You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/04/02 09:20:24 UTC

svn commit: r1308258 - in /archiva/trunk/archiva-modules/archiva-web: archiva-web-common/src/main/resources/org/apache/archiva/i18n/ archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/ archiva-webapp-js/src/main/webapp/js/archiva/

Author: olamy
Date: Mon Apr  2 07:20:23 2012
New Revision: 1308258

URL: http://svn.apache.org/viewvc?rev=1308258&view=rev
Log:
fix concurrent access when uploading files in parallel

Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultFileUploadService.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/artifacts-management.js

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties?rev=1308258&r1=1308257&r2=1308258&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties Mon Apr  2 07:20:23 2012
@@ -398,5 +398,7 @@ fileupload.packaging=Packaging
 fileupload.generatePom=Generate Maven POM
 fileupload.repositoryId=Repository Id
 fileupload.save=Save Files
+fileupload.upload.required=You must upload your files first.
+fileupload.artifacts.saved=Artifacts uploaded and saved on Server side.
 
 

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultFileUploadService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultFileUploadService.java?rev=1308258&r1=1308257&r2=1308258&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultFileUploadService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultFileUploadService.java Mon Apr  2 07:20:23 2012
@@ -81,6 +81,7 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.TimeZone;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * @author Olivier Lamy
@@ -123,13 +124,6 @@ public class DefaultFileUploadService
 
         try
         {
-            String groupId = getStringValue( multipartBody, "groupId" );
-
-            String artifactId = getStringValue( multipartBody, "artifactId" );
-
-            String version = getStringValue( multipartBody, "version" );
-
-            String packaging = getStringValue( multipartBody, "packaging" );
 
             String classifier = getStringValue( multipartBody, "classifier" );
             boolean pomFile = BooleanUtils.toBoolean( getStringValue( multipartBody, "pomFile" ) );
@@ -148,17 +142,12 @@ public class DefaultFileUploadService
             fileMetadata.setDeleteUrl( tmpFile.getName() );
             fileMetadata.setPomFile( pomFile );
 
-            log.info( "uploading file:{}", fileMetadata );
+            log.info( "uploading file: {}", fileMetadata );
 
-            List<FileMetadata> fileMetadatas =
-                (List<FileMetadata>) httpServletRequest.getSession().getAttribute( FILES_SESSION_KEY );
+            List<FileMetadata> fileMetadatas = getSessionFilesList();
 
-            if ( fileMetadatas == null )
-            {
-                fileMetadatas = new ArrayList<FileMetadata>( 1 );
-            }
             fileMetadatas.add( fileMetadata );
-            httpServletRequest.getSession().setAttribute( FILES_SESSION_KEY, fileMetadatas );
+
             return fileMetadata;
         }
         catch ( IOException e )
@@ -169,6 +158,23 @@ public class DefaultFileUploadService
 
     }
 
+    /**
+     * FIXME must be per session synchronized not globally
+     *
+     * @return
+     */
+    protected synchronized List<FileMetadata> getSessionFilesList()
+    {
+        List<FileMetadata> fileMetadatas =
+            (List<FileMetadata>) httpServletRequest.getSession().getAttribute( FILES_SESSION_KEY );
+        if ( fileMetadatas == null )
+        {
+            fileMetadatas = new CopyOnWriteArrayList<FileMetadata>();
+            httpServletRequest.getSession().setAttribute( FILES_SESSION_KEY, fileMetadatas );
+        }
+        return fileMetadatas;
+    }
+
     public Boolean deleteFile( String fileName )
         throws ArchivaRestServiceException
     {
@@ -206,8 +212,7 @@ public class DefaultFileUploadService
                          String packaging, final boolean generatePom )
         throws ArchivaRestServiceException
     {
-        List<FileMetadata> fileMetadatas =
-            (List<FileMetadata>) httpServletRequest.getSession().getAttribute( FILES_SESSION_KEY );
+        List<FileMetadata> fileMetadatas = getSessionFilesList();
         if ( fileMetadatas == null || fileMetadatas.isEmpty() )
         {
             return Boolean.FALSE;
@@ -230,6 +235,7 @@ public class DefaultFileUploadService
             saveFile( repositoryId, fileMetadata, generatePom && !pomGenerated, groupId, artifactId, version,
                       packaging );
             pomGenerated = true;
+            deleteFile( fileMetadata.getServerFileName() );
         }
 
         filesToAdd = Iterables.filter( fileMetadatas, new Predicate<FileMetadata>()
@@ -246,6 +252,7 @@ public class DefaultFileUploadService
             FileMetadata fileMetadata = iterator.next();
             log.debug( "fileToAdd: {}", fileMetadata );
             savePomFile( repositoryId, fileMetadata, groupId, artifactId, version, packaging );
+            deleteFile( fileMetadata.getServerFileName() );
         }
 
         return Boolean.TRUE;

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/artifacts-management.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/artifacts-management.js?rev=1308258&r1=1308257&r2=1308258&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/artifacts-management.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/artifacts-management.js Mon Apr  2 07:20:23 2012
@@ -55,7 +55,7 @@ define("archiva.artifacts-management",["
           type: "GET",
           dataType: 'json',
           success: function(data) {
-
+            displaySuccessMessage($.i18n.prop("fileupload.artifacts.saved"));
           },
           error: function(data) {
             var res = $.parseJSON(data.responseText);