]> source.dussan.org Git - archiva.git/commitdiff
NPE check and start moving to a knockout model
authorOlivier Lamy <olamy@apache.org>
Fri, 30 Mar 2012 16:47:14 +0000 (16:47 +0000)
committerOlivier Lamy <olamy@apache.org>
Fri, 30 Mar 2012 16:47:14 +0000 (16:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1307528 13f79535-47bb-0310-9956-ffa450edef68

README.txt
archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
archiva-modules/archiva-web/archiva-webapp-js/src/main/java/org/apache/archiva/webapp/ui/services/api/DefaultFileUploadService.java
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/artifacts-management.js
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/artifacts-management.html

index aa22dfa0f2043bdff909dbb40c169b9b26a0edba..5f470c0b9b15c4e93dd174ee66c0746325ec2728 100644 (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
+
index 50bb4cabb0474411f768229af065770c83e38138..cf8e23b87e80c80645a5f3bbddc80c5900a901d0 100644 (file)
@@ -397,5 +397,6 @@ fileupload.version=Version
 fileupload.packaging=Packaging
 fileupload.generatePom=Generate Maven POM
 fileupload.repositoryId=Repository Id
+fileupload.save=Save Files
 
 
index 4d5ff797f6034d1bef43dd3957c89ff79853892c..9e114f0f30cb2fdf550fbad499f2eb0a1497168d 100644 (file)
@@ -91,14 +91,21 @@ public class DefaultFileUploadService
             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[]" );
index 6e76eeb66da412d5ab10ebb7ac1606361716a3ff..3fbffdad66c7a85a5c6ef04672effbff5c89cd04 100644 (file)
 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);
               }
             }
           );
index 8140438f88fd1324df135aa710fbc27407c228b9..7bff1cec1904ef995913ac316ada8adedaec2b0b 100644 (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>
       <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>
         </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">