You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/05/16 18:21:58 UTC

svn commit: r538642 - in /maven/archiva/trunk: archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/ archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ archiva-web/archiva-webapp/src/main/java/org/apache/...

Author: joakime
Date: Wed May 16 09:21:57 2007
New Revision: 538642

URL: http://svn.apache.org/viewvc?view=rev&rev=538642
Log:
[MRM-345]: Browsing shows no information. 

Modified:
    maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp

Modified: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java?view=diff&rev=538642&r1=538641&r2=538642
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java (original)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/browsing/DefaultRepositoryBrowsing.java Wed May 16 09:21:57 2007
@@ -69,7 +69,7 @@
 
         // results.setGroupIds( groups );
         // results.setArtifacts( artifacts );
-        results.setArtifacts( versions );
+        results.setVersions( versions );
 
         return results;
     }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java?view=diff&rev=538642&r1=538641&r2=538642
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java Wed May 16 09:21:57 2007
@@ -48,12 +48,14 @@
 
     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 browseArtifact()
     {
+        getLogger().info( ".browseArtifact( " + groupId + "," + artifactId + " )" );
         if ( StringUtils.isEmpty( groupId ) )
         {
             // TODO: i18n

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java?view=diff&rev=538642&r1=538641&r2=538642
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/mapper/RepositoryActionMapper.java Wed May 16 09:21:57 2007
@@ -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,124 +37,172 @@
 public class RepositoryActionMapper
     extends DefaultActionMapper
 {
-    private static final String BROWSE_PREFIX = "/browse/";
+    private static final String ACTION_BROWSE = "browse";
+
+    private static final String ACTION_BROWSE_ARTIFACT = "browseArtifact";
+
+    private static final String ACTION_BROWSE_GROUP = "browseGroup";
+
+    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 PROXY_PREFIX = "/proxy/";
+    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 )
+    {
+        String path = httpServletRequest.getServletPath();
+        if ( path.startsWith( BROWSE_PREFIX ) )
+        {
+            path = path.substring( BROWSE_PREFIX.length() );
+            if ( StringUtils.isBlank( path ) ||
+                 StringUtils.equals( path, "/" ) || 
+                 StringUtils.equals( path, ".action" ) )
+            {
+                // Return "root" browse.
+                return new ActionMapping( ACTION_BROWSE, "/", "", null );
+            }
+            else
+            {
+                Map params = new HashMap();
+
+                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;
+                }
+            }
+        }
+
+        return super.getMapping( httpServletRequest );
+    }
 
     public String getUriFromActionMapping( ActionMapping actionMapping )
     {
         Map params = actionMapping.getParams();
-        if ( "browseGroup".equals( actionMapping.getName() ) )
+        if ( ACTION_BROWSE.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" );
+            return BROWSE_PREFIX;
         }
-        else if ( "browseArtifact".equals( actionMapping.getName() ) )
+        else if ( ACTION_BROWSE_GROUP.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" );
+            return toUri( params, false, false, null );
         }
-        else if ( "showArtifact".equals( actionMapping.getName() ) )
+        else if ( ACTION_BROWSE_ARTIFACT.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" +
-                params.remove( "version" );
+            return toUri( params, true, false, null );
         }
-        else if ( "showArtifactDependencies".equals( actionMapping.getName() ) )
+        else if ( ACTION_SHOW_ARTIFACT.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" +
-                params.remove( "version" ) + "/dependencies";
+            return toUri( params, true, true, null );
         }
-        else if ( "showArtifactMailingLists".equals( actionMapping.getName() ) )
+        else if ( ACTION_SHOW_ARTIFACT_DEPENDENCIES.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" +
-                params.remove( "version" ) + "/mailingLists";
+            return toUri( params, true, true, METHOD_DEPENDENCIES );
         }
-        else if ( "showArtifactDependees".equals( actionMapping.getName() ) )
+        else if ( ACTION_SHOW_ARTIFACT_MAILING_LISTS.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" +
-                params.remove( "version" ) + "/usedby";
+            return toUri( params, true, true, METHOD_MAILING_LISTS );
         }
-        else if ( "showArtifactDependencyTree".equals( actionMapping.getName() ) )
+        else if ( ACTION_SHOW_ARTIFACT_DEPENDEES.equals( actionMapping.getName() ) )
         {
-            return BROWSE_PREFIX + params.remove( "groupId" ) + "/" + params.remove( "artifactId" ) + "/" +
-                params.remove( "version" ) + "/dependencyTree";
+            return toUri( params, true, true, METHOD_USEDBY );
         }
-        else if ( "proxy".equals( actionMapping.getName() ) )
+        else if ( ACTION_SHOW_ARTIFACT_DEPENDENCY_TREE.equals( actionMapping.getName() ) )
         {
-            return PROXY_PREFIX + params.remove( "path" );
+            return toUri( params, true, true, METHOD_DEPENDENCY_TREE );
         }
 
         return super.getUriFromActionMapping( actionMapping );
     }
 
-    public ActionMapping getMapping( HttpServletRequest httpServletRequest )
+    private String toUri( Map params, boolean artifactId, boolean version, String method )
     {
-        String path = httpServletRequest.getServletPath();
-        if ( path.startsWith( BROWSE_PREFIX ) )
+        StringBuffer buf = new StringBuffer();
+
+        buf.append( BROWSE_PREFIX );
+        buf.append( '/' );
+        buf.append( params.remove( PARAM_GROUP_ID ) );
+
+        if ( artifactId )
         {
-            path = path.substring( BROWSE_PREFIX.length() );
-            if ( path.length() == 0 )
-            {
-                return new ActionMapping( "browse", "/", "", null );
-            }
-            else
+            buf.append( '/' );
+            buf.append( params.remove( PARAM_ARTIFACT_ID ) );
+
+            if ( version )
             {
-                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 )
+                buf.append( '/' );
+                buf.append( params.remove( PARAM_VERSION ) );
+
+                if ( StringUtils.isNotBlank( method ) )
                 {
-                    Map params = new HashMap();
-                    params.put( "groupId", parts[0] );
-                    params.put( "artifactId", parts[1] );
-                    params.put( "version", parts[2] );
-
-                    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 );
-                    }
+                    buf.append( '/' );
+                    buf.append( method );
                 }
             }
         }
-        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 );
+        return buf.toString();
     }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml?view=diff&rev=538642&r1=538641&r2=538642
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml Wed May 16 09:21:57 2007
@@ -182,11 +182,11 @@
     </action>
 
     <action name="browseGroup" class="browseAction" method="browseGroup">
-      <result>/WEB-INF/jsp/browseGroup.jsp</result>
+      <result>/WEB-INF/jsp/browse.jsp</result>
     </action>
 
     <action name="browseArtifact" class="browseAction" method="browseArtifact">
-      <result>/WEB-INF/jsp/browseArtifact.jsp</result>
+      <result>/WEB-INF/jsp/browse.jsp</result>
     </action>
 
     <action name="showArtifact" class="showArtifactAction" method="artifact">

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp?view=diff&rev=538642&r1=538641&r2=538642
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp Wed May 16 09:21:57 2007
@@ -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"  %>
 
 <html>
@@ -32,49 +33,66 @@
 <h1>Browse Repository</h1>
 
 <div id="contentArea">
-  <div id="nameColumn">
-    <h2>Groups</h2>
-    <ul>
-      <ww:set name="groups" value="groups"/>
-      <c:forEach items="${groups}" var="groupId">
-        <c:set var="url">
-          <ww:url action="browseGroup" namespace="/">
-            <ww:param name="groupId" value="%{'${groupId}'}"/>
-          </ww:url>
-        </c:set>
-        <li><a href="${url}">${groupId}/</a></li>
-      </c:forEach>
-    </ul>
-  </div>
-
-
-  <%-- TODO: later, when supported in metadata
-  <div id="categoryColumn">
-    <h2>Category</h2>
-    <table>
-      <tr>
-        <td>
-          <a href="#">Java</a>
-        </td>
-      </tr>
-      <tr>
-        <td>
-          <a href="#">Ruby</a>
-        </td>
-      </tr>
-    </table>
-  </div>
-
-  <h2>Labels</h2>
-
-  <div id="labels">
+  <c:if test="${not empty results.selectedGroupId}">
     <p>
-      <a href="#">jdo</a>
-      <a href="#">j2ee</a>
-      <a href="#">maven</a>
+      <archiva:groupIdLink var="${results.selectedGroupId}" includeTop="true" />
+      <c:if test="${not empty results.selectedArtifactId}">
+        <strong>${artifactId}</strong>
+      </c:if>      
     </p>
-  </div>
-  --%>
+  </c:if>
+
+  <c:if test="${not empty results.groupIds}">
+    <div id="nameColumn">
+      <h2>Groups</h2>
+      <ul>
+        <c:forEach items="${results.groupIds}" var="groupId">
+          <c:set var="url">
+            <ww:url action="browseGroup" namespace="/">
+              <ww:param name="groupId" value="%{'${groupId}'}"/>
+            </ww:url>
+          </c:set>
+          <li><a href="${url}">${groupId}/</a></li>
+        </c:forEach>
+      </ul>
+    </div>
+  </c:if>
+  
+  <c:if test="${not empty results.artifacts}">
+    <div id="nameColumn">
+      <h2>Artifacts</h2>
+      <ul>
+        <c:forEach items="${results.artifacts}" var="artifactId">
+          <c:set var="url">
+            <ww:url action="browseArtifact" namespace="/">
+              <ww:param name="groupId" value="%{'${results.selectedGroupId}'}"/>
+              <ww:param name="artifactId" value="%{'${artifactId}'}"/>
+            </ww:url>
+          </c:set>
+          <li><a href="${url}">${artifactId}/</a></li>
+        </c:forEach>
+      </ul>
+    </div>
+  </c:if>  
+  
+  <c:if test="${not empty results.versions}">
+    <div id="nameColumn">
+      <h2>Versions</h2>
+      <ul>
+        <c:forEach items="${results.versions}" var="version">
+          <c:set var="url">
+            <ww:url action="showArtifact" namespace="/">
+              <ww:param name="groupId" value="%{'${results.selectedGroupId}'}"/>
+              <ww:param name="artifactId" value="%{'${results.selectedArtifactId}'}"/>
+              <ww:param name="version" value="%{'${version}'}"/>
+            </ww:url>
+          </c:set>
+          <li><a href="${url}">${version}/</a></li>
+        </c:forEach>
+      </ul>
+    </div>
+  </c:if>  
+
 </div>
 
 </body>

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp?view=diff&rev=538642&r1=538641&r2=538642
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browseGroup.jsp Wed May 16 09:21:57 2007
@@ -32,31 +32,46 @@
 <h1>Browse Repository</h1>
 
 <div id="contentArea">
-  <div id="nameColumn">
-    <p>
-      <archiva:groupIdLink var="${groupId}" includeTop="true" />
-    </p>
+  <p>
+    <archiva:groupIdLink var="${results.selectedGroupId}" includeTop="true" />
+  </p>
 
-    <ww:set name="groups" value="groups"/>
-    <c:if test="${!empty(groups)}">
-      <h2>Groups</h2>
+  <div id="nameColumn">
+    <h2>Groups</h2>
+    <ul>
+      <c:forEach items="${results.groupIds}" var="groupId">
+        <c:set var="url">
+          <ww:url action="browseGroup" namespace="/">
+            <ww:param name="groupId" value="%{'${groupId}'}"/>
+          </ww:url>
+        </c:set>
+        <li><a href="${url}">${groupId}/</a></li>
+      </c:forEach>
+    </ul>
+  </div>
+  
+  <c:if test="${not empty results.versions}">
+    <div id="nameColumn">
+      <h2>Versions</h2>
       <ul>
-        <c:forEach items="${groups}" var="groupId">
+        <c:forEach items="${results.versions}" var="version">
           <c:set var="url">
-            <ww:url action="browseGroup" namespace="/">
-              <ww:param name="groupId" value="%{'${groupId}'}"/>
+            <ww:url action="browseVersion" namespace="/">
+              <ww:param name="groupId" value="%{'${results.selectedGroupId}'}"/>
+              <ww:param name="version" value="%{'${version}'}"/>
             </ww:url>
           </c:set>
-          <li><a href="${url}">${groupId}/</a></li>
+          <li><a href="${url}">${version}/</a></li>
         </c:forEach>
       </ul>
-    </c:if>
+    </div>
+  </c:if>  
 
-    <ww:set name="artifactIds" value="artifactIds"/>
-    <c:if test="${!empty(artifactIds)}">
+  <c:if test="${not empty results.artifacts}">
+    <div id="nameColumn">
       <h2>Artifacts</h2>
       <ul>
-        <c:forEach items="${artifactIds}" var="artifactId">
+        <c:forEach items="${results.artifacts}" var="artifactId">
           <c:set var="url">
             <ww:url action="browseArtifact" namespace="/">
               <ww:param name="groupId" value="%{'${groupId}'}"/>
@@ -66,8 +81,10 @@
           <li><a href="${url}">${artifactId}/</a></li>
         </c:forEach>
       </ul>
-    </c:if>
-  </div>
+    </div>
+  </c:if>  
+    
+
 </div>
 
 </body>