You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2011/05/04 14:03:36 UTC
svn commit: r1099425 [3/6] - in /archiva/trunk: ./ archiva-docs/
archiva-modules/archiva-base/
archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/
archiva-modules/archiva-base/archiva-pr...
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/appearance.jsp Wed May 4 12:03:29 2011
@@ -40,29 +40,30 @@
<a href="<s:url action='editAppearance' />">Change your appearance</a>
</p>
+<%-- used c:out in displaying EL's so that they are escaped --%>
<h3>Organization Information</h3>
<table>
<tr>
<th>Name</th>
- <td>${organisationName}</td>
+ <td><c:out value="${organisationName}" /></td>
</tr>
<tr>
<th>URL</th>
- <td><a href="${organisationUrl}">
- <code>${organisationUrl}</code>
+ <td><a href='<c:out value="${organisationUrl}" />'>
+ <code><c:out value="${organisationUrl}" /></code>
</a></td>
</tr>
<tr>
<th>Logo URL</th>
<td>
- <code>${organisationLogo}</code>
+ <code><c:out value="${organisationLogo}" /></code>
</td>
</tr>
<c:if test="${!empty (organisationLogo)}">
<tr>
<th> </th>
- <td><img src="${organisationLogo}"
- title="${organisationName}" border="0" alt="" /></td>
+ <td><img src='<c:out value="${organisationLogo}" />'
+ title='<c:out value="${organisationName}" />' border="0" alt="" /></td>
</tr>
</c:if>
</table>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/confirmAddRepository.jsp Wed May 4 12:03:29 2011
@@ -46,23 +46,24 @@
the following managed repository?
</p>
+ <%-- used c:out in displaying EL's so that they are escaped --%>
<div class="infobox">
<table class="infotable">
<tr>
<td>ID:</td>
- <td><code>${repository.id}</code></td>
+ <td><code><c:out value="${repository.id}" /></code></td>
</tr>
<tr>
<td>Name:</td>
- <td>${repository.name}</td>
+ <td><c:out value="${repository.name}" /></td>
</tr>
<tr>
<td>Directory:</td>
- <td>${repository.location}</td>
+ <td><c:out value="${repository.location}" /></td>
</tr>
<tr>
<td>Index Directory:</td>
- <td>${repository.indexDir}</td>
+ <td><c:out value="${repository.indexDir}" /></td>
</tr>
<tr>
<td>Type:</td>
@@ -80,15 +81,15 @@
</tr>
<tr>
<td>Cron:</td>
- <td>${repository.refreshCronExpression}</td>
+ <td><c:out value="${repository.refreshCronExpression}" /></td>
</tr>
<tr>
<td>Repository Purge By Days Older Than:</td>
- <td>${repository.daysOlder}</td>
+ <td><c:out value="${repository.daysOlder}" /></td>
</tr>
<tr>
<td>Repository Purge By Retention Count:</td>
- <td>${repository.retentionCount}</td>
+ <td><c:out value="${repository.retentionCount}" /></td>
</tr>
<tr>
<td>Releases Included:</td>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteNetworkProxy.jsp Wed May 4 12:03:29 2011
@@ -19,6 +19,7 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
@@ -30,7 +31,14 @@
<h1>Admin: Delete Network Proxy</h1>
-<s:actionerror/>
+ <%-- changed the structure of displaying errorMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div id="contentArea">
@@ -39,9 +47,9 @@
<blockquote>
<strong><span class="statusFailed">WARNING:</span> This operation can not be undone.</strong>
</blockquote>
-
+ <%-- used c:out in displaying EL's for them to be escaped. --%>
<p>
- Are you sure you want to delete network proxy <code>${proxyid}</code> ?
+ Are you sure you want to delete network proxy <code><c:out value="${proxyid}" /></code> ?
</p>
<s:form method="post" action="deleteNetworkProxy!delete" namespace="/admin" validate="true">
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/deleteRepository.jsp Wed May 4 12:03:29 2011
@@ -19,6 +19,7 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
@@ -30,7 +31,14 @@
<h1>Admin: Delete Managed Repository</h1>
-<s:actionerror/>
+<%-- changed the structure of displaying errorMessages in order for them to be escaped. --%>
+<s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+</s:if>
<div id="contentArea">
@@ -44,19 +52,20 @@
Are you sure you want to delete the following managed repository?
</p>
+ <%-- used c:out in displaying EL's so that they are escaped --%>
<div class="infobox">
<table class="infotable">
<tr>
<td>ID:</td>
- <td><code>${repository.id}</code></td>
+ <td><code><c:out value="${repository.id}" /></code></td>
</tr>
<tr>
<td>Name:</td>
- <td>${repository.name}</td>
+ <td><c:out value="${repository.name}" /></td>
</tr>
<tr>
<td>Directory:</td>
- <td>${repository.location}</td>
+ <td><c:out value="${repository.location}" /></td>
</tr>
</table>
</div>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editAppearance.jsp Wed May 4 12:03:29 2011
@@ -35,7 +35,14 @@
</p>
<s:set name="editOrganisationInfo" value="editOrganisationInfo"/>
-<s:actionmessage/>
+<%-- changed the structure of displaying actionMessages in order for them to be escaped. --%>
+<s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+</s:if>
<s:form method="post" action="saveAppearance" namespace="/admin" validate="true" theme="xhtml">
<s:textfield name="organisationName" value="%{#attr.organisationName}" label="Name" size="50" />
<s:textfield name="organisationUrl" value="%{#attr.organisationUrl}" label="URL" size="50"/>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editNetworkProxy.jsp Wed May 4 12:03:29 2011
@@ -43,10 +43,23 @@
<div id="contentArea">
- <h2>${addedit} network proxy: ${networkProxyName}</h2>
+ <h2>${addedit} network proxy: <c:out value="${networkProxyName}" /></h2>
- <s:actionerror/>
- <s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<s:form method="post" action="saveNetworkProxy" namespace="/admin">
<s:hidden name="mode"/>
@@ -66,7 +79,7 @@
</s:form>
<script type="text/javascript">
- document.getElementById("saveNetworkProxy_host").focus();
+ document.getElementById("saveNetworkProxy_host").focus();
</script>
</div>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp Wed May 4 12:03:29 2011
@@ -30,11 +30,24 @@
<h1>Admin: Edit Managed Repository</h1>
-<s:actionerror/>
+<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+<s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+</s:if>
<div id="contentArea">
- <s:actionmessage/>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<s:form method="post" action="editRepository!commit" namespace="/admin" validate="false">
<s:hidden name="repository.id"/>
<s:label label="ID" name="repository.id" />
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/legacyArtifactPath.jsp Wed May 4 12:03:29 2011
@@ -35,8 +35,21 @@
<div id="contentArea">
-<s:actionerror/>
-<s:actionmessage/>
+<%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+<s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div class="admin">
<div class="controls">
@@ -69,12 +82,12 @@
</c:choose>
<div class="legacyArtifactPath ${rowColor}">
-
+
<div class="controls">
<%-- TODO: make some icons --%>
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
<s:token/>
- <s:url id="deleteLegacyArtifactPath" action="deleteLegacyArtifactPath">
+ <s:url id="deleteLegacyArtifactPath" encode="true" action="deleteLegacyArtifactPath">
<s:param name="path" value="%{#attr.legacyArtifactPath.path}"/>
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -86,17 +99,18 @@
</redback:ifAnyAuthorized>
</div>
+<%-- used c:out in displaying EL's so that they would be escaped --%>
<table class="infoTable">
<tr>
<th>Path</th>
<td>
- <code>${legacyArtifactPath.path}</code>
+ <code><c:out value="${legacyArtifactPath.path}" /></code>
</td>
</tr>
<tr>
<th>Artifact</th>
<td>
- <code>${legacyArtifactPath.artifact}</code>
+ <code><c:out value="${legacyArtifactPath.artifact}" /></code>
</td>
</tr>
</table>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/networkProxies.jsp Wed May 4 12:03:29 2011
@@ -35,7 +35,21 @@
<div id="contentArea">
-<s:actionerror /> <s:actionmessage />
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div class="admin">
<div class="controls">
@@ -72,10 +86,10 @@
<redback:ifAnyAuthorized
permissions="archiva-manage-configuration">
<s:token/>
- <s:url id="editNetworkProxyUrl" action="editNetworkProxy">
+ <s:url id="editNetworkProxyUrl" encode="true" action="editNetworkProxy">
<s:param name="proxyid" value="%{#attr.proxy.id}" />
</s:url>
- <s:url id="deleteNetworkProxyUrl" action="deleteNetworkProxy" method="confirm">
+ <s:url id="deleteNetworkProxyUrl" encode="true" action="deleteNetworkProxy" method="confirm">
<s:param name="proxyid" value="%{#attr.proxy.id}" />
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -88,27 +102,28 @@
Delete Network Proxy</s:a>
</redback:ifAnyAuthorized></div>
+ <%-- used c:out in displaying EL's for them to be escaped. --%>
<table class="infoTable">
<tr>
<th>Identifier</th>
- <td><code>${proxy.id}</code></td>
+ <td><code><c:out value="${proxy.id}" /></code></td>
</tr>
<tr>
<th>Protocol</th>
- <td>${proxy.protocol}</td>
+ <td><c:out value="${proxy.protocol}" /></td>
</tr>
<tr>
<th>Host</th>
- <td>${proxy.host}</td>
+ <td><c:out value="${proxy.host}" /></td>
</tr>
<tr>
<th>Port</th>
- <td>${proxy.port}</td>
+ <td><c:out value="${proxy.port}" /></td>
</tr>
<c:if test="${not empty (proxy.username)}">
<tr>
<th>Username</th>
- <td>${proxy.username}</td>
+ <td><c:out value="${proxy.username}" /></td>
</tr>
<c:if test="${not empty (proxy.password)}">
<tr>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp Wed May 4 12:03:29 2011
@@ -48,8 +48,22 @@
<div id="contentArea">
-<s:actionerror/>
-<s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:actionmessage />
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div class="admin">
<div class="controls">
@@ -86,11 +100,11 @@
<div class="controls">
<%-- TODO: make some icons --%>
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
- <s:url id="editRepositoryUrl" action="editRepository">
+ <s:url id="editRepositoryUrl" encode="true" action="editRepository">
<s:param name="repoid" value="%{#attr.repository.id}"/>
</s:url>
<s:token/>
- <s:url id="deleteRepositoryUrl" action="confirmDeleteRepository">
+ <s:url id="deleteRepositoryUrl" encode="true" action="confirmDeleteRepository">
<s:param name="repoid" value="%{#attr.repository.id}"/>
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -105,43 +119,44 @@
</s:a>
</redback:ifAnyAuthorized>
<c:url var="rssFeedIconUrl" value="/images/icons/rss-feed.png"/>
- <a href="/archiva/feeds/${repository.id}">
+ <a href='/archiva/feeds/<c:out value="${repository.id}" />'>
<img src="${rssFeedIconUrl}" />
</a>
</div>
+<%-- used c:out in displaying EL's for them to be escaped. --%>
<div style="float: left">
<img src="<c:url value="/images/archiva-splat-32.gif"/>" alt="" width="32" height="32"/>
</div>
-<h3 class="repository">${repository.name}</h3>
+<h3 class="repository"><c:out value="${repository.name}" /></h3>
<table class="infoTable">
<tr>
<th>Identifier</th>
<td>
- <code>${repository.id}</code>
+ <code><c:out value="${repository.id}" /></code>
</td>
</tr>
<tr>
<th>Name</th>
<td>
- <code>${repository.name}</code>
+ <code><c:out value="${repository.name}" /></code>
</td>
</tr>
<tr>
<th>Directory</th>
- <td>${repository.location}</td>
+ <td><c:out value="${repository.location}" /></td>
</tr>
<c:if test="${!empty (repository.indexDir)}">
<tr>
<th>Index Directory</th>
- <td>${repository.indexDir}</td>
+ <td><c:out value="${repository.indexDir}" /></td>
</tr>
</c:if>
<tr>
<th>WebDAV URL</th>
- <td><a href="${baseUrl}/${repository.id}/">${baseUrl}/${repository.id}/</a></td>
+ <td><a href='<c:out value="${baseUrl}" />/<c:out value="${repository.id}" />/' ><c:out value="${baseUrl}" />/<c:out value="${repository.id}" />/</a></td>
</tr>
<tr>
<th>Type</th>
@@ -162,7 +177,7 @@
<th>Groups</th>
<td>
<c:forEach items="${repositoryToGroupMap[repository.id]}" varStatus="i" var="group">
- ${group}<c:if test="${!i.last}">,</c:if>
+ <c:out value="${group}" /><c:if test="${!i.last}">,</c:if>
</c:forEach>
</td>
</tr>
@@ -182,11 +197,11 @@
</tr>
<tr>
<th>Repository Purge By Days Older Than</th>
- <td>${repository.daysOlder}</td>
+ <td><c:out value="${repository.daysOlder}" /></td>
</tr>
<tr>
<th>Repository Purge By Retention Count</th>
- <td>${repository.retentionCount}</td>
+ <td><c:out value="${repository.retentionCount}" /></td>
</tr>
</c:if>
<tr>
@@ -196,7 +211,7 @@
<c:if test="${repository.scanned}">
<tr>
<th>Scanning Cron</th>
- <td>${repository.refreshCronExpression}</td>
+ <td><c:out value="${repository.refreshCronExpression}" /></td>
</tr>
<tr>
<th>
@@ -230,19 +245,19 @@
<table>
<tr>
<th>Last Scanned</th>
- <td>${stats.scanStartTime}</td>
+ <td><c:out value="${stats.whenGathered}" /></td>
</tr>
<tr>
<th>Duration</th>
- <td>${stats.duration} ms</td>
+ <td><c:out value="${stats.duration}" /> ms</td>
</tr>
<tr>
<th>Total File Count</th>
- <td>${stats.totalFileCount}
+ <td><c:out value="${stats.totalFileCount}" />
</tr>
<tr>
<th>New Files Found</th>
- <td>${stats.newFileCount}
+ <td><c:out value="${stats.newFileCount}" />
</tr>
</table>
</c:otherwise>
@@ -337,15 +352,15 @@
<div class="controls">
<redback:ifAnyAuthorized permissions="archiva-manage-configuration">
- <s:url id="editRepositoryUrl" action="editRemoteRepository">
- <s:param name="repoid" value="%{#attr.repository.id}"/>
+ <s:url id="editRepositoryUrl" encode="true" action="editRemoteRepository">
+ <s:param name="repoid" value="%{#attr.repository.id}"/>
</s:url>
<s:a href="%{editRepositoryUrl}">
<img src="<c:url value="/images/icons/edit.png" />" alt="" width="16" height="16"/>
Edit
</s:a>
<s:token/>
- <s:url id="deleteRepositoryUrl" action="confirmDeleteRemoteRepository">
+ <s:url id="deleteRepositoryUrl" encode="true" action="confirmDeleteRemoteRepository">
<s:param name="repoid" value="%{#attr.repository.id}"/>
<s:param name="struts.token.name">struts.token</s:param>
<s:param name="struts.token"><s:property value="struts.token"/></s:param>
@@ -361,24 +376,24 @@
<img src="<c:url value="/images/archiva-world.png"/>" alt="" width="32" height="32"/>
</div>
- <h3 class="repository">${repository.name}</h3>
+ <h3 class="repository"><c:out value="${repository.name}" /></h3>
<table class="infoTable">
<tr>
<th>Identifier</th>
<td>
- <code>${repository.id}</code>
+ <code><c:out value="${repository.id}" /></code>
</td>
</tr>
<tr>
<th>Name</th>
<td>
- <code>${repository.name}</code>
+ <code><c:out value="${repository.name}" /></code>
</td>
</tr>
<tr>
<th>URL</th>
- <td>${repository.url}</td>
+ <td><c:out value="${repository.url}" /></td>
</tr>
<tr>
<th>Type</th>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/components/companyLogo.jsp Wed May 4 12:03:29 2011
@@ -29,12 +29,12 @@
<s:set name="organisationUrl" value="organisationUrl"/>
<c:choose>
<c:when test="${!empty (organisationUrl)}">
- <a href="${organisationUrl}">
- <img src="${organisationLogo}" title="${organisationName}"/>
+ <a href='<c:out value="${organisationUrl}" />'>
+ <img src='<c:out value="${organisationLogo}" />' title='<c:out value="${organisationName}" />'/>
</a>
</c:when>
<c:otherwise>
- <img src="${organisationLogo}" title="${organisationName}"/>
+ <img src='<c:out value="${organisationLogo}" />' title='<c:out value="${organisationName}" />'/>
</c:otherwise>
</c:choose>
</c:when>
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/deleteArtifact.jsp Wed May 4 12:03:29 2011
@@ -30,8 +30,21 @@
<body>
<h1>Delete Artifact</h1>
- <s:actionerror/>
- <s:actionmessage/>
+ <%-- changed the structure of displaying errorMessages & actionMessages in order for them to be escaped. --%>
+ <s:if test="hasActionErrors()">
+ <ul>
+ <s:iterator value="actionErrors">
+ <li><span class="errorMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
+ <s:if test="hasActionMessages()">
+ <ul>
+ <s:iterator value="actionMessages">
+ <li><span class="actionMessage"><s:property escape="true" /></span></li>
+ </s:iterator>
+ </ul>
+ </s:if>
<div id="contentArea">
<s:form action="deleteArtifact!doDelete" namespace="/" method="post" validate="true">
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva:825850-882383,882384-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration:825850-882383,885006-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/configuration/TestConfiguration.java:825850-882383,885006-909464,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata:825850-882383,882384-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository:825850-882383,882384-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory:825850-882383,882384-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataRepository.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,2 +1,2 @@
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataRepository.java:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataRepository.java:1066068-1091313,1098897
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataRepository.java:888397-909464,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataResolver.java:825850-909464,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/security/UserRepositoriesStub.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,5 +1,5 @@
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/UserRepositoriesStub.java:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/security/UserRepositoriesStub.java:1049409,1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/security/UserRepositoriesStub.java:1049409,1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/UserRepositoriesStub.java:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/UserRepositoriesStub.java:699795-705848
/archiva/tags/archiva-1.3/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/security/UserRepositoriesStub.java:898632
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/appearance/EditOrganizationInfoActionTest.java Wed May 4 12:03:29 2011
@@ -20,12 +20,51 @@ package org.apache.maven.archiva.web.act
*/
import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.validator.ActionValidatorManager;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.opensymphony.xwork2.validator.DefaultActionValidatorManager;
import org.apache.maven.archiva.configuration.OrganisationInformation;
+import org.apache.maven.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
/**
*/
public class EditOrganizationInfoActionTest extends AbstractOrganizationInfoActionTest
{
+ private static final String EMPTY_STRING = "";
+
+ // valid inputs
+ private static final String ORGANISATION_NAME_VALID_INPUT = "abcXYZ0129. _/\\~ :?!&=-";
+
+ private static final String ORGANISATION_URL_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ private static final String ORGANISATION_LOGO_VALID_INPUT = "file://home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ // invalid inputs
+ private static final String ORGANISATION_NAME_INVALID_INPUT = "<>~+[ ]'\"";
+
+ private static final String ORGANISATION_URL_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ private static final String ORGANISATION_LOGO_INVALID_INPUT = "/home/user/abcXYZ0129._/\\~:?!&=-<> ~+[ ]'\"";
+
+ // testing requisite
+ private ActionValidatorManager actionValidatorManager;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ super.setUp();
+
+ DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory();
+
+ actionValidatorManager = factory.createDefaultActionValidatorManager();
+ }
+
public void testOrganisationInfoSaves()
throws Exception
{
@@ -56,6 +95,109 @@ public class EditOrganizationInfoActionT
assertEquals("URL1", orginfo.getUrl());
}
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, null, null, null);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a name");
+ expectedFieldErrors.put("organisationName", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a name");
+ expectedFieldErrors.put("organisationName", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, ORGANISATION_NAME_INVALID_INPUT, ORGANISATION_URL_INVALID_INPUT, ORGANISATION_LOGO_INVALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Organisation name must only contain alphanumeric characters, white-spaces(' '), equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
+ expectedFieldErrors.put("organisationName", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a URL");
+ expectedFieldErrors.put("organisationUrl", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a URL");
+ expectedFieldErrors.put("organisationLogo", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
+ {
+ // prep
+ action = getAction();
+ populateOrganisationValues(action, ORGANISATION_NAME_VALID_INPUT, ORGANISATION_URL_VALID_INPUT, ORGANISATION_LOGO_VALID_INPUT);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertFalse(action.hasFieldErrors());
+ }
+
+ private void populateOrganisationValues(AbstractAppearanceAction abstractAppearanceAction , String name, String url, String logo)
+ {
+ abstractAppearanceAction.setOrganisationName(name);
+ abstractAppearanceAction.setOrganisationUrl(url);
+ abstractAppearanceAction.setOrganisationLogo(logo);
+ }
+
@Override
protected AbstractAppearanceAction getAction()
{
Copied: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java (from r1098897, archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java&p1=archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java&r1=1098897&r2=1099425&rev=1099425&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/legacy/AddLegacyArtifactPathActionTest.java Wed May 4 12:03:29 2011
@@ -21,13 +21,15 @@ package org.apache.maven.archiva.web.act
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.validator.ActionValidatorManager;
-import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
+import com.opensymphony.xwork2.validator.DefaultActionValidatorManager;
import junit.framework.TestCase;
import org.apache.maven.archiva.configuration.LegacyArtifactPath;
+import org.apache.maven.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory;
import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
public class AddLegacyArtifactPathActionTest extends TestCase
@@ -69,8 +71,10 @@ public class AddLegacyArtifactPathAction
public void setUp() throws Exception
{
addLegacyArtifactPathAction = new AddLegacyArtifactPathAction();
- ObjectFactory.setObjectFactory(new ObjectFactory());
- actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+
+ DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory();
+
+ actionValidatorManager = factory.createDefaultActionValidatorManager();
}
public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
Copied: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java (from r1098897, archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java&p1=archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java&r1=1098897&r2=1099425&rev=1099425&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/networkproxies/ConfigureNetworkProxyActionTest.java Wed May 4 12:03:29 2011
@@ -21,13 +21,15 @@ package org.apache.maven.archiva.web.act
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.validator.ActionValidatorManager;
-import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
+import com.opensymphony.xwork2.validator.DefaultActionValidatorManager;
import junit.framework.TestCase;
import org.apache.maven.archiva.configuration.NetworkProxyConfiguration;
+import org.apache.maven.archiva.web.action.admin.repositories.DefaultActionValidatorManagerFactory;
import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
public class ConfigureNetworkProxyActionTest extends TestCase
@@ -65,10 +67,13 @@ public class ConfigureNetworkProxyAction
@Override
public void setUp()
+ throws Exception
{
configureNetworkProxyAction = new ConfigureNetworkProxyAction();
- ObjectFactory.setObjectFactory(new ObjectFactory());
- actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+
+ DefaultActionValidatorManagerFactory factory = new DefaultActionValidatorManagerFactory();
+
+ actionValidatorManager = factory.createDefaultActionValidatorManager();
}
public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
Copied: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java (from r1098897, archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java)
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java&p1=archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java&r1=1098897&r2=1099425&rev=1099425&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoryActionTest.java Wed May 4 12:03:29 2011
@@ -19,14 +19,14 @@ package org.apache.maven.archiva.web.act
* under the License.
*/
-import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.validator.ActionValidatorManager;
-import com.opensymphony.xwork2.validator.ActionValidatorManagerFactory;
import java.io.File;
+
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
-public abstract class AbstractManagedRepositoryActionTest extends PlexusInSpringTestCase
+public abstract class AbstractManagedRepositoryActionTest
+ extends PlexusInSpringTestCase
{
protected static final String EMPTY_STRING = "";
@@ -68,8 +68,9 @@ public abstract class AbstractManagedRep
{
super.setUp();
- ObjectFactory.setObjectFactory(new ObjectFactory());
- actionValidatorManager = ActionValidatorManagerFactory.getInstance();
+ DefaultActionValidatorManagerFactory defaultActionValidatorManagerFactory = new DefaultActionValidatorManagerFactory();
+
+ actionValidatorManager = defaultActionValidatorManagerFactory.createDefaultActionValidatorManager();
}
protected void populateRepository( ManagedRepositoryConfiguration repository )
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java Wed May 4 12:03:29 2011
@@ -20,18 +20,23 @@ package org.apache.maven.archiva.web.act
*/
import java.io.File;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import com.opensymphony.xwork2.Action;
+import org.apache.archiva.audit.AuditListener;
import org.apache.commons.io.FileUtils;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.security.ArchivaRoleConstants;
-import org.apache.maven.archiva.web.action.AbstractActionTestCase;
+import org.apache.maven.archiva.web.action.PlexusActionSupport;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.registry.Registry;
-import org.codehaus.plexus.spring.PlexusInSpringTestCase;
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
import org.codehaus.redback.integration.interceptor.SecureActionException;
import org.easymock.MockControl;
@@ -42,7 +47,7 @@ import org.easymock.MockControl;
* @version $Id$
*/
public class AddManagedRepositoryActionTest
- extends AbstractActionTestCase
+ extends AbstractManagedRepositoryActionTest
{
private AddManagedRepositoryAction action;
@@ -57,11 +62,7 @@ public class AddManagedRepositoryActionT
private MockControl registryControl;
private ArchivaConfiguration archivaConfiguration;
-
- private static final String REPO_ID = "repo-ident";
- private File location;
-
@Override
protected void setUp()
throws Exception
@@ -69,7 +70,7 @@ public class AddManagedRepositoryActionT
super.setUp();
action = new AddManagedRepositoryAction();
-
+
archivaConfigurationControl = MockControl.createControl( ArchivaConfiguration.class );
archivaConfiguration = (ArchivaConfiguration) archivaConfigurationControl.getMock();
action.setArchivaConfiguration( archivaConfiguration );
@@ -198,21 +199,133 @@ public class AddManagedRepositoryActionT
assertEquals( location.getCanonicalPath(), new File( repository.getLocation() ).getCanonicalPath() );
registryControl.verify();
}
-
- private void populateRepository( ManagedRepositoryConfiguration repository )
+
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ // 0 is the default value for primitive int; null for objects
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(null, null, null, null);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository identifier.");
+ expectedFieldErrors.put("repository.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a directory.");
+ expectedFieldErrors.put("repository.location", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository name.");
+ expectedFieldErrors.put("repository.name", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ // 0 is the default value for primitive int
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository identifier.");
+ expectedFieldErrors.put("repository.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a directory.");
+ expectedFieldErrors.put("repository.location", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository name.");
+ expectedFieldErrors.put("repository.name", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_INVALID_INPUT, REPOSITORY_NAME_INVALID_INPUT, REPOSITORY_LOCATION_INVALID_INPUT, REPOSITORY_INDEX_DIR_INVALID_INPUT, REPOSITORY_DAYS_OLDER_INVALID_INPUT, REPOSITORY_RETENTION_COUNT_INVALID_INPUT);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("repository.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
+ expectedFieldErrors.put("repository.location", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("repository.name", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
+ expectedFieldErrors.put("repository.indexDir", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository Purge By Retention Count needs to be between 1 and 100.");
+ expectedFieldErrors.put("repository.retentionCount", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository Purge By Days Older Than needs to be larger than 0.");
+ expectedFieldErrors.put("repository.daysOlder", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
{
- repository.setId( REPO_ID );
- repository.setName( "repo name" );
- repository.setLocation( "${appserver.base}/location" );
- repository.setLayout( "default" );
- repository.setRefreshCronExpression( "* 0/5 * * * ?" );
- repository.setDaysOlder( 31 );
- repository.setRetentionCount( 20 );
- repository.setReleases( true );
- repository.setSnapshots( true );
- repository.setScanned( false );
- repository.setDeleteReleasedSnapshots( true );
+ // prep
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_VALID_INPUT, REPOSITORY_NAME_VALID_INPUT, REPOSITORY_LOCATION_VALID_INPUT, REPOSITORY_INDEX_DIR_VALID_INPUT, REPOSITORY_DAYS_OLDER_VALID_INPUT, REPOSITORY_RETENTION_COUNT_VALID_INPUT);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertFalse(action.hasFieldErrors());
}
+
// TODO: test errors during add, other actions
}
Added: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java?rev=1099425&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java (added)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DefaultActionValidatorManagerFactory.java Wed May 4 12:03:29 2011
@@ -0,0 +1,96 @@
+package org.apache.maven.archiva.web.action.admin.repositories;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.DefaultTextProvider;
+import com.opensymphony.xwork2.ObjectFactory;
+import com.opensymphony.xwork2.TextProvider;
+import com.opensymphony.xwork2.conversion.ObjectTypeDeterminer;
+import com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer;
+import com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter;
+import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
+import com.opensymphony.xwork2.inject.Container;
+import com.opensymphony.xwork2.inject.ContainerBuilder;
+import com.opensymphony.xwork2.inject.Scope;
+import com.opensymphony.xwork2.ognl.OgnlReflectionProvider;
+import com.opensymphony.xwork2.ognl.OgnlUtil;
+import com.opensymphony.xwork2.ognl.OgnlValueStackFactory;
+import com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor;
+import com.opensymphony.xwork2.util.CompoundRoot;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
+import com.opensymphony.xwork2.validator.ActionValidatorManager;
+import com.opensymphony.xwork2.validator.DefaultActionValidatorManager;
+import com.opensymphony.xwork2.validator.DefaultValidatorFactory;
+import com.opensymphony.xwork2.validator.DefaultValidatorFileParser;
+import ognl.PropertyAccessor;
+
+import java.util.HashMap;
+
+/**
+ * Factory for creating the DefaultActionValidatorManager to be used for the validation tests.
+ */
+public class DefaultActionValidatorManagerFactory
+{
+
+ // ObjectFactory.setObjectFactory(..) was removed in struts 2.1, so we have to workaround with this
+ // to make the validation tests work
+ public ActionValidatorManager createDefaultActionValidatorManager()
+ throws ClassNotFoundException
+ {
+ Container container = createBootstrapContainer();
+
+ ActionContext context = new ActionContext( new HashMap<String, Object>() );
+ context.setValueStack( createValueStack( container ) );
+ ActionContext.setContext( context );
+
+ OgnlReflectionProvider reflectionProvider = new OgnlReflectionProvider();
+
+ reflectionProvider.setOgnlUtil( container.getInstance( OgnlUtil.class ) );
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ objectFactory.setReflectionProvider( reflectionProvider );
+
+ DefaultValidatorFileParser fileParser = new DefaultValidatorFileParser();
+ fileParser.setObjectFactory( objectFactory );
+
+ DefaultValidatorFactory validatorFactory = new DefaultValidatorFactory( objectFactory, fileParser );
+
+ DefaultActionValidatorManager defaultValidatorManager = new DefaultActionValidatorManager();
+ defaultValidatorManager.setValidatorFactory( validatorFactory );
+ defaultValidatorManager.setValidatorFileParser( fileParser );
+
+ return defaultValidatorManager;
+ }
+
+ private ValueStack createValueStack( Container container )
+ throws ClassNotFoundException
+ {
+ OgnlValueStackFactory stackFactory = new OgnlValueStackFactory();
+
+ stackFactory.setXWorkConverter( container.getInstance( XWorkConverter.class ) );
+ stackFactory.setContainer( container );
+ stackFactory.setTextProvider( container.getInstance( TextProvider.class ) );
+
+ ValueStack stack = stackFactory.createValueStack();
+
+ return stack;
+ }
+
+ private Container createBootstrapContainer()
+ {
+ ContainerBuilder builder = new ContainerBuilder();
+ builder.factory( ObjectFactory.class, Scope.SINGLETON );
+ builder.factory( ReflectionProvider.class, OgnlReflectionProvider.class, Scope.SINGLETON );
+ builder.factory( ValueStackFactory.class, OgnlValueStackFactory.class, Scope.SINGLETON );
+ builder.factory( XWorkConverter.class, Scope.SINGLETON );
+ builder.factory( XWorkBasicConverter.class, Scope.SINGLETON );
+ builder.factory( TextProvider.class, "system", DefaultTextProvider.class, Scope.SINGLETON );
+ builder.factory( ObjectTypeDeterminer.class, DefaultObjectTypeDeterminer.class, Scope.SINGLETON );
+ builder.factory( PropertyAccessor.class, CompoundRoot.class.getName(), CompoundRootAccessor.class, Scope.SINGLETON );
+ builder.factory( OgnlUtil.class, Scope.SINGLETON );
+ builder.constant( "devMode", "false" );
+
+ return builder.create( true );
+ }
+}
\ No newline at end of file
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java?rev=1099425&r1=1099424&r2=1099425&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java Wed May 4 12:03:29 2011
@@ -31,6 +31,7 @@ import org.apache.maven.archiva.configur
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.security.ArchivaRoleConstants;
import org.apache.maven.archiva.web.action.AbstractActionTestCase;
+import org.apache.maven.archiva.web.validator.utils.ValidatorUtil;
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.registry.Registry;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
@@ -40,7 +41,11 @@ import org.easymock.MockControl;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -51,7 +56,7 @@ import static org.mockito.Mockito.when;
* @version $Id$
*/
public class EditManagedRepositoryActionTest
- extends AbstractActionTestCase
+ extends AbstractManagedRepositoryActionTest
{
private EditManagedRepositoryAction action;
@@ -67,12 +72,9 @@ public class EditManagedRepositoryAction
private MockControl registryControl;
- private static final String REPO_ID = "repo-ident";
-
- private File location;
-
private MetadataRepository metadataRepository;
+ @Override
protected void setUp()
throws Exception
{
@@ -292,6 +294,132 @@ public class EditManagedRepositoryAction
registryControl.verify();
}
+ public void testStruts2ValidationFrameworkWithNullInputs() throws Exception
+ {
+ // prep
+ // 0 is the default value for primitive int; null for objects
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(null, null, null, null);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository identifier.");
+ expectedFieldErrors.put("repository.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a directory.");
+ expectedFieldErrors.put("repository.location", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository name.");
+ expectedFieldErrors.put("repository.name", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithBlankInputs() throws Exception
+ {
+ // prep
+ // 0 is the default value for primitive int
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository identifier.");
+ expectedFieldErrors.put("repository.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a directory.");
+ expectedFieldErrors.put("repository.location", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("You must enter a repository name.");
+ expectedFieldErrors.put("repository.name", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithInvalidInputs() throws Exception
+ {
+ // prep
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_INVALID_INPUT, REPOSITORY_NAME_INVALID_INPUT, REPOSITORY_LOCATION_INVALID_INPUT, REPOSITORY_INDEX_DIR_INVALID_INPUT, REPOSITORY_DAYS_OLDER_INVALID_INPUT, REPOSITORY_RETENTION_COUNT_INVALID_INPUT);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertTrue(action.hasFieldErrors());
+
+ Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+ // make an expected field error object
+ Map<String, List<String>> expectedFieldErrors = new HashMap<String, List<String>>();
+
+ // populate
+ List<String> expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Identifier must only contain alphanumeric characters, underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("repository.id", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
+ expectedFieldErrors.put("repository.location", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository Name must only contain alphanumeric characters, white-spaces(' '), forward-slashes(/), open-parenthesis('('), close-parenthesis(')'), underscores(_), dots(.), and dashes(-).");
+ expectedFieldErrors.put("repository.name", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Index directory must only contain alphanumeric characters, equals(=), question-marks(?), exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).");
+ expectedFieldErrors.put("repository.indexDir", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository Purge By Retention Count needs to be between 1 and 100.");
+ expectedFieldErrors.put("repository.retentionCount", expectedErrorMessages);
+
+ expectedErrorMessages = new ArrayList<String>();
+ expectedErrorMessages.add("Repository Purge By Days Older Than needs to be larger than 0.");
+ expectedFieldErrors.put("repository.daysOlder", expectedErrorMessages);
+
+ ValidatorUtil.assertFieldErrors(expectedFieldErrors, fieldErrors);
+ }
+
+ public void testStruts2ValidationFrameworkWithValidInputs() throws Exception
+ {
+ // prep
+ ManagedRepositoryConfiguration managedRepositoryConfiguration = createManagedRepositoryConfiguration(REPOSITORY_ID_VALID_INPUT, REPOSITORY_NAME_VALID_INPUT, REPOSITORY_LOCATION_VALID_INPUT, REPOSITORY_INDEX_DIR_VALID_INPUT, REPOSITORY_DAYS_OLDER_VALID_INPUT, REPOSITORY_RETENTION_COUNT_VALID_INPUT);
+ action.setRepository(managedRepositoryConfiguration);
+
+ // test
+ actionValidatorManager.validate(action, EMPTY_STRING);
+
+ // verify
+ assertFalse(action.hasFieldErrors());
+ }
+
private void assertRepositoryEquals( ManagedRepositoryConfiguration expectedRepository,
ManagedRepositoryConfiguration actualRepository )
{
@@ -335,22 +463,6 @@ public class EditManagedRepositoryAction
return r;
}
- private void populateRepository( ManagedRepositoryConfiguration repository )
- throws IOException
- {
- repository.setId( REPO_ID );
- repository.setName( "repo name" );
- repository.setLocation( "${appserver.base}/location" );
- repository.setLayout( "default" );
- repository.setRefreshCronExpression( "* 0/5 * * * ?" );
- repository.setDaysOlder( 31 );
- repository.setRetentionCount( 20 );
- repository.setReleases( true );
- repository.setSnapshots( true );
- repository.setScanned( false );
- repository.setDeleteReleasedSnapshots( true );
- }
-
private void populateStagingRepository( ManagedRepositoryConfiguration repository )
throws IOException
{
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:721945-723577,882046,882457,884741,885313-885314,892686*
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:1049409*,1066068-1091313*
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:1049409*,1066068-1091313*,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:699795-705848
/archiva/tags/archiva-1.3/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports:898632
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:882046,882457,884741,885313-885314
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:1049409,1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:1049409,1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:699795-705848
/archiva/tags/archiva-1.3/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/reports/GenerateReportActionTest.java:898632
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags:825850-885005,885006-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/tags/DependencyTreeTest.java:825850-909464,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/repositories:825850-885005,885006-909464*,960322
Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 4 12:03:29 2011
@@ -1,6 +1,6 @@
/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:721945-723577
/archiva/branches/MRM-541/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:686983-687034
-/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:1066068-1091313
+/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:1066068-1091313,1098897
/archiva/branches/archiva-search-improvements/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:723609-726925
/archiva/branches/archiva-struts2/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:699795-705848
/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/repositories/test:825850-885005,885006-909464*,960322