[jboss-svn-commits] JBL Code SVN: r5282 - in labs/shotoku/trunk: shotoku-base/src/java/org/jboss/shotoku/tools shotoku-feeds/src/java/org/jboss/shotoku/feeds shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments shotoku-feeds/src/java/org/jboss/shotoku/feeds/data shotoku-feeds/src/java/org/jboss/shotoku/feeds/service shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag shotoku-feeds/src/web/WEB-INF

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 25 18:04:36 EDT 2006


Author: adamw
Date: 2006-07-25 18:04:32 -0400 (Tue, 25 Jul 2006)
New Revision: 5282

Added:
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsNotAvialableException.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsServlet.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/FeedDoesNotExistException.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/UnauthorizedToCommentException.java
Modified:
   labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsService.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/service/FeedsServiceImpl.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java
   labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java
   labs/shotoku/trunk/shotoku-feeds/src/web/WEB-INF/web.xml
Log:
http://jira.jboss.org/jira/browse/JBSHOTOKU-38

Modified: labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java
===================================================================
--- labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-base/src/java/org/jboss/shotoku/tools/Tools.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -38,6 +38,7 @@
 import org.jboss.mx.util.MBeanServerLocator;
 import org.w3c.dom.Node;
 import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
 
 import javax.activation.MimetypesFileTypeMap;
 
@@ -99,6 +100,25 @@
     }
 
     /**
+     * @param root Node which children should be searched.
+     * @param name Name of the node that is being searched.
+     * @return A child node of the given one with the given name if such
+     * exists, or null otherwise.
+     */
+    public static org.w3c.dom.Node getNamedNode(org.w3c.dom.Node root,
+                                                String name) {
+        NodeList nl = root.getChildNodes();
+        for (int i=0; i<nl.getLength(); i++) {
+            Node n = nl.item(i);
+            if (name.equals(n.getNodeName())) {
+                return n;
+            }
+        }
+
+        return null;
+    }
+
+    /**
      * From the given node, gets the value of the specified attribute.
      *
      * @param root
@@ -306,7 +326,7 @@
 
     /**
      * Checks if the given string represents a true value. For example, "true",
-     * "yes", "TrUe" etc will return true.
+     * "yes", "TrUe", "1" etc will return true.
      *
      * @param s
      *            String to check.
@@ -318,7 +338,7 @@
         }
 
         s = s.trim().toLowerCase();
-        return "true".equals(s) || "yes".equals(s);
+        return "true".equals(s) || "yes".equals(s) || "1".equals(s);
     }
 
     public static void checkName(String name) throws NameFormatException {

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedFactory.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -22,7 +22,6 @@
 package org.jboss.shotoku.feeds;
 
 import org.jboss.shotoku.feeds.data.*;
-import org.apache.velocity.VelocityContext;
 
 import java.io.File;
 import java.util.HashMap;
@@ -58,7 +57,9 @@
      * @param type Type of feed to create.
      * @return A new instance of a feed of the given type.
      */
-    public static NormalFeed getNewNormalFeed(String name, String displayName, String type) {
+    public static NormalFeed getNewNormalFeed(String name, String displayName,
+                                              String type,
+                                              Map<String, Object> attributes) {
         Class feedClass = feedClasses.get(type);
         if (feedClass == null) return null;
 
@@ -70,8 +71,9 @@
         try {
             File file = File.createTempFile("shotoku-feeds" + nextInt, type);
             return (NormalFeed) feedClass.getConstructor(
-                    String.class, String.class, String.class, File.class).newInstance(
-                    name, displayName, type, file);
+                    String.class, String.class, String.class, File.class,
+                    Map.class).newInstance(name, displayName, type, file,
+                        attributes);
         } catch (Exception e) {
             return null;
         }

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsService.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsService.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/FeedsService.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -2,6 +2,7 @@
 
 import org.jboss.shotoku.service.AdministratedService;
 import org.jboss.shotoku.feeds.data.Feed;
+import org.jboss.shotoku.feeds.comments.FeedDoesNotExistException;
 
 /**
  * @author Adam Warski (adamw at aster.pl)
@@ -9,6 +10,10 @@
 public interface FeedsService extends AdministratedService {
     public Feed getFeed(String id, String name, String type);
 
+    public void addComment(String feedId, String feedName, String feedElement,
+                           String feedType, String username, String title,
+                           String content) throws FeedDoesNotExistException;
+
     /*
      * SERVICE MANAGEMENT METHODS
      */

Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsNotAvialableException.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsNotAvialableException.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsNotAvialableException.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -0,0 +1,21 @@
+package org.jboss.shotoku.feeds.comments;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class CommentsNotAvialableException extends Exception {
+    public CommentsNotAvialableException() {
+    }
+
+    public CommentsNotAvialableException(String message) {
+        super(message);
+    }
+
+    public CommentsNotAvialableException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public CommentsNotAvialableException(Throwable cause) {
+        super(cause);
+    }
+}

Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsServlet.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsServlet.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/CommentsServlet.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -0,0 +1,78 @@
+package org.jboss.shotoku.feeds.comments;
+
+import org.apache.xerces.parsers.DOMParser;
+import org.xml.sax.InputSource;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.jboss.shotoku.tools.Tools;
+import org.jboss.shotoku.feeds.tools.FeedsTools;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletException;
+import javax.servlet.ServletConfig;
+import java.io.IOException;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class CommentsServlet extends HttpServlet {
+    public void init(ServletConfig servletConfig) throws ServletException {
+        super.init(servletConfig);
+    }
+
+    protected void service(HttpServletRequest request,
+                           HttpServletResponse response)
+            throws ServletException, IOException {
+        try {
+            // Getting the comment parameters.
+            String feedId = request.getParameter("id");
+            String feedName = request.getParameter("name");
+            String feedElement = request.getParameter("element");
+            String feedType = request.getParameter("type");
+
+            if (Tools.isEmpty(feedId) || Tools.isEmpty(feedType) ||
+                    Tools.isEmpty(feedName) || Tools.isEmpty(feedElement)) {
+                throw new Exception("Invalid commented item parameters.");
+            }
+
+            // Paring the comment xml information contained in the POST data.
+            DOMParser parser = new DOMParser();
+            parser.parse(new InputSource(request.getInputStream()));
+            Document doc = parser.getDocument();
+
+            Node root = doc.getDocumentElement();
+            if (!"item".equals(root.getNodeName())) {
+                root = Tools.getNamedNode(root, "item");
+                if (root == null) {
+                    throw new Exception("Invalid root xml node name.");
+                }
+            }
+
+            Node titleNode = Tools.getNamedNode(root, "title");
+            Node descriptionNode = Tools.getNamedNode(root, "description");
+
+            if (titleNode == null || descriptionNode == null) {
+                throw new Exception("Insufficient comment information.");
+            }
+
+            String title = Tools.unmarshallText(titleNode);
+            String description = Tools.unmarshallText(descriptionNode);
+
+            // Adding the comment.
+            FeedsTools.getService().addComment(feedId, feedName, feedType,
+                    feedElement, request.getRemoteUser(), title, description);
+
+            response.setStatus(200);
+        } catch (CommentsNotAvialableException e) {
+            // TODO
+        } catch (UnauthorizedToCommentException e) {
+            // TODO
+        } catch (FeedDoesNotExistException e) {
+            // TODO
+        } catch (Exception e) {
+            response.sendError(400, e.getMessage());
+        }
+    }
+}

Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/FeedDoesNotExistException.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/FeedDoesNotExistException.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/FeedDoesNotExistException.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -0,0 +1,21 @@
+package org.jboss.shotoku.feeds.comments;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class FeedDoesNotExistException extends Exception {
+    public FeedDoesNotExistException() {
+    }
+
+    public FeedDoesNotExistException(String message) {
+        super(message);
+    }
+
+    public FeedDoesNotExistException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public FeedDoesNotExistException(Throwable cause) {
+        super(cause);
+    }
+}

Added: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/UnauthorizedToCommentException.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/UnauthorizedToCommentException.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/comments/UnauthorizedToCommentException.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -0,0 +1,21 @@
+package org.jboss.shotoku.feeds.comments;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class UnauthorizedToCommentException extends Exception {
+    public UnauthorizedToCommentException() {
+    }
+
+    public UnauthorizedToCommentException(String message) {
+        super(message);
+    }
+
+    public UnauthorizedToCommentException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public UnauthorizedToCommentException(Throwable cause) {
+        super(cause);
+    }
+}

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/AtomFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -22,13 +22,15 @@
 package org.jboss.shotoku.feeds.data;
 
 import java.io.File;
+import java.util.Map;
 
 import com.sun.syndication.feed.synd.SyndFeed;
 import org.jboss.shotoku.feeds.tools.FeedsConstants;
 
 public class AtomFeed extends RomeBasedFeed {
-    public AtomFeed(String name, String displayName, String type, File file) {
-        super(name, displayName, type, file);
+    public AtomFeed(String name, String displayName, String type, File file,
+                    Map<String, Object> attributes) {
+        super(name, displayName, type, file, attributes);
     }
 
     @Override

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/ConcreteTagFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -4,6 +4,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.OutputStream;
 import java.io.IOException;
+import java.util.List;
 
 /**
  * @author Adam Warski (adamw at aster.pl)
@@ -42,4 +43,20 @@
     public void release() {
         tagFeed.release();
     }
+
+    /*
+     * Comments are not available for concretized feeds.
+     */
+
+    public boolean getCommentsEnabled() {
+        return false;
+    }
+
+    public boolean getCommentsModerated() {
+        return false;
+    }
+
+    public List<String> getGroupsAllowedToModerateComments() {
+        return null;
+    }
 }

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Feed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -4,6 +4,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.OutputStream;
 import java.io.IOException;
+import java.util.List;
 
 /**
  * A base interface for feeds.
@@ -47,4 +48,28 @@
      * be released (like temporary files).
      */
     public void release();
+
+    /**
+     * Checks if comments are enabled for this feed. Should return true only if
+     * this is a Shotoku feed.
+     * @return True iff comments are enabled for this feed.
+     */
+    public boolean getCommentsEnabled();
+
+    /**
+     * Checks if comments need to be approved by a moderator to be visible
+     * publicly.
+     * @return True iff comments need to be approved by a moderator to be
+     * visible publicly.
+     */
+    public boolean getCommentsModerated();
+
+    /**
+     * Gets the groups that can moderate comments of elements of that feed.
+     * Should return a non-empty and non-null list only when this is a
+     * Shotoku feed.
+     * @return A list of group names that are allowed to moderate Shotoku
+     * comments of that feed's elements.
+     */
+    public List<String> getGroupsAllowedToModerateComments();
 }

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/FileBasedFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -35,6 +35,9 @@
 import java.io.OutputStream;
 import java.io.Writer;
 import java.net.URL;
+import java.util.Map;
+import java.util.List;
+import java.util.Arrays;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletRequest;
@@ -45,11 +48,23 @@
     private String displayName;
     private String type;
 
-    public FileBasedFeed(String name, String displayName, String type, File file) {
+    private boolean commentsEnabled;
+    private List<String> groupsAllowedToModerate;
+    private boolean commentsModerated;
+
+    public FileBasedFeed(String name, String displayName, String type,
+                         File file, Map<String, Object> attributes) {
         this.name = name;
         this.displayName = displayName;
         this.type = type;
         this.file = file;
+
+        commentsEnabled = Tools.isTrue(
+                Tools.toString(attributes.get("commentsEnabled")));
+        commentsModerated = Tools.isTrue(
+                Tools.toString(attributes.get("commentsModerated")));
+        groupsAllowedToModerate = Arrays.asList(
+                Tools.toString(attributes.get("moderators")).split("[,]"));
     }
 
     public void generate(URL url) throws IOException {
@@ -136,4 +151,20 @@
     public void release() {
         file.delete();
     }
+
+    /*
+     * Comments.
+     */
+
+    public boolean getCommentsEnabled() {
+        return commentsEnabled;
+    }
+
+    public boolean getCommentsModerated() {
+        return commentsModerated;
+    }
+
+    public List<String> getGroupsAllowedToModerateComments() {
+        return groupsAllowedToModerate;
+    }
 }

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/InformaBasedFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -12,11 +12,11 @@
 import de.nava.informa.impl.basic.ChannelBuilder;
 import de.nava.informa.parsers.FeedParser;
 import de.nava.informa.utils.ItemComparator;
-import org.jboss.shotoku.feeds.data.NormalFeed;
 
 public abstract class InformaBasedFeed extends FileBasedFeed {
-    public InformaBasedFeed(String name, String displayName, String type, File file) {
-        super(name, displayName, type, file);
+    public InformaBasedFeed(String name, String displayName, String type,
+                            File file, Map<String, Object> attributes) {
+        super(name, displayName, type, file, attributes);
     }
 
     protected abstract ChannelExporterIF getExporter() throws IOException;

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RdfFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -23,14 +23,16 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Map;
 
 import de.nava.informa.core.ChannelExporterIF;
 import de.nava.informa.exporters.RSS_1_0_Exporter;
 import org.jboss.shotoku.feeds.tools.FeedsConstants;
 
 public class RdfFeed extends InformaBasedFeed {
-    public RdfFeed(String name, String displayName, String type, File file) {
-        super(name, displayName, type, file);
+    public RdfFeed(String name, String displayName, String type, File file,
+                   Map<String, Object> attributes) {
+        super(name, displayName, type, file, attributes);
     }
 
     protected ChannelExporterIF getExporter() throws IOException {

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/RomeBasedFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -23,11 +23,7 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import com.sun.syndication.feed.synd.SyndEntry;
 import com.sun.syndication.feed.synd.SyndFeed;
@@ -38,8 +34,9 @@
 import com.sun.syndication.io.XmlReader;
 
 public abstract class RomeBasedFeed extends FileBasedFeed {
-    public RomeBasedFeed(String name, String displayName, String type, File file){
-        super(name, displayName, type, file);
+    public RomeBasedFeed(String name, String displayName, String type,
+                         File file, Map<String, Object> attributes){
+        super(name, displayName, type, file, attributes);
     }
 
     protected abstract void setFeedType(SyndFeed feed);

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/Rss2Feed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -22,15 +22,15 @@
 package org.jboss.shotoku.feeds.data;
 
 import java.io.File;
-import java.io.IOException;
+import java.util.Map;
 
 import com.sun.syndication.feed.synd.SyndFeed;
-import org.jboss.shotoku.feeds.data.RomeBasedFeed;
 import org.jboss.shotoku.feeds.tools.FeedsConstants;
 
 public class Rss2Feed extends RomeBasedFeed {
-    public Rss2Feed(String name, String displayName, String type, File file) throws IOException {
-        super(name, displayName, type, file);
+    public Rss2Feed(String name, String displayName, String type,
+                    File file, Map<String, Object> attributes) {
+        super(name, displayName, type, file, attributes);
     }
 
     @Override

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/data/TagFeed.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -218,4 +218,20 @@
     public void release() {
 
     }
+
+    /*
+     * No comments allowed on tag feeds.
+     */
+
+    public boolean getCommentsEnabled() {
+        return false;
+    }
+
+    public boolean getCommentsModerated() {
+        return false;
+    }
+
+    public List<String> getGroupsAllowedToModerateComments() {
+        return null;
+    }
 }

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/service/FeedsServiceImpl.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/service/FeedsServiceImpl.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/service/FeedsServiceImpl.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -6,6 +6,7 @@
 import org.jboss.shotoku.feeds.FeedsService;
 import org.jboss.shotoku.feeds.FeedsDescriptor;
 import org.jboss.shotoku.feeds.FeedsConfigurationWatcher;
+import org.jboss.shotoku.feeds.comments.FeedDoesNotExistException;
 import org.jboss.shotoku.feeds.data.Feed;
 import org.jboss.shotoku.feeds.tools.FeedsConstants;
 import org.jboss.shotoku.feeds.tools.FeedsTools;
@@ -50,6 +51,26 @@
         return fds.get(id).getFeed(name, type);
     }
 
+    public void addComment(String feedId, String feedName, String feedType,
+                           String feedElement, String username,
+                           String title, String content)
+            throws FeedDoesNotExistException {
+        System.out.println("ADD COMMENT:");
+        System.out.println("feedId = " + feedId);
+        System.out.println("feedName = " + feedName);
+        System.out.println("feedType = " + feedType);
+        System.out.println("feedElement = " + feedElement);
+        System.out.println("username = " + username);
+        System.out.println("title = " + title);
+        System.out.println("content = " + content);
+
+        Feed feed = getFeed(feedId, feedName, feedType);
+
+        if (feed == null) {
+            throw new FeedDoesNotExistException();
+        }
+    }
+
     /*
      * Update method.
      */

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -81,7 +81,7 @@
 
         NormalFeed feed = FeedFactory.getNewNormalFeed(feedName,
                 Tools.toString(attributes.get(FeedsConstants.DISP_NAME_ATTR)),
-                feedType);
+                feedType, attributes);
 
         try {
             feed.generate(toAggregate.toArray(new NormalFeed[0]),

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/RemoteFeedTagHandler.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -34,7 +34,8 @@
                 FeedsConstants.DISP_NAME_ATTR));
 
         try {
-            NormalFeed feed = FeedFactory.getNewNormalFeed(feedName, displayName, feedType);
+            NormalFeed feed = FeedFactory.getNewNormalFeed(feedName,
+                    displayName, feedType, getAttributes());
             feed.generate(new URL(address));
             fd.addFeed(feedName, feedType, feed);
         } catch (Exception e) {

Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/ShotokuFeedTagHandler.java	2006-07-25 22:04:32 UTC (rev 5282)
@@ -165,7 +165,8 @@
 
         String feedName = getFeedName();
         String feedType = getFeedType();
-        NormalFeed newFeed = FeedFactory.getNewNormalFeed(feedName, displayName, feedType);
+        NormalFeed newFeed = FeedFactory.getNewNormalFeed(feedName,
+                displayName, feedType, attributes);
         try {
             vc.put("link", generateFeedLink(fd, true, feedName, feedType));
 

Modified: labs/shotoku/trunk/shotoku-feeds/src/web/WEB-INF/web.xml
===================================================================
--- labs/shotoku/trunk/shotoku-feeds/src/web/WEB-INF/web.xml	2006-07-25 21:59:28 UTC (rev 5281)
+++ labs/shotoku/trunk/shotoku-feeds/src/web/WEB-INF/web.xml	2006-07-25 22:04:32 UTC (rev 5282)
@@ -22,6 +22,11 @@
         <servlet-class>org.jboss.shotoku.feeds.FeedsServlet</servlet-class>
     </servlet>
 
+    <servlet>
+        <servlet-name>commentsServlet</servlet-name>
+        <servlet-class>org.jboss.shotoku.feeds.comments.CommentsServlet</servlet-class>
+    </servlet>
+
     <filter-mapping>
         <filter-name>filesFromRepoFilter</filter-name>
         <url-pattern>/repo-access/*</url-pattern>
@@ -40,4 +45,9 @@
         <servlet-name>feedsServlet</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>commentsServlet</servlet-name>
+        <url-pattern>/comments/*</url-pattern>
+    </servlet-mapping>
 </web-app>
\ No newline at end of file




More information about the jboss-svn-commits mailing list