[jboss-cvs] JBossBlog SVN: r294 - in trunk: lib and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Apr 28 08:59:58 EDT 2008


Author: adamw
Date: 2008-04-28 08:59:58 -0400 (Mon, 28 Apr 2008)
New Revision: 294

Added:
   trunk/lib/let-tag.jar
Modified:
   trunk/blog.iml
   trunk/build.xml
   trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
   trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java
   trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
   trunk/src/services/org/jboss/blog/service/GroupsService.java
   trunk/view/home.xhtml
   trunk/view/manage/index.xhtml
Log:


Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/blog.iml	2008-04-28 12:59:58 UTC (rev 294)
@@ -531,6 +531,15 @@
         <SOURCES />
       </library>
     </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/lib/let-tag.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
     <orderEntryProperties />
   </component>
 </module>

Modified: trunk/build.xml
===================================================================
--- trunk/build.xml	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/build.xml	2008-04-28 12:59:58 UTC (rev 294)
@@ -270,6 +270,8 @@
                 <include name="lib/urlrewritefilter.jar" />
                 <include name="lib/jboss-seam-*.jar" />
                 <exclude name="lib/jboss-seam-gen.jar" />
+
+                <include name="lib/let-tag.jar" />
             </fileset>
         </copy>
         <copy todir="${ear.dir}/META-INF">

Added: trunk/lib/let-tag.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/let-tag.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-04-28 12:59:58 UTC (rev 294)
@@ -91,11 +91,17 @@
     public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to, boolean 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;
+        }
+
         // 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))) {
+            log.debug("Reading restricted feed '#0', returning an empty list.", feed.getName());
             return new ArrayList<RestrictedPost>();
         }
 
@@ -111,7 +117,8 @@
         List<? extends RestrictedPost> posts;
 
         try {
-            log.debug("Reading feed '#0' posts from the DB, from #1 to #2.", feed.getName(), from, to);
+            log.debug("Reading feed '#0' posts from the DB, from #1 to #2, restricted = #3.", feed.getName(), from, to,
+                    restricted);
             posts = feedTypes.getFeedDao(feed).getPosts(from, to, restricted);
         } catch (InvalidFeedTypeException e) {
             log.error(e);

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-26 10:11:18 UTC (rev 293)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-04-28 12:59:58 UTC (rev 294)
@@ -4,13 +4,11 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.model.Group;
-import org.jboss.blog.model.Post;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.GroupsService;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.blog.tools.PostFilterTools;
 import org.jboss.blog.model.post.PostFilter;
-import org.jboss.blog.session.security.tools.FeedSecurityTools;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
@@ -41,7 +39,7 @@
         }
 
         // Adding this feed to the stack, so it's posts won't be read again.
-        aggregatedFeedStack.push(aggregatedFeed);        
+        aggregatedFeedStack.push(aggregatedFeed);
 
         Map<Feed, PostFilter> feedsAndFilters = new HashMap<Feed, PostFilter>(aggregatedFeed.getFeeds());
 
@@ -51,9 +49,15 @@
             for (Feed feedInGroup : groupsService.acceptedFeeds(group)) {
                 feedsAndFilters.put(feedInGroup, groupFilter);
             }
+
+            if (restricted) {
+                for (Feed feedInGroup : groupsService.restrictedFeeds(group)) {
+                    feedsAndFilters.put(feedInGroup, groupFilter);
+                }
+            }
         }
 
-        PostFilter globalFilter = aggregatedFeed.getGlobalFilter(); 
+        PostFilter globalFilter = aggregatedFeed.getGlobalFilter();
 
         // Initial list of aggregated feeds.
         Set<Feed> availableFeeds = feedsAndFilters.keySet();

Modified: trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/src/action/org/jboss/blog/session/security/FeedsIdentity.java	2008-04-28 12:59:58 UTC (rev 294)
@@ -26,6 +26,7 @@
 @Startup
 public class FeedsIdentity extends RuleBasedIdentity {
     private SecurityUser securityUser;
+    private boolean pretendedLogin;
 
     public SecurityUser getSecurityUser() {
         return securityUser;
@@ -112,4 +113,20 @@
 
         return super.hasPermission(s, s1, newObjects);
     }
+
+    public boolean isLoggedIn() {
+        if (pretendedLogin) {
+            return true;
+        } else {
+            return super.isLoggedIn();
+        }
+    }
+
+    public void loginAsAdmin() {
+        preAuthenticate();
+        pretendedLogin = true;
+        postAuthenticate();
+
+        addFeedsRole(FeedsSecurityRole.ADMIN);
+    }
 }

Modified: trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-04-28 12:59:58 UTC (rev 294)
@@ -5,6 +5,7 @@
 import org.jboss.blog.model.Group;
 import org.jboss.blog.service.GroupsService;
 import org.jboss.blog.session.feed.type.FeedTypes;
+import org.jboss.blog.session.security.FeedsIdentity;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
@@ -29,20 +30,30 @@
     @In
     private UpdateManager updateManager;
 
+    @In(create = true)
+    private FeedsIdentity identity;
+
     public void update() {
+        identity.loginAsAdmin();
         for (Group group : groupsService.getAllGroups()) {
             for (Feed feed : groupsService.acceptedFeeds(group)) {
                 update(feed);
             }
+
+            for (Feed feed : groupsService.restrictedFeeds(group)) {
+                update(feed);
+            }
         }
     }
 
     public void update(RestrictedFeed feed) {
+        identity.loginAsAdmin();
         try {
             feedTypes.getFeedDao(feed).update();
         } catch (UpdateException e) {
             updateManager.addFeedUpdateException(feed.getName(), e);
         } catch (Exception e) {
+            //noinspection ThrowableInstanceNeverThrown
             updateManager.addFeedUpdateException(feed.getName(), new UpdateException(e));
         }
     }

Modified: trunk/src/services/org/jboss/blog/service/GroupsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/GroupsService.java	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/src/services/org/jboss/blog/service/GroupsService.java	2008-04-28 12:59:58 UTC (rev 294)
@@ -14,4 +14,6 @@
     List<Feed> acceptedFeeds(Group group);
 
     List<Feed> unacceptedFeeds(Group group);
+
+    List<Feed> restrictedFeeds(Group group);
 }

Modified: trunk/view/home.xhtml
===================================================================
--- trunk/view/home.xhtml	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/view/home.xhtml	2008-04-28 12:59:58 UTC (rev 294)
@@ -6,6 +6,7 @@
                 xmlns:f="http://java.sun.com/jsf/core"
                 xmlns:h="http://java.sun.com/jsf/html"
                 xmlns:rich="http://richfaces.org/rich"
+                xmlns:mamut="http://mamut.net.pl/jsf"
                 template="layout/template.xhtml">
     <ui:define name="header">
         JBoss.ORG Feeds home
@@ -35,35 +36,15 @@
 
         <div id="columnleftBLOG">
             <ui:repeat var="group" value="#{groupsService.allGroups}">
-                <s:fragment rendered="#{groupsService.acceptedFeeds(group).size() > 0}">
-                    <h4>#{group.displayName}</h4>
-                    <table cellspacing="5" class="laundrytable" width="75%">
-                        <tr>
-                            <th width="200px">Feed Author</th>
-                            <th width="480px">Feed Title</th>
-                        </tr>
-                        <ui:repeat var="feed" value="#{groupsService.acceptedFeeds(group)}">
-                            <tr>
-                                <td>#{feed.author}</td>
-                                <td>
-                                    <s:link view="/view/feed.xhtml" value="#{feed.title}" propagation="none">
-                                        <f:param name="name" value="#{feed.name}"/>
-                                    </s:link>
-                                </td>
-                            </tr>
-                        </ui:repeat>
-                    </table>
-                </s:fragment>
-
-                <s:fragment rendered="#{identity.loggedIn}">
-                    <s:fragment rendered="#{feedsSecurity.filterViewableFeeds(groupsService.restrictedFeeds(group)).size() > 0}">
-                        <h4>#{group.displayName} (restricted)</h4>
+                <mamut:let var="acceptedFeeds" value="#{groupsService.acceptedFeeds(group)}">
+                    <s:fragment rendered="#{acceptedFeeds.size() > 0}">
+                        <h4>#{group.displayName}</h4>
                         <table cellspacing="5" class="laundrytable" width="75%">
                             <tr>
                                 <th width="200px">Feed Author</th>
                                 <th width="480px">Feed Title</th>
                             </tr>
-                            <ui:repeat var="feed" value="#{feedsSecurity.filterViewableFeeds(groupsService.restrictedFeeds(group))}">
+                            <ui:repeat var="feed" value="#{acceptedFeeds}">
                                 <tr>
                                     <td>#{feed.author}</td>
                                     <td>
@@ -75,6 +56,31 @@
                             </ui:repeat>
                         </table>
                     </s:fragment>
+                </mamut:let>
+
+                <s:fragment rendered="#{identity.loggedIn}">
+                    <mamut:let var="restrictedFeeds"
+                               value="#{feedsSecurity.filterViewableFeeds(groupsService.restrictedFeeds(group))}">
+                        <s:fragment rendered="#{restrictedFeeds.size() > 0}">
+                            <h4>#{group.displayName} (restricted)</h4>
+                            <table cellspacing="5" class="laundrytable" width="75%">
+                                <tr>
+                                    <th width="200px">Feed Author</th>
+                                    <th width="480px">Feed Title</th>
+                                </tr>
+                                <ui:repeat var="feed" value="#{restrictedFeeds}">
+                                    <tr>
+                                        <td>#{feed.author}</td>
+                                        <td>
+                                            <s:link view="/view/feed.xhtml" value="#{feed.title}" propagation="none">
+                                                <f:param name="name" value="#{feed.name}"/>
+                                            </s:link>
+                                        </td>
+                                    </tr>
+                                </ui:repeat>
+                            </table>
+                        </s:fragment>
+                    </mamut:let>
                 </s:fragment>
             </ui:repeat>
         </div>

Modified: trunk/view/manage/index.xhtml
===================================================================
--- trunk/view/manage/index.xhtml	2008-04-26 10:11:18 UTC (rev 293)
+++ trunk/view/manage/index.xhtml	2008-04-28 12:59:58 UTC (rev 294)
@@ -7,6 +7,7 @@
                 xmlns:h="http://java.sun.com/jsf/html"
                 xmlns:rich="http://richfaces.org/rich"
                 xmlns:a="http://richfaces.org/a4j"
+                xmlns:mamut="http://mamut.net.pl/jsf"
                 template="../layout/template.xhtml">
 <ui:define name="header">
     Manage feeds
@@ -86,73 +87,83 @@
     </tr>
 
     <ui:repeat var="group" value="#{groupsService.allGroups}">
-        <s:fragment rendered="#{groupsService.acceptedFeeds(group).size() > 0 and
-                    identity.hasPermission('management_group', 'view', group, groupsService.acceptedFeeds(group))}">
-            <tr>
-                <td colspan="7" class="categoryRow">#{group.displayName}</td>
-            </tr>
+        <mamut:let var="acceptedFeeds" value="#{groupsService.acceptedFeeds(group)}">
+            <s:fragment rendered="#{acceptedFeeds.size() > 0 and
+                    identity.hasPermission('management_group', 'view', group, acceptedFeeds)}">
+                <tr>
+                    <td colspan="7" class="categoryRow">#{group.displayName}</td>
+                </tr>
 
-            <a:repeat var="feed" value="#{groupsService.acceptedFeeds(group)}" rowKeyVar="rowNumber">
-                <s:fragment rendered="#{identity.hasPermission('feed', 'edit', feed, group) ||
+                <a:repeat var="feed" value="#{acceptedFeeds}" rowKeyVar="rowNumber">
+                    <s:fragment rendered="#{identity.hasPermission('feed', 'edit', feed, group) ||
                         identity.hasPermission('feed', 'delete', feed, group)}">
-                    <tr class="#{(rowNumber%2 == 0) ? 'evenRow' : 'oddRow'}">
-                        <td class="rowlinefirst" style="font-weight:bold;">#{feed.title}</td>
-                        <td class="rowline">#{feed.name}</td>
-                        <td class="rowline">#{feedTypes.getFeedType(feed).name()}</td>
-                        <td class="rowline">
-                            <s:link view="/manage/feed_edit.xhtml" value="Edit common"
-                                    rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
-                                <f:param name="name" value="#{feed.name}" />
-                            </s:link>
-                        </td>
-                        <td class="rowline">
-                            <s:link view="#{feedTypes.getFeedType(feed).editPage()}" value="Edit specific"
-                                    rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
-                                <f:param name="name" value="#{feed.name}" />
-                            </s:link>
-                        </td>
-                        <td class="rowline">
-                            <s:link view="/manage/feed_delete.xhtml" action="#{feedMod.delete}" value="Delete"
-                                    onclick="if (!confirm('Are you sure you want to delete this feed?')) return false"
-                                    rendered="#{identity.hasPermission('feed', 'delete', feed, group)}">
-                                <f:param name="name" value="#{feed.name}" />
-                            </s:link>
-                        </td>
-                    </tr>
-                </s:fragment>
-            </a:repeat>
+                        <tr class="#{(rowNumber%2 == 0) ? 'evenRow' : 'oddRow'}">
+                            <td class="rowlinefirst" style="font-weight:bold;">#{feed.title}</td>
+                            <td class="rowline">#{feed.name}</td>
+                            <td class="rowline">#{feedTypes.getFeedType(feed).name()}</td>
+                            <td class="rowline">
+                                <s:link view="/manage/feed_edit.xhtml" value="Edit common"
+                                        rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
+                                    <f:param name="name" value="#{feed.name}" />
+                                </s:link>
+                            </td>
+                            <td class="rowline">
+                                <s:link view="#{feedTypes.getFeedType(feed).editPage()}" value="Edit specific"
+                                        rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
+                                    <f:param name="name" value="#{feed.name}" />
+                                </s:link>
+                            </td>
+                            <td class="rowline">
+                                <s:link view="/manage/feed_delete.xhtml" action="#{feedMod.delete}" value="Delete"
+                                        onclick="if (!confirm('Are you sure you want to delete this feed?')) return false"
+                                        rendered="#{identity.hasPermission('feed', 'delete', feed, group)}">
+                                    <f:param name="name" value="#{feed.name}" />
+                                </s:link>
+                            </td>
+                        </tr>
+                    </s:fragment>
+                </a:repeat>
+            </s:fragment>
+        </mamut:let>
+        <mamut:let var="restrictedFeeds" value="#{feedsSecurity.filterViewableFeeds(groupsService.restrictedFeeds(group))}">            
+            <s:fragment rendered="#{restrictedFeeds.size() > 0 and
+                    identity.hasPermission('management_group', 'view', group, restrictedFeeds)}">
+                <tr>
+                    <td colspan="7" class="categoryRow">#{group.displayName} (restricted)</td>
+                </tr>
 
-            <a:repeat var="feed" value="#{groupsService.restrictedFeeds(group)}">
-                <s:fragment rendered="#{(identity.hasPermission('feed', 'edit', feed, group) ||
+                <a:repeat var="feed" value="#{restrictedFeeds}">
+                    <s:fragment rendered="#{(identity.hasPermission('feed', 'edit', feed, group) ||
                         identity.hasPermission('feed', 'delete', feed, group)) and
                         identity.hasPermission('feed', 'view', feed)}">
-                    <tr class="evenRow">
-                        <td class="rowlinefirst" style="font-weight:bold;">#{feed.title} (restricted)</td>
-                        <td class="rowline">#{feed.name}</td>
-                        <td class="rowline">#{feedTypes.getFeedType(feed).name()}</td>
-                        <td class="rowline">
-                            <s:link view="/manage/feed_edit.xhtml" value="Edit common"
-                                    rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
-                                <f:param name="name" value="#{feed.name}" />
-                            </s:link>
-                        </td>
-                        <td class="rowline">
-                            <s:link view="#{feedTypes.getFeedType(feed).editPage()}" value="Edit specific"
-                                    rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
-                                <f:param name="name" value="#{feed.name}" />
-                            </s:link>
-                        </td>
-                        <td class="rowline">
-                            <s:link view="/manage/feed_delete.xhtml" action="#{feedMod.delete}" value="Delete"
-                                    onclick="if (!confirm('Are you sure you want to delete this feed?')) return false"
-                                    rendered="#{identity.hasPermission('feed', 'delete', feed, group)}">
-                                <f:param name="name" value="#{feed.name}" />
-                            </s:link>
-                        </td>
-                    </tr>
-                </s:fragment>
-            </a:repeat>
-        </s:fragment>
+                        <tr class="evenRow">
+                            <td class="rowlinefirst" style="font-weight:bold;">#{feed.title} (restricted)</td>
+                            <td class="rowline">#{feed.name}</td>
+                            <td class="rowline">#{feedTypes.getFeedType(feed).name()}</td>
+                            <td class="rowline">
+                                <s:link view="/manage/feed_edit.xhtml" value="Edit common"
+                                        rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
+                                    <f:param name="name" value="#{feed.name}" />
+                                </s:link>
+                            </td>
+                            <td class="rowline">
+                                <s:link view="#{feedTypes.getFeedType(feed).editPage()}" value="Edit specific"
+                                        rendered="#{identity.hasPermission('feed', 'edit', feed, group)}">
+                                    <f:param name="name" value="#{feed.name}" />
+                                </s:link>
+                            </td>
+                            <td class="rowline">
+                                <s:link view="/manage/feed_delete.xhtml" action="#{feedMod.delete}" value="Delete"
+                                        onclick="if (!confirm('Are you sure you want to delete this feed?')) return false"
+                                        rendered="#{identity.hasPermission('feed', 'delete', feed, group)}">
+                                    <f:param name="name" value="#{feed.name}" />
+                                </s:link>
+                            </td>
+                        </tr>
+                    </s:fragment>
+                </a:repeat>
+            </s:fragment>
+        </mamut:let>
     </ui:repeat>
 </table>
 </ui:define>




More information about the jboss-cvs-commits mailing list