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 );