You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2009/11/25 12:07:13 UTC
svn commit: r884036 - in /incubator/jspwiki/trunk/src:
WebContent/SisterSites.jsp java/org/apache/wiki/action/RSSActionBean.java
Author: ajaquith
Date: Wed Nov 25 11:07:13 2009
New Revision: 884036
URL: http://svn.apache.org/viewvc?rev=884036&view=rev
Log:
SisterSites received the Stripes treatment. We didn't need to do it just yet. It's all just gravy at this point in the release cycle.
Modified:
incubator/jspwiki/trunk/src/WebContent/SisterSites.jsp
incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RSSActionBean.java
Modified: incubator/jspwiki/trunk/src/WebContent/SisterSites.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/WebContent/SisterSites.jsp?rev=884036&r1=884035&r2=884036&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/WebContent/SisterSites.jsp (original)
+++ incubator/jspwiki/trunk/src/WebContent/SisterSites.jsp Wed Nov 25 11:07:13 2009
@@ -18,39 +18,5 @@
specific language governing permissions and limitations
under the License.
--%>
-<%@ page import="java.util.*,org.apache.wiki.*" %>
-<%@ page import="org.apache.wiki.log.Logger" %>
-<%@ page import="org.apache.wiki.log.LoggerFactory" %>
-<%@ page import="java.text.*" %>
-<%@ page import="org.apache.wiki.rss.*" %>
-<%@ page import="org.apache.wiki.util.*" %>
-<%!
- Logger log = LoggerFactory.getLogger("JSPWiki");
-%>
-<%
- /*
- * This JSP creates support for the SisterSites standard,
- * as specified by http://usemod.com/cgi-bin/mb.pl?SisterSitesImplementationGuide
- *
- * FIXME: Does not honor the ACL's on the pages.
- */
- WikiEngine wiki = WikiEngine.getInstance( getServletConfig() );
- // Create wiki context and check for authorization
- WikiContext wikiContext = wiki.createContext( request, "rss" );
-
- Set<String> allPages = wiki.getReferenceManager().findCreated();
-
- response.setContentType("text/plain; charset=UTF-8");
- for( Iterator<String> i = allPages.iterator(); i.hasNext(); )
- {
- String pageName = i.next();
-
- // Let's not add attachments.
- // TODO: This is a kludge and not forward-compatible.
-
- if( pageName.indexOf("/") != -1 ) continue;
- String url = wiki.getViewURL( pageName );
-
- out.write( url + " " + pageName + "\n" );
- }
- %>
\ No newline at end of file
+<%@ taglib uri="http://stripes.sourceforge.net/stripes.tld" prefix="s" %>
+<s:useActionBean beanclass="org.apache.wiki.action.RSSActionBean" event="sisterSites" executeResolution="true" id="wikiActionBean" />
Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RSSActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RSSActionBean.java?rev=884036&r1=884035&r2=884036&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RSSActionBean.java (original)
+++ incubator/jspwiki/trunk/src/java/org/apache/wiki/action/RSSActionBean.java Wed Nov 25 11:07:13 2009
@@ -21,14 +21,23 @@
package org.apache.wiki.action;
-import org.apache.wiki.auth.permissions.PagePermission;
-import org.apache.wiki.ui.stripes.HandlerPermission;
-import org.apache.wiki.ui.stripes.WikiRequestContext;
+import java.security.Permission;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletResponse;
import net.sourceforge.stripes.action.HandlesEvent;
import net.sourceforge.stripes.action.Resolution;
+import net.sourceforge.stripes.action.StreamingResolution;
import net.sourceforge.stripes.action.UrlBinding;
+import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiSession;
+import org.apache.wiki.auth.AuthorizationManager;
+import org.apache.wiki.auth.permissions.PagePermission;
+import org.apache.wiki.auth.permissions.PermissionFactory;
+import org.apache.wiki.ui.stripes.HandlerPermission;
+import org.apache.wiki.ui.stripes.WikiRequestContext;
@UrlBinding( "/rss.jsp" )
public class RSSActionBean extends AbstractActionBean
@@ -40,4 +49,43 @@
{
return null;
}
+
+ /**
+ * Generates a StreamingResolution with the names and URLs of all pages the
+ * user as has access to, following the SisterSites standard. This event
+ * method respects ACLs on pages.
+ *
+ * @see http://usemod.com/cgi-bin/mb.pl?SisterSitesImplementationGuide
+ * @return
+ */
+ @HandlesEvent( "sisterSites" )
+ public Resolution sisterSites()
+ {
+ Resolution r = new StreamingResolution( "text/plain; charset=UTF-8" )
+ {
+ @SuppressWarnings("deprecation")
+ @Override
+ protected void stream( HttpServletResponse response ) throws Exception
+ {
+ WikiEngine engine = getContext().getEngine();
+ AuthorizationManager mgr = engine.getAuthorizationManager();
+ WikiSession session = getContext().getWikiSession();
+ Set<String> allPages = engine.getReferenceManager().findCreated();
+ for( String page : allPages )
+ {
+ if( page.indexOf( "/" ) == -1 )
+ {
+ Permission permission = PermissionFactory.getPagePermission( page, PagePermission.VIEW_ACTION );
+ if ( mgr.checkPermission( session, permission ) )
+ {
+ String url = engine.getViewURL( page );
+ response.getWriter().write( url + " " + page + "\n" );
+ }
+ }
+ }
+ }
+
+ };
+ return r;
+ }
}