NPE check and start moving to a knockout model

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1307528 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Olivier Lamy 2012-03-30 16:47:14 +00:00
parent f994014554
commit c0d576e45e
5 changed files with 61 additions and 16 deletions

View File

@ -55,3 +55,7 @@ This file must contains:
mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"/>
</Context>
jrebel
generate files: mvn org.zeroturnaround:jrebel-maven-plugin:1.1.3:generate -Pjs

View File

@ -397,5 +397,6 @@ fileupload.version=Version
fileupload.packaging=Packaging
fileupload.generatePom=Generate Maven POM
fileupload.repositoryId=Repository Id
fileupload.save=Save Files

View File

@ -91,14 +91,21 @@ public FileMetadata post( MultipartBody multipartBody )
String repositoryId =
IOUtils.toString( multipartBody.getAttachment( "repositoryId" ).getDataHandler().getInputStream() );
boolean generatePom = BooleanUtils.toBoolean(
IOUtils.toString( multipartBody.getAttachment( "generatePom" ).getDataHandler().getInputStream() ) );
Attachment generatePomAttachment = multipartBody.getAttachment( "generatePom" );
boolean generatePom = BooleanUtils.toBoolean( generatePomAttachment == null
? Boolean.FALSE.toString()
: IOUtils.toString(
generatePomAttachment.getDataHandler().getInputStream() ) );
String classifier =
IOUtils.toString( multipartBody.getAttachment( "classifier" ).getDataHandler().getInputStream() );
boolean pomFile = BooleanUtils.toBoolean(
IOUtils.toString( multipartBody.getAttachment( "pomFile" ).getDataHandler().getInputStream() ) );
Attachment pomFileAttachment = multipartBody.getAttachment( "pomFile" );
boolean pomFile = BooleanUtils.toBoolean( pomFileAttachment == null
? Boolean.FALSE.toString()
: IOUtils.toString(
pomFileAttachment.getDataHandler().getInputStream() ) );
log.info( "uploading file:" + groupId + ":" + artifactId + ":" + version );
Attachment file = multipartBody.getAttachment( "files[]" );

View File

@ -19,6 +19,23 @@
define("archiva.artifacts-management",["jquery","i18n","order!utils","order!jquery.tmpl","order!knockout",
"order!knockout.simpleGrid","jquery.validate","bootstrap","jquery.fileupload","jquery.fileupload.ui"]
, function() {
ArtifactUpload=function(classifier,pomFile){
this.classifier=classifier;
this.pomFile=pomFile;
}
ArtifactUploadViewModel=function(managedRepositories){
this.managedRepositories=ko.observableArray(managedRepositories);
this.repositoryId=ko.observable();
this.groupId=ko.observable();
this.artifactId=ko.observable();
this.version=ko.observable();
this.packaging=ko.observable();
this.generatePom=ko.observable();
}
displayUploadArtifact=function(){
var mainContent=$("#main-content");
mainContent.html(mediumSpinnerImg());
@ -27,11 +44,17 @@ define("archiva.artifacts-management",["jquery","i18n","order!utils","order!jque
dataType: 'json',
success: function(data) {
mainContent.html($("#file-upload-tmpl" ).tmpl({managedRepositories: data}));
var artifactUploadViewModel=new ArtifactUploadViewModel(data);
ko.applyBindings(artifactUploadViewModel,mainContent.find("#file-upload-main" ).get(0));
mainContent.find("#fileupload-save-files" ).on("click",function(){
$.log("fileupload-save-files click");
});
$('#fileupload').fileupload({
add: function (e, data) {
data.timeStamp = $.now();
$.blueimpUI.fileupload.prototype
.options.add.call(this, e, data);
$.log("fileupload add file");
$.blueimpUI.fileupload.prototype.options.add.call(this, e, data);
}
}
);

View File

@ -1,3 +1,7 @@
<script id="file-upload-screen" type="text/html">
<div id="file-upload-main" ddata-bind='template:{name:"file-upload-tmpl"}'></div>
</script>
<script id="file-upload-tmpl" type="text/html">
<div class="page-header">
<h3>${$.i18n.prop('fileupload.header')}</h3>
@ -9,45 +13,43 @@ <h3>${$.i18n.prop('fileupload.header')}</h3>
<div class="control-group">
<label class="control-label" for="repositoryId">${$.i18n.prop('fileupload.repositoryId')}</label>
<div class="controls">
<select id="repositoryId" name="repositoryId">
{{each(i,repository) managedRepositories}}
<option value="${repository.id}">${repository.name}</option>
{{/each}}
</select>
<select id="repositoryId"
data-bind="options: managedRepositories, optionsText: 'name',optionsValue:'id',
value: repositoryId"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="groupId">${$.i18n.prop('fileupload.groupId')}</label>
<div class="controls">
<input type="text" class="xlarge required" id="groupId" name="groupId" size="10" />
<input type="text" class="xlarge required" data-bind="value: groupId" id="groupId" name="groupId" size="10" />
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="artifactId">${$.i18n.prop('fileupload.artifactId')}</label>
<div class="controls">
<input type="text" class="xlarge required" id="artifactId" name="artifactId" size="10" />
<input type="text" class="xlarge required" data-bind="value: artifactId" id="artifactId" name="artifactId" size="10" />
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="artifactId">${$.i18n.prop('fileupload.version')}</label>
<div class="controls">
<input type="text" class="xlarge required" id="version" name="version" size="10" />
<input type="text" class="xlarge required" data-bind="value: version" id="version" name="version" size="10" />
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="artifactId">${$.i18n.prop('fileupload.packaging')}</label>
<div class="controls">
<input type="text" class="xlarge required" id="packaging" name="packaging" size="10" />
<input type="text" class="xlarge required" data-bind="value: packaging" id="packaging" name="packaging" size="10" />
</div>
</div>
</div>
<div class="control-group">
<label class="control-label" for="generatePom">${$.i18n.prop('fileupload.generatePom')}</label>
<div class="controls">
<input type="checkbox" class="xlarge required" id="generatePom" name="generatePom" />
<input type="checkbox" class="xlarge required" data-bind="value: generatePom" id="generatePom" name="generatePom" />
</div>
</div>
</div>
@ -80,6 +82,14 @@ <h3>${$.i18n.prop('fileupload.header')}</h3>
</div>
</div>
</div>
<div>
<a href="#" id="fileupload-save-files">
<span class="btn btn-info">
<i class="icon-file icon-white"></i>
<span>${$.i18n.prop('fileupload.save')}</span>
</span>
</a>
</div>
<div class="fileupload-loading"></div>
<br>
<table class="table table-striped">