|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javax.servlet.GenericServlet | +--javax.servlet.http.HttpServlet | +--org.apache.struts.action.ActionServlet
ActionServlet represents the "controller" in the Model-View-Controller (MVC) design pattern for web applications that is commonly known as "Model 2". This nomenclature originated with a description in the JavaServerPages Specification, version 0.92, and has persisted ever since (in the absence of a better name).
Generally, a "Model 2" application is architected as follows:
RequestDispatcher.forward()
facility of the servlet API
to pass control to an appropriate JSP page to produce the next page
of the user interface.The standard version of ActionServlet
implements the
following logic for each incoming HTTP request. You can override
some or all of this functionality by subclassing this servlet and
implementing your own version of the processing.
Action
interface).
ActionForm
bean
associated with this mapping.perform()
method of this action class, passing
on a reference to the mapping that was used (thereby providing access
to the underlying ActionServlet and ServletContext, as well as any
specialized properties of the mapping itself), and the request and
response that were passed to the controller by the servlet container.
The standard version of ActionServlet
is configured based
on the following servlet initialization parameters, which you will specify
in the web application deployment descriptor (/WEB-INF/web.xml
)
for your application. Subclasses that specialize this servlet are free to
define additional initialization parameters.
initMapping()
, which logs to System.out
instead of the servlet log. [0]MessageResourcesFactory
used to create the application
MessageResources
object.org.apache.struts.action.ActionForward
that defaults the redirect
property to
false
(same as the ActionForward default value).
org.apache.struts.action.ActionForward
that defaults the redirect
property to
true
.
true
, and there is a
user session, identify and store an appropriate
java.util.Locale
object (under the standard key
identified by Action.LOCALE_KEY
) in the user's session
if there is not a Locale object there already.org.apache.struts.action.ActionMapping
that
defaults the scope
property to "request".
org.apache.struts.action.ActionMapping
that
defaults the scope
property to "session". (Same
as the ActionMapping default value).
true
, add HTTP headers
to every response intended to defeat browser caching of any response we
generate or forward to. [false]true
, set our application
resources to return null
if an unknown message key is used.
Otherwise, an error message including the offending message key will
be returned. [true]
Field Summary | |
protected FastHashMap |
actions
The set of Action instances that have been created and initialized, keyed by the fully qualified Java class name. |
protected MessageResources |
application
The resources object for our application resources (if any). |
protected int |
bufferSize
The size in bytes of the buffer used to read files from a client upload |
protected java.lang.String |
config
The context-relative path to our configuration resource. |
protected java.lang.String |
content
The default content type and character encoding to be set on each response (may be overridden by forwarded-to resources). |
protected FastHashMap |
dataSources
The JDBC data sources that has been configured for this application, if any, keyed by the servlet context attribute under which they are stored. |
protected int |
debug
The debugging detail level for this servlet. |
protected java.util.Locale |
defaultLocale
The default Locale for this server. |
protected java.lang.String |
factoryClass
The Java class name of the MessageResourcesFactory
class for the application message resources bundle. |
protected java.lang.String |
formBeanClass
The Java class name of the ActionFormBean implementation class to use. |
protected ActionFormBeans |
formBeans
The global ActionFormBean collection for this controller. |
protected java.lang.String |
forwardClass
The Java class name of the ActionForward implementation class to use. |
protected ActionForwards |
forwards
The global ActionForward collection for this controller. |
protected MessageResources |
internal
The resources object for our internal resources. |
protected java.lang.String |
internalName
The Java base name of our internal resources. |
protected boolean |
locale
Should we create a java.util.Locale for this user,
based on the HTTP headers of the request, if one is not present? |
protected java.lang.String |
mappingClass
The Java class name of our ActionMapping implementation class. |
protected ActionMappings |
mappings
The configured mappings for this web application, keyed by path. |
protected java.lang.String |
maxFileSize
The maximum size allowed for a client upload. |
protected java.lang.String |
multipartClass
The MultipartRequestHandler class name used for handling multipart form requests. |
protected boolean |
nocache
Include the no-caching headers in our response? |
protected java.lang.String[] |
registrations
The set of public identifiers, and corresponding resource names, for the versions of the configuration file DTDs that we know about. |
protected java.lang.String |
servletMapping
The URL pattern to which we are mapped in our web application deployment descriptor. |
protected java.lang.String |
servletName
The servlet name under which we are registered in our web application deployment descriptor. |
protected java.lang.String |
tempDir
The directory used to store temporary files for the DiskMultipartRequestHandler multipart implementation |
protected boolean |
validate
Are we using the new configuration file format? |
protected boolean |
validating
Should we use a validating XML parser to read the configuration file? |
Fields inherited from class javax.servlet.http.HttpServlet |
HEADER_IFMODSINCE, HEADER_LASTMOD, LSTRING_FILE, lStrings, METHOD_DELETE, METHOD_GET, METHOD_HEAD, METHOD_OPTIONS, METHOD_POST, METHOD_PUT, METHOD_TRACE |
Constructor Summary | |
ActionServlet()
|
Method Summary | |
void |
addDataSource(java.lang.String key,
javax.sql.DataSource dataSource)
Add a data source object to be used by this application. |
void |
addFormBean(ActionFormBean formBean)
Register a form bean definition to the set configured for this servlet. |
void |
addForward(ActionForward forward)
Register a logical forwarding to the set configured for this servlet. |
void |
addMapping(ActionMapping mapping)
Register a mapping to the set configured for this servlet. |
void |
addServletMapping(java.lang.String servletName,
java.lang.String urlPattern)
Remember a servlet mapping from our web application deployment descriptor, if it is for this servlet. |
void |
destroy()
Gracefully shut down this controller servlet, releasing any resources that were allocated at initialization. |
protected void |
destroyActions()
Gracefully shut down any action instances we have created. |
protected void |
destroyApplication()
Gracefully terminate use of the application MessageResources (if any). |
protected void |
destroyDataSources()
Gracefully terminate use of the data source associated with this application (if any). |
protected void |
destroyInternal()
Gracefully terminate use of the internal MessageResources. |
void |
doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Process an HTTP "GET" request. |
void |
doPost(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Process an HTTP "POST" request. |
javax.sql.DataSource |
findDataSource(java.lang.String key)
Return a JDBC data source associated with this application, if any. |
ActionFormBean |
findFormBean(java.lang.String name)
Return the form bean definition associated with the specified logical name, if any; otherwise return null . |
ActionForward |
findForward(java.lang.String name)
Return the forwarding associated with the specified logical name, if any; otherwise return null . |
ActionMapping |
findMapping(java.lang.String path)
Return the mapping associated with the specified request path, if any; otherwise return null . |
int |
getBufferSize()
Get the buffer size (how large of a chunk of data is recieved by the input stream at once) used for file uploading. |
int |
getDebug()
Return the debugging detail level for this servlet. |
java.lang.String |
getFormBeanClass()
Return the Java class name of the class used to instantiate ActionFormBean objects. |
java.lang.String |
getForwardClass()
Return the Java class name of the class used to instantiate ActionForward objects. |
java.lang.String |
getMappingClass()
Return the Java class name of the class used to instantiate ActionMapping objects. |
java.lang.String |
getMaxFileSize()
Get the maximum file size. |
java.lang.String |
getMultipartClass()
Get the class name of the MultipartRequestHandler implementation |
MessageResources |
getResources()
Return the application resources for this web application, if any. |
java.lang.String |
getTempDir()
Get the directory used to temporarily store form files |
void |
init()
Initialize this servlet. |
protected void |
initActions()
Initialize the collection of previously instantiated Action instances. |
protected void |
initApplication()
Initialize the MessageResources bundle for this application, if any. |
protected void |
initDataSources()
Initialize use of the data sources associated with this application (if any). |
protected void |
initDebug()
Initialize the debugging detail level for this application. |
protected Digester |
initDigester(int detail)
Construct and return a digester that uses the new configuration file format. |
protected Digester |
initDigesterOld(int detail)
Construct and return a digester that uses the old configuration file format. |
protected void |
initInternal()
Initialize our internal MessageResources bundle. |
protected void |
initMapping()
Initialize the mapping information for this application. |
protected void |
initOther()
Initialize other configuration parameters that have not yet been processed. |
protected void |
initServlet()
Initialize the servlet mapping under which our controller servlet is being accessed. |
protected void |
initUpload()
Initialize upload parameters and "bufferSize", "multipartClass", "maxFileSize", "tempDir" |
void |
log(java.lang.String message,
int level)
Log the specified message if the current debugging detail level for this servlet has been set to an equal or higher value. |
protected void |
process(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Process an HTTP request. |
protected Action |
processActionCreate(ActionMapping mapping,
javax.servlet.http.HttpServletRequest request)
Create or retrieve the Action instance that will process this request, or null if no such Action instance can be created. |
protected ActionForm |
processActionForm(ActionMapping mapping,
javax.servlet.http.HttpServletRequest request)
Retrieve and return the ActionForm bean associated with
this mapping, creating and stashing one if necessary. |
protected void |
processActionForward(ActionForward forward,
ActionMapping mapping,
ActionForm formInstance,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Forward to the specified destination, by the specified mechanism, if an ActionForward instance was returned by the
Action . |
protected ActionForward |
processActionPerform(Action action,
ActionMapping mapping,
ActionForm formInstance,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Ask the specified Action instance to handle this request. |
protected void |
processContent(javax.servlet.http.HttpServletResponse response)
Set the default content type (with optional character encoding) for all responses. |
protected boolean |
processForward(ActionMapping mapping,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Process a forward requested by this mapping, if any. |
protected boolean |
processInclude(ActionMapping mapping,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Process an include requested by this mapping, if any. |
protected void |
processLocale(javax.servlet.http.HttpServletRequest request)
Automatically calculate an appropriate java.util.Locale
for this user, and store it in their session, if there is no such
Locale object present already. |
protected ActionMapping |
processMapping(java.lang.String path,
javax.servlet.http.HttpServletRequest request)
Identify and return an appropriate ActionMapping for the specified path. |
protected void |
processNoCache(javax.servlet.http.HttpServletResponse response)
Render the HTTP headers to defeat browser caching if requested. |
protected java.lang.String |
processPath(javax.servlet.http.HttpServletRequest request)
Identify and return the path component (from the request URI) that we will use to select an ActionMapping to dispatch with. |
protected void |
processPopulate(ActionForm formInstance,
ActionMapping mapping,
javax.servlet.http.HttpServletRequest request)
Populate the properties of the specified ActionForm from the request parameters included with this request. |
protected boolean |
processPreprocess(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
General purpose preprocessing hook that can be overridden to support application specific preprocessing activity. |
protected boolean |
processValidate(ActionMapping mapping,
ActionForm formInstance,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
Call the validate() method of the specified ActionForm,
and forward back to the input form if there are any errors. |
void |
reload()
Reload the configuration of this controller servlet from our underlying configuration files. |
void |
removeFormBean(ActionFormBean formBean)
Deregister a form bean definition from the set configured for this servlet. |
void |
removeForward(ActionForward forward)
Deregister a forwarding from the set configured for this servlet. |
void |
removeMapping(ActionMapping mapping)
Deregister a mapping from the set configured for this servlet. |
void |
setBufferSize(int bufferSize)
Set the buffer size (how large of a chunk of data is recieved by the input stream at once) used for file uploading. |
void |
setFormBeanClass(java.lang.String formBeanClass)
Set the Java class name of the class used to instantiate ActionFormBean objects. |
void |
setForwardClass(java.lang.String forwardClass)
Set the Java class name of the class used to instantiate ActionForward objects. |
void |
setMappingClass(java.lang.String mappingClass)
Set the Java class name of the class used to instantiate ActionMapping objects. |
void |
setMaxFileSize(java.lang.String maxFileSize)
Set the maximum file size that a client can upload, number String with a trailing letter indicating the size. |
void |
setMultipartClass(java.lang.String multipartClass)
Set the class name of the MultipartRequestHandler implementation |
void |
setTempDir(java.lang.String tempDir)
Set the directory used to temporarily store files for MultipartRequestHandler implementations that write to the disk |
Methods inherited from class javax.servlet.http.HttpServlet |
|
Methods inherited from class javax.servlet.GenericServlet |
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait |
Field Detail |
protected FastHashMap actions
protected MessageResources application
protected java.lang.String config
protected java.lang.String content
protected FastHashMap dataSources
protected int debug
protected final java.util.Locale defaultLocale
protected java.lang.String factoryClass
MessageResourcesFactory
class for the application message resources bundle.protected java.lang.String formBeanClass
protected ActionFormBeans formBeans
protected java.lang.String forwardClass
protected ActionForwards forwards
protected MessageResources internal
protected java.lang.String internalName
protected boolean locale
java.util.Locale
for this user,
based on the HTTP headers of the request, if one is not present?protected java.lang.String mappingClass
protected ActionMappings mappings
protected boolean nocache
protected java.lang.String[] registrations
protected java.lang.String servletMapping
protected java.lang.String servletName
protected boolean validate
protected boolean validating
protected int bufferSize
protected java.lang.String maxFileSize
protected java.lang.String multipartClass
protected java.lang.String tempDir
Constructor Detail |
public ActionServlet()
Method Detail |
public void destroy()
destroy
in class javax.servlet.GenericServlet
public void init() throws javax.servlet.ServletException
init
in class javax.servlet.GenericServlet
javax.servlet.ServletException
- if we cannot configure ourselves correctlypublic void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
doGet
in class javax.servlet.http.HttpServlet
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occurspublic void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
doPost
in class javax.servlet.http.HttpServlet
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occurspublic void addDataSource(java.lang.String key, javax.sql.DataSource dataSource)
key
- The servlet context attribute key under which to store
this data source, or null
for the defaultdataSource
- The data source to be usedpublic void addFormBean(ActionFormBean formBean)
formBean
- The form bean definition to be addedpublic void addForward(ActionForward forward)
forward
- The forwarding to be addedpublic void addMapping(ActionMapping mapping)
mapping
- The mapping to be addedpublic void addServletMapping(java.lang.String servletName, java.lang.String urlPattern)
servletName
- The name of the servlet being mappedurlPattern
- The URL pattern to which this servlet is mappedpublic javax.sql.DataSource findDataSource(java.lang.String key)
key
- The servlet context attribute key under which this data
source is stored, or null
for the default.public ActionFormBean findFormBean(java.lang.String name)
null
.name
- Logical name of the requested form bean definitionpublic ActionForward findForward(java.lang.String name)
null
.name
- Logical name of the requested forwardingpublic ActionMapping findMapping(java.lang.String path)
null
.path
- Request path for which a mapping is requestedpublic int getBufferSize()
public int getDebug()
public java.lang.String getFormBeanClass()
ActionFormBean
objects.public java.lang.String getForwardClass()
ActionForward
objects.public java.lang.String getMappingClass()
ActionMapping
objects.public java.lang.String getMaxFileSize()
setMaxFileSize
for information on the number format used.public java.lang.String getMultipartClass()
public MessageResources getResources()
public java.lang.String getTempDir()
public void log(java.lang.String message, int level)
message
- Message to be loggedlevel
- Debugging detail level of this messagepublic void reload() throws java.io.IOException, javax.servlet.ServletException
java.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occurspublic void removeFormBean(ActionFormBean formBean)
formBean
- The form bean definition to be deregisteredpublic void removeForward(ActionForward forward)
forward
- The forwarding to be deregisteredpublic void removeMapping(ActionMapping mapping)
mapping
- The mapping to be deregisteredpublic void setBufferSize(int bufferSize)
bufferSize
- The size in bytes of the bufferpublic void setFormBeanClass(java.lang.String formBeanClass)
ActionFormBean
objects.formBeanClass
- The new class namepublic void setForwardClass(java.lang.String forwardClass)
ActionForward
objects.forwardClass
- The new class namepublic void setMappingClass(java.lang.String mappingClass)
ActionMapping
objects.mappingClass
- The new class namepublic void setMaxFileSize(java.lang.String maxFileSize)
setMaxFileSize
("500M").maxFileSize
- A String representing the maximum file size.public void setMultipartClass(java.lang.String multipartClass)
multipartClass
- A qualified classname of the MultipartRequestHandler implementationpublic void setTempDir(java.lang.String tempDir)
tempDir
- A platform-dependant String representing the path to the temporary directoryprotected void destroyActions()
protected void destroyApplication()
protected void destroyDataSources()
protected void destroyInternal()
protected void initActions()
protected void initApplication() throws javax.servlet.ServletException
javax.servlet.ServletException
- if we cannot initialize these resourcesprotected void initDataSources() throws javax.servlet.ServletException
javax.servlet.ServletException
- if a fatal initialization error occursprotected void initDebug() throws javax.servlet.ServletException
javax.servlet.ServletException
- if we cannot initialize these resourcesprotected Digester initDigester(int detail)
protected Digester initDigesterOld(int detail)
protected void initInternal() throws javax.servlet.ServletException
javax.servlet.ServletException
- if we cannot initialize these resourcesprotected void initMapping() throws java.io.IOException, javax.servlet.ServletException
java.io.IOException
- if an input/output error is encounteredjavax.servlet.ServletException
- if we cannot initialize these resourcesprotected void initOther() throws javax.servlet.ServletException
javax.servlet.ServletException
- if we cannot initialize these resourcesprotected void initServlet() throws javax.servlet.ServletException
&html:form>
tag to generate correct destination URLs for form submissions.protected void initUpload() throws javax.servlet.ServletException
javax.servlet.ServletException
- if there are invalid parametersprotected void process(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
request
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occursprotected Action processActionCreate(ActionMapping mapping, javax.servlet.http.HttpServletRequest request)
null
if no such Action instance can be created.mapping
- The ActionMapping we are processingrequest
- The servlet request we are processingprotected ActionForm processActionForm(ActionMapping mapping, javax.servlet.http.HttpServletRequest request)
ActionForm
bean associated with
this mapping, creating and stashing one if necessary. If there is no
form bean associated with this mapping, return null
.mapping
- The ActionMapping we are processingrequest
- The servlet request we are processingprotected void processActionForward(ActionForward forward, ActionMapping mapping, ActionForm formInstance, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
ActionForward
instance was returned by the
Action
.forward
- The ActionForward returned by our actionmapping
- The ActionMapping we are processingformInstance
- The ActionForm we are processingrequest
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occursprotected ActionForward processActionPerform(Action action, ActionMapping mapping, ActionForm formInstance, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
ActionForward
instance (if any) returned by
the called Action
.action
- The Action to process this requestmapping
- The ActionMapping we are processingformInstance
- The ActionForm we are processingrequest
- The servlet request we are processingresponse
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occursprotected void processContent(javax.servlet.http.HttpServletResponse response)
response
- The response we are processingprotected boolean processForward(ActionMapping mapping, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
true
if processing of this request should continue (i.e.
be processed by an Action class), or false
if we have
already handled this request.mapping
- The ActionMapping we are processingrequest
- The request we are processingresponse
- The response we are processingjava.io.IOException
- if the included resource throws an exceptionjavax.servlet.ServletException
- if the included resource throws an
exceptionprotected boolean processInclude(ActionMapping mapping, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
true
if processing of this request should continue (i.e.
be processed by an Action class), or false
if we have
already handled this request.mapping
- The ActionMapping we are processingrequest
- The request we are processingresponse
- The response we are processingjava.io.IOException
- if the included resource throws an exceptionjavax.servlet.ServletException
- if the included resource throws an
exceptionprotected void processLocale(javax.servlet.http.HttpServletRequest request)
java.util.Locale
for this user, and store it in their session, if there is no such
Locale object present already.request
- The request we are processingprotected ActionMapping processMapping(java.lang.String path, javax.servlet.http.HttpServletRequest request)
null
.
The request
parameter is available if you need to make
decisions on available mappings (such as checking permissions) based
on request parameters or other properties, but it is not used in the
default implementation.path
- Path component used to select a mappingrequest
- The request we are processingprotected void processNoCache(javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
response
- The servlet response we are creatingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occursprotected java.lang.String processPath(javax.servlet.http.HttpServletRequest request)
null
.request
- The servlet request we are processingprotected boolean processPreprocess(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
The default implementation does nothing.
request
- The servlet request we are processingresponse
- The servlet response we are generatingtrue
if the remainder of the standard processing
should be performed, or false
if the response has already
been created so the calling method should immediately exitjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occursprotected void processPopulate(ActionForm formInstance, ActionMapping mapping, javax.servlet.http.HttpServletRequest request) throws javax.servlet.ServletException
formInstance
- The ActionForm we are processingmapping
- The ActionMapping we are processingrequest
- The servlet request we are processingjavax.servlet.ServletException
- if thrown by RequestUtils.populate()protected boolean processValidate(ActionMapping mapping, ActionForm formInstance, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException
validate()
method of the specified ActionForm,
and forward back to the input form if there are any errors. Return
true
if we should continue processing (and call the
Action
class perform()
method), or return
false
if we have already forwarded control back to the
input form.mapping
- The ActionMapping we are processingformInstance
- The ActionForm we are processingrequest
- The servlet request we are processingresponse
- The servlet response we are processingjava.io.IOException
- if an input/output error occursjavax.servlet.ServletException
- if a servlet exception occurs
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |