This is an automated email from the ASF dual-hosted git repository. juanpablo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit c95693f092fa329e40e9e9ccd734bc71bcff4fc0 Author: juanpablo <[email protected]> AuthorDate: Fri Jan 10 00:30:06 2020 +0100 move ATTR_CONTEXT constant from WikiTagBase to WikiContext --- .../src/main/java/org/apache/wiki/WikiContext.java | 7 +- .../org/apache/wiki/auth/AuthorizationManager.java | 38 +++----- .../apache/wiki/tags/AttachmentsIteratorTag.java | 6 +- .../org/apache/wiki/tags/HistoryIteratorTag.java | 6 +- .../java/org/apache/wiki/tags/IteratorTag.java | 19 ++-- .../apache/wiki/tags/SearchResultIteratorTag.java | 39 +++----- .../java/org/apache/wiki/tags/TranslateTag.java | 43 +++------ .../java/org/apache/wiki/tags/WikiBodyTag.java | 29 ++---- .../java/org/apache/wiki/tags/WikiTagBase.java | 4 +- .../java/org/apache/wiki/ui/WikiJSPFilter.java | 11 ++- .../java/org/apache/wiki/ui/WikiServletFilter.java | 102 +++++++-------------- 11 files changed, 113 insertions(+), 191 deletions(-) diff --git a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java index f4a97d5..4f4f42c 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java @@ -24,7 +24,6 @@ import org.apache.wiki.auth.UserManager; import org.apache.wiki.auth.WikiPrincipal; import org.apache.wiki.auth.permissions.AllPermission; import org.apache.wiki.auth.user.UserDatabase; -import org.apache.wiki.tags.WikiTagBase; import org.apache.wiki.ui.Command; import org.apache.wiki.ui.CommandResolver; import org.apache.wiki.ui.GroupCommand; @@ -70,6 +69,8 @@ public class WikiContext implements Cloneable, Command { private WikiSession m_session; + public static final String ATTR_CONTEXT = "jspwiki.context"; + /** User is administering JSPWiki (Install, SecurityConfig). */ public static final String INSTALL = WikiCommand.INSTALL.getRequestContext(); @@ -636,7 +637,7 @@ public class WikiContext implements Cloneable, Command { /** * This method can be used to find the WikiContext programmatically from a JSP PageContext. We check the request context. - * The wiki context, if it exists, is looked up using the key {@link org.apache.wiki.tags.WikiTagBase#ATTR_CONTEXT}. + * The wiki context, if it exists, is looked up using the key {@link #ATTR_CONTEXT}. * * @since 2.4 * @param pageContext the JSP page context @@ -644,7 +645,7 @@ public class WikiContext implements Cloneable, Command { */ public static WikiContext findContext( final PageContext pageContext ) { final HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); - return (WikiContext)request.getAttribute( WikiTagBase.ATTR_CONTEXT ); + return (WikiContext)request.getAttribute( ATTR_CONTEXT ); } /** diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/AuthorizationManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/AuthorizationManager.java index e1acca7..040046d 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/auth/AuthorizationManager.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/AuthorizationManager.java @@ -39,7 +39,6 @@ import org.apache.wiki.event.WikiEventManager; import org.apache.wiki.event.WikiSecurityEvent; import org.apache.wiki.i18n.InternationalizationManager; import org.apache.wiki.preferences.Preferences; -import org.apache.wiki.tags.WikiTagBase; import org.apache.wiki.util.ClassUtil; import org.freshcookies.security.policy.LocalPolicy; @@ -383,7 +382,7 @@ public class AuthorizationManager { * If the user is allowed, this method returns <code>true</code>; * <code>false</code> otherwise. If access is allowed, * the wiki context will be added to the request as an attribute - * with the key name {@link org.apache.wiki.tags.WikiTagBase#ATTR_CONTEXT}. + * with the key name {@link org.apache.wiki.WikiContext#ATTR_CONTEXT}. * Note that this method will automatically redirect the user to * a login or error page, as appropriate, if access fails. This is * NOT guaranteed to be default behavior in the future. @@ -404,7 +403,7 @@ public class AuthorizationManager { * and delegating the access check to {@link #checkPermission(WikiSession, Permission)}. * If the user is allowed, this method returns <code>true</code>; * <code>false</code> otherwise. Also, the wiki context will be added to the request as attribute - * with the key name {@link org.apache.wiki.tags.WikiTagBase#ATTR_CONTEXT}. + * with the key name {@link org.apache.wiki.WikiContext#ATTR_CONTEXT}. * * @param context wiki context to check if it is accesible * @param response The servlet response object @@ -412,33 +411,26 @@ public class AuthorizationManager { * @return the result of the access check * @throws IOException If something goes wrong */ - public boolean hasAccess( WikiContext context, HttpServletResponse response, boolean redirect ) throws IOException - { - boolean allowed = checkPermission( context.getWikiSession(), context.requiredPermission() ); - ResourceBundle rb = Preferences.getBundle( context, InternationalizationManager.CORE_BUNDLE ); + public boolean hasAccess( final WikiContext context, final HttpServletResponse response, final boolean redirect ) throws IOException { + final boolean allowed = checkPermission( context.getWikiSession(), context.requiredPermission() ); + final ResourceBundle rb = Preferences.getBundle( context, InternationalizationManager.CORE_BUNDLE ); // Stash the wiki context - if ( context.getHttpRequest() != null && context.getHttpRequest().getAttribute( WikiTagBase.ATTR_CONTEXT ) == null ) - { - context.getHttpRequest().setAttribute( WikiTagBase.ATTR_CONTEXT, context ); + if ( context.getHttpRequest() != null && context.getHttpRequest().getAttribute( WikiContext.ATTR_CONTEXT ) == null ) { + context.getHttpRequest().setAttribute( WikiContext.ATTR_CONTEXT, context ); } // If access not allowed, redirect - if( !allowed && redirect ) - { - Principal currentUser = context.getWikiSession().getUserPrincipal(); - String pageurl = context.getPage().getName(); - if( context.getWikiSession().isAuthenticated() ) - { + if( !allowed && redirect ) { + final Principal currentUser = context.getWikiSession().getUserPrincipal(); + final String pageurl = context.getPage().getName(); + if( context.getWikiSession().isAuthenticated() ) { log.info("User "+currentUser.getName()+" has no access - forbidden (permission=" + context.requiredPermission() + ")" ); - context.getWikiSession().addMessage( - MessageFormat.format( rb.getString("security.error.noaccess.logged"), context.getName()) ); - } - else - { + context.getWikiSession().addMessage( MessageFormat.format( rb.getString( "security.error.noaccess.logged" ), + context.getName()) ); + } else { log.info("User "+currentUser.getName()+" has no access - redirecting (permission=" + context.requiredPermission() + ")"); - context.getWikiSession().addMessage( - MessageFormat.format( rb.getString("security.error.noaccess"), context.getName()) ); + context.getWikiSession().addMessage( MessageFormat.format( rb.getString("security.error.noaccess"), context.getName() ) ); } response.sendRedirect( m_engine.getURL(WikiContext.LOGIN, pageurl, null, false ) ); } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java index 232e4ca..41f1c67 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/AttachmentsIteratorTag.java @@ -53,7 +53,7 @@ public class AttachmentsIteratorTag extends IteratorTag { */ @Override public final int doStartTag() { - m_wikiContext = (WikiContext) pageContext.getAttribute( WikiTagBase.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); + m_wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); final WikiEngine engine = m_wikiContext.getEngine(); final AttachmentManager mgr = engine.getAttachmentManager(); final WikiPage page; @@ -81,7 +81,7 @@ public class AttachmentsIteratorTag extends IteratorTag { final Attachment att = (Attachment) m_iterator.next(); final WikiContext context = (WikiContext)m_wikiContext.clone(); context.setPage( att ); - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( getId(), att ); } else { return SKIP_BODY; @@ -119,7 +119,7 @@ public class AttachmentsIteratorTag extends IteratorTag { final Attachment att = ( Attachment )m_iterator.next(); final WikiContext context = ( WikiContext )m_wikiContext.clone(); context.setPage( att ); - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( getId(), att ); return EVAL_BODY_BUFFERED; diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java index 5134cfa..6686c54 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/HistoryIteratorTag.java @@ -47,7 +47,7 @@ public class HistoryIteratorTag extends IteratorTag { @Override public final int doStartTag() { - m_wikiContext = (WikiContext) pageContext.getAttribute( WikiTagBase.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); + m_wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); final WikiEngine engine = m_wikiContext.getEngine(); final WikiPage page = m_wikiContext.getPage(); @@ -65,7 +65,7 @@ public class HistoryIteratorTag extends IteratorTag { if( m_iterator.hasNext() ) { final WikiContext context = ( WikiContext )m_wikiContext.clone(); context.setPage( ( WikiPage )m_iterator.next() ); - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( getId(), context.getPage() ); } else { return SKIP_BODY; @@ -97,7 +97,7 @@ public class HistoryIteratorTag extends IteratorTag { if( m_iterator != null && m_iterator.hasNext() ) { final WikiContext context = ( WikiContext )m_wikiContext.clone(); context.setPage( ( WikiPage )m_iterator.next() ); - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( getId(), context.getPage() ); return EVAL_BODY_BUFFERED; } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java index e04470d..78a1a46 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/IteratorTag.java @@ -18,19 +18,18 @@ */ package org.apache.wiki.tags; -import java.io.IOException; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; +import org.apache.log4j.Logger; +import org.apache.wiki.WikiContext; +import org.apache.wiki.WikiPage; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.BodyTagSupport; import javax.servlet.jsp.tagext.TryCatchFinally; - -import org.apache.log4j.Logger; -import org.apache.wiki.WikiContext; -import org.apache.wiki.WikiPage; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; /** @@ -130,7 +129,7 @@ public abstract class IteratorTag extends BodyTagSupport implements TryCatchFina // // Push it to the iterator stack, and set the id. // - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( getId(), o ); } @@ -141,7 +140,7 @@ public abstract class IteratorTag extends BodyTagSupport implements TryCatchFina public int doEndTag() { // Return back to the original. - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, m_wikiContext, PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, m_wikiContext, PageContext.REQUEST_SCOPE ); return EVAL_PAGE; } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java index 0eb68eb..f3f8ed2 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/SearchResultIteratorTag.java @@ -18,13 +18,6 @@ */ package org.apache.wiki.tags; -import java.io.IOException; -import java.util.Collection; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.jsp.JspWriter; -import javax.servlet.jsp.PageContext; - import org.apache.log4j.Logger; import org.apache.wiki.WikiContext; import org.apache.wiki.WikiEngine; @@ -32,6 +25,12 @@ import org.apache.wiki.search.SearchResult; import org.apache.wiki.ui.Command; import org.apache.wiki.ui.PageCommand; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.JspWriter; +import javax.servlet.jsp.PageContext; +import java.io.IOException; +import java.util.Collection; + /** * Iterates through Search result results. * @@ -89,7 +88,7 @@ public class SearchResultIteratorTag } m_count = 0; - m_wikiContext = (WikiContext) pageContext.getAttribute( WikiTagBase.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); + m_wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); return nextResult(); } @@ -107,9 +106,7 @@ public class SearchResultIteratorTag WikiContext context = new WikiContext( engine, request, command ); // Stash it in the page context - pageContext.setAttribute( WikiTagBase.ATTR_CONTEXT, - context, - PageContext.REQUEST_SCOPE ); + pageContext.setAttribute( WikiContext.ATTR_CONTEXT, context, PageContext.REQUEST_SCOPE ); pageContext.setAttribute( getId(), r ); return EVAL_BODY_BUFFERED; @@ -118,18 +115,13 @@ public class SearchResultIteratorTag return SKIP_BODY; } - public int doAfterBody() - { - if( bodyContent != null ) - { - try - { - JspWriter out = getPreviousOut(); + public int doAfterBody() { + if( bodyContent != null ) { + try { + final JspWriter out = getPreviousOut(); out.print(bodyContent.getString()); bodyContent.clearBody(); - } - catch( IOException e ) - { + } catch( final IOException e ) { log.error("Unable to get inner tag text", e); // FIXME: throw something? } @@ -138,10 +130,9 @@ public class SearchResultIteratorTag return nextResult(); } - public int doEndTag() - { + public int doEndTag() { m_iterator = null; - return super.doEndTag(); } + } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java index d838d1b..f6cbd0c 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/TranslateTag.java @@ -18,15 +18,14 @@ */ package org.apache.wiki.tags; +import org.apache.log4j.Logger; +import org.apache.wiki.WikiContext; + import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; -import org.apache.wiki.WikiContext; - -import org.apache.log4j.Logger; - /** * Converts the body text into HTML content. * @@ -37,45 +36,31 @@ public class TranslateTag { private static final long serialVersionUID = 0L; - static Logger log = Logger.getLogger( TranslateTag.class ); + private static final Logger log = Logger.getLogger( TranslateTag.class ); - public final int doAfterBody() - throws JspException - { - try - { - WikiContext context = (WikiContext) pageContext.getAttribute( WikiTagBase.ATTR_CONTEXT, - PageContext.REQUEST_SCOPE ); + public final int doAfterBody() throws JspException { + try { + WikiContext context = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); - // - // Because the TranslateTag should not affect any of the real page attributes - // we have to make a clone here. - // - + // Because the TranslateTag should not affect any of the real page attributes we have to make a clone here. context = context.deepClone(); - // // Get the page data. - // - BodyContent bc = getBodyContent(); + final BodyContent bc = getBodyContent(); String wikiText = bc.getString(); bc.clearBody(); - if( wikiText != null ) - { + if( wikiText != null ) { wikiText = wikiText.trim(); - - String result = context.getEngine().textToHTML( context, wikiText ); - + final String result = context.getEngine().textToHTML( context, wikiText ); getPreviousOut().write( result ); } - } - catch( Exception e ) - { + } catch( final Exception e ) { log.error( "Tag failed", e ); - throw new JspException( "Tag failed, check logs: "+e.getMessage() ); + throw new JspException( "Tag failed, check logs: " + e.getMessage() ); } return SKIP_BODY; } + } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiBodyTag.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiBodyTag.java index a73a794..fe86320 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiBodyTag.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiBodyTag.java @@ -18,16 +18,14 @@ */ package org.apache.wiki.tags; -import java.io.IOException; +import org.apache.log4j.Logger; +import org.apache.wiki.WikiContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.BodyTagSupport; import javax.servlet.jsp.tagext.TryCatchFinally; - -import org.apache.log4j.Logger; - -import org.apache.wiki.WikiContext; +import java.io.IOException; /** @@ -40,22 +38,15 @@ public abstract class WikiBodyTag extends BodyTagSupport implements TryCatchFina protected WikiContext m_wikiContext; private static final Logger log = Logger.getLogger( WikiBodyTag.class ); - public int doStartTag() throws JspException - { - try - { - m_wikiContext = (WikiContext) pageContext.getAttribute( WikiTagBase.ATTR_CONTEXT, - PageContext.REQUEST_SCOPE ); - - if( m_wikiContext == null ) - { + public int doStartTag() throws JspException { + try { + m_wikiContext = (WikiContext) pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); + if( m_wikiContext == null ) { throw new JspException("WikiContext may not be NULL - serious internal problem!"); } return doWikiStartTag(); - } - catch( Exception e ) - { + } catch( final Exception e ) { log.error( "Tag failed", e ); throw new JspException( "Tag failed, check logs: "+e.getMessage() ); } @@ -70,8 +61,7 @@ public abstract class WikiBodyTag extends BodyTagSupport implements TryCatchFina */ public abstract int doWikiStartTag() throws JspException, IOException; - public void doCatch(Throwable arg0) throws Throwable - { + public void doCatch(Throwable arg0) throws Throwable { } public void doFinally() @@ -79,5 +69,4 @@ public abstract class WikiBodyTag extends BodyTagSupport implements TryCatchFina m_wikiContext = null; } - } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java b/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java index 8d2b0be..123b2af 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/tags/WikiTagBase.java @@ -40,8 +40,6 @@ public abstract class WikiTagBase extends TagSupport implements TryCatchFinally private static final long serialVersionUID = -1409836349293777141L; private static final Logger log = Logger.getLogger( WikiTagBase.class ); - public static final String ATTR_CONTEXT = "jspwiki.context"; - protected WikiContext m_wikiContext; /** @@ -64,7 +62,7 @@ public abstract class WikiTagBase extends TagSupport implements TryCatchFinally public int doStartTag() throws JspException { try { - m_wikiContext = ( WikiContext )pageContext.getAttribute( ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); + m_wikiContext = ( WikiContext )pageContext.getAttribute( WikiContext.ATTR_CONTEXT, PageContext.REQUEST_SCOPE ); if( m_wikiContext == null ) { throw new JspException("WikiContext may not be NULL - serious internal problem!"); } diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java index 41d55c9..7dee58c 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiJSPFilter.java @@ -19,6 +19,7 @@ package org.apache.wiki.ui; import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; import org.apache.log4j.NDC; import org.apache.wiki.WatchDog; import org.apache.wiki.WikiContext; @@ -75,8 +76,9 @@ import java.nio.charset.Charset; * @see TemplateManager * @see org.apache.wiki.tags.RequestResourceTag */ -public class WikiJSPFilter extends WikiServletFilter -{ +public class WikiJSPFilter extends WikiServletFilter { + + private static final Logger log = Logger.getLogger( WikiJSPFilter.class ); private String m_wiki_encoding; private boolean useEncoding; @@ -249,9 +251,8 @@ public class WikiJSPFilter extends WikiServletFilter * Simple response wrapper that just allows us to gobble through the entire * response before it's output. */ - private static class JSPWikiServletResponseWrapper - extends HttpServletResponseWrapper - { + private static class JSPWikiServletResponseWrapper extends HttpServletResponseWrapper { + ByteArrayOutputStream m_output; private ByteArrayServletOutputStream m_servletOut; private PrintWriter m_writer; diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java index 45a95e1..4d8e08f 100644 --- a/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java +++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/WikiServletFilter.java @@ -25,7 +25,6 @@ import org.apache.wiki.WikiEngine; import org.apache.wiki.WikiSession; import org.apache.wiki.auth.SessionMonitor; import org.apache.wiki.auth.WikiSecurityException; -import org.apache.wiki.tags.WikiTagBase; import javax.servlet.Filter; import javax.servlet.FilterChain; @@ -40,23 +39,17 @@ import java.io.IOException; import java.io.PrintWriter; /** - * Filter that verifies that the {@link org.apache.wiki.WikiEngine} is running, and - * sets the authentication status for the user's WikiSession. Each HTTP request - * processed by this filter is wrapped by a {@link WikiRequestWrapper}. The wrapper's - * primary responsibility is to return the correct <code>userPrincipal</code> and - * <code>remoteUser</code> for authenticated JSPWiki users (whether - * authenticated by container or by JSPWiki's custom system). - * The wrapper's other responsibility is to incorporate JSPWiki built-in roles - * into the role-checking algorithm for {@link HttpServletRequest#isUserInRole(String)}. - * Just before the request is wrapped, the method {@link org.apache.wiki.auth.AuthenticationManager#login(HttpServletRequest)} executes; - * this method contains all of the logic needed to grab any user login credentials set - * by the container or by cookies. - * - * + * Filter that verifies that the {@link org.apache.wiki.WikiEngine} is running, and sets the authentication status for the user's + * WikiSession. Each HTTP request processed by this filter is wrapped by a {@link WikiRequestWrapper}. The wrapper's primary responsibility + * is to return the correct <code>userPrincipal</code> and <code>remoteUser</code> for authenticated JSPWiki users (whether authenticated + * by container or by JSPWiki's custom system). The wrapper's other responsibility is to incorporate JSPWiki built-in roles + * into the role-checking algorithm for {@link HttpServletRequest#isUserInRole(String)}. Just before the request is wrapped, the method + * {@link org.apache.wiki.auth.AuthenticationManager#login(HttpServletRequest)} executes; this method contains all of the logic needed to + * grab any user login credentials set by the container or by cookies. */ -public class WikiServletFilter implements Filter -{ - protected static final Logger log = Logger.getLogger( WikiServletFilter.class ); +public class WikiServletFilter implements Filter { + + private static final Logger log = Logger.getLogger( WikiServletFilter.class ); protected WikiEngine m_engine = null; /** @@ -73,13 +66,11 @@ public class WikiServletFilter implements Filter * @param config The FilterConfig. * @throws ServletException If a WikiEngine cannot be started. */ - public void init( FilterConfig config ) throws ServletException - { - ServletContext context = config.getServletContext(); + public void init( final FilterConfig config ) throws ServletException { + final ServletContext context = config.getServletContext(); // TODO REMOVEME when resolving JSPWIKI-129 - if( System.getSecurityManager() != null ) - { + if( System.getSecurityManager() != null ) { context.log( "== JSPWIKI WARNING == : This container is running with a security manager. JSPWiki does not yet really support that right now. See issue JSPWIKI-129 for details and information on how to proceed." ); } @@ -89,13 +80,11 @@ public class WikiServletFilter implements Filter /** * Destroys the WikiServletFilter. */ - public void destroy() - { + public void destroy() { } /** - * Checks that the WikiEngine is running ok, wraps the current - * HTTP request, and sets the correct authentication state for the users's + * Checks that the WikiEngine is running ok, wraps the current HTTP request, and sets the correct authentication state for the users's * WikiSession. First, the method {@link org.apache.wiki.auth.AuthenticationManager#login(HttpServletRequest)} * executes, which sets the authentication state. Then, the request is wrapped with a * {@link WikiRequestWrapper}. @@ -105,19 +94,14 @@ public class WikiServletFilter implements Filter * @throws ServletException if {@link org.apache.wiki.auth.AuthenticationManager#login(HttpServletRequest)} fails for any reason * @throws IOException If writing to the servlet response fails. */ - public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException - { - // + public void doFilter( final ServletRequest request, final ServletResponse response, final FilterChain chain ) throws IOException, ServletException { // Sanity check; it might be true in some conditions, but we need to know where. - // - if( chain == null ) - { + if( chain == null ) { throw new ServletException("FilterChain is null, even if it should not be. Please report this to the jspwiki development team."); } - if( m_engine == null ) - { - PrintWriter out = response.getWriter(); + if( m_engine == null ) { + final PrintWriter out = response.getWriter(); out.print("<!DOCTYPE html><html lang=\"en\"><head><title>Fatal problem with JSPWiki</title></head>"); out.print("<body>"); out.print("<h1>JSPWiki has not been started</h1>"); @@ -138,33 +122,24 @@ public class WikiServletFilter implements Filter // Set the character encoding httpRequest.setCharacterEncoding( m_engine.getContentEncoding().displayName() ); - if ( !isWrapped( request ) ) - { + if ( !isWrapped( request ) ) { // Prepare the WikiSession - try - { + try { m_engine.getAuthenticationManager().login( httpRequest ); - WikiSession wikiSession = SessionMonitor.getInstance( m_engine ).find( httpRequest.getSession() ); + final WikiSession wikiSession = SessionMonitor.getInstance( m_engine ).find( httpRequest.getSession() ); httpRequest = new WikiRequestWrapper( m_engine, httpRequest ); - if ( log.isDebugEnabled() ) - { + if ( log.isDebugEnabled() ) { log.debug( "Executed security filters for user=" + wikiSession.getLoginPrincipal().getName() + ", path=" + httpRequest.getRequestURI() ); } - } - catch ( WikiSecurityException e ) - { + } catch( final WikiSecurityException e ) { throw new ServletException( e ); } } - try - { + try { NDC.push( m_engine.getApplicationName()+":"+httpRequest.getRequestURL() ); - chain.doFilter( httpRequest, response ); - } - finally - { + } finally { NDC.pop(); NDC.remove(); } @@ -172,19 +147,14 @@ public class WikiServletFilter implements Filter } /** - * Figures out the wiki context from the request. This method does not create the - * context if it does not exist. + * Figures out the wiki context from the request. This method does not create the context if it does not exist. * * @param request The request to examine * @return A valid WikiContext value (or null, if the context could not be located). */ - protected WikiContext getWikiContext( ServletRequest request ) - { - HttpServletRequest httpRequest = (HttpServletRequest) request; - - WikiContext ctx = (WikiContext) httpRequest.getAttribute( WikiTagBase.ATTR_CONTEXT ); - - return ctx; + protected WikiContext getWikiContext( final ServletRequest request ) { + final HttpServletRequest httpRequest = (HttpServletRequest) request; + return (WikiContext) httpRequest.getAttribute( WikiContext.ATTR_CONTEXT ); } /** @@ -194,15 +164,11 @@ public class WikiServletFilter implements Filter * @return <code>true</code> if the request has previously been wrapped; * <code>false</code> otherwise */ - private boolean isWrapped( ServletRequest request ) - { - while ( !(request instanceof WikiRequestWrapper ) - && request != null - && request instanceof HttpServletRequestWrapper ) - { - request = ((HttpServletRequestWrapper) request).getRequest(); + private boolean isWrapped( ServletRequest request ) { + while( !(request instanceof WikiRequestWrapper ) && request != null && request instanceof HttpServletRequestWrapper ) { + request = ( ( HttpServletRequestWrapper ) request ).getRequest(); } - return request instanceof WikiRequestWrapper ? true : false; + return request instanceof WikiRequestWrapper; } }
