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

svn commit: r947020 - in /archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main: java/org/apache/maven/archiva/web/action/ java/org/apache/maven/archiva/web/util/ webapp/WEB-INF/jsp/include/

Author: jzurbano
Date: Fri May 21 14:22:15 2010
New Revision: 947020

URL: http://svn.apache.org/viewvc?rev=947020&view=rev
Log:
[MRM-1362] Add simple 'CRUD' pages for project-level metadata along with a "generic metadata" plugin 
* modified display of project metadata; added util to format the metadata for display
* modified format of mailing lists in "Mailing List" tab using the previous format of the mailing lists in "Project Metadata"


Added:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java   (with props)
Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=947020&r1=947019&r2=947020&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java Fri May 21 14:22:15 2010
@@ -29,6 +29,7 @@ import org.apache.archiva.metadata.repos
 import org.apache.archiva.metadata.repository.MetadataResolutionException;
 import org.apache.archiva.metadata.repository.MetadataResolver;
 import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
+import org.apache.maven.archiva.web.util.ProjectMetadataDisplayUtil;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.model.ArtifactReference;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
@@ -288,6 +289,13 @@ public class ShowArtifactAction
 
         return SUCCESS;
     }
+    
+    public String getMetadataOutput()
+    {
+        ProjectMetadataDisplayUtil metadataDisplayUtil = new ProjectMetadataDisplayUtil();
+        
+        return metadataDisplayUtil.formatProjectMetadata( projectMetadata );
+    }
 
     public String updateProjectMetadata()
     {

Added: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java?rev=947020&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java (added)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java Fri May 21 14:22:15 2010
@@ -0,0 +1,199 @@
+package org.apache.maven.archiva.web.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.metadata.model.Dependency;
+import org.apache.archiva.metadata.model.License;
+import org.apache.archiva.metadata.model.MailingList;
+import org.apache.archiva.metadata.model.ProjectVersionMetadata;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.List;
+
+/**
+ * ProjectMetadataDisplayUtil
+ *
+ */
+
+public class ProjectMetadataDisplayUtil
+{
+    private StringBuilder metadataEntries;
+    
+    public String formatProjectMetadata( ProjectVersionMetadata projectMetadata )
+    {
+        metadataEntries = new StringBuilder();
+        
+        startList();
+        
+        addListItem( "project.metadata.id=", projectMetadata.getId() );
+        addListItem( "project.url=", projectMetadata.getUrl() );
+        addListItem( "project.name=", projectMetadata.getName() );
+        addListItem( "project.description=", projectMetadata.getDescription() );
+        
+        startListItem( "organization" );
+        if ( projectMetadata.getOrganization() != null )
+        {
+            startList();
+            addListItem( "organization.name=", projectMetadata.getOrganization().getName() );
+            addListItem( "organization.url=", projectMetadata.getOrganization().getUrl() );
+            endList();
+        }
+        endListItem();
+         
+        startListItem( "issueManagement" );
+        if ( projectMetadata.getIssueManagement() != null )
+        {
+            startList();
+            addListItem( "issueManagement.system=", projectMetadata.getIssueManagement().getSystem() );
+            addListItem( "issueManagement.url=", projectMetadata.getIssueManagement().getUrl() );
+            endList();
+        }
+        endListItem();
+        
+        startListItem( "scm" );
+        if ( projectMetadata.getScm() != null )
+        {
+            startList();
+            addListItem( "scm.url=", projectMetadata.getScm().getUrl() );
+            addListItem( "scm.connection=", projectMetadata.getScm().getConnection() );
+            addListItem( "scm.developer.connection=", projectMetadata.getScm().getDeveloperConnection() );
+            endList();
+        }
+        endListItem();
+        
+        startListItem( "ciManagement" );
+        if ( projectMetadata.getCiManagement() != null )
+        {
+            startList();
+            addListItem( "ciManagement.system=", projectMetadata.getCiManagement().getSystem() );
+            addListItem( "ciManagement.url=", projectMetadata.getCiManagement().getUrl() );
+            endList();
+        }
+        endListItem();
+        
+        startListItem( "licenses" );
+        if ( projectMetadata.getLicenses() != null )
+        {
+            List<License> licenses = projectMetadata.getLicenses();
+            int ctr = 0;
+            startList();
+            for ( License license : licenses )
+            {
+                addListItem( "licenses." + ctr + ".name=", license.getName() );
+                addListItem( "licenses." + ctr + ".url=", license.getUrl() );
+                ctr++;
+            }
+            endList();
+        }
+        endListItem();
+         
+        startListItem( "mailingLists" );
+        if ( projectMetadata.getMailingLists() != null )
+        {
+            List<MailingList> lists = projectMetadata.getMailingLists();
+            List<String> otherArchives;
+            int ctr = 0;
+            int archiveCtr = 0;
+            
+            startList();
+            for ( MailingList list : lists )
+            {
+                addListItem( "mailingLists." + ctr + ".name=", list.getName() );
+                addListItem( "mailingLists." + ctr + ".archive.url=", list.getMainArchiveUrl() );
+                addListItem( "mailingLists." + ctr + ".post=", list.getPostAddress() );
+                addListItem( "mailingLists." + ctr + ".subscribe=", list.getSubscribeAddress() );
+                addListItem( "mailingLists." + ctr + ".unsubscribe=", list.getUnsubscribeAddress() );
+                startListItem( "mailingLists." + ctr + ".otherArchives" );
+                
+                if ( list.getOtherArchives() != null && list.getOtherArchives().size() > 0 )
+                {
+                    archiveCtr = 0;
+                    otherArchives = list.getOtherArchives();
+                    
+                    startList();
+                    for ( String archive : otherArchives )
+                    {
+                        addListItem( "mailingLists." + ctr + ".otherArchives." + archiveCtr + "=", archive );
+                        metadataEntries.append( archive );
+                        archiveCtr++;
+                    }
+                    endList();
+                }
+                endListItem();
+                ctr++;
+            }
+            endList();
+        }
+        endListItem();
+        
+        startListItem( "dependencies" );
+        if ( projectMetadata.getDependencies() != null )
+        {
+            List<Dependency> dependencies = projectMetadata.getDependencies();
+            int ctr = 0;
+            
+            startList();
+            for ( Dependency dependency : dependencies )
+            {
+                addListItem( "dependency." + ctr + ".group.id=", dependency.getGroupId() );
+                addListItem( "dependency." + ctr + ".artifact.id=", dependency.getArtifactId() );
+                addListItem( "dependency." + ctr + ".version=", dependency.getVersion() );
+                addListItem( "dependency." + ctr + ".classifier=", dependency.getClassifier() );
+                addListItem( "dependency." + ctr + ".type=", dependency.getType() );
+                addListItem( "dependency." + ctr + ".scope=", dependency.getScope() );
+                addListItem( "dependency." + ctr + ".system.path=", dependency.getSystemPath() );
+                ctr++;
+            }
+            endList();
+        }
+        endListItem();
+        
+        endList();
+        
+        return metadataEntries.toString();
+    }
+    
+    private void startList()
+    {
+        metadataEntries.append( "\n<ul>" );
+    }
+     
+    private void endList()
+    {
+        metadataEntries.append( "\n</ul>" );
+    }
+    
+    private void addListItem( String label, String value )
+    {
+        String newValue = StringUtils.isEmpty( value ) ? "" : value;
+        metadataEntries.append( "\n<li>" ).append( label ).append( newValue ).append( "</li>" );
+    }
+    
+    private void startListItem( String value )
+    {
+        metadataEntries.append( "\n<li>" ).append( value );
+    }
+    
+    private void endListItem()
+    {
+        metadataEntries.append( "\n</li>" );
+    }
+}
+

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf?rev=947020&r1=947019&r2=947020&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf Fri May 21 14:22:15 2010
@@ -22,64 +22,81 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
 
-<c:forEach items="${mailingLists}" var="mailingList">
-  <h3>
-      ${mailingList.name}
-  </h3>
-  <%-- TODO: description
-    <p>
-      Description blah blah blah
-    </p>
-  --%>
-  <ul>
-    <c:if test="${!empty (mailingList.subscribeAddress)}">
-      <li>
-        <b>Subscribe:</b>
-        <a href="mailto:${mailingList.subscribeAddress}">${mailingList.subscribeAddress}</a>
-      </li>
-    </c:if>
-    <c:if test="${!empty (mailingList.postAddress)}">
-      <li>
-        <b>Post:</b>
-        <a href="mailto:${mailingList.postAddress}">${mailingList.postAddress}</a>
-      </li>
-    </c:if>
-    <c:if test="${!empty (mailingList.unsubscribeAddress)}">
-      <li>
-        <b>Unsubscribe:</b>
-        <a href="mailto:${mailingList.unsubscribeAddress}">${mailingList.unsubscribeAddress}</a>
-      </li>
-    </c:if>
-      <%-- TODO: not in the POM yet
-          <li>
-            <b>List owner:</b>
-            <a href="mailto:${mailingList.owner}">${mailingList.owner}</a>
-          </li>
-      --%>
-    <c:if test="${!empty (mailingList.mainArchiveUrl)}">
-      <li>
-        <b>Archive:</b>
-        <ul>
-          <li>
-            <a href="${mailingList.mainArchiveUrl}">${mailingList.mainArchiveUrl}</a>
-          </li>
-        </ul>
-      </li>
-    </c:if>
-    <%-- <c:if test="${!empty (mailingList.otherArchives)}">
-      <li>
-        <b>Other Archives:</b>
-        <ul>
-          <c:forEach items="${mailingList.otherArchives}" var="archive">
-            <li>
-              <a href="${archive}">${archive}</a>
-            </li>
-          </c:forEach>
-        </ul>
-      </li>
-    </c:if> --%>
-  </ul>
-</c:forEach>
-<c:if test="${empty (mailingLists)}">
-  <strong>No mailing lists</strong>
-</c:if>
+<script type="text/javascript">
+  $(function() {
+    $("#accordion2").accordion();
+  });
+</script>
+
+<table class="infoTable">
+  <tr>
+    <td>
+      <div id="accordion2">
+
+        <c:forEach items="${mailingLists}" var="mailingList">
+          <h2>
+              <a href="#">${mailingList.name}</a>
+          </h2>
+          <%-- TODO: description
+            <p>
+              Description blah blah blah
+            </p>
+          --%>
+          <ul>
+            <c:if test="${!empty (mailingList.subscribeAddress)}">
+              <li>
+                <b>Subscribe:</b>
+                <a href="mailto:${mailingList.subscribeAddress}">${mailingList.subscribeAddress}</a>
+              </li>
+            </c:if>
+            <c:if test="${!empty (mailingList.postAddress)}">
+              <li>
+                <b>Post:</b>
+                <a href="mailto:${mailingList.postAddress}">${mailingList.postAddress}</a>
+              </li>
+            </c:if>
+            <c:if test="${!empty (mailingList.unsubscribeAddress)}">
+              <li>
+                <b>Unsubscribe:</b>
+                <a href="mailto:${mailingList.unsubscribeAddress}">${mailingList.unsubscribeAddress}</a>
+              </li>
+            </c:if>
+              <%-- TODO: not in the POM yet
+                  <li>
+                    <b>List owner:</b>
+                    <a href="mailto:${mailingList.owner}">${mailingList.owner}</a>
+                  </li>
+              --%>
+            <c:if test="${!empty (mailingList.mainArchiveUrl)}">
+              <li>
+                <b>Archive:</b>
+                <ul>
+                  <li>
+                    <a href="${mailingList.mainArchiveUrl}">${mailingList.mainArchiveUrl}</a>
+                  </li>
+                </ul>
+              </li>
+            </c:if>
+            <%-- <c:if test="${!empty (mailingList.otherArchives)}">
+              <li>
+                <b>Other Archives:</b>
+                <ul>
+                  <c:forEach items="${mailingList.otherArchives}" var="archive">
+                    <li>
+                      <a href="${archive}">${archive}</a>
+                    </li>
+                  </c:forEach>
+                </ul>
+              </li>
+            </c:if> --%>
+          </ul>
+        </c:forEach>
+      </div>
+
+      <c:if test="${empty (mailingLists)}">
+        <strong>No mailing lists</strong>
+      </c:if>
+
+    </td>
+  </tr>
+</table>

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf?rev=947020&r1=947019&r2=947020&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf Fri May 21 14:22:15 2010
@@ -22,12 +22,6 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ taglib prefix="archiva"   uri="/WEB-INF/taglib.tld" %>
 
-<script type="text/javascript">
-  $(function() {
-    $("#accordion2").accordion();
-  });
-</script>
-
 <p>
   <archiva:groupIdLink var="${groupId}" includeTop="true" />
 
@@ -41,240 +35,6 @@
   <strong>${version}</strong>
 </p>
 
-<c:if test="${!empty (projectMetadata.description)}">
-  <blockquote>${projectMetadata.description}</blockquote>
-</c:if>
-
-<table class="infoTable">
-  <tr>
-    <th>Project Metadata ID</th>
-    <td>${projectMetadata.id}</td>
-  </tr>
-  <tr>
-    <th>URL</th>
-    <td>${projectMetadata.url}</td>
-  </tr>
-  <tr>
-    <th>Name</th>
-    <td>${projectMetadata.name}</td>
-  </tr>
-  <tr>
-    <th>Description</th>
-    <td>${projectMetadata.description}</td>
-  </tr>
-</table>
-
-<c:if test="${projectMetadata.organization != null || !empty (projectMetadata.licenses)
-    || projectMetadata.issueManagement != null || projectMetadata.ciManagement != null }">
-
-  <h2>Other Details</h2>
-  <table class="infoTable">
-    <c:if test="${projectMetadata.organization != null}">
-      <tr>
-        <th>Organisation</th>
-        <td>
-          <c:choose>
-            <c:when test="${projectMetadata.organization.url != null}">
-              <a href="${projectMetadata.organization.url}">${projectMetadata.organization.name}</a>
-            </c:when>
-            <c:otherwise>
-              ${projectMetadata.organization.name}
-            </c:otherwise>
-          </c:choose>
-        </td>
-      </tr>
-    </c:if>
-    <c:if test="${!empty (projectMetadata.licenses)}">
-      <c:forEach items="${projectMetadata.licenses}" var="license">
-        <tr>
-          <th>License</th>
-          <td>
-            <c:choose>
-              <c:when test="${!empty (license.url)}">
-                <a href="${license.url}">${license.name}</a>
-              </c:when>
-              <c:otherwise>
-                ${license.name}
-              </c:otherwise>
-            </c:choose>
-          </td>
-        </tr>
-      </c:forEach>
-    </c:if>
-    <c:if test="${projectMetadata.issueManagement != null}">
-      <tr>
-        <th>Issue Tracker</th>
-        <td>
-          <c:choose>
-            <c:when test="${!empty (projectMetadata.issueManagement.url)}">
-              <a href="${projectMetadata.issueManagement.url}">${projectMetadata.issueManagement.system}</a>
-            </c:when>
-            <c:otherwise>
-              ${projectMetadata.issueManagement.system}
-            </c:otherwise>
-          </c:choose>
-        </td>
-      </tr>
-    </c:if>
-    <c:if test="${projectMetadata.ciManagement != null}">
-      <tr>
-        <th>Continuous Integration</th>
-        <td>
-          <c:choose>
-            <c:when test="${!empty (projectMetadata.ciManagement.url)}">
-              <a href="${projectMetadata.ciManagement.url}">${projectMetadata.ciManagement.system}</a>
-            </c:when>
-            <c:otherwise>
-              ${projectMetadata.ciManagement.system}
-            </c:otherwise>
-          </c:choose>
-        </td>
-      </tr>
-    </c:if>
-  </table>
-</c:if>
-
-<c:if test="${projectMetadata.scm != null}">
-  <h2>SCM</h2>
-  <table class="infoTable">
-    <c:if test="${!empty (projectMetadata.scm.connection)}">
-      <tr>
-        <th>Connection</th>
-        <td>
-          <code>${projectMetadata.scm.connection}</code>
-        </td>
-      </tr>
-    </c:if>
-    <c:if test="${!empty (projectMetadata.scm.developerConnection)}">
-      <tr>
-        <th>Dev. Connection</th>
-        <td>
-          <code>${projectMetadata.scm.developerConnection}</code>
-        </td>
-      </tr>
-    </c:if>
-    <c:if test="${!empty (projectMetadata.scm.url)}">
-      <tr>
-        <th>Viewer</th>
-        <td>
-          <a href="${projectMetadata.scm.url}">${projectMetadata.scm.url}</a>
-        </td>
-      </tr>
-    </c:if>
-  </table>
-</c:if>
-
-
-<c:if test="${projectMetadata.mailingLists != null || projectMetadata.dependencies != null}">
- <div id="accordion2">
-    <c:if test="${!empty (projectMetadata.mailingLists)}">
-    <h2><a href="#">Mailing Lists</a></h2>
-    <div>
-       <c:forEach items="${projectMetadata.mailingLists}" var="mailingList">
-         <h3>${mailingList.name}</h3>
-         <table class="infoTable">
-           <c:if test="${!empty (mailingList.subscribeAddress)}">
-             <tr>
-               <th>Subscribe</th>
-               <td>
-                 <code>${mailingList.subscribeAddress}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (mailingList.postAddress)}">
-             <tr>
-               <th>Post</th>
-               <td>
-                 <code>${mailingList.postAddress}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (mailingList.unsubscribeAddress)}">
-             <tr>
-               <th>Unsubscribe</th>
-               <td>
-                 <code>${mailingList.unsubscribeAddress}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (mailingList.mainArchiveUrl)}">
-             <tr>
-               <th>Archive</th>
-               <td>
-                 <code>${mailingList.mainArchiveUrl}</code>
-               </td>
-             </tr>
-           </c:if>
-         </table>
-       </c:forEach>
-    </div>
-    </c:if>
-
-    <c:if test="${!empty (projectMetadata.dependencies)}">
-    <h2><a href="#">Dependencies</a></h2>
-    <div>
-        <c:forEach items="${projectMetadata.dependencies}" var="dependency">
-         <h3>Dependency</h3>
-         <table class="infoTable">
-           <c:if test="${!empty (dependency.groupId)}">
-             <tr>
-               <th>Group ID</th>
-               <td>
-                 <code>${dependency.groupId}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (dependency.artifactId)}">
-             <tr>
-               <th>Artifact ID</th>
-               <td>
-                 <code>${dependency.artifactId}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (dependency.version)}">
-             <tr>
-               <th>Version</th>
-               <td>
-                 <code>${dependency.version}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (dependency.classifier)}">
-             <tr>
-               <th>Classifier</th>
-               <td>
-                 <code>${dependency.classifier}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (dependency.type)}">
-             <tr>
-               <th>Type</th>
-               <td>
-                 <code>${dependency.type}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (dependency.scope)}">
-             <tr>
-               <th>Scope</th>
-               <td>
-                 <code>${dependency.scope}</code>
-               </td>
-             </tr>
-           </c:if>
-           <c:if test="${!empty (dependency.systemPath)}">
-             <tr>
-               <th>System Path</th>
-               <td>
-                 <code>${dependency.systemPath}</code>
-               </td>
-             </tr>
-           </c:if>
-         </table>
-       </c:forEach>
-      </div>
-    </c:if>
- </div>
-</c:if>
+<div>
+  ${metadataOutput}
+</div>



Re: svn commit: r947020 - in /archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main: java/org/apache/maven/archiva/web/action/ java/org/apache/maven/archiva/web/util/ webapp/WEB-INF/jsp/include/

Posted by Deng Ching <oc...@apache.org>.
FYI, I already removed the util and used a custom tag instead in -r947591 so
that we don't need the getMetadataOutput() in the show artifact action and
just pass the project metadata object to the custom tag :)

On Mon, May 24, 2010 at 4:17 PM, Deng Ching <oc...@apache.org> wrote:

> Hi Jev,
>
> Why not use a custom tag instead of returning the project metadata display
> block as a String? This would make adding data to the project metadata
> difficult IMO..
>
> -Deng
>
>
> On Fri, May 21, 2010 at 10:22 PM, <jz...@apache.org> wrote:
>
>> Author: jzurbano
>> Date: Fri May 21 14:22:15 2010
>> New Revision: 947020
>>
>

Re: svn commit: r947020 - in /archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main: java/org/apache/maven/archiva/web/action/ java/org/apache/maven/archiva/web/util/ webapp/WEB-INF/jsp/include/

Posted by Deng Ching <oc...@apache.org>.
Hi Jev,

Why not use a custom tag instead of returning the project metadata display
block as a String? This would make adding data to the project metadata
difficult IMO..

-Deng

On Fri, May 21, 2010 at 10:22 PM, <jz...@apache.org> wrote:

> Author: jzurbano
> Date: Fri May 21 14:22:15 2010
> New Revision: 947020
>
> URL: http://svn.apache.org/viewvc?rev=947020&view=rev
> Log:
> [MRM-1362] Add simple 'CRUD' pages for project-level metadata along with a
> "generic metadata" plugin
> * modified display of project metadata; added util to format the metadata
> for display
> * modified format of mailing lists in "Mailing List" tab using the previous
> format of the mailing lists in "Project Metadata"
>
>
> Added:
>
>  archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
>   (with props)
> Modified:
>
>  archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
>
>  archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf
>
>  archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf
>
> Modified:
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
> URL:
> http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=947020&r1=947019&r2=947020&view=diff
>
> ==============================================================================
> ---
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
> (original)
> +++
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
> Fri May 21 14:22:15 2010
> @@ -29,6 +29,7 @@ import org.apache.archiva.metadata.repos
>  import org.apache.archiva.metadata.repository.MetadataResolutionException;
>  import org.apache.archiva.metadata.repository.MetadataResolver;
>  import
> org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
> +import org.apache.maven.archiva.web.util.ProjectMetadataDisplayUtil;
>  import org.apache.commons.lang.StringUtils;
>  import org.apache.maven.archiva.model.ArtifactReference;
>  import org.apache.maven.archiva.repository.ManagedRepositoryContent;
> @@ -288,6 +289,13 @@ public class ShowArtifactAction
>
>         return SUCCESS;
>     }
> +
> +    public String getMetadataOutput()
> +    {
> +        ProjectMetadataDisplayUtil metadataDisplayUtil = new
> ProjectMetadataDisplayUtil();
> +
> +        return metadataDisplayUtil.formatProjectMetadata( projectMetadata
> );
> +    }
>
>     public String updateProjectMetadata()
>     {
>
> Added:
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
> URL:
> http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java?rev=947020&view=auto
>
> ==============================================================================
> ---
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
> (added)
> +++
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
> Fri May 21 14:22:15 2010
> @@ -0,0 +1,199 @@
> +package org.apache.maven.archiva.web.util;
> +
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +import org.apache.archiva.metadata.model.Dependency;
> +import org.apache.archiva.metadata.model.License;
> +import org.apache.archiva.metadata.model.MailingList;
> +import org.apache.archiva.metadata.model.ProjectVersionMetadata;
> +import org.apache.commons.lang.StringUtils;
> +
> +import java.util.List;
> +
> +/**
> + * ProjectMetadataDisplayUtil
> + *
> + */
> +
> +public class ProjectMetadataDisplayUtil
> +{
> +    private StringBuilder metadataEntries;
> +
> +    public String formatProjectMetadata( ProjectVersionMetadata
> projectMetadata )
> +    {
> +        metadataEntries = new StringBuilder();
> +
> +        startList();
> +
> +        addListItem( "project.metadata.id=", projectMetadata.getId() );
> +        addListItem( "project.url=", projectMetadata.getUrl() );
> +        addListItem( "project.name=", projectMetadata.getName() );
> +        addListItem( "project.description=",
> projectMetadata.getDescription() );
> +
> +        startListItem( "organization" );
> +        if ( projectMetadata.getOrganization() != null )
> +        {
> +            startList();
> +            addListItem( "organization.name=",
> projectMetadata.getOrganization().getName() );
> +            addListItem( "organization.url=",
> projectMetadata.getOrganization().getUrl() );
> +            endList();
> +        }
> +        endListItem();
> +
> +        startListItem( "issueManagement" );
> +        if ( projectMetadata.getIssueManagement() != null )
> +        {
> +            startList();
> +            addListItem( "issueManagement.system=",
> projectMetadata.getIssueManagement().getSystem() );
> +            addListItem( "issueManagement.url=",
> projectMetadata.getIssueManagement().getUrl() );
> +            endList();
> +        }
> +        endListItem();
> +
> +        startListItem( "scm" );
> +        if ( projectMetadata.getScm() != null )
> +        {
> +            startList();
> +            addListItem( "scm.url=", projectMetadata.getScm().getUrl() );
> +            addListItem( "scm.connection=",
> projectMetadata.getScm().getConnection() );
> +            addListItem( "scm.developer.connection=",
> projectMetadata.getScm().getDeveloperConnection() );
> +            endList();
> +        }
> +        endListItem();
> +
> +        startListItem( "ciManagement" );
> +        if ( projectMetadata.getCiManagement() != null )
> +        {
> +            startList();
> +            addListItem( "ciManagement.system=",
> projectMetadata.getCiManagement().getSystem() );
> +            addListItem( "ciManagement.url=",
> projectMetadata.getCiManagement().getUrl() );
> +            endList();
> +        }
> +        endListItem();
> +
> +        startListItem( "licenses" );
> +        if ( projectMetadata.getLicenses() != null )
> +        {
> +            List<License> licenses = projectMetadata.getLicenses();
> +            int ctr = 0;
> +            startList();
> +            for ( License license : licenses )
> +            {
> +                addListItem( "licenses." + ctr + ".name=",
> license.getName() );
> +                addListItem( "licenses." + ctr + ".url=", license.getUrl()
> );
> +                ctr++;
> +            }
> +            endList();
> +        }
> +        endListItem();
> +
> +        startListItem( "mailingLists" );
> +        if ( projectMetadata.getMailingLists() != null )
> +        {
> +            List<MailingList> lists = projectMetadata.getMailingLists();
> +            List<String> otherArchives;
> +            int ctr = 0;
> +            int archiveCtr = 0;
> +
> +            startList();
> +            for ( MailingList list : lists )
> +            {
> +                addListItem( "mailingLists." + ctr + ".name=",
> list.getName() );
> +                addListItem( "mailingLists." + ctr + ".archive.url=",
> list.getMainArchiveUrl() );
> +                addListItem( "mailingLists." + ctr + ".post=",
> list.getPostAddress() );
> +                addListItem( "mailingLists." + ctr + ".subscribe=",
> list.getSubscribeAddress() );
> +                addListItem( "mailingLists." + ctr + ".unsubscribe=",
> list.getUnsubscribeAddress() );
> +                startListItem( "mailingLists." + ctr + ".otherArchives" );
> +
> +                if ( list.getOtherArchives() != null &&
> list.getOtherArchives().size() > 0 )
> +                {
> +                    archiveCtr = 0;
> +                    otherArchives = list.getOtherArchives();
> +
> +                    startList();
> +                    for ( String archive : otherArchives )
> +                    {
> +                        addListItem( "mailingLists." + ctr +
> ".otherArchives." + archiveCtr + "=", archive );
> +                        metadataEntries.append( archive );
> +                        archiveCtr++;
> +                    }
> +                    endList();
> +                }
> +                endListItem();
> +                ctr++;
> +            }
> +            endList();
> +        }
> +        endListItem();
> +
> +        startListItem( "dependencies" );
> +        if ( projectMetadata.getDependencies() != null )
> +        {
> +            List<Dependency> dependencies =
> projectMetadata.getDependencies();
> +            int ctr = 0;
> +
> +            startList();
> +            for ( Dependency dependency : dependencies )
> +            {
> +                addListItem( "dependency." + ctr + ".group.id=",
> dependency.getGroupId() );
> +                addListItem( "dependency." + ctr + ".artifact.id=",
> dependency.getArtifactId() );
> +                addListItem( "dependency." + ctr + ".version=",
> dependency.getVersion() );
> +                addListItem( "dependency." + ctr + ".classifier=",
> dependency.getClassifier() );
> +                addListItem( "dependency." + ctr + ".type=",
> dependency.getType() );
> +                addListItem( "dependency." + ctr + ".scope=",
> dependency.getScope() );
> +                addListItem( "dependency." + ctr + ".system.path=",
> dependency.getSystemPath() );
> +                ctr++;
> +            }
> +            endList();
> +        }
> +        endListItem();
> +
> +        endList();
> +
> +        return metadataEntries.toString();
> +    }
> +
> +    private void startList()
> +    {
> +        metadataEntries.append( "\n<ul>" );
> +    }
> +
> +    private void endList()
> +    {
> +        metadataEntries.append( "\n</ul>" );
> +    }
> +
> +    private void addListItem( String label, String value )
> +    {
> +        String newValue = StringUtils.isEmpty( value ) ? "" : value;
> +        metadataEntries.append( "\n<li>" ).append( label ).append(
> newValue ).append( "</li>" );
> +    }
> +
> +    private void startListItem( String value )
> +    {
> +        metadataEntries.append( "\n<li>" ).append( value );
> +    }
> +
> +    private void endListItem()
> +    {
> +        metadataEntries.append( "\n</li>" );
> +    }
> +}
> +
>
> Propchange:
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/ProjectMetadataDisplayUtil.java
>
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Modified:
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf
> URL:
> http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf?rev=947020&r1=947019&r2=947020&view=diff
>
> ==============================================================================
> ---
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf
> (original)
> +++
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/mailingLists.jspf
> Fri May 21 14:22:15 2010
> @@ -22,64 +22,81 @@
>  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
>  <%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
>
> -<c:forEach items="${mailingLists}" var="mailingList">
> -  <h3>
> -      ${mailingList.name}
> -  </h3>
> -  <%-- TODO: description
> -    <p>
> -      Description blah blah blah
> -    </p>
> -  --%>
> -  <ul>
> -    <c:if test="${!empty (mailingList.subscribeAddress)}">
> -      <li>
> -        <b>Subscribe:</b>
> -        <a href="mailto:
> ${mailingList.subscribeAddress}">${mailingList.subscribeAddress}</a>
> -      </li>
> -    </c:if>
> -    <c:if test="${!empty (mailingList.postAddress)}">
> -      <li>
> -        <b>Post:</b>
> -        <a href="mailto:
> ${mailingList.postAddress}">${mailingList.postAddress}</a>
> -      </li>
> -    </c:if>
> -    <c:if test="${!empty (mailingList.unsubscribeAddress)}">
> -      <li>
> -        <b>Unsubscribe:</b>
> -        <a href="mailto:
> ${mailingList.unsubscribeAddress}">${mailingList.unsubscribeAddress}</a>
> -      </li>
> -    </c:if>
> -      <%-- TODO: not in the POM yet
> -          <li>
> -            <b>List owner:</b>
> -            <a href="mailto:
> ${mailingList.owner}">${mailingList.owner}</a>
> -          </li>
> -      --%>
> -    <c:if test="${!empty (mailingList.mainArchiveUrl)}">
> -      <li>
> -        <b>Archive:</b>
> -        <ul>
> -          <li>
> -            <a
> href="${mailingList.mainArchiveUrl}">${mailingList.mainArchiveUrl}</a>
> -          </li>
> -        </ul>
> -      </li>
> -    </c:if>
> -    <%-- <c:if test="${!empty (mailingList.otherArchives)}">
> -      <li>
> -        <b>Other Archives:</b>
> -        <ul>
> -          <c:forEach items="${mailingList.otherArchives}" var="archive">
> -            <li>
> -              <a href="${archive}">${archive}</a>
> -            </li>
> -          </c:forEach>
> -        </ul>
> -      </li>
> -    </c:if> --%>
> -  </ul>
> -</c:forEach>
> -<c:if test="${empty (mailingLists)}">
> -  <strong>No mailing lists</strong>
> -</c:if>
> +<script type="text/javascript">
> +  $(function() {
> +    $("#accordion2").accordion();
> +  });
> +</script>
> +
> +<table class="infoTable">
> +  <tr>
> +    <td>
> +      <div id="accordion2">
> +
> +        <c:forEach items="${mailingLists}" var="mailingList">
> +          <h2>
> +              <a href="#">${mailingList.name}</a>
> +          </h2>
> +          <%-- TODO: description
> +            <p>
> +              Description blah blah blah
> +            </p>
> +          --%>
> +          <ul>
> +            <c:if test="${!empty (mailingList.subscribeAddress)}">
> +              <li>
> +                <b>Subscribe:</b>
> +                <a href="mailto:
> ${mailingList.subscribeAddress}">${mailingList.subscribeAddress}</a>
> +              </li>
> +            </c:if>
> +            <c:if test="${!empty (mailingList.postAddress)}">
> +              <li>
> +                <b>Post:</b>
> +                <a href="mailto:
> ${mailingList.postAddress}">${mailingList.postAddress}</a>
> +              </li>
> +            </c:if>
> +            <c:if test="${!empty (mailingList.unsubscribeAddress)}">
> +              <li>
> +                <b>Unsubscribe:</b>
> +                <a href="mailto:
> ${mailingList.unsubscribeAddress}">${mailingList.unsubscribeAddress}</a>
> +              </li>
> +            </c:if>
> +              <%-- TODO: not in the POM yet
> +                  <li>
> +                    <b>List owner:</b>
> +                    <a href="mailto:
> ${mailingList.owner}">${mailingList.owner}</a>
> +                  </li>
> +              --%>
> +            <c:if test="${!empty (mailingList.mainArchiveUrl)}">
> +              <li>
> +                <b>Archive:</b>
> +                <ul>
> +                  <li>
> +                    <a
> href="${mailingList.mainArchiveUrl}">${mailingList.mainArchiveUrl}</a>
> +                  </li>
> +                </ul>
> +              </li>
> +            </c:if>
> +            <%-- <c:if test="${!empty (mailingList.otherArchives)}">
> +              <li>
> +                <b>Other Archives:</b>
> +                <ul>
> +                  <c:forEach items="${mailingList.otherArchives}"
> var="archive">
> +                    <li>
> +                      <a href="${archive}">${archive}</a>
> +                    </li>
> +                  </c:forEach>
> +                </ul>
> +              </li>
> +            </c:if> --%>
> +          </ul>
> +        </c:forEach>
> +      </div>
> +
> +      <c:if test="${empty (mailingLists)}">
> +        <strong>No mailing lists</strong>
> +      </c:if>
> +
> +    </td>
> +  </tr>
> +</table>
>
> Modified:
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf
> URL:
> http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf?rev=947020&r1=947019&r2=947020&view=diff
>
> ==============================================================================
> ---
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf
> (original)
> +++
> archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/include/projectMetadata.jspf
> Fri May 21 14:22:15 2010
> @@ -22,12 +22,6 @@
>  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
>  <%@ taglib prefix="archiva"   uri="/WEB-INF/taglib.tld" %>
>
> -<script type="text/javascript">
> -  $(function() {
> -    $("#accordion2").accordion();
> -  });
> -</script>
> -
>  <p>
>   <archiva:groupIdLink var="${groupId}" includeTop="true" />
>
> @@ -41,240 +35,6 @@
>   <strong>${version}</strong>
>  </p>
>
> -<c:if test="${!empty (projectMetadata.description)}">
> -  <blockquote>${projectMetadata.description}</blockquote>
> -</c:if>
> -
> -<table class="infoTable">
> -  <tr>
> -    <th>Project Metadata ID</th>
> -    <td>${projectMetadata.id}</td>
> -  </tr>
> -  <tr>
> -    <th>URL</th>
> -    <td>${projectMetadata.url}</td>
> -  </tr>
> -  <tr>
> -    <th>Name</th>
> -    <td>${projectMetadata.name}</td>
> -  </tr>
> -  <tr>
> -    <th>Description</th>
> -    <td>${projectMetadata.description}</td>
> -  </tr>
> -</table>
> -
> -<c:if test="${projectMetadata.organization != null || !empty
> (projectMetadata.licenses)
> -    || projectMetadata.issueManagement != null ||
> projectMetadata.ciManagement != null }">
> -
> -  <h2>Other Details</h2>
> -  <table class="infoTable">
> -    <c:if test="${projectMetadata.organization != null}">
> -      <tr>
> -        <th>Organisation</th>
> -        <td>
> -          <c:choose>
> -            <c:when test="${projectMetadata.organization.url != null}">
> -              <a href="${projectMetadata.organization.url}">${
> projectMetadata.organization.name}</a>
> -            </c:when>
> -            <c:otherwise>
> -              ${projectMetadata.organization.name}
> -            </c:otherwise>
> -          </c:choose>
> -        </td>
> -      </tr>
> -    </c:if>
> -    <c:if test="${!empty (projectMetadata.licenses)}">
> -      <c:forEach items="${projectMetadata.licenses}" var="license">
> -        <tr>
> -          <th>License</th>
> -          <td>
> -            <c:choose>
> -              <c:when test="${!empty (license.url)}">
> -                <a href="${license.url}">${license.name}</a>
> -              </c:when>
> -              <c:otherwise>
> -                ${license.name}
> -              </c:otherwise>
> -            </c:choose>
> -          </td>
> -        </tr>
> -      </c:forEach>
> -    </c:if>
> -    <c:if test="${projectMetadata.issueManagement != null}">
> -      <tr>
> -        <th>Issue Tracker</th>
> -        <td>
> -          <c:choose>
> -            <c:when test="${!empty
> (projectMetadata.issueManagement.url)}">
> -              <a
> href="${projectMetadata.issueManagement.url}">${projectMetadata.issueManagement.system}</a>
> -            </c:when>
> -            <c:otherwise>
> -              ${projectMetadata.issueManagement.system}
> -            </c:otherwise>
> -          </c:choose>
> -        </td>
> -      </tr>
> -    </c:if>
> -    <c:if test="${projectMetadata.ciManagement != null}">
> -      <tr>
> -        <th>Continuous Integration</th>
> -        <td>
> -          <c:choose>
> -            <c:when test="${!empty (projectMetadata.ciManagement.url)}">
> -              <a
> href="${projectMetadata.ciManagement.url}">${projectMetadata.ciManagement.system}</a>
> -            </c:when>
> -            <c:otherwise>
> -              ${projectMetadata.ciManagement.system}
> -            </c:otherwise>
> -          </c:choose>
> -        </td>
> -      </tr>
> -    </c:if>
> -  </table>
> -</c:if>
> -
> -<c:if test="${projectMetadata.scm != null}">
> -  <h2>SCM</h2>
> -  <table class="infoTable">
> -    <c:if test="${!empty (projectMetadata.scm.connection)}">
> -      <tr>
> -        <th>Connection</th>
> -        <td>
> -          <code>${projectMetadata.scm.connection}</code>
> -        </td>
> -      </tr>
> -    </c:if>
> -    <c:if test="${!empty (projectMetadata.scm.developerConnection)}">
> -      <tr>
> -        <th>Dev. Connection</th>
> -        <td>
> -          <code>${projectMetadata.scm.developerConnection}</code>
> -        </td>
> -      </tr>
> -    </c:if>
> -    <c:if test="${!empty (projectMetadata.scm.url)}">
> -      <tr>
> -        <th>Viewer</th>
> -        <td>
> -          <a
> href="${projectMetadata.scm.url}">${projectMetadata.scm.url}</a>
> -        </td>
> -      </tr>
> -    </c:if>
> -  </table>
> -</c:if>
> -
> -
> -<c:if test="${projectMetadata.mailingLists != null ||
> projectMetadata.dependencies != null}">
> - <div id="accordion2">
> -    <c:if test="${!empty (projectMetadata.mailingLists)}">
> -    <h2><a href="#">Mailing Lists</a></h2>
> -    <div>
> -       <c:forEach items="${projectMetadata.mailingLists}"
> var="mailingList">
> -         <h3>${mailingList.name}</h3>
> -         <table class="infoTable">
> -           <c:if test="${!empty (mailingList.subscribeAddress)}">
> -             <tr>
> -               <th>Subscribe</th>
> -               <td>
> -                 <code>${mailingList.subscribeAddress}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (mailingList.postAddress)}">
> -             <tr>
> -               <th>Post</th>
> -               <td>
> -                 <code>${mailingList.postAddress}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (mailingList.unsubscribeAddress)}">
> -             <tr>
> -               <th>Unsubscribe</th>
> -               <td>
> -                 <code>${mailingList.unsubscribeAddress}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (mailingList.mainArchiveUrl)}">
> -             <tr>
> -               <th>Archive</th>
> -               <td>
> -                 <code>${mailingList.mainArchiveUrl}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -         </table>
> -       </c:forEach>
> -    </div>
> -    </c:if>
> -
> -    <c:if test="${!empty (projectMetadata.dependencies)}">
> -    <h2><a href="#">Dependencies</a></h2>
> -    <div>
> -        <c:forEach items="${projectMetadata.dependencies}"
> var="dependency">
> -         <h3>Dependency</h3>
> -         <table class="infoTable">
> -           <c:if test="${!empty (dependency.groupId)}">
> -             <tr>
> -               <th>Group ID</th>
> -               <td>
> -                 <code>${dependency.groupId}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (dependency.artifactId)}">
> -             <tr>
> -               <th>Artifact ID</th>
> -               <td>
> -                 <code>${dependency.artifactId}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (dependency.version)}">
> -             <tr>
> -               <th>Version</th>
> -               <td>
> -                 <code>${dependency.version}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (dependency.classifier)}">
> -             <tr>
> -               <th>Classifier</th>
> -               <td>
> -                 <code>${dependency.classifier}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (dependency.type)}">
> -             <tr>
> -               <th>Type</th>
> -               <td>
> -                 <code>${dependency.type}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (dependency.scope)}">
> -             <tr>
> -               <th>Scope</th>
> -               <td>
> -                 <code>${dependency.scope}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -           <c:if test="${!empty (dependency.systemPath)}">
> -             <tr>
> -               <th>System Path</th>
> -               <td>
> -                 <code>${dependency.systemPath}</code>
> -               </td>
> -             </tr>
> -           </c:if>
> -         </table>
> -       </c:forEach>
> -      </div>
> -    </c:if>
> - </div>
> -</c:if>
> +<div>
> +  ${metadataOutput}
> +</div>
>
>
>