|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.catalina.core.ContainerBase org.apache.catalina.core.StandardWrapper
public class StandardWrapper
Standard implementation of the Wrapper interface that represents an individual servlet definition. No child Containers are allowed, and the parent Container must be a Context.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.apache.catalina.core.ContainerBase |
---|
ContainerBase.ContainerBackgroundProcessor, ContainerBase.PrivilegedAddChild |
Field Summary | |
---|---|
protected boolean |
asyncSupported
Async supported flag. |
protected long |
available
The date and time at which this servlet will become available (in milliseconds since the epoch), or zero if the servlet is available. |
protected javax.management.NotificationBroadcasterSupport |
broadcaster
The broadcaster that sends j2ee notifications. |
protected int |
classLoadTime
|
protected static java.lang.Class[] |
classType
Static class array used when the SecurityManager is turned on and Servlet.init is invoked. |
protected static java.lang.Class[] |
classTypeUsedInService
Static class array used when the SecurityManager is turned on and Servlet.service is invoked. |
protected int |
countAllocated
The count of allocations that are currently active for STM servlets. |
protected static java.lang.String[] |
DEFAULT_SERVLET_METHODS
|
protected java.lang.String |
description
Description. |
protected boolean |
dynamic
Dynamic flag. |
protected boolean |
enabled
Enabled flag. |
protected StandardWrapperFacade |
facade
The facade associated with this wrapper. |
protected static java.lang.String |
info
The descriptive information string for this implementation. |
protected javax.servlet.Servlet |
instance
The (single) initialized instance of this servlet. |
protected java.util.Stack |
instancePool
Stack containing the STM instances. |
protected InstanceSupport |
instanceSupport
The support object for our instance listeners. |
protected boolean |
isJspServlet
True if this StandardWrapper is for the JspServlet |
protected java.lang.String |
jspFile
The context-relative URI of the JSP file for this servlet. |
protected javax.management.ObjectName |
jspMonitorON
The ObjectName of the JSP monitoring mbean |
protected int |
loadOnStartup
The load-on-startup order value (negative value means load on first call) for this servlet. |
protected long |
loadTime
|
protected static org.jboss.logging.Logger |
log
|
protected java.util.ArrayList |
mappings
Mappings associated with the wrapper. |
protected int |
maxInstances
Maximum number of STM instances. |
protected Multipart |
multipartConfig
The multipart config annotation configured on this servlet. |
protected int |
nInstances
Number of instances currently loaded for a STM servlet. |
protected javax.management.MBeanNotificationInfo[] |
notificationInfo
|
protected java.util.HashMap |
parameters
The initialization parameters for this servlet, keyed by parameter name. |
protected java.util.HashMap |
references
The security role references for this servlet, keyed by role name used in the servlet. |
protected java.lang.String |
runAs
The run-as identity for this servlet. |
protected long |
sequenceNumber
The notification sequence number. |
protected java.lang.String |
servletClass
The fully qualified servlet class name for this servlet. |
protected javax.servlet.Servlet |
servletInstance
The (single) initialized instance of this servlet. |
protected javax.servlet.ServletSecurityElement |
servletSecurity
Associated ServletSecurity. |
protected boolean |
singleThreadModel
Does this servlet implement the SingleThreadModel interface? |
protected boolean |
swallowOutput
Should we swallow System.out |
protected org.apache.catalina.core.StandardWrapperValve |
swValve
|
protected long |
unloadDelay
Wait time for servlet unload in ms. |
protected boolean |
unloading
Are we unloading our servlet instance at the moment? |
Fields inherited from class org.apache.catalina.core.ContainerBase |
---|
backgroundProcessorDelay, children, cluster, CONTAINER_ARRAY, controller, domain, initialized, jarRepository, lifecycle, LISTENER_ARRAY, listeners, loader, logger, logName, manager, mserver, name, oname, parent, parentClassLoader, pipeline, realm, resources, sm, startChildren, started, suffix, support, type |
Fields inherited from interface org.apache.catalina.Container |
---|
ADD_CHILD_EVENT, ADD_MAPPER_EVENT, ADD_VALVE_EVENT, REMOVE_CHILD_EVENT, REMOVE_MAPPER_EVENT, REMOVE_VALVE_EVENT |
Fields inherited from interface org.apache.catalina.Lifecycle |
---|
AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, DESTROY_EVENT, INIT_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT |
Constructor Summary | |
---|---|
StandardWrapper()
Create a new StandardWrapper component with the default basic Valve. |
Method Summary | |
---|---|
void |
addChild(Container child)
Refuse to add a child Container, because Wrappers are the lowest level of the Container hierarchy. |
protected void |
addDefaultMapper(java.lang.String mapperClass)
Add a default Mapper implementation if none have been configured explicitly. |
void |
addInitParameter(java.lang.String name,
java.lang.String value)
Add a new servlet initialization parameter for this servlet. |
void |
addInstanceListener(InstanceListener listener)
Add a new listener interested in InstanceEvents. |
void |
addMapping(java.lang.String mapping)
Add a mapping associated with the Wrapper. |
void |
addNotificationListener(javax.management.NotificationListener listener,
javax.management.NotificationFilter filter,
java.lang.Object object)
|
void |
addSecurityReference(java.lang.String name,
java.lang.String link)
Add a new security role reference record to the set of records for this servlet. |
javax.servlet.Servlet |
allocate()
Allocate an initialized instance of this Servlet that is ready to have its service() method called. |
void |
backgroundProcess()
Execute a periodic task, such as reloading, etc. |
void |
deallocate(javax.servlet.Servlet servlet)
Return this previously allocated servlet to the pool of available instances. |
java.lang.String |
findInitParameter(java.lang.String name)
Return the value for the specified initialization parameter name, if any; otherwise return null . |
java.lang.String[] |
findInitParameters()
Return the names of all defined initialization parameters for this servlet. |
Wrapper |
findMappingObject()
FIXME: Fooling introspection ... |
java.lang.String[] |
findMappings()
Return the mappings associated with this wrapper. |
java.lang.String |
findSecurityReference(java.lang.String name)
Return the security role link for the specified security role reference name, if any; otherwise return null . |
java.lang.String[] |
findSecurityReferences()
Return the set of security role reference names associated with this servlet, if any; otherwise return a zero-length array. |
protected java.lang.reflect.Method[] |
getAllDeclaredMethods(java.lang.Class c)
|
boolean |
getAsyncSupported()
Return the async supported value. |
long |
getAvailable()
Return the available date/time for this servlet, in milliseconds since the epoch. |
int |
getClassLoadTime()
|
int |
getCountAllocated()
Return the number of active allocations of this servlet. |
java.lang.String |
getDescription()
Return the Servlet description. |
boolean |
getEnabled()
Return the enabled value. |
java.lang.String |
getEngineName()
|
int |
getErrorCount()
|
javax.servlet.ServletRegistration |
getFacade()
Get the facade ServletRegistration. |
java.lang.String |
getInfo()
Return descriptive information about this Container implementation and the corresponding version number, in the format <description>/<version> . |
java.lang.String |
getInitParameter(java.lang.String name)
Return the initialization parameter value for the specified name, if any; otherwise return null . |
java.util.Enumeration |
getInitParameterNames()
Return the set of initialization parameter names defined for this servlet. |
InstanceSupport |
getInstanceSupport()
Return the InstanceSupport object for this Wrapper instance. |
java.lang.String |
getJspFile()
Return the context-relative URI of the JSP file for this servlet. |
int |
getLoadOnStartup()
Return the load-on-startup order value (negative value means load on first call). |
java.lang.String |
getLoadOnStartupString()
|
long |
getLoadTime()
|
int |
getMaxInstances()
Return maximum number of instances that will be allocated when a single thread model servlet is used. |
long |
getMaxTime()
|
long |
getMinTime()
|
Multipart |
getMultipartConfig()
Multipart configuration for this Servlet. |
javax.management.MBeanNotificationInfo[] |
getNotificationInfo()
|
long |
getProcessingTime()
|
int |
getRequestCount()
|
static java.lang.Throwable |
getRootCause(javax.servlet.ServletException e)
Extract the root cause from a servlet exception. |
java.lang.String |
getRunAs()
Return the run-as identity for this servlet. |
javax.servlet.Servlet |
getServlet()
Return the associated servlet instance. |
java.lang.String |
getServletClass()
Return the fully qualified servlet class name for this servlet. |
javax.servlet.ServletContext |
getServletContext()
Return the servlet context with which this servlet is associated. |
java.lang.String[] |
getServletMethods()
Gets the names of the methods supported by the underlying servlet. |
java.lang.String |
getServletName()
Return the name of this servlet. |
javax.servlet.ServletSecurityElement |
getServletSecurity()
Get an associated ServletSecurity, if any. |
void |
incrementErrorCount()
Increment the error count used for monitoring. |
protected boolean |
isContainerProvidedServlet(java.lang.String classname)
Return true if the specified class name represents a
container provided servlet class that should be loaded by the
server class loader. |
boolean |
isDynamic()
Get the flag that indicates if the wrapper was added programmatically. |
boolean |
isEventProvider()
|
boolean |
isSingleThreadModel()
Return true if the servlet class represented by this
component implements the SingleThreadModel interface. |
boolean |
isStateManageable()
|
boolean |
isStatisticsProvider()
|
boolean |
isUnavailable()
Is this servlet currently unavailable? |
void |
load()
Load and initialize an instance of this servlet, if there is not already at least one initialized instance. |
javax.servlet.Servlet |
loadServlet()
Load and initialize an instance of this servlet, if there is not already at least one initialized instance. |
protected void |
registerJMX(StandardContext ctx)
|
void |
removeInitParameter(java.lang.String name)
Remove the specified initialization parameter from this servlet. |
void |
removeInstanceListener(InstanceListener listener)
Remove a listener no longer interested in InstanceEvents. |
void |
removeMapping(java.lang.String mapping)
Remove a mapping associated with the wrapper. |
void |
removeNotificationListener(javax.management.NotificationListener listener)
Remove a JMX-NotificationListener |
void |
removeNotificationListener(javax.management.NotificationListener listener,
javax.management.NotificationFilter filter,
java.lang.Object object)
|
void |
removeSecurityReference(java.lang.String name)
Remove any security role reference for the specified role name. |
void |
setAsyncSupported(boolean value)
Set the async supported value. |
void |
setAvailable(long available)
Set the available date/time for this servlet, in milliseconds since the epoch. |
void |
setDescription(java.lang.String description)
Set the description. |
void |
setDynamic(boolean dynamic)
Set a flag that indicates if the wrapper was added programmatically. |
void |
setEnabled(boolean value)
Set the enabled value. |
void |
setErrorCount(int errorCount)
|
void |
setJspFile(java.lang.String jspFile)
Set the context-relative URI of the JSP file for this servlet. |
void |
setLoadOnStartup(int value)
Set the load-on-startup order value (negative value means load on first call). |
void |
setLoadOnStartupString(java.lang.String value)
Set the load-on-startup order value from a (possibly null) string. |
void |
setLoadTime(long loadTime)
|
void |
setMaxInstances(int maxInstances)
Set the maximum number of instances that will be allocated when a single thread model servlet is used. |
void |
setMaxTime(long maxTime)
|
void |
setMinTime(long minTime)
|
void |
setMultipartConfig(Multipart multipartConfig)
Set the multipart configuration for this Servlet. |
void |
setParent(Container container)
Set the parent Container of this Wrapper, but only if it is a Context. |
void |
setProcessingTime(long processingTime)
|
void |
setRequestCount(int requestCount)
|
void |
setRunAs(java.lang.String runAs)
Set the run-as identity for this servlet. |
void |
setServlet(javax.servlet.Servlet servlet)
Set the associated servlet instance. |
void |
setServletClass(java.lang.String servletClass)
Set the fully qualified servlet class name for this servlet. |
void |
setServletName(java.lang.String name)
Set the name of this servlet. |
java.util.Set<java.lang.String> |
setServletSecurity(javax.servlet.ServletSecurityElement servletSecurity)
Set an associated ServletSecurity on mappings which are currently associated with the Servlet. |
void |
start()
Start this component, pre-loading the servlet if the load-on-startup value is set appropriately. |
void |
stop()
Stop this component, gracefully shutting down the servlet if it has been initialized. |
java.lang.String |
toString()
Return a String representation of this component. |
void |
unavailable(javax.servlet.UnavailableException unavailable)
Process an UnavailableException, marking this servlet as unavailable for the specified amount of time. |
void |
unload()
Unload all initialized instances of this servlet, after calling the destroy() method for each instance. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static org.jboss.logging.Logger log
protected static final java.lang.String[] DEFAULT_SERVLET_METHODS
protected boolean asyncSupported
protected boolean dynamic
protected boolean enabled
protected long available
protected javax.management.NotificationBroadcasterSupport broadcaster
protected int countAllocated
protected java.lang.String description
protected StandardWrapperFacade facade
protected static final java.lang.String info
protected javax.servlet.Servlet instance
protected javax.servlet.Servlet servletInstance
protected InstanceSupport instanceSupport
protected java.lang.String jspFile
protected int loadOnStartup
protected Multipart multipartConfig
protected java.util.ArrayList mappings
protected java.util.HashMap parameters
protected java.util.HashMap references
protected java.lang.String runAs
protected javax.servlet.ServletSecurityElement servletSecurity
protected long sequenceNumber
protected java.lang.String servletClass
protected boolean singleThreadModel
protected boolean unloading
protected int maxInstances
protected int nInstances
protected java.util.Stack instancePool
protected long unloadDelay
protected boolean isJspServlet
protected javax.management.ObjectName jspMonitorON
protected boolean swallowOutput
protected org.apache.catalina.core.StandardWrapperValve swValve
protected long loadTime
protected int classLoadTime
protected static java.lang.Class[] classType
Servlet.init
is invoked.
protected static java.lang.Class[] classTypeUsedInService
Servlet.service
is invoked.
protected javax.management.MBeanNotificationInfo[] notificationInfo
Constructor Detail |
---|
public StandardWrapper()
Method Detail |
---|
public boolean getAsyncSupported()
getAsyncSupported
in interface Wrapper
public void setAsyncSupported(boolean value)
setAsyncSupported
in interface Wrapper
value
- New async supported valuepublic java.lang.String getDescription()
getDescription
in interface Wrapper
public void setDescription(java.lang.String description)
setDescription
in interface Wrapper
public boolean isDynamic()
Wrapper
isDynamic
in interface Wrapper
public void setDynamic(boolean dynamic)
Wrapper
setDynamic
in interface Wrapper
public boolean getEnabled()
getEnabled
in interface Wrapper
public void setEnabled(boolean value)
setEnabled
in interface Wrapper
value
- New enabled valuepublic long getAvailable()
getAvailable
in interface Wrapper
public void setAvailable(long available)
setAvailable
in interface Wrapper
available
- The new available date/timepublic int getCountAllocated()
public java.lang.String getEngineName()
public java.lang.String getInfo()
<description>/<version>
.
getInfo
in interface Container
getInfo
in class ContainerBase
public InstanceSupport getInstanceSupport()
getInstanceSupport
in interface Wrapper
public java.lang.String getJspFile()
getJspFile
in interface Wrapper
public void setJspFile(java.lang.String jspFile)
setJspFile
in interface Wrapper
jspFile
- JSP file URIpublic int getLoadOnStartup()
getLoadOnStartup
in interface Wrapper
public void setLoadOnStartup(int value)
setLoadOnStartup
in interface Wrapper
value
- New load-on-startup valuepublic void setLoadOnStartupString(java.lang.String value)
value
- New load-on-startup valuepublic java.lang.String getLoadOnStartupString()
public Multipart getMultipartConfig()
getMultipartConfig
in interface Wrapper
public void setMultipartConfig(Multipart multipartConfig)
setMultipartConfig
in interface Wrapper
public int getMaxInstances()
public void setMaxInstances(int maxInstances)
maxInstances
- New value of maxInstancespublic void setParent(Container container)
setParent
in interface Container
setParent
in class ContainerBase
container
- Proposed parent Containerpublic java.lang.String getRunAs()
getRunAs
in interface Wrapper
public void setRunAs(java.lang.String runAs)
setRunAs
in interface Wrapper
runAs
- New run-as identity valuepublic javax.servlet.ServletSecurityElement getServletSecurity()
getServletSecurity
in interface Wrapper
public java.util.Set<java.lang.String> setServletSecurity(javax.servlet.ServletSecurityElement servletSecurity)
setServletSecurity
in interface Wrapper
public java.lang.String getServletClass()
getServletClass
in interface Wrapper
public void setServletClass(java.lang.String servletClass)
setServletClass
in interface Wrapper
servletClass
- Servlet class namepublic void setServletName(java.lang.String name)
Container.setName()
method, and complements the
getServletName()
method required by the
ServletConfig
interface.
name
- The new name of this servletpublic boolean isSingleThreadModel()
true
if the servlet class represented by this
component implements the SingleThreadModel
interface.
public boolean isUnavailable()
isUnavailable
in interface Wrapper
public javax.servlet.ServletRegistration getFacade()
getFacade
in interface Wrapper
public java.lang.String[] getServletMethods() throws javax.servlet.ServletException
getServletMethods
in interface Wrapper
javax.servlet.ServletException
public void backgroundProcess()
backgroundProcess
in interface Container
backgroundProcess
in class ContainerBase
public static java.lang.Throwable getRootCause(javax.servlet.ServletException e)
e
- The servlet exceptionpublic void addChild(Container child)
addChild
in interface Container
addChild
in class ContainerBase
child
- Child container to be addedpublic void addInitParameter(java.lang.String name, java.lang.String value)
addInitParameter
in interface Wrapper
name
- Name of this initialization parameter to addvalue
- Value of this initialization parameter to addpublic void addInstanceListener(InstanceListener listener)
addInstanceListener
in interface Wrapper
listener
- The new listenerpublic void addMapping(java.lang.String mapping)
addMapping
in interface Wrapper
mapping
- The new wrapper mappingpublic void addSecurityReference(java.lang.String name, java.lang.String link)
addSecurityReference
in interface Wrapper
name
- Role name used within this servletlink
- Role name used within the web applicationpublic javax.servlet.Servlet getServlet()
getServlet
in interface Wrapper
public void setServlet(javax.servlet.Servlet servlet)
setServlet
in interface Wrapper
public javax.servlet.Servlet allocate() throws javax.servlet.ServletException
service()
method called. If the servlet class does
not implement SingleThreadModel
, the (only) initialized
instance may be returned immediately. If the servlet class implements
SingleThreadModel
, the Wrapper implementation must ensure
that this instance is not allocated again until it is deallocated by a
call to deallocate()
.
allocate
in interface Wrapper
javax.servlet.ServletException
- if the servlet init() method threw
an exception
javax.servlet.ServletException
- if a loading error occurspublic void deallocate(javax.servlet.Servlet servlet) throws javax.servlet.ServletException
deallocate
in interface Wrapper
servlet
- The servlet to be returned
javax.servlet.ServletException
- if a deallocation error occurspublic java.lang.String findInitParameter(java.lang.String name)
null
.
findInitParameter
in interface Wrapper
name
- Name of the requested initialization parameterpublic java.lang.String[] findInitParameters()
findInitParameters
in interface Wrapper
public java.lang.String[] findMappings()
findMappings
in interface Wrapper
public java.lang.String findSecurityReference(java.lang.String name)
null
.
findSecurityReference
in interface Wrapper
name
- Security role reference used within this servletpublic java.lang.String[] findSecurityReferences()
findSecurityReferences
in interface Wrapper
public Wrapper findMappingObject()
public void load() throws javax.servlet.ServletException
IMPLEMENTATION NOTE: Servlets whose classnames begin with
org.apache.catalina.
(so-called "container" servlets)
are loaded by the same classloader that loaded this class, rather than
the classloader for the current web application.
This gives such classes access to Catalina internals, which are
prevented for classes loaded for web applications.
load
in interface Wrapper
javax.servlet.ServletException
- if the servlet init() method threw
an exception
javax.servlet.ServletException
- if some other loading problem occurspublic javax.servlet.Servlet loadServlet() throws javax.servlet.ServletException
javax.servlet.ServletException
public void removeInitParameter(java.lang.String name)
removeInitParameter
in interface Wrapper
name
- Name of the initialization parameter to removepublic void removeInstanceListener(InstanceListener listener)
removeInstanceListener
in interface Wrapper
listener
- The listener to removepublic void removeMapping(java.lang.String mapping)
removeMapping
in interface Wrapper
mapping
- The pattern to removepublic void removeSecurityReference(java.lang.String name)
removeSecurityReference
in interface Wrapper
name
- Security role used within this servlet to be removedpublic java.lang.String toString()
toString
in class java.lang.Object
public void unavailable(javax.servlet.UnavailableException unavailable)
unavailable
in interface Wrapper
unavailable
- The exception that occurred, or null
to mark this servlet as permanently unavailablepublic void unload() throws javax.servlet.ServletException
destroy()
method for each instance. This can be used,
for example, prior to shutting down the entire servlet engine, or
prior to reloading all of the classes from the Loader associated with
our Loader's repository.
unload
in interface Wrapper
javax.servlet.ServletException
- if an exception is thrown by the
destroy() methodpublic java.lang.String getInitParameter(java.lang.String name)
null
.
getInitParameter
in interface javax.servlet.ServletConfig
name
- Name of the initialization parameter to retrieve
String
containing the value
of the initialization parameter, or null
if
the initialization parameter does not existpublic java.util.Enumeration getInitParameterNames()
getInitParameterNames
in interface javax.servlet.ServletConfig
Enumeration
of String
objects containing the names of the servlet's
initialization parameterspublic javax.servlet.ServletContext getServletContext()
getServletContext
in interface javax.servlet.ServletConfig
ServletContext
object, used
by the caller to interact with its servlet containerServletContext
public java.lang.String getServletName()
getServletName
in interface javax.servlet.ServletConfig
public long getProcessingTime()
public void setProcessingTime(long processingTime)
public long getMaxTime()
public void setMaxTime(long maxTime)
public long getMinTime()
public void setMinTime(long minTime)
public int getRequestCount()
public void setRequestCount(int requestCount)
public int getErrorCount()
public void setErrorCount(int errorCount)
public void incrementErrorCount()
incrementErrorCount
in interface Wrapper
public long getLoadTime()
public void setLoadTime(long loadTime)
public int getClassLoadTime()
protected void addDefaultMapper(java.lang.String mapperClass)
mapperClass
- Java class name of the default Mapperprotected boolean isContainerProvidedServlet(java.lang.String classname)
true
if the specified class name represents a
container provided servlet class that should be loaded by the
server class loader.
classname
- Name of the class to be checkedprotected java.lang.reflect.Method[] getAllDeclaredMethods(java.lang.Class c)
public void start() throws LifecycleException
start
in interface Lifecycle
start
in class ContainerBase
LifecycleException
- if a fatal error occurs during startuppublic void stop() throws LifecycleException
stop
in interface Lifecycle
stop
in class ContainerBase
LifecycleException
- if a fatal error occurs during shutdownprotected void registerJMX(StandardContext ctx)
public void removeNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object object) throws javax.management.ListenerNotFoundException
removeNotificationListener
in interface javax.management.NotificationEmitter
javax.management.ListenerNotFoundException
public javax.management.MBeanNotificationInfo[] getNotificationInfo()
getNotificationInfo
in interface javax.management.NotificationBroadcaster
public void addNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object object) throws java.lang.IllegalArgumentException
addNotificationListener
in interface javax.management.NotificationBroadcaster
java.lang.IllegalArgumentException
public void removeNotificationListener(javax.management.NotificationListener listener) throws javax.management.ListenerNotFoundException
removeNotificationListener
in interface javax.management.NotificationBroadcaster
javax.management.ListenerNotFoundException
NotificationBroadcaster.removeNotificationListener(javax.management.NotificationListener)
public boolean isEventProvider()
public boolean isStateManageable()
public boolean isStatisticsProvider()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |