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/03/21 17:04:22 UTC

[jspwiki] 20/36: extract all commands to its own class in order to break class cycles

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 a3bacfa69a61b147d86324923840edc91283e3ec
Author: juanpablo <ju...@apache.org>
AuthorDate: Sat Mar 21 14:14:12 2020 +0100

    extract all commands to its own class in order to break class cycles
---
 .../java/org/apache/wiki/ui/AbstractCommand.java   | 56 ++++------------------
 .../main/java/org/apache/wiki/ui/AllCommands.java  | 49 +++++++++++++++++++
 .../java/org/apache/wiki/ui/CommandResolver.java   |  4 +-
 .../org/apache/wiki/ui/DefaultCommandResolver.java |  2 +-
 4 files changed, 60 insertions(+), 51 deletions(-)

diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/AbstractCommand.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/AbstractCommand.java
index 4bccec1..dfad8f6 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/AbstractCommand.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/AbstractCommand.java
@@ -29,37 +29,6 @@ import org.apache.wiki.util.TextUtil;
  */
 public abstract class AbstractCommand implements Command {
 
-    private static final Command[] ALL_COMMANDS = new Command[] {
-        PageCommand.ATTACH,
-        PageCommand.COMMENT,
-        PageCommand.CONFLICT,
-        PageCommand.DELETE,
-        PageCommand.DIFF,
-        PageCommand.EDIT,
-        PageCommand.INFO,
-        PageCommand.NONE,
-        PageCommand.OTHER,
-        PageCommand.PREVIEW,
-        PageCommand.RENAME,
-        PageCommand.RSS,
-        PageCommand.UPLOAD,
-        PageCommand.VIEW,
-        GroupCommand.DELETE_GROUP,
-        GroupCommand.EDIT_GROUP,
-        GroupCommand.VIEW_GROUP,
-        WikiCommand.CREATE_GROUP,
-        WikiCommand.ERROR,
-        WikiCommand.FIND,
-        WikiCommand.INSTALL,
-        WikiCommand.LOGIN,
-        WikiCommand.LOGOUT,
-        WikiCommand.MESSAGE,
-        WikiCommand.PREFS,
-        WikiCommand.WORKFLOW,
-        WikiCommand.ADMIN,
-        RedirectCommand.REDIRECT
-    };
-
     private static final String HTTPS = "HTTPS://";
     private static final String HTTP = "HTTP://";
 
@@ -88,7 +57,7 @@ public abstract class AbstractCommand implements Command {
         }
 
         m_requestContext = requestContext;
-        if ( urlPattern.toUpperCase().startsWith( HTTP ) || urlPattern.toUpperCase().endsWith( HTTPS ) ) {
+        if ( urlPattern.toUpperCase().startsWith( HTTP ) || urlPattern.toUpperCase().startsWith( HTTPS ) ) {
             // For an HTTP/HTTPS url, pass it through without modification
             m_jsp = urlPattern;
             m_jspFriendlyName = "Special Page";
@@ -131,54 +100,45 @@ public abstract class AbstractCommand implements Command {
     }
 
     /**
-     * Returns a defensively-created array of all static Commands.
-     *
-     * @return the array of commands
-     */
-    public static Command[] allCommands() {
-        return ALL_COMMANDS.clone();
-    }
-
-    /**
-     * @see org.apache.wiki.ui.Command#targetedCommand(Object)
+     * @see org.apache.wiki.api.core.Command#targetedCommand(Object)
      */
     public abstract Command targetedCommand( final Object target );
 
     /**
-     * @see org.apache.wiki.ui.Command#getContentTemplate()
+     * @see org.apache.wiki.api.core.Command#getContentTemplate()
      */
     public final String getContentTemplate() {
         return m_contentTemplate;
     }
 
     /**
-     * @see org.apache.wiki.ui.Command#getJSP()
+     * @see org.apache.wiki.api.core.Command#getJSP()
      */
     public final String getJSP() {
         return m_jsp;
     }
 
     /**
-     * @see org.apache.wiki.ui.Command#getName()
+     * @see org.apache.wiki.api.core.Command#getName()
      */
     public abstract String getName();
 
     /**
-     * @see org.apache.wiki.ui.Command#getRequestContext()
+     * @see org.apache.wiki.api.core.Command#getRequestContext()
      */
     public final String getRequestContext() {
         return m_requestContext;
     }
 
     /**
-     * @see org.apache.wiki.ui.Command#getTarget()
+     * @see org.apache.wiki.api.core.Command#getTarget()
      */
     public final Object getTarget() {
         return m_target;
     }
 
     /**
-     * @see org.apache.wiki.ui.Command#getURLPattern()
+     * @see org.apache.wiki.api.core.Command#getURLPattern()
      */
     public final String getURLPattern() {
         return m_urlPattern;
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/AllCommands.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/AllCommands.java
new file mode 100644
index 0000000..19dbdc8
--- /dev/null
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/AllCommands.java
@@ -0,0 +1,49 @@
+package org.apache.wiki.ui;
+
+import org.apache.wiki.api.core.Command;
+
+
+/**
+ * Placeholder class for all Commands.
+ */
+public interface AllCommands {
+
+    /**
+     * Returns a defensively-created array of all static Commands.
+     *
+     * @return the array of commands
+     */
+    static Command[] get() {
+        return new Command[] {
+            GroupCommand.DELETE_GROUP,
+            GroupCommand.EDIT_GROUP,
+            GroupCommand.VIEW_GROUP,
+            PageCommand.ATTACH,
+            PageCommand.COMMENT,
+            PageCommand.CONFLICT,
+            PageCommand.DELETE,
+            PageCommand.DIFF,
+            PageCommand.EDIT,
+            PageCommand.INFO,
+            PageCommand.NONE,
+            PageCommand.OTHER,
+            PageCommand.PREVIEW,
+            PageCommand.RENAME,
+            PageCommand.RSS,
+            PageCommand.UPLOAD,
+            PageCommand.VIEW,
+            RedirectCommand.REDIRECT,
+            WikiCommand.CREATE_GROUP,
+            WikiCommand.ERROR,
+            WikiCommand.FIND,
+            WikiCommand.INSTALL,
+            WikiCommand.LOGIN,
+            WikiCommand.LOGOUT,
+            WikiCommand.MESSAGE,
+            WikiCommand.PREFS,
+            WikiCommand.WORKFLOW,
+            WikiCommand.ADMIN
+        };
+    }
+
+}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java
index fd913c8..1a161b1 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/CommandResolver.java
@@ -52,14 +52,14 @@ public interface CommandResolver {
 
     /**
      * Attempts to locate a wiki command for a supplied request context. The resolution technique is simple: we examine the list of
-     * Commands returned by {@link AbstractCommand#allCommands()} and return the one whose <code>requestContext</code> matches the
+     * Commands returned by {@link AllCommands#get()} and return the one whose <code>requestContext</code> matches the
      * supplied context. If the supplied context does not resolve to a known Command, this method throws an {@link IllegalArgumentException}.
      *
      * @param context the request context
      * @return the resolved context
      */
     static Command findCommand( final String context ) {
-        return Arrays.stream( AbstractCommand.allCommands() )
+        return Arrays.stream( AllCommands.get() )
                      .filter( c -> c.getRequestContext().equals( context ) )
                      .findFirst()
                      .orElseThrow( () -> new IllegalArgumentException( "Unsupported wiki context: " + context + "." ) );
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
index c80aad5..e1d110e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ui/DefaultCommandResolver.java
@@ -56,7 +56,7 @@ public final class DefaultCommandResolver implements CommandResolver {
     static {
         CONTEXTS = new HashMap<>();
         JSPS = new HashMap<>();
-        final Command[] commands = AbstractCommand.allCommands();
+        final Command[] commands = AllCommands.get();
         for( final Command command : commands ) {
             JSPS.put( command.getJSP(), command );
             CONTEXTS.put( command.getRequestContext(), command );