[jboss-cvs] JBossBlog SVN: r297 - in trunk: docs and 17 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Apr 30 08:50:33 EDT 2008


Author: adamw
Date: 2008-04-30 08:50:33 -0400 (Wed, 30 Apr 2008)
New Revision: 297

Added:
   trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java
   trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java
Modified:
   trunk/blog.iml
   trunk/docs/tutorial.html
   trunk/src/action/org/jboss/blog/servlet/FeedsServlet.java
   trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
   trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
   trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java
   trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java
   trunk/src/action/org/jboss/blog/session/xml/XmlService.java
   trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java
   trunk/src/model/org/jboss/blog/model/feed/Feed.java
   trunk/src/services/org/jboss/blog/service/FeedsService.java
   trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java
   trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java
   trunk/src/tools/org/jboss/blog/tools/StringTools.java
   trunk/view/manage/feed_mod.xhtml
Log:


Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/blog.iml	2008-04-30 12:50:33 UTC (rev 297)
@@ -540,15 +540,6 @@
         <SOURCES />
       </library>
     </orderEntry>
-    <orderEntry type="module-library">
-      <library>
-        <CLASSES>
-          <root url="jar://$MODULE_DIR$/lib/log4j.jar!/" />
-        </CLASSES>
-        <JAVADOC />
-        <SOURCES />
-      </library>
-    </orderEntry>
     <orderEntryProperties />
   </component>
 </module>

Modified: trunk/docs/tutorial.html
===================================================================
--- trunk/docs/tutorial.html	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/docs/tutorial.html	2008-04-30 12:50:33 UTC (rev 297)
@@ -4,7 +4,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <title>JBoss.ORG Feeds tutorial</title>
-    <link rel="stylesheet" href="http://labs.jboss.com/files/portletcontainer/docs/2.0.0.CR1/css/jbossorg.css" type="text/css"/>
+    <link rel="stylesheet" href="http://www.jboss.org/files/portletcontainer/docs/2.0.0.CR1/css/jbossorg.css" type="text/css"/>
 </head>
 <body>
 <p id="title">

Modified: trunk/src/action/org/jboss/blog/servlet/FeedsServlet.java
===================================================================
--- trunk/src/action/org/jboss/blog/servlet/FeedsServlet.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/servlet/FeedsServlet.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -41,6 +41,7 @@
             throws ServletException, IOException {
         String feedType = request.getParameter("type");
         String feedName = request.getParameter("name");
+        String feedKey = request.getParameter("key");
 
         UserTransaction tx = null;
         boolean txStarted = false;
@@ -56,7 +57,7 @@
             ContentResponse contentResponse = new ServletResponseContentResponse(response);
 
             XmlService xmlService = (XmlService) Component.getInstance("xmlService");
-            xmlService.writeXml(feedType, feedName, contentResponse);
+            xmlService.writeXml(feedType, feedName, feedKey, contentResponse);
             response.getWriter().flush();
 
             if (txStarted) {

Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -4,6 +4,7 @@
 import org.jboss.blog.model.feed.RestrictedFeed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.service.FeedNotFoundException;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.PostNotFoundException;
@@ -77,30 +78,32 @@
     }
 
     public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to) {
-        boolean restricted = false;
+        RestrictedMode restricted = RestrictedMode.IGNORE;
 
         // We want to get restricted feeds, if we are logged in, the current feed is restricted and
         // we have sufficient permissions to view the feed.
-        if (identity.isLoggedIn() && feed.getRestricted() && FeedSecurityTools.canViewFeed(feed, true)) {
-            restricted = true;
+        if (identity.isLoggedIn() && feed.getRestricted() && FeedSecurityTools.canViewFeed(feed,
+                RestrictedMode.CHECK_AND_INCLUDE)) {
+            restricted = RestrictedMode.CHECK_AND_INCLUDE;
         }
 
         return getPosts(feed, from, to, restricted);
     }
 
-    public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, boolean restricted) {
+    public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, RestrictedMode restricted) {
         boolean isFeedRestricted = feed.getRestricted();
 
         // If the feed isn't restricted, then we set the flag not to include restricted posts.
         if (!isFeedRestricted) {
-            restricted = false;
+            restricted = RestrictedMode.IGNORE;
         }
 
         // We return an empty list if:
         // - we don't want restricted posts, but this feed is restricted
         // - we want restricted posts, this feed is restricted, but we can't view it.
-        if ((!restricted && isFeedRestricted) ||
-                (restricted && isFeedRestricted && !FeedSecurityTools.canViewFeed(feed, restricted))) {
+        if ((restricted == RestrictedMode.IGNORE && isFeedRestricted) ||
+                (restricted != RestrictedMode.IGNORE && isFeedRestricted &&
+                        !FeedSecurityTools.canViewFeed(feed, restricted))) {
             log.debug("Reading restricted feed '#0', returning an empty list.", feed.getName());
             return new ArrayList<RestrictedPost>();
         }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -4,6 +4,7 @@
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.session.feed.posts.AggregatedFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.seam.Component;
 
 import java.util.List;
@@ -23,7 +24,7 @@
         this.aggregatedFeed = aggregatedFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
         return ((AggregatedFeedPosts) Component.getInstance("aggregatedFeedPosts")).getPosts(
                 aggregatedFeed, from, to, restricted);
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.session.update.UpdateException;
+import org.jboss.blog.model.security.RestrictedMode;
 
 import java.util.List;
 
@@ -9,7 +10,7 @@
  * @author Adam Warski (adam at warski dot org)
  */
 public interface FeedDao {
-    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted);
+    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted);
 
     public void update() throws UpdateException;
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/HighlightsFeedDao.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -6,6 +6,7 @@
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.update.UpdateException;
 import org.jboss.blog.session.security.tools.FeedSecurityTools;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.tools.GeneralTools;
 
 import java.util.List;
@@ -26,7 +27,7 @@
         this.highlightsFeed = highlightsFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
         List<Post> posts = GeneralTools.subList(highlightsFeed.getSelectedPosts(), from, to);
         List<Post> ret = new ArrayList<Post>();
 

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.model.feed.RemoteFeed;
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.session.feed.posts.DatabaseFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.feed.update.RemoteFeedUpdate;
@@ -9,7 +10,6 @@
 import org.jboss.seam.Component;
 
 import java.util.List;
-import java.util.ArrayList;
 
 /**
  * @author Adam Warski (adam at warski dot org)
@@ -26,7 +26,7 @@
         this.remoteFeed = remoteFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
         return ((DatabaseFeedPosts) Component.getInstance("databaseFeedPosts")).getPosts(
                 remoteFeed, from, to);
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -9,6 +9,7 @@
 import org.jboss.blog.session.feed.lock.FeedsLocksBean;
 import org.jboss.blog.session.update.UpdateHandlerAsync;
 import org.jboss.blog.session.xml.velocity.TemplateServiceBean;
+import org.jboss.blog.session.security.RestrictedKeyGenerator;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.core.Events;
 import org.jboss.seam.annotations.*;
@@ -52,6 +53,9 @@
     @In
     private Events events;
 
+    @In
+    private RestrictedKeyGenerator restrictedKeyGenerator;
+
     public void initNewFeed(Feed feed) {
         this.feed = feed;
         feed.setMaxPostsInFeed(10);
@@ -60,6 +64,7 @@
         feed.setAccepted(true);
         feed.setPosts(new ArrayList<Post>());
         feed.setPostAuthorType(PostAuthorType.BLOG_AUTHOR_IF_MISSING);
+        feed.setRestrictedKey(restrictedKeyGenerator.generate());
 
         feed.getTemplates().put(XmlType.ATOM, templateService.templatesOfType(XmlType.ATOM).get(0));
     }
@@ -70,12 +75,20 @@
 
     public void setFeed(Feed feed) {
         this.feed = feed;
+
+        if (feed.getRestrictedKey() == null) {
+            reGenerateFeedKey();
+        }
     }
 
     public XmlType[] getTemplateTypes() {
         return new XmlType[] { XmlType.ATOM };
     }
 
+    public void reGenerateFeedKey() {
+        feed.setRestrictedKey(restrictedKeyGenerator.generate());
+    }
+
     @Observer("org.jboss.blog.feed.accept")
     public void acceptFeed() {
         feed.setAccepted(true);

Modified: trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -4,6 +4,7 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.model.Group;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.GroupsService;
 import org.jboss.blog.tools.GeneralTools;
@@ -33,7 +34,7 @@
 
     @SuppressWarnings("unchecked")
     public List<? extends RestrictedPost> getPosts(AggregatedFeed aggregatedFeed, int from, int to,
-                                                   boolean restricted) {
+                                                   RestrictedMode restricted) {
         if (aggregatedFeedStack.contains(aggregatedFeed)) {
             return null;
         }
@@ -50,7 +51,7 @@
                 feedsAndFilters.put(feedInGroup, groupFilter);
             }
 
-            if (restricted) {
+            if (restricted != RestrictedMode.IGNORE) {
                 for (Feed feedInGroup : groupsService.restrictedFeeds(group)) {
                     feedsAndFilters.put(feedInGroup, groupFilter);
                 }

Added: trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/security/RestrictedKeyGenerator.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -0,0 +1,49 @@
+package org.jboss.blog.session.security;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.ScopeType;
+
+import javax.persistence.EntityManager;
+import java.util.Random;
+import java.util.List;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+ at Name("restrictedKeyGenerator")
+ at Scope(ScopeType.STATELESS)
+ at AutoCreate
+public class RestrictedKeyGenerator {
+    @In
+    private EntityManager entityManager;
+
+    private boolean keyValid(String key) {
+        if (key.length() < 8) {
+            return false;
+        }
+        
+        List results = entityManager.createQuery("select f from Feed f where f.restrictedKey = ?1")
+                .setParameter(1, key).getResultList();
+
+        if (results.size() == 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public String generate() {
+        Random random = new Random();
+
+        String key;
+        do {
+            key = Long.toString(Math.abs(random.nextLong()), 36);
+        } while (!keyValid(key));
+
+        return key;
+    }
+}
+

Modified: trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/security/tools/FeedSecurityTools.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -1,6 +1,7 @@
 package org.jboss.blog.session.security.tools;
 
 import org.jboss.blog.model.feed.RestrictedFeed;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.seam.security.Identity;
 import org.jboss.seam.Component;
 
@@ -8,15 +9,19 @@
  * @author Adam Warski (adam at warski dot org)
  */
 public class FeedSecurityTools {
-    public static boolean canViewFeed(RestrictedFeed feed, boolean restricted) {
+    public static boolean canViewFeed(RestrictedFeed feed, RestrictedMode restricted) {
         if (!feed.getRestricted()) {
             return true;
         }
 
-        if (!restricted) {
+        if (restricted == RestrictedMode.IGNORE) {
             return false;
         }
 
+        if (restricted == RestrictedMode.INCLUDE) {
+            return true;
+        }
+
         Identity identity = (Identity) Component.getInstance(Identity.class);
         return identity.hasPermission("feed", "view", feed);
     }

Modified: trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -36,7 +36,14 @@
     }
 
     public String generateFeedLink(Feed feed, XmlType type) {
-        return serverAddress + "/" + contextName + "/xml/" + feed.getName() + "?type=" + type.toString().toLowerCase();
+        String base = serverAddress + "/" + contextName + "/xml/" + feed.getName()
+                + "?type=" + type.toString().toLowerCase();
+        
+        if (feed.getRestricted()) {
+            return base + "&key=" + feed.getRestrictedKey();
+        } else {
+            return base;
+        }
     }
 
     public String generateFeedPageLink(Feed feed) {

Modified: trunk/src/action/org/jboss/blog/session/xml/XmlService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/xml/XmlService.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/xml/XmlService.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -6,6 +6,6 @@
  * @author Adam Warski (adam at warski dot org)
  */
 public interface XmlService {
-    void writeXml(String feedType, String feedName, ContentResponse response)
+    void writeXml(String feedType, String feedName, String feedKey, ContentResponse response)
             throws Exception;
 }

Modified: trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -7,6 +7,7 @@
 import org.jboss.blog.model.XmlType;
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.service.FeedNotFoundException;
 import org.jboss.blog.session.xml.XmlService;
 import org.jboss.blog.session.xml.content.ContentResponse;
 import org.jboss.blog.session.xml.content.InMemoryContentResponse;
@@ -15,6 +16,7 @@
 import org.jboss.blog.session.xml.velocity.tools.Rss2XmlTools;
 import org.jboss.blog.session.cache.CacheManager;
 import org.jboss.blog.session.tools.PostToToolsBean;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.annotations.*;
 import org.jboss.seam.log.Log;
@@ -67,7 +69,7 @@
         }
     }
 
-    public void writeXml(String feedType, String feedName, ContentResponse response)
+    public void writeXml(String feedType, String feedName, String feedKey, ContentResponse response)
             throws Exception {
         InMemoryContentResponse inCache = cacheManager.getFeedXml(feedName, feedType);
 
@@ -85,11 +87,17 @@
 
             Feed feed = feedsService.getFeed(feedName);
 
+            boolean isRestricted = feed.getRestricted();
+            if (isRestricted && !GeneralTools.objectsEqual(feed.getRestrictedKey(), feedKey)) {
+                throw new FeedNotFoundException();
+            }
+
             if (feed.getTemplates().get(xmlType) == null) {
                 throw new InvalidTemplateTypeException();
             }
 
-            List<? extends RestrictedPost> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed());
+            List<? extends RestrictedPost> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed(),
+                    RestrictedMode.INCLUDE);
 
             inCache.setContentType(xmlType.contentType());
             inCache.setCharacterEncoding("utf-8");
@@ -104,7 +112,9 @@
             Template template = engine.getTemplate(feed.getTemplates().get(xmlType).getName());
             template.merge(context, inCache.getWriter());
 
-            cacheManager.putFeedXml(feedName, feedType, inCache);
+            if (!isRestricted) {
+                cacheManager.putFeedXml(feedName, feedType, inCache);
+            }
         }
 
         response.setCharacterEncoding(inCache.getCharacterEncoding());

Modified: trunk/src/model/org/jboss/blog/model/feed/Feed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/Feed.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/model/org/jboss/blog/model/feed/Feed.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -84,6 +84,9 @@
     @Column
     private Boolean restricted;
 
+    @Column
+    private String restrictedKey;
+
     public Integer getId() {
         return id;
     }
@@ -220,6 +223,14 @@
         this.restricted = restricted;
     }
 
+    public String getRestrictedKey() {
+        return restrictedKey;
+    }
+
+    public void setRestrictedKey(String restrictedKey) {
+        this.restrictedKey = restrictedKey;
+    }
+
     public boolean equals(Object o) {
         if (this == o) return true;
         if (!(o instanceof Feed)) return false;

Added: trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/security/RestrictedMode.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -0,0 +1,10 @@
+package org.jboss.blog.model.security;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public enum RestrictedMode {
+    CHECK_AND_INCLUDE,
+    INCLUDE,
+    IGNORE
+}

Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -4,6 +4,7 @@
 import org.jboss.blog.model.feed.RestrictedFeed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.security.RestrictedMode;
 
 import java.util.List;
 
@@ -22,10 +23,10 @@
      * @param feed Feed of which posts to get.
      * @param from Starting post.
      * @param to Ending post.
-     * @param restricted Should restricted posts be included?
+     * @param restricted How restricted posts should be handled.
      * @return A list of posts of the given feed, of length max. to-from.
      */
-    List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, boolean restricted);
+    List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, RestrictedMode restricted);
 
     List<? extends RestrictedPost> getPosts(int from, int to);
 }

Modified: trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java
===================================================================
--- trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/shotoku/org/jboss/blog/session/feed/dao/ShotokuFeedDao.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -1,6 +1,7 @@
 package org.jboss.blog.session.feed.dao;
 
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.model.shotoku.ShotokuFeed;
 import org.jboss.blog.session.feed.posts.DatabaseFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
@@ -9,7 +10,6 @@
 import org.jboss.seam.Component;
 
 import java.util.List;
-import java.util.ArrayList;
 
 /**
  * @author Adam Warski (adam at warski dot org)
@@ -26,7 +26,7 @@
         this.shotokuFeed = shotokuFeed;
     }
 
-    public List<? extends RestrictedPost> getPosts(int from, int to, boolean restricted) {
+    public List<? extends RestrictedPost> getPosts(int from, int to, RestrictedMode restricted) {
         return ((DatabaseFeedPosts) Component.getInstance("databaseFeedPosts")).getPosts(
                 shotokuFeed, from, to);
     }

Modified: trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -8,6 +8,7 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.security.RestrictedMode;
 import org.jboss.blog.model.post.PostFilter;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.tools.TestTools;
@@ -102,7 +103,7 @@
 
         // Test
         replay(mockFeedsService);
-        List<? extends RestrictedPost> posts = aggFeedPosts.getPosts(aggFeed1, 0, 2, false);
+        List<? extends RestrictedPost> posts = aggFeedPosts.getPosts(aggFeed1, 0, 2, RestrictedMode.IGNORE);
 
         // Check
         verify(mockFeedsService);
@@ -123,7 +124,7 @@
 
         // Test
         replay(mockFeedsService);
-        List<? extends RestrictedPost> posts = aggFeedPosts.getPosts(aggFeed1, 0, 10, false);
+        List<? extends RestrictedPost> posts = aggFeedPosts.getPosts(aggFeed1, 0, 10, RestrictedMode.IGNORE);
 
         // Check
         verify(mockFeedsService);
@@ -147,7 +148,7 @@
 
         // Test
         replay(mockFeedsService);
-        List<? extends RestrictedPost> posts = aggFeedPosts.getPosts(aggFeed2, 0, 2, false);
+        List<? extends RestrictedPost> posts = aggFeedPosts.getPosts(aggFeed2, 0, 2, RestrictedMode.IGNORE);
 
         // Check
         verify(mockFeedsService);

Modified: trunk/src/tools/org/jboss/blog/tools/StringTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/StringTools.java	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/src/tools/org/jboss/blog/tools/StringTools.java	2008-04-30 12:50:33 UTC (rev 297)
@@ -6,7 +6,7 @@
 import org.xml.sax.InputSource;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXParseException;
-import org.apache.log4j.Logger;
+import org.jboss.seam.log.Logging;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
@@ -18,8 +18,6 @@
  * @author Adam Warski (adam at warski dot org)
  */
 public class StringTools {
-    private final static Logger log = Logger.getLogger(StringTools.class);
-
     public static boolean isEmpty(String s) {
         return s == null || "".equals(s);
     }
@@ -84,7 +82,7 @@
         try {
             builder = factory.newDocumentBuilder();
         } catch (ParserConfigurationException e) {
-            log.error(e);
+            Logging.getLog(StringTools.class).error(e);
             return false;
         }
 
@@ -100,7 +98,7 @@
         } catch (SAXException e) {
             return false;
         } catch (IOException e) {
-            log.error(e);
+            Logging.getLog(StringTools.class).error(e);
             return false;
         }
     }

Modified: trunk/view/manage/feed_mod.xhtml
===================================================================
--- trunk/view/manage/feed_mod.xhtml	2008-04-29 11:27:13 UTC (rev 296)
+++ trunk/view/manage/feed_mod.xhtml	2008-04-30 12:50:33 UTC (rev 297)
@@ -146,9 +146,28 @@
     This is a restricted feed, viewable only by authorized users:
 </h:outputLabel>
 <h:panelGroup rendered="#{advanced}">
-    <h:selectBooleanCheckbox id="restricted" value="#{feedMod.feed.restricted}" />
+    <h:selectBooleanCheckbox id="restricted" value="#{feedMod.feed.restricted}">
+        <a:support event="onclick" reRender="restrictedKeyLabel,restrictedKeyForm" ajaxSingle="true" />
+    </h:selectBooleanCheckbox>
 </h:panelGroup>
 
+<h:panelGroup rendered="#{advanced}" id="restrictedKeyLabel">
+    <s:div rendered="#{feedMod.feed.restricted}">
+        Key to view the atom feed:
+    </s:div>
+</h:panelGroup>
+<h:panelGroup rendered="#{advanced}" id="restrictedKeyForm">
+    <s:div rendered="#{feedMod.feed.restricted}">
+        <h:inputText id="restrictedKey" value="#{feedMod.feed.restrictedKey}" size="26" disabled="true" />
+
+        <div>
+            <a:commandLink value="Generate new key" action="#{feedMod.reGenerateFeedKey}" reRender="restrictedKey"
+                           ajaxSingle="true" bypassUpdates="true"/>
+            <br />
+        </div>
+    </s:div>
+</h:panelGroup>
+
 <!--<h:outputLabel><span class="required">*</span> Xml templates:</h:outputLabel>
 <h:panelGroup>
     <h:dataTable var="templateType" value="#{feedMod.templateTypes}">




More information about the jboss-cvs-commits mailing list