From 6c1ebee773e96a406a180141ade65e9364a5c77f Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 16 May 2007 16:21:57 +0000 Subject: [PATCH] [MRM-345]: Browsing shows no information. git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@538642 13f79535-47bb-0310-9956-ffa450edef68 --- .../browsing/DefaultRepositoryBrowsing.java | 2 +- .../archiva/web/action/BrowseAction.java | 3 + .../web/mapper/RepositoryActionMapper.java | 251 +++++++++++------- .../src/main/resources/xwork.xml | 4 +- .../src/main/webapp/WEB-INF/jsp/browse.jsp | 100 ++++--- .../main/webapp/WEB-INF/jsp/browseGroup.jsp | 51 ++-- 6 files changed, 250 insertions(+), 161 deletions(-) diff --git a/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java b/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java index ad8b71932..5434e78d9 100644 --- a/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java +++ b/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java @@ -69,7 +69,7 @@ public BrowsingResults selectArtifactId( String groupId, String artifactId ) // results.setGroupIds( groups ); // results.setArtifacts( artifacts ); - results.setArtifacts( versions ); + results.setVersions( versions ); return results; } diff --git a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java index e76b40cad..acef57599 100644 --- a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java +++ b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java @@ -48,12 +48,14 @@ public class BrowseAction public String browse() { + getLogger().info( ".browse()" ); this.results = repoBrowsing.getRoot(); return SUCCESS; } public String browseGroup() { + getLogger().info( ".browseGroup( " + groupId + " )" ); if ( StringUtils.isEmpty( groupId ) ) { // TODO: i18n @@ -67,6 +69,7 @@ public String browseGroup() public String browseArtifact() { + getLogger().info( ".browseArtifact( " + groupId + "," + artifactId + " )" ); if ( StringUtils.isEmpty( groupId ) ) { // TODO: i18n diff --git a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java index c18f0f1d5..b12a82bd0 100644 --- a/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java +++ b/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java @@ -22,10 +22,13 @@ import com.opensymphony.webwork.dispatcher.mapper.ActionMapping; import com.opensymphony.webwork.dispatcher.mapper.DefaultActionMapper; -import javax.servlet.http.HttpServletRequest; +import org.apache.commons.lang.StringUtils; + import java.util.HashMap; import java.util.Map; +import javax.servlet.http.HttpServletRequest; + /** * Map alternate URLs to specific actions. Used for the repository browser and the proxy. * @@ -34,53 +37,37 @@ public class RepositoryActionMapper extends DefaultActionMapper { - private static final String BROWSE_PREFIX = "/browse/"; + private static final String ACTION_BROWSE = "browse"; - private static final String PROXY_PREFIX = "/proxy/"; + private static final String ACTION_BROWSE_ARTIFACT = "browseArtifact"; - public String getUriFromActionMapping( ActionMapping actionMapping ) - { - Map params = actionMapping.getParams(); - if ( "browseGroup".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ); - } - else if ( "browseArtifact".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ); - } - else if ( "showArtifact".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" + - params.remove( "version" ); - } - else if ( "showArtifactDependencies".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" + - params.remove( "version" ) + "/dependencies"; - } - else if ( "showArtifactMailingLists".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" + - params.remove( "version" ) + "/mailingLists"; - } - else if ( "showArtifactDependees".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" + - params.remove( "version" ) + "/usedby"; - } - else if ( "showArtifactDependencyTree".equals( actionMapping.getName() ) ) - { - return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" + - params.remove( "version" ) + "/dependencyTree"; - } - else if ( "proxy".equals( actionMapping.getName() ) ) - { - return PROXY_PREFIX + params.remove( "path" ); - } + private static final String ACTION_BROWSE_GROUP = "browseGroup"; - return super.getUriFromActionMapping( actionMapping ); - } + private static final String ACTION_SHOW_ARTIFACT = "showArtifact"; + + private static final String ACTION_SHOW_ARTIFACT_DEPENDEES = "showArtifactDependees"; + + private static final String ACTION_SHOW_ARTIFACT_DEPENDENCIES = "showArtifactDependencies"; + + private static final String ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE = "showArtifactDependencyTree"; + + private static final String ACTION_SHOW_ARTIFACT_MAILING_LISTS = "showArtifactMailingLists"; + + private static final String BROWSE_PREFIX = "/browse"; + + private static final String METHOD_DEPENDENCIES = "dependencies"; + + private static final String METHOD_DEPENDENCY_TREE = "dependencyTree"; + + private static final String METHOD_MAILING_LISTS = "mailingLists"; + + private static final String METHOD_USEDBY = "usedby"; + + private static final String PARAM_ARTIFACT_ID = "artifactId"; + + private static final String PARAM_GROUP_ID = "groupId"; + + private static final String PARAM_VERSION = "version"; public ActionMapping getMapping( HttpServletRequest httpServletRequest ) { @@ -88,70 +75,134 @@ public ActionMapping getMapping( HttpServletRequest httpServletRequest ) if ( path.startsWith( BROWSE_PREFIX ) ) { path = path.substring( BROWSE_PREFIX.length() ); - if ( path.length() == 0 ) + if ( StringUtils.isBlank( path ) || + StringUtils.equals( path, "/" ) || + StringUtils.equals( path, ".action" ) ) { - return new ActionMapping( "browse", "/", "", null ); + // Return "root" browse. + return new ActionMapping( ACTION_BROWSE, "/", "", null ); } else { - String[] parts = path.split( "/" ); - if ( parts.length == 1 ) - { - Map params = new HashMap(); - params.put( "groupId", parts[0] ); - return new ActionMapping( "browseGroup", "/", "", params ); - } - else if ( parts.length == 2 ) - { - Map params = new HashMap(); - params.put( "groupId", parts[0] ); - params.put( "artifactId", parts[1] ); - return new ActionMapping( "browseArtifact", "/", "", params ); - } - else if ( parts.length == 3 ) - { - Map params = new HashMap(); - params.put( "groupId", parts[0] ); - params.put( "artifactId", parts[1] ); - params.put( "version", parts[2] ); - return new ActionMapping( "showArtifact", "/", "", params ); - } - else if ( parts.length == 4 ) - { - Map params = new HashMap(); - params.put( "groupId", parts[0] ); - params.put( "artifactId", parts[1] ); - params.put( "version", parts[2] ); + Map params = new HashMap(); - if ( "dependencies".equals( parts[3] ) ) - { - return new ActionMapping( "showArtifactDependencies", "/", "", params ); - } - else if ( "mailingLists".equals( parts[3] ) ) - { - return new ActionMapping( "showArtifactMailingLists", "/", "", params ); - } - else if ( "usedby".equals( parts[3] ) ) - { - return new ActionMapping( "showArtifactDependees", "/", "", params ); - } - else if ( "dependencyTree".equals( parts[3] ) ) - { - return new ActionMapping( "showArtifactDependencyTree", "/", "", params ); - } + if ( path.charAt( 0 ) == '/' ) + { + path = path.substring( 1 ); + } + + String[] parts = path.split( "/" ); + switch ( parts.length ) + { + case 1: + params.put( PARAM_GROUP_ID, parts[0] ); + return new ActionMapping( ACTION_BROWSE_GROUP, "/", "", params ); + + case 2: + params.put( PARAM_GROUP_ID, parts[0] ); + params.put( PARAM_ARTIFACT_ID, parts[1] ); + return new ActionMapping( ACTION_BROWSE_ARTIFACT, "/", "", params ); + + case 3: + params.put( PARAM_GROUP_ID, parts[0] ); + params.put( PARAM_ARTIFACT_ID, parts[1] ); + params.put( PARAM_VERSION, parts[2] ); + return new ActionMapping( ACTION_SHOW_ARTIFACT, "/", "", params ); + + case 4: + params.put( PARAM_GROUP_ID, parts[0] ); + params.put( PARAM_ARTIFACT_ID, parts[1] ); + params.put( PARAM_VERSION, parts[2] ); + + if ( METHOD_DEPENDENCIES.equals( parts[3] ) ) + { + return new ActionMapping( ACTION_SHOW_ARTIFACT_DEPENDENCIES, "/", "", params ); + } + else if ( METHOD_MAILING_LISTS.equals( parts[3] ) ) + { + return new ActionMapping( ACTION_SHOW_ARTIFACT_MAILING_LISTS, "/", "", params ); + } + else if ( METHOD_USEDBY.equals( parts[3] ) ) + { + return new ActionMapping( ACTION_SHOW_ARTIFACT_DEPENDEES, "/", "", params ); + } + else if ( METHOD_DEPENDENCY_TREE.equals( parts[3] ) ) + { + return new ActionMapping( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE, "/", "", params ); + } + break; } } } - else if ( path.startsWith( PROXY_PREFIX ) ) - { - // retain the leading / - path = path.substring( PROXY_PREFIX.length() - 1 ); - - Map params = new HashMap(); - params.put( "path", path ); - return new ActionMapping( "proxy", "/", "", params ); - } return super.getMapping( httpServletRequest ); } + + public String getUriFromActionMapping( ActionMapping actionMapping ) + { + Map params = actionMapping.getParams(); + if ( ACTION_BROWSE.equals( actionMapping.getName() ) ) + { + return BROWSE_PREFIX; + } + else if ( ACTION_BROWSE_GROUP.equals( actionMapping.getName() ) ) + { + return toUri( params, false, false, null ); + } + else if ( ACTION_BROWSE_ARTIFACT.equals( actionMapping.getName() ) ) + { + return toUri( params, true, false, null ); + } + else if ( ACTION_SHOW_ARTIFACT.equals( actionMapping.getName() ) ) + { + return toUri( params, true, true, null ); + } + else if ( ACTION_SHOW_ARTIFACT_DEPENDENCIES.equals( actionMapping.getName() ) ) + { + return toUri( params, true, true, METHOD_DEPENDENCIES ); + } + else if ( ACTION_SHOW_ARTIFACT_MAILING_LISTS.equals( actionMapping.getName() ) ) + { + return toUri( params, true, true, METHOD_MAILING_LISTS ); + } + else if ( ACTION_SHOW_ARTIFACT_DEPENDEES.equals( actionMapping.getName() ) ) + { + return toUri( params, true, true, METHOD_USEDBY ); + } + else if ( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE.equals( actionMapping.getName() ) ) + { + return toUri( params, true, true, METHOD_DEPENDENCY_TREE ); + } + + return super.getUriFromActionMapping( actionMapping ); + } + + private String toUri( Map params, boolean artifactId, boolean version, String method ) + { + StringBuffer buf = new StringBuffer(); + + buf.append( BROWSE_PREFIX ); + buf.append( '/' ); + buf.append( params.remove( PARAM_GROUP_ID ) ); + + if ( artifactId ) + { + buf.append( '/' ); + buf.append( params.remove( PARAM_ARTIFACT_ID ) ); + + if ( version ) + { + buf.append( '/' ); + buf.append( params.remove( PARAM_VERSION ) ); + + if ( StringUtils.isNotBlank( method ) ) + { + buf.append( '/' ); + buf.append( method ); + } + } + } + + return buf.toString(); + } } diff --git a/archiva-web/archiva-webapp/src/main/resources/xwork.xml b/archiva-web/archiva-webapp/src/main/resources/xwork.xml index 94d9d7b62..d2aedda30 100644 --- a/archiva-web/archiva-webapp/src/main/resources/xwork.xml +++ b/archiva-web/archiva-webapp/src/main/resources/xwork.xml @@ -182,11 +182,11 @@ - /WEB-INF/jsp/browseGroup.jsp + /WEB-INF/jsp/browse.jsp - /WEB-INF/jsp/browseArtifact.jsp + /WEB-INF/jsp/browse.jsp diff --git a/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp b/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp index 21ac1aad6..a41557403 100644 --- a/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp +++ b/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp @@ -19,6 +19,7 @@ <%@ taglib prefix="ww" uri="/webwork" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="archiva" uri="http://maven.apache.org/archiva" %> <%@ taglib prefix="redback" uri="http://plexus.codehaus.org/redback/taglib-1.0" %> @@ -32,49 +33,66 @@

Browse Repository

-
-

Groups

- -
- - - <%-- TODO: later, when supported in metadata -
-

Category

- - - - - - - -
- Java -
- Ruby -
-
- -

Labels

- -
+

- jdo - j2ee - maven + + + ${artifactId} +

-
- --%> + + + +
+

Groups

+ +
+
+ + +
+

Artifacts

+ +
+
+ + +
+

Versions

+ +
+
+
diff --git a/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp b/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp index dd7218779..d9de0fefd 100644 --- a/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp +++ b/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp @@ -32,31 +32,46 @@

Browse Repository

-
-

- -

+

+ +

- - -

Groups

+
+

Groups

+ +
+ + +
+

Versions

- +
+
- - + +

Artifacts

- -
+
+ + +