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/02/17 00:31:40 UTC

svn commit: r1245254 - in /archiva/trunk/archiva-modules/archiva-web: archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/ archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ archiva-rest/archiva-...

Author: olamy
Date: Thu Feb 16 23:31:40 2012
New Revision: 1245254

URL: http://svn.apache.org/viewvc?rev=1245254&view=rev
Log:
[MRM-1573]
refactor to have more generic REST model result.

Added:
    archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java   (contents, props changed)
      - copied, changed from r1245253, archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdEntry.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java   (contents, props changed)
      - copied, changed from r1245253, archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdResult.java
Removed:
    archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdEntry.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdResult.java
Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
    archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html

Copied: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java (from r1245253, archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdEntry.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java&p1=archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdEntry.java&r1=1245253&r2=1245254&rev=1245254&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdEntry.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java Thu Feb 16 23:31:40 2012
@@ -24,21 +24,21 @@ import javax.xml.bind.annotation.XmlRoot
  * @author Olivier Lamy
  * @since 1.4-M3
  */
-@XmlRootElement( name = "browseGroupIdEntry" )
-public class BrowseGroupIdEntry
-    implements Comparable<BrowseGroupIdEntry>
+@XmlRootElement( name = "browseIdEntry" )
+public class BrowseIdEntry
+    implements Comparable<BrowseIdEntry>
 {
 
     private String name;
 
     private boolean project;
 
-    public BrowseGroupIdEntry()
+    public BrowseIdEntry()
     {
         // no op
     }
 
-    public BrowseGroupIdEntry( String name, boolean project )
+    public BrowseIdEntry( String name, boolean project )
     {
         this.name = name;
         this.project = project;
@@ -64,7 +64,7 @@ public class BrowseGroupIdEntry
         this.project = project;
     }
 
-    public int compareTo( BrowseGroupIdEntry browseGroupIdEntry )
+    public int compareTo( BrowseIdEntry browseGroupIdEntry )
     {
         return this.name.compareTo( browseGroupIdEntry.name );
     }

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseIdEntry.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Copied: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java (from r1245253, archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdResult.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java&p1=archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdResult.java&r1=1245253&r2=1245254&rev=1245254&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseGroupIdResult.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java Thu Feb 16 23:31:40 2012
@@ -26,28 +26,28 @@ import java.util.List;
  * @author Olivier Lamy
  * @since 1.4-M3
  */
-@XmlRootElement( name = "browseGroupIdResult" )
-public class BrowseGroupIdResult
+@XmlRootElement( name = "browseResult" )
+public class BrowseResult
 {
-    private List<BrowseGroupIdEntry> browseGroupIdEntries;
+    private List<BrowseIdEntry> browseIdEntries;
 
-    public BrowseGroupIdResult()
+    public BrowseResult()
     {
         // no op
     }
 
-    public BrowseGroupIdResult( List<BrowseGroupIdEntry> browseGroupIdEntries )
+    public BrowseResult( List<BrowseIdEntry> browseIdEntries )
     {
-        this.browseGroupIdEntries = browseGroupIdEntries;
+        this.browseIdEntries = browseIdEntries;
     }
 
-    public List<BrowseGroupIdEntry> getBrowseGroupIdEntries()
+    public List<BrowseIdEntry> getBrowseIdEntries()
     {
-        return browseGroupIdEntries == null ? Collections.<BrowseGroupIdEntry>emptyList() : browseGroupIdEntries;
+        return browseIdEntries == null ? Collections.<BrowseIdEntry>emptyList() : browseIdEntries;
     }
 
-    public void setBrowseGroupIdEntries( List<BrowseGroupIdEntry> browseGroupIdEntries )
+    public void setBrowseIdEntries( List<BrowseIdEntry> browseIdEntries )
     {
-        this.browseGroupIdEntries = browseGroupIdEntries;
+        this.browseIdEntries = browseIdEntries;
     }
 }

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/BrowseResult.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java?rev=1245254&r1=1245253&r2=1245254&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java Thu Feb 16 23:31:40 2012
@@ -18,7 +18,7 @@ package org.apache.archiva.rest.api.serv
  * under the License.
  */
 
-import org.apache.archiva.rest.api.model.BrowseGroupIdResult;
+import org.apache.archiva.rest.api.model.BrowseResult;
 import org.apache.archiva.rest.api.model.GroupIdList;
 import org.codehaus.plexus.redback.authorization.RedbackAuthorization;
 
@@ -39,13 +39,13 @@ public interface BrowseService
     @GET
     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
     @RedbackAuthorization( noRestriction = true, noPermission = false )
-    GroupIdList getRootGroups()
+    BrowseResult getRootGroups()
         throws ArchivaRestServiceException;
 
     @Path( "browseGroupId/{groupId}" )
     @GET
     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
     @RedbackAuthorization( noRestriction = true, noPermission = false )
-    BrowseGroupIdResult browseGroupId(@PathParam( "groupId" ) String groupId )
+    BrowseResult browseGroupId(@PathParam( "groupId" ) String groupId )
         throws ArchivaRestServiceException;
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java?rev=1245254&r1=1245253&r2=1245254&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java Thu Feb 16 23:31:40 2012
@@ -21,9 +21,8 @@ package org.apache.archiva.rest.services
 import org.apache.archiva.metadata.repository.MetadataResolutionException;
 import org.apache.archiva.metadata.repository.MetadataResolver;
 import org.apache.archiva.metadata.repository.RepositorySession;
-import org.apache.archiva.rest.api.model.BrowseGroupIdEntry;
-import org.apache.archiva.rest.api.model.BrowseGroupIdResult;
-import org.apache.archiva.rest.api.model.GroupIdList;
+import org.apache.archiva.rest.api.model.BrowseIdEntry;
+import org.apache.archiva.rest.api.model.BrowseResult;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.api.services.BrowseService;
 import org.apache.commons.collections.CollectionUtils;
@@ -47,14 +46,14 @@ public class DefaultBrowseService
     implements BrowseService
 {
 
-    public GroupIdList getRootGroups()
+    public BrowseResult getRootGroups()
         throws ArchivaRestServiceException
     {
         List<String> selectedRepos = getObservableRepos();
         if ( CollectionUtils.isEmpty( selectedRepos ) )
         {
             // FIXME 403 ???
-            return new GroupIdList( Collections.<String>emptyList() );
+            return new BrowseResult();
         }
 
         Set<String> namespaces = new LinkedHashSet<String>();
@@ -89,10 +88,17 @@ public class DefaultBrowseService
             repositorySession.close();
         }
 
-        return new GroupIdList( getSortedList( namespaces ) );
+        List<BrowseIdEntry> browseGroupIdEntries = new ArrayList<BrowseIdEntry>( namespaces.size() );
+        for ( String namespace : namespaces )
+        {
+            browseGroupIdEntries.add( new BrowseIdEntry( namespace, false ) );
+        }
+
+        Collections.sort( browseGroupIdEntries );
+        return new BrowseResult( browseGroupIdEntries );
     }
 
-    public BrowseGroupIdResult browseGroupId( String groupId )
+    public BrowseResult browseGroupId( String groupId )
         throws ArchivaRestServiceException
     {
 
@@ -100,7 +106,7 @@ public class DefaultBrowseService
         if ( CollectionUtils.isEmpty( selectedRepos ) )
         {
             // FIXME 403 ???
-            return new BrowseGroupIdResult();
+            return new BrowseResult();
         }
 
         Set<String> projects = new LinkedHashSet<String>();
@@ -139,22 +145,21 @@ public class DefaultBrowseService
         {
             repositorySession.close();
         }
-        List<BrowseGroupIdEntry> browseGroupIdEntries =
-            new ArrayList<BrowseGroupIdEntry>( namespaces.size() + projects.size() );
+        List<BrowseIdEntry> browseGroupIdEntries = new ArrayList<BrowseIdEntry>( namespaces.size() + projects.size() );
         for ( String namespace : namespaces )
         {
-            browseGroupIdEntries.add( new BrowseGroupIdEntry( namespace, false ) );
+            browseGroupIdEntries.add( new BrowseIdEntry( namespace, false ) );
         }
         for ( String project : projects )
         {
-            browseGroupIdEntries.add( new BrowseGroupIdEntry( project, true ) );
+            browseGroupIdEntries.add( new BrowseIdEntry( project, true ) );
         }
         Collections.sort( browseGroupIdEntries );
-        return new BrowseGroupIdResult( browseGroupIdEntries );
+        return new BrowseResult( browseGroupIdEntries );
 
     }
 
-//---------------------------
+    //---------------------------
     // internals
     //---------------------------
 

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js?rev=1245254&r1=1245253&r2=1245254&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js Thu Feb 16 23:31:40 2012
@@ -18,37 +18,21 @@
  */
 $(function() {
 
-  BrowseTopViewModel=function(groupIds){
-    this.groupIds=groupIds;
-    var mainContent = $("#main-content");
-    var browseResult=mainContent.find("#browse_result");
-    displayGroupDetail=function(groupId){
-      browseResult.hide( "slide", {}, 500,
-        function(){
-          browseResult.html(mediumSpinnerImg());
-          browseResult.show();
-          $.ajax("restServices/archivaServices/browseService/browseGroupId/"+encodeURIComponent(groupId), {
-            type: "GET",
-            dataType: 'json',
-            success: function(data) {
-              var browseGroupIdEntryies = $.isArray(data.browseGroupIdResult.browseGroupIdEntries) ?
-                   $.map(data.browseGroupIdResult.browseGroupIdEntries,function(item){
-                     return new BrowseGroupIdEntry(item.name, item.project);
-                   }): [data.browseGroupIdResult.browseGroupIdEntries];
-              browseResult.html($("#browse-groups-div-tmpl" ).tmpl());
-              var browseGroupsViewModel = new BrowseGroupsViewModel(browseGroupIdEntryies);
-
-              ko.applyBindings(browseGroupsViewModel,mainContent.find("#browse-groups-div" ).get(0));
-            }
-         });
-        }
-      );
-
+  BrowseTopViewModel=function(browseIdEntries){
+    this.browseIdEntries=browseIdEntries;
+    displayGroupId=function(groupId){
+      displayGroupDetail(groupId,"..");
     }
+
   }
 
-  BrowseGroupsViewModel=function(browseGroupIdEntryies){
-    this.browseGroupIdEntryies=browseGroupIdEntryies;
+  BrowseGroupsViewModel=function(browseIdEntries,parentGroupdId){
+    var self = this;
+    this.browseIdEntries=browseIdEntries;
+    this.parentGroupdId=parentGroupdId;
+    displayGroupId=function(groupId){
+      displayGroupDetail(groupId,self.parentGroupdId);
+    }
   }
 
   displayBrowse=function(){
@@ -59,23 +43,54 @@ $(function() {
         type: "GET",
         dataType: 'json',
         success: function(data) {
-          var groupdIds =
-              $.isArray(data.groupIdList.groupIds)? $.map(data.groupIdList.groupIds,function(item){
-                return item;
-              }): [data.groupIdList.groupIds];
-          $.log("size:"+groupdIds.length);
-          var browseTopViewModel = new BrowseTopViewModel(groupdIds);
+          var browseIdEntries = mapBrowseIdEntries(data);
+          $.log("size:"+browseIdEntries.length);
+          var browseTopViewModel = new BrowseTopViewModel(browseIdEntries);
 
           ko.applyBindings(browseTopViewModel,mainContent.find("#browse_result" ).get(0));
         }
     });
   }
 
+  displayGroupDetail=function(groupId,parentGroupdId){
+    var mainContent = $("#main-content");
+    var browseResult=mainContent.find("#browse_result");
+    browseResult.hide( "slide", {}, 500,
+      function(){
+        browseResult.html(mediumSpinnerImg());
+        browseResult.show();
+        var url = "restServices/archivaServices/browseService/browseGroupId/"+encodeURIComponent(groupId);
+        $.ajax(url, {
+          type: "GET",
+          dataType: 'json',
+          success: function(data) {
+            var browseIdEntries = mapBrowseIdEntries(data);
+            browseResult.html($("#browse-groups-div-tmpl" ).tmpl());
+            var browseGroupsViewModel = new BrowseGroupsViewModel(browseIdEntries,parentGroupdId);
+
+            ko.applyBindings(browseGroupsViewModel,mainContent.find("#browse-groups-div" ).get(0));
+          }
+       });
+      }
+    );
+
+  }
+
   displaySearch=function(){
     $("#main-content" ).html("coming soon :-)");
   }
 
-  BrowseGroupIdEntry=function(name,project){
+  mapBrowseIdEntries=function(data){
+    if (data.browseResult && data.browseResult.browseIdEntries) {
+      return $.isArray(data.browseResult.browseIdEntries) ?
+         $.map(data.browseResult.browseIdEntries,function(item){
+           return new BrowseIdEntry(item.name, item.project);
+         }): [data.browseResult.browseIdEntries];
+    }
+    return [];
+  }
+
+  BrowseIdEntry=function(name,project){
     this.name=name;
     this.project=project;
   }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html?rev=1245254&r1=1245253&r2=1245254&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/templates/search.html Thu Feb 16 23:31:40 2012
@@ -23,6 +23,9 @@
       <h2>${$.i18n.prop('browse.groups')}</h2>
     </div>
   </div>
+  <div id="browse_breadcrumb">
+
+  </div>
   <div id="browse_result" class="well" data-bind='template:{name:"browse-top-tmpl"}'>
 
   </div>
@@ -31,9 +34,9 @@
 <script id="browse-top-tmpl" type="text/html">
   <div>
     <ul>
-      {{each(i,groupId) groupIds}}
+      {{each(i,browseIdEntry) browseIdEntries}}
         <li class="browse-list">
-          <a href="#" data-bind="click: function(){displayGroupDetail(groupId)}">&nbsp;${groupId}</a>
+          <a href="#" data-bind="click: function(){displayGroupId(browseIdEntry.name)}">&nbsp;${browseIdEntry.name}</a>
         </li>
       {{/each}}
     </ul>
@@ -49,9 +52,12 @@
 <script id="browse-groups-tmpl" type="text/html">
   <div>
     <ul>
-      {{each(i,browseGroupIdEntry) browseGroupIdEntryies}}
+      <li class="browse-list"><a href="#" data-bind="click:function(){displayGroupId($root.parentGroupdId)}">..</a></li>
+      {{each(i,browseIdEntry) browseIdEntries}}
         <li class="browse-list">
-          <a href="#">&nbsp;${browseGroupIdEntry.name}-project: ${browseGroupIdEntry.project}</a>
+          <a href="#" data-bind="click:function(){displayGroupId(browseIdEntry.name)}">
+            &nbsp;${browseIdEntry.name}-project: ${browseIdEntry.project}
+          </a>
         </li>
       {{/each}}
     </ul>