aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaria Odea B. Ching <oching@apache.org>2008-08-21 08:14:08 +0000
committerMaria Odea B. Ching <oching@apache.org>2008-08-21 08:14:08 +0000
commit1b9083f0196774cc6f3851be76a27f13c0caf724 (patch)
tree0a3fa032661c889955daf1327836579ca9d2fbfd
parentb48ffaec2d00da9b3642d08d9c7ee68342b933ad (diff)
downloadarchiva-1b9083f0196774cc6f3851be76a27f13c0caf724.tar.gz
archiva-1b9083f0196774cc6f3851be76a27f13c0caf724.zip
[MRM-839]
-updated the rss url for repositories and artifacts git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@687634 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/rss/RssFeedServlet.java53
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp2
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp2
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml2
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/RssFeedServletTest.java22
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/feedServletTest-web.xml2
6 files changed, 49 insertions, 34 deletions
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/rss/RssFeedServlet.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/rss/RssFeedServlet.java
index caedf31bf..82c1a6348 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/rss/RssFeedServlet.java
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/rss/RssFeedServlet.java
@@ -35,6 +35,7 @@ import org.apache.archiva.rss.processor.RssFeedProcessor;
import org.apache.commons.codec.Decoder;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.database.ArchivaDatabaseException;
import org.apache.maven.archiva.security.AccessDeniedException;
import org.apache.maven.archiva.security.ArchivaRoleConstants;
@@ -106,22 +107,33 @@ public class RssFeedServlet
public void doGet( HttpServletRequest req, HttpServletResponse res )
throws ServletException, IOException
{
- String repoId = req.getParameter( "repoId" );
- String groupId = req.getParameter( "groupId" );
- String artifactId = req.getParameter( "artifactId" );
+ String repoId = null;
+ String groupId = null;
+ String artifactId = null;
+
+ String url = StringUtils.removeEnd( req.getRequestURL().toString(), "/" );
+ if( StringUtils.countMatches( StringUtils.substringAfter( url, "feeds/" ), "/" ) > 0 )
+ {
+ artifactId = StringUtils.substringAfterLast( url, "/" );
+ groupId = StringUtils.substringBeforeLast( StringUtils.substringAfter( url, "feeds/" ), "/");
+ groupId = StringUtils.replaceChars( groupId, '/', '.' );
+ }
+ else if( StringUtils.countMatches( StringUtils.substringAfter( url, "feeds/" ), "/" ) == 0 )
+ {
+ repoId = StringUtils.substringAfterLast( url, "/" );
+ }
+ else
+ {
+ res.sendError( HttpServletResponse.SC_BAD_REQUEST, "Invalid request url." );
+ return;
+ }
try
{
Map<String, String> map = new HashMap<String, String>();
SyndFeed feed = null;
-
- if ( ( repoId == null ) && ( groupId == null && artifactId == null ) )
- {
- res.sendError( HttpServletResponse.SC_BAD_REQUEST, "Required fields not found in request." );
- return;
- }
-
- if ( isAllowed( req ) )
+
+ if ( isAllowed( req, repoId, groupId, artifactId ) )
{
if ( repoId != null )
{
@@ -157,14 +169,14 @@ public class RssFeedServlet
}
res.setContentType( MIME_TYPE );
-
+
if ( repoId != null )
- {
- feed.setLink( req.getRequestURL() + "?repoId=" + repoId );
+ {
+ feed.setLink( req.getRequestURL().toString() );
}
else if ( ( groupId != null ) && ( artifactId != null ) )
{
- feed.setLink( req.getRequestURL() + "?groupId=" + groupId + "&artifactId=" + artifactId );
+ feed.setLink( req.getRequestURL().toString() );
}
SyndFeedOutput output = new SyndFeedOutput();
@@ -218,20 +230,23 @@ public class RssFeedServlet
* Basic authentication.
*
* @param req
+ * @param repositoryId TODO
+ * @param groupId TODO
+ * @param artifactId TODO
* @return
*/
- private boolean isAllowed( HttpServletRequest req )
+ private boolean isAllowed( HttpServletRequest req, String repositoryId, String groupId, String artifactId )
throws UserNotFoundException, AccountLockedException, AuthenticationException, MustChangePasswordException,
UnauthorizedException
{
String auth = req.getHeader( "Authorization" );
List<String> repoIds = new ArrayList<String>();
- if ( req.getParameter( "repoId" ) != null )
+ if ( repositoryId != null )
{
- repoIds.add( req.getParameter( "repoId" ) );
+ repoIds.add( repositoryId );
}
- else if ( req.getParameter( "artifactId" ) != null && req.getParameter( "groupId" ) != null )
+ else if ( artifactId != null && groupId != null )
{
if ( auth != null )
{
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
index ecd8719b0..8f1e91178 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp
@@ -88,7 +88,7 @@
</ww:a>
</redback:ifAnyAuthorized>
<c:url var="rssFeedIconUrl" value="/images/icons/rss-feed.png"/>
- <a href="/archiva/rss/rss_feeds?repoId=${repository.id}">
+ <a href="/archiva/feeds/${repository.id}">
<img src="${rssFeedIconUrl}" />
</a>
</div>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp
index 762cead71..2b4ea52cb 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/browse.jsp
@@ -72,7 +72,7 @@
</c:set>
<li>
<a href="${url}">${artifactId}/</a>
- <a href="/archiva/rss/rss_feeds?groupId=${groupId}&artifactId=${artifactId}">
+ <a href="/archiva/feeds/${groupId}/${artifactId}">
<img src="${rssFeedIconUrl}" />
</a>
</li>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml
index b732fe8b5..e9127bda2 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/web.xml
@@ -93,7 +93,7 @@
<servlet-mapping>
<servlet-name>RssFeedServlet</servlet-name>
- <url-pattern>/rss/rss_feeds</url-pattern>
+ <url-pattern>/feeds/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/RssFeedServletTest.java b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/RssFeedServletTest.java
index df208f0b9..eed126ab2 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/RssFeedServletTest.java
+++ b/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/rss/RssFeedServletTest.java
@@ -59,7 +59,7 @@ public class RssFeedServletTest
throws Exception
{
RssFeedServlet servlet =
- (RssFeedServlet) client.newInvocation( "http://localhost/rss/rss_feeds?repoId=test-repo" ).getServlet();
+ (RssFeedServlet) client.newInvocation( "http://localhost/feeds/test-repo" ).getServlet();
assertNotNull( servlet );
}
@@ -67,10 +67,10 @@ public class RssFeedServletTest
throws Exception
{
RssFeedServlet servlet =
- (RssFeedServlet) client.newInvocation( "http://localhost/rss/rss_feeds?repoId=test-repo" ).getServlet();
+ (RssFeedServlet) client.newInvocation( "http://localhost/feeds/test-repo" ).getServlet();
assertNotNull( servlet );
- WebRequest request = new GetMethodWebRequest( "http://localhost/rss/rss_feeds?repoId=test-repo" );
+ WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/test-repo" );
BASE64Encoder encoder = new BASE64Encoder();
String userPass = "user1:password1";
@@ -88,10 +88,10 @@ public class RssFeedServletTest
{
RssFeedServlet servlet =
(RssFeedServlet) client.newInvocation(
- "http://localhost/rss/rss_feeds?groupId=org.apache.archiva&artifactId=artifact-two" ).getServlet();
+ "http://localhost/feeds/org/apache/archiva/artifact-two" ).getServlet();
assertNotNull( servlet );
- WebRequest request = new GetMethodWebRequest( "http://localhost/rss/rss_feeds?groupId=org.apache.archiva&artifactId=artifact-two" );
+ WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/org/apache/archiva/artifact-two" );
BASE64Encoder encoder = new BASE64Encoder();
String userPass = "user1:password1";
@@ -109,12 +109,12 @@ public class RssFeedServletTest
{
RssFeedServlet servlet =
(RssFeedServlet) client.newInvocation(
- "http://localhost/rss/rss_feeds?invalid_param=xxx" ).getServlet();
+ "http://localhost/feeds?invalid_param=xxx" ).getServlet();
assertNotNull( servlet );
try
{
- WebResponse response = client.getResponse( "http://localhost/rss/rss_feeds?invalid_param=xxx" );
+ WebResponse response = client.getResponse( "http://localhost/feeds?invalid_param=xxx" );
}
catch ( HttpException he )
{
@@ -127,11 +127,11 @@ public class RssFeedServletTest
{
RssFeedServlet servlet =
(RssFeedServlet) client.newInvocation(
- "http://localhost/rss/rss_feeds?repoId=unauthorized-repo" ).getServlet();
+ "http://localhost/feeds/unauthorized-repo" ).getServlet();
assertNotNull( servlet );
- WebRequest request = new GetMethodWebRequest( "http://localhost/rss/rss_feeds?repoId=unauthorized-repo" );
+ WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/unauthorized-repo" );
Encoder encoder = new Base64();
String userPass = "unauthUser:unauthPass";
@@ -153,11 +153,11 @@ public class RssFeedServletTest
{
RssFeedServlet servlet =
(RssFeedServlet) client.newInvocation(
- "http://localhost/rss/rss_feeds?repoId=unauthorized-repo" ).getServlet();
+ "http://localhost/feeds/unauthorized-repo" ).getServlet();
assertNotNull( servlet );
- WebRequest request = new GetMethodWebRequest( "http://localhost/rss/rss_feeds?repoId=unauthorized-repo" );
+ WebRequest request = new GetMethodWebRequest( "http://localhost/feeds/unauthorized-repo" );
BASE64Encoder encoder = new BASE64Encoder();
String userPass = "user1:password1";
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/feedServletTest-web.xml b/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/feedServletTest-web.xml
index fcdd3503f..106e9cb73 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/feedServletTest-web.xml
+++ b/archiva-modules/archiva-web/archiva-webapp/src/test/webapp/WEB-INF/feedServletTest-web.xml
@@ -35,7 +35,7 @@
<servlet-mapping>
<servlet-name>RssFeedServlet</servlet-name>
- <url-pattern>/rss/*</url-pattern>
+ <url-pattern>/feeds/*</url-pattern>
</servlet-mapping>
<context-param>