diff options
author | Maria Odea B. Ching <oching@apache.org> | 2008-08-21 08:14:08 +0000 |
---|---|---|
committer | Maria Odea B. Ching <oching@apache.org> | 2008-08-21 08:14:08 +0000 |
commit | 1b9083f0196774cc6f3851be76a27f13c0caf724 (patch) | |
tree | 0a3fa032661c889955daf1327836579ca9d2fbfd | |
parent | b48ffaec2d00da9b3642d08d9c7ee68342b933ad (diff) | |
download | archiva-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
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> |