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)}"> ${groupId}</a>
+ <a href="#" data-bind="click: function(){displayGroupId(browseIdEntry.name)}"> ${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="#"> ${browseGroupIdEntry.name}-project: ${browseGroupIdEntry.project}</a>
+ <a href="#" data-bind="click:function(){displayGroupId(browseIdEntry.name)}">
+ ${browseIdEntry.name}-project: ${browseIdEntry.project}
+ </a>
</li>
{{/each}}
</ul>