[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui ...
Christian Bauer
christian at hibernate.org
Wed Jan 9 16:04:18 EST 2008
User: cbauer
Date: 08/01/09 16:04:18
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/ui
FeedServlet.java
Log:
JBSEAM-2477 - Only/no comments displayed on feeds
Revision Changes Path
1.16 +36 -10 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/FeedServlet.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: FeedServlet.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/FeedServlet.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- FeedServlet.java 9 Jan 2008 18:12:02 -0000 1.15
+++ FeedServlet.java 9 Jan 2008 21:04:18 -0000 1.16
@@ -13,6 +13,7 @@
import org.jboss.seam.wiki.core.feeds.FeedDAO;
import org.jboss.seam.wiki.core.model.Feed;
import org.jboss.seam.wiki.core.model.FeedEntry;
+import org.jboss.seam.wiki.core.model.WikiCommentFeedEntry;
import org.jboss.seam.wiki.core.action.Authenticator;
import org.jboss.seam.wiki.core.action.prefs.WikiPreferences;
import org.jboss.seam.wiki.util.WikiUtil;
@@ -40,6 +41,10 @@
*/
public class FeedServlet extends HttpServlet {
+ public static enum Comments {
+ include, exclude, only
+ }
+
// Possible feed types
public enum SyndFeedType {
ATOM("/atom.seam", "atom_1.0", "application/atom+xml"),
@@ -68,19 +73,35 @@
throws ServletException, IOException {
String pathInfo = request.getPathInfo();
- String feedId = request.getParameter("feedId");
- String tag = request.getParameter("tag");
+ String feedIdParam = request.getParameter("feedId");
+ String tagParam = request.getParameter("tag");
+ String commentsParam = request.getParameter("comments");
+
+ Comments comments = Comments.include;
+ if (commentsParam != null) {
+ try {
+ comments = Comments.valueOf(commentsParam);
+ } catch (IllegalArgumentException ex) {}
+ }
+
+ try {
+ Long.valueOf(feedIdParam);
+ } catch (NumberFormatException ex) {
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Feed " + feedIdParam);
+ return;
+ }
try {
- Long.valueOf(feedId);
+ Long.valueOf(feedIdParam);
} catch (NumberFormatException ex) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, "Feed " + feedId);
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Feed " + feedIdParam);
return;
}
+
if (!feedTypes.containsKey(pathInfo)) return;
SyndFeedType syndFeedType = feedTypes.get(pathInfo);
- if (feedId == null) return;
+ if (feedIdParam == null) return;
// TODO: Seam should use its transaction interceptor for java beans: http://jira.jboss.com/jira/browse/JBSEAM-957
UserTransaction userTx = null;
@@ -93,9 +114,9 @@
}
FeedDAO feedDAO = (FeedDAO)Component.getInstance("feedDAO");
- Feed feed = feedDAO.findFeed(Long.valueOf(feedId));
+ Feed feed = feedDAO.findFeed(Long.valueOf(feedIdParam));
if (feed == null) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND, "Feed " + feedId);
+ response.sendError(HttpServletResponse.SC_NOT_FOUND, "Feed " + feedIdParam);
if (startedTx) userTx.commit();
return;
}
@@ -113,7 +134,7 @@
}
}
- SyndFeed syndFeed = createSyndFeed(request.getRequestURL().toString(), syndFeedType, feed, currentAccessLevel, tag);
+ SyndFeed syndFeed = createSyndFeed(request.getRequestURL().toString(), syndFeedType, feed, currentAccessLevel, tagParam, comments);
// Write feed to output
response.setContentType(syndFeedType.contentType);
@@ -135,10 +156,10 @@
}
public SyndFeed createSyndFeed(String baseURI, SyndFeedType syndFeedType, Feed feed, Integer currentAccessLevel) {
- return createSyndFeed(baseURI, syndFeedType, feed, currentAccessLevel, null);
+ return createSyndFeed(baseURI, syndFeedType, feed, currentAccessLevel, null, Comments.include);
}
- public SyndFeed createSyndFeed(String baseURI, SyndFeedType syndFeedType, Feed feed, Integer currentAccessLevel, String tag) {
+ public SyndFeed createSyndFeed(String baseURI, SyndFeedType syndFeedType, Feed feed, Integer currentAccessLevel, String tag, Comments comments) {
WikiPreferences prefs = (WikiPreferences) Preferences.getInstance("Wiki");
@@ -162,9 +183,14 @@
List<SyndEntry> syndEntries = new ArrayList<SyndEntry>();
SortedSet<FeedEntry> entries = feed.getFeedEntries();
for (FeedEntry entry : entries) {
+
if (entry.getReadAccessLevel() > currentAccessLevel) continue;
+
if (tag != null && !entry.isTagged(tag)) continue;
+ if (comments.equals(Comments.exclude) && entry.isInstance(WikiCommentFeedEntry.class)) continue;
+ if (comments.equals(Comments.only) && !entry.isInstance(WikiCommentFeedEntry.class)) continue;
+
SyndEntry syndEntry;
syndEntry = new SyndEntryImpl();
syndEntry.setTitle(entry.getTitle());
More information about the jboss-cvs-commits
mailing list