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 <juanpa...@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 );