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);