From 94799fd790e9225a43eff72424ed0621a3e68c45 Mon Sep 17 00:00:00 2001 From: "Maria Odea B. Ching" Date: Wed, 7 May 2008 06:09:51 +0000 Subject: [PATCH] [MRM-773] -update feed link url from the request url -set query import in ArtifactsByRepositoryConstraint git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@653999 13f79535-47bb-0310-9956-ffa450edef68 --- .../ArtifactsByRepositoryConstraint.java | 9 ++-- .../maven/archiva/web/rss/RssFeedServlet.java | 47 +++++++++---------- .../src/main/webapp/WEB-INF/web.xml | 2 +- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArtifactsByRepositoryConstraint.java b/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArtifactsByRepositoryConstraint.java index 0e64a84c2..4506123a2 100644 --- a/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArtifactsByRepositoryConstraint.java +++ b/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/constraints/ArtifactsByRepositoryConstraint.java @@ -44,11 +44,12 @@ public class ArtifactsByRepositoryConstraint params = new Object[] { repoId }; } - public ArtifactsByRepositoryConstraint( String repoId, Date whenGathered, String sortColumn ) + public ArtifactsByRepositoryConstraint( String repoId, Date targetWhenGathered, String sortColumn ) { - whereClause = "repositoryId == repoId && whenGathered >= whenGathered"; - declParams = new String[] { "String repoId", "Date whenGathered" }; - params = new Object[] { repoId, whenGathered }; + declImports = new String[] { "import java.util.Date" }; + whereClause = "this.repositoryId == repoId && this.whenGathered >= targetWhenGathered"; + declParams = new String[] { "String repoId", "Date targetWhenGathered" }; + params = new Object[] { repoId, targetWhenGathered }; this.sortColumn = sortColumn; } 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 dad2b095c..22c2b081a 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 @@ -98,8 +98,7 @@ public class RssFeedServlet public void doGet( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException - { - log.info( "Request URL: " + req.getRequestURL() ); + { try { Map map = new HashMap(); @@ -107,28 +106,19 @@ public class RssFeedServlet String repoId = req.getParameter( "repoId" ); String groupId = req.getParameter( "groupId" ); String artifactId = req.getParameter( "artifactId" ); - - if ( repoId != null ) + + if ( isAuthorized( req ) ) { - - if ( isAuthorized( req ) ) - { + if ( repoId != null ) + { // new artifacts in repo feed request processor = (RssFeedProcessor) wac.getBean( PlexusToSpringUtils.buildSpringId( RssFeedProcessor.class.getName(), "new-artifacts" ) ); - map.put( RssFeedProcessor.KEY_REPO_ID, repoId ); + map.put( RssFeedProcessor.KEY_REPO_ID, repoId ); } - else - { - res.sendError( HttpServletResponse.SC_UNAUTHORIZED, "Request is not authorized." ); - return; - } - } - else if ( ( groupId != null ) && ( artifactId != null ) ) - { - if ( isAuthorized( req ) ) + else if ( ( groupId != null ) && ( artifactId != null ) ) { // new versions of artifact feed request processor = @@ -136,22 +126,31 @@ public class RssFeedServlet RssFeedProcessor.class.getName(), "new-versions" ) ); map.put( RssFeedProcessor.KEY_GROUP_ID, groupId ); - map.put( RssFeedProcessor.KEY_ARTIFACT_ID, artifactId ); + map.put( RssFeedProcessor.KEY_ARTIFACT_ID, artifactId ); } else { - res.sendError( HttpServletResponse.SC_UNAUTHORIZED, "Request is not authorized." ); + res.sendError( HttpServletResponse.SC_BAD_REQUEST, "Required fields not found in request." ); return; } } else { - res.sendError( HttpServletResponse.SC_BAD_REQUEST, "Required fields not found in request." ); + res.sendError( HttpServletResponse.SC_UNAUTHORIZED, "Request is not authorized." ); return; } - + feed = processor.process( map ); res.setContentType( MIME_TYPE ); + + if ( repoId != null ) + { + feed.setLink( req.getRequestURL() + "?repoId=" + repoId ); + } + else if ( ( groupId != null ) && ( artifactId != null ) ) + { + feed.setLink( req.getRequestURL() + "?groupId=" + groupId + "&artifactId=" + artifactId ); + } SyndFeedOutput output = new SyndFeedOutput(); output.output( feed, res.getWriter() ); @@ -193,7 +192,7 @@ public class RssFeedServlet throws UserNotFoundException, AccountLockedException, AuthenticationException, AuthorizationException { String auth = req.getHeader( "Authorization" ); - + if ( auth == null ) { return false; @@ -219,7 +218,7 @@ public class RssFeedServlet String[] userCredentials = usernamePassword.split( ":" ); String username = userCredentials[0]; String password = userCredentials[1]; - + AuthenticationDataSource dataSource = new PasswordBasedAuthenticationDataSource( username, password ); SecuritySession session = null; @@ -236,7 +235,7 @@ public class RssFeedServlet session = securitySystem.authenticate( dataSource ); for ( String repoId : repoIds ) - { + { if ( securitySystem.isAuthorized( session, ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS, repoId ) ) { return true; 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 06c77c12a..ab9ae2f45 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 @@ RssFeedServlet - /rss/* + /rss/rss_feeds