You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2020/01/16 23:07:25 UTC

[jspwiki] 05/26: move RenderingManager#VAR_EXECUTE_PLUGINS constant to WikiContext

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 13f2d0df7c10a6ce0f07731735879b0ecbd03e11
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Jan 11 22:48:17 2020 +0100

    move RenderingManager#VAR_EXECUTE_PLUGINS constant to WikiContext
---
 .../src/main/java/org/apache/wiki/WikiContext.java |   6 +
 .../apache/wiki/auth/acl/DefaultAclManager.java    | 138 +++++++++------------
 .../java/org/apache/wiki/parser/PluginContent.java |  14 +--
 .../wiki/render/DefaultRenderingManager.java       |   2 +-
 .../org/apache/wiki/render/RenderingManager.java   |   6 -
 5 files changed, 71 insertions(+), 95 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 ace5764..4b9a1d6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/WikiContext.java
@@ -71,6 +71,12 @@ public class WikiContext implements Cloneable, Command {
 
     public static final String ATTR_CONTEXT = "jspwiki.context";
 
+    /**
+     *  Variable name which tells whether plugins should be executed or not. Value can be either {@code Boolean.TRUE} or
+     *  {@code Boolean.FALSE}. While not set it's value is {@code null}.
+     */
+    public static final String VAR_EXECUTE_PLUGINS = "_PluginContent.execute";
+
     /** Name of the variable which is set to Boolean.TRUE or Boolean.FALSE depending on whether WYSIWYG is currently in effect. */
     public static final String VAR_WYSIWYG_EDITOR_MODE = "WYSIWYG_EDITOR_MODE";
 
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
index 860eafa..d5ff97f 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
@@ -31,12 +31,10 @@ import org.apache.wiki.auth.permissions.PagePermission;
 import org.apache.wiki.auth.permissions.PermissionFactory;
 import org.apache.wiki.pages.PageLock;
 import org.apache.wiki.pages.PageManager;
-import org.apache.wiki.render.RenderingManager;
 
 import java.security.Permission;
 import java.security.Principal;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
@@ -73,72 +71,66 @@ public class DefaultAclManager implements AclManager {
      * the second is the list of Principals separated by commas. The overall match is
      * the ACL string from [{ to }].
      */
-    public static final Pattern ACL_PATTERN = Pattern.compile(ACL_REGEX);
+    public static final Pattern ACL_PATTERN = Pattern.compile( ACL_REGEX );
 
     /**
      * Initializes the AclManager with a supplied wiki engine and properties.
      *
      * @param engine the wiki engine
      * @param props  the initialization properties
-     * @see org.apache.wiki.auth.acl.AclManager#initialize(org.apache.wiki.WikiEngine,
-     *      java.util.Properties)
+     * @see org.apache.wiki.auth.acl.AclManager#initialize(org.apache.wiki.WikiEngine, java.util.Properties)
      */
-    public void initialize(WikiEngine engine, Properties props) {
+    public void initialize( final WikiEngine engine, final Properties props ) {
         m_auth = engine.getAuthorizationManager();
         m_engine = engine;
     }
 
     /**
-     * A helper method for parsing textual AccessControlLists. The line is in
-     * form "ALLOW <permission> <principal>, <principal>, <principal>". This
-     * method was moved from Authorizer.
+     * A helper method for parsing textual AccessControlLists. The line is in form
+     * {@code ALLOW <permission> <principal>, <principal>, <principal>}. This method was moved from Authorizer.
      *
-     * @param page     The current wiki page. If the page already has an ACL, it
-     *                 will be used as a basis for this ACL in order to avoid the
-     *                 creation of a new one.
+     * @param page The current wiki page. If the page already has an ACL, it will be used as a basis for this ACL in order to avoid the
+     *             creation of a new one.
      * @param ruleLine The rule line, as described above.
      * @return A valid Access Control List. May be empty.
      * @throws WikiSecurityException if the ruleLine was faulty somehow.
      * @since 2.1.121
      */
-    public Acl parseAcl(WikiPage page, String ruleLine) throws WikiSecurityException {
+    public Acl parseAcl( final WikiPage page, final String ruleLine ) throws WikiSecurityException {
         Acl acl = page.getAcl();
         if (acl == null) {
             acl = new AclImpl();
         }
 
         try {
-            StringTokenizer fieldToks = new StringTokenizer(ruleLine);
+            final StringTokenizer fieldToks = new StringTokenizer(ruleLine);
             fieldToks.nextToken();
-            String actions = fieldToks.nextToken();
-            page.getName();
+            final String actions = fieldToks.nextToken();
 
-            while (fieldToks.hasMoreTokens()) {
-                String principalName = fieldToks.nextToken(",").trim();
-                Principal principal = m_auth.resolvePrincipal(principalName);
-                AclEntry oldEntry = acl.getEntry(principal);
+            while( fieldToks.hasMoreTokens() ) {
+                final String principalName = fieldToks.nextToken(",").trim();
+                final Principal principal = m_auth.resolvePrincipal(principalName);
+                final AclEntry oldEntry = acl.getEntry(principal);
 
-                if (oldEntry != null) {
-                    log.debug("Adding to old acl list: " + principal + ", " + actions);
-                    oldEntry.addPermission(PermissionFactory.getPagePermission(page, actions));
+                if( oldEntry != null ) {
+                    log.debug( "Adding to old acl list: " + principal + ", " + actions );
+                    oldEntry.addPermission( PermissionFactory.getPagePermission( page, actions ) );
                 } else {
-                    log.debug("Adding new acl entry for " + actions);
-                    AclEntry entry = new AclEntryImpl();
+                    log.debug( "Adding new acl entry for " + actions );
+                    final AclEntry entry = new AclEntryImpl();
+                    entry.setPrincipal( principal );
+                    entry.addPermission( PermissionFactory.getPagePermission( page, actions ) );
 
-                    entry.setPrincipal(principal);
-                    entry.addPermission(PermissionFactory.getPagePermission(page, actions));
-
-                    acl.addEntry(entry);
+                    acl.addEntry( entry );
                 }
             }
 
-            page.setAcl(acl);
-
-            log.debug(acl.toString());
-        } catch (NoSuchElementException nsee) {
-            log.warn("Invalid access rule: " + ruleLine + " - defaults will be used.");
-            throw new WikiSecurityException("Invalid access rule: " + ruleLine, nsee);
-        } catch (IllegalArgumentException iae) {
+            page.setAcl( acl );
+            log.debug( acl.toString() );
+        } catch( final NoSuchElementException nsee ) {
+            log.warn( "Invalid access rule: " + ruleLine + " - defaults will be used." );
+            throw new WikiSecurityException( "Invalid access rule: " + ruleLine, nsee );
+        } catch( final IllegalArgumentException iae ) {
             throw new WikiSecurityException("Invalid permission type: " + ruleLine, iae);
         }
 
@@ -159,28 +151,19 @@ public class DefaultAclManager implements AclManager {
      * @since 2.2.121
      */
     public Acl getPermissions( final WikiPage page ) {
-        //
         //  Does the page already have cached ACLs?
-        //
         Acl acl = page.getAcl();
-        log.debug("page=" + page.getName() + "\n" + acl);
+        log.debug( "page=" + page.getName() + "\n" + acl );
 
-        if (acl == null) {
-            //
+        if( acl == null ) {
             //  If null, try the parent.
-            //
             if( page instanceof Attachment ) {
                 final WikiPage parent = m_engine.getPageManager().getPage( ( ( Attachment ) page ).getParentName() );
-
                 acl = getPermissions(parent);
             } else {
-                //
                 //  Or, try parsing the page
-                //
-                final WikiContext ctx = new WikiContext(m_engine, page);
-
-                ctx.setVariable(RenderingManager.VAR_EXECUTE_PLUGINS, Boolean.FALSE);
-
+                final WikiContext ctx = new WikiContext( m_engine, page );
+                ctx.setVariable( WikiContext.VAR_EXECUTE_PLUGINS, Boolean.FALSE );
                 m_engine.getHTML(ctx, page);
 
                 if (page.getAcl() == null) {
@@ -234,47 +217,44 @@ public class DefaultAclManager implements AclManager {
      * @param acl the ACL
      * @return the ACL string
      */
-    protected static String printAcl(Acl acl) {
+    protected static String printAcl( final Acl acl ) {
         // Extract the ACL entries into a Map with keys == permissions, values == principals
-        Map<String, List<Principal>> permissionPrincipals = new TreeMap<String, List<Principal>>();
-        Enumeration<AclEntry> entries = acl.entries();
-        while (entries.hasMoreElements()) {
-            AclEntry entry = entries.nextElement();
-            Principal principal = entry.getPrincipal();
-            Enumeration<Permission> permissions = entry.permissions();
-            while (permissions.hasMoreElements()) {
-                Permission permission = permissions.nextElement();
-                List<Principal> principals = permissionPrincipals.get(permission.getActions());
+        final Map< String, List< Principal > > permissionPrincipals = new TreeMap<>();
+        final Enumeration< AclEntry > entries = acl.entries();
+        while( entries.hasMoreElements() ) {
+            final AclEntry entry = entries.nextElement();
+            final Principal principal = entry.getPrincipal();
+            final Enumeration< Permission > permissions = entry.permissions();
+            while( permissions.hasMoreElements() ) {
+                final Permission permission = permissions.nextElement();
+                List< Principal > principals = permissionPrincipals.get( permission.getActions() );
                 if (principals == null) {
-                    principals = new ArrayList<Principal>();
-                    String action = permission.getActions();
-                    if (action.indexOf(',') != -1) {
+                    principals = new ArrayList<>();
+                    final String action = permission.getActions();
+                    if( action.indexOf(',') != -1 ) {
                         throw new IllegalStateException("AclEntry permission cannot have multiple targets.");
                     }
-                    permissionPrincipals.put(action, principals);
+                    permissionPrincipals.put( action, principals );
                 }
-                principals.add(principal);
+                principals.add( principal );
             }
         }
 
         // Now, iterate through each permission in the map and generate an ACL string
-
-        StringBuilder s = new StringBuilder();
-        for (Map.Entry<String, List<Principal>> entry : permissionPrincipals.entrySet()) {
-            String action = entry.getKey();
-            List<Principal> principals = entry.getValue();
-            Collections.sort(principals, new PrincipalComparator());
-            s.append("[{ALLOW ");
-            s.append(action);
-            s.append(" ");
-            for (int i = 0; i < principals.size(); i++) {
-                Principal principal = principals.get(i);
-                s.append(principal.getName());
-                if (i < (principals.size() - 1)) {
-                    s.append(",");
+        final StringBuilder s = new StringBuilder();
+        for( final Map.Entry< String, List< Principal > > entry : permissionPrincipals.entrySet() ) {
+            final String action = entry.getKey();
+            final List< Principal > principals = entry.getValue();
+            principals.sort( new PrincipalComparator() );
+            s.append( "[{ALLOW " ).append( action ).append( " " );
+            for( int i = 0; i < principals.size(); i++ ) {
+                final Principal principal = principals.get( i );
+                s.append( principal.getName() );
+                if( i < ( principals.size() - 1 ) ) {
+                    s.append( "," );
                 }
             }
-            s.append("}]\n");
+            s.append( "}]\n" );
         }
         return s.toString();
     }
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java b/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java
index 56b9c30..1fa4947 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/parser/PluginContent.java
@@ -30,7 +30,6 @@ import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.ParserStagePlugin;
 import org.apache.wiki.api.plugin.WikiPlugin;
 import org.apache.wiki.preferences.Preferences;
-import org.apache.wiki.render.RenderingManager;
 import org.jdom2.Text;
 
 import java.io.IOException;
@@ -44,13 +43,10 @@ import java.util.ResourceBundle;
 /**
  * Stores the contents of a plugin in a WikiDocument DOM tree.
  * <p/>
- * If the RenderingManager.WYSIWYG_EDITOR_MODE is set to Boolean.TRUE in the context,
- * then the plugin
- * is rendered as WikiMarkup.  This allows an HTML editor to work without
- * rendering the plugin each time as well.
+ * If the WikiContext.VAR_WYSIWYG_EDITOR_MODE is set to Boolean.TRUE in the context, then the plugin is rendered as WikiMarkup.
+ * This allows an HTML editor to work without rendering the plugin each time as well.
  * <p/>
- * If RenderingManager.VAR_EXECUTE_PLUGINS is set to Boolean.FALSE, then
- * the plugin is not executed.
+ * If WikiContext.VAR_EXECUTE_PLUGINS is set to Boolean.FALSE, then the plugin is not executed.
  *
  * @since 2.4
  */
@@ -176,7 +172,7 @@ public class PluginContent extends Text {
                 final String cmdLine = m_params.get( CMDLINE ).replaceAll( LINEBREAK, ELEMENT_BR );
                 result = result + cmdLine + PLUGIN_END;
             } else {
-                final Boolean b = ( Boolean )context.getVariable(RenderingManager.VAR_EXECUTE_PLUGINS );
+                final Boolean b = ( Boolean )context.getVariable( WikiContext.VAR_EXECUTE_PLUGINS );
                 if (b != null && !b ) {
                     return BLANK;
                 }
@@ -222,7 +218,7 @@ public class PluginContent extends Text {
             final Map< String, String > params = getParameters();
             final WikiPlugin plugin = pm.newWikiPlugin( getPluginName(), rb );
             try {
-                if( plugin != null && plugin instanceof ParserStagePlugin ) {
+                if( plugin instanceof ParserStagePlugin ) {
                     ( ( ParserStagePlugin )plugin ).executeParser(this, context, params );
                 }
             } catch( final ClassCastException e ) {
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
index 989a7ba..5e63df5 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/render/DefaultRenderingManager.java
@@ -154,7 +154,7 @@ public class DefaultRenderingManager implements RenderingManager {
     public WikiDocument getRenderedDocument( final WikiContext context, final String pagedata ) {
         final String pageid = context.getRealPage().getName() + VERSION_DELIMITER +
                               context.getRealPage().getVersion() + VERSION_DELIMITER +
-                              context.getVariable( DefaultRenderingManager.VAR_EXECUTE_PLUGINS );
+                              context.getVariable( WikiContext.VAR_EXECUTE_PLUGINS );
 
         if( useCache( context ) ) {
             final Element element = m_documentCache.get( pageid );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java b/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
index 12564dc..ea0d0e6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/render/RenderingManager.java
@@ -57,12 +57,6 @@ public interface RenderingManager extends WikiEventListener, InternalModule {
     String DOCUMENTCACHE_NAME = "jspwiki.renderingCache";
 
     /**
-     *  Variable name which tells whether plugins should be executed or not.  Value can be either {@code Boolean.TRUE} or
-     *  {@code Boolean.FALSE}. While not set it's value is {@code null}.
-     */
-    String VAR_EXECUTE_PLUGINS = "_PluginContent.execute";
-
-    /**
      *  Initializes the RenderingManager.
      *  Checks for cache size settings, initializes the document cache.
      *  Looks for alternative WikiRenderers, initializes one, or the default