public interface Command
Represents a logical "unit of work" that includes a request context, JSP, URLPattern, content template and (optionally) a target and required security permission. Examples of Commands include "view a page," "create a group," and "edit user preferences."
Commands come in two flavors: "static" and "targeted."
final
, threadsafe, and immutable. They have
no intrinsic idea of the context they are acting in. For example, the static
command PageCommand.VIEW
embodies the idea of viewing a page —
but exactly which page is left undefined. Static commands exist so
that they can be freely shared and passed around without incurring the
penalties of object creation. Static commands are a lot like naked request
contexts ("edit", "view", etc.) except that they include additional,
essential properites such as the associated URL pattern and content JSP.targetedCommand(Object)
and supplying the target object.
Implementing classes generally require a specific target type. For example,
the PageCommand
class requires that the target object be of type
WikiPage
.Concrete implementations of Command include:
For a given targeted Command, its getTarget()
method will return a
non-null
value. In addition, its
requiredPermission()
method will generally also return a non-null
value. It is each implementation's responsibility to construct and store the
correct Permission for a given Command and Target. For example, when
PageCommand.VIEW is targeted at the WikiPage Main
, the
Command's associated permission is
PagePermission "theWiki:Main", "view".
Static Commands, and targeted Commands that do not require specific
permissions to execute, return a null
result for
requiredPermission()
.
Modifier and Type | Method and Description |
---|---|
String |
getContentTemplate()
Returns the content template associated with a Command, such as
PreferencesContent.jsp . |
String |
getJSP()
Returns the JSP associated with the Command.
|
String |
getName()
Returns the human-friendly name for this command.
|
String |
getRequestContext()
Returns the request context associated with this Command.
|
Object |
getTarget()
Returns the target associated with a Command, if it was created with one.
|
String |
getURLPattern()
Returns the URL pattern associated with this Command.
|
Permission |
requiredPermission()
Returns the Permission required to successfully execute this Command.
|
Command |
targetedCommand(Object target)
Creates and returns a targeted Command by combining a target, such as a
WikiPage or GroupPrincipal into the existing Command.
|
Command targetedCommand(Object target)
target
object is of the
correct type. This method is guaranteed to return a non-null
Command (unless the target is an incorrect type).target
- the object to combine, such as a GroupPrincipal or WikiPageIllegalArgumentException
- if the target is not of the correct typeString getContentTemplate()
PreferencesContent.jsp
. For Commands that are not
page-related, this method will always return null
.
Calling methods should always check to see if the result
of this method is null
.String getJSP()
null
result, although in some cases the result may be an empty string.String getRequestContext()
null
String.Permission requiredPermission()
null
. For
example, the static command PageCommand.VIEW
doesn't require a
permission because it isn't referring to a particular WikiPage. However,
if this command targets a WikiPage called Main
(via
PageCommand.targetedCommand(Object)
, the resulting Command
would require the permission
PagePermission "yourWiki:Main", "view"
.null
if not requiredObject getTarget()
targetedCommand(Object)
will
always return a non-null
object. Calling
methods should always check to see if the result of this method
is null
.String getURLPattern()
null
String.Copyright © 2001-2019 The Apache Software Foundation. All rights reserved.