|
DODS 7.1 API | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.lutris.appserver.server.sql.CoreDO
com.lutris.appserver.server.sql.CloneableDO
com.lutris.dods.builder.generator.dataobject.GenericDO
org.webdocwf.dods.access.SecureDO
public abstract class SecureDO
Field Summary |
---|
Fields inherited from class com.lutris.dods.builder.generator.dataobject.GenericDO |
---|
colChanged, dirty |
Fields inherited from class com.lutris.appserver.server.sql.CoreDO |
---|
originalData, persistent, versioning |
Constructor Summary | |
---|---|
SecureDO()
|
|
SecureDO(boolean isView)
|
|
SecureDO(ObjectId id)
|
|
SecureDO(java.sql.ResultSet rs)
|
|
SecureDO(java.lang.String dbName)
|
|
SecureDO(java.lang.String dbName,
boolean isView)
|
|
SecureDO(java.lang.String dbName,
ObjectId id)
|
|
SecureDO(java.lang.String dbName,
java.sql.ResultSet rs)
|
Method Summary | |
---|---|
void |
assertDOCopyAccess(User usr)
Ensure that the given user is allowed to copy the DO |
void |
assertDODeleteAccess(User usr)
Ensure that the given user is allowed to delete the DO |
void |
assertDOGetAccess(User usr)
Ensure that the given user is allowed to read the DO existance |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
boolean value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
byte[] value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
byte value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
double value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
float value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
int value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
long value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
java.lang.Object value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
void |
assertDOGetDOValueAccess(java.lang.String attrName,
SecureDO value,
User usr)
Ensure that the given user is allowed to read the object in a given pointer |
protected void |
assertDOGetDOValueAccess(java.lang.String attrName,
short value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
void |
assertDOGetVersionAccess(User usr)
Ensure that the given user is allowed to access the version number |
void |
assertDOIsReadOnlyAccess(User usr)
Ensure that the given user is allowed to read the readonly flag |
void |
assertDOMakeReadOnlyAccess(User usr)
Ensure that the given user is allowed to set the object readonly |
void |
assertDOMakeReadWriteAccess(User usr)
Ensure that the given user is allowed to set the object readwrite |
protected abstract void |
checkLoad()
Load the actual DO data if necessary. |
abstract void |
delete()
Deletes the DO from its table. |
abstract void |
delete(DBTransaction dbt)
Deletes the DO from its table. |
void |
delete(DBTransaction dbt,
User usr)
Deletes the DO from its table. |
void |
delete(User usr)
Deletes the DO from its table. |
abstract java.lang.String |
get_Handle()
Subclass should override this method if wants to use it. |
java.lang.String |
get_Handle(User usr)
The get_Handle() method is used to set the value for each GUI option, and the hasMatchingHandle() methods are used to lookup the Data Object when the selection has been made. |
int |
get_Version()
Returns this object's version. |
int |
get_Version(User usr)
Returns this object's version. |
java.lang.String |
getHandle(User usr)
Deprecated. Use get_Handle() instead. |
int |
getVersion()
Deprecated. Use get_Version() |
boolean |
hasDOCopyAccess(User usr)
Check whether the given user is allowed to copy the DO |
boolean |
hasDODeleteAccess(User usr)
Check if the given user is allowed to delete the DO |
boolean |
hasDOGetAccess(User usr)
Check whether the given user is allowed to read the DO existance |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
boolean value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
byte[] value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
byte value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
double value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
float value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
int value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
long value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
java.lang.Object value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
boolean |
hasDOGetAttrAccess(java.lang.String attrName,
short value,
User usr)
Check whether the given user is allowed to read the attribute and the value |
protected boolean |
hasDOGetDOValueAccess(boolean value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(byte[] value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(byte value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(double value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(float value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(int value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(long value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(java.lang.Object value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
protected boolean |
hasDOGetDOValueAccess(SecureDO value,
User usr)
Check whether the given user is allowed to read the object in a given pointer |
protected boolean |
hasDOGetDOValueAccess(short value,
User usr)
Dummy method for generated datatypes WebDocWf extension |
boolean |
hasDOGetVersionAccess(User usr)
Check whether the given user is allowed to access the version number |
boolean |
hasDOIsReadOnlyAccess(User usr)
Check whether the given user is allowed to read the readonly flag |
boolean |
hasDOMakeReadOnlyAccess(User usr)
Check whether the given user is allowed to set the object readonly |
boolean |
hasDOMakeReadWriteAccess(User usr)
Check whether the given user is allowed to set the object readwrite |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
boolean oldValue,
boolean newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
byte[] oldValue,
byte[] newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
byte oldValue,
byte newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
double oldValue,
double newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
float oldValue,
float newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
int oldValue,
int newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
long oldValue,
long newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
java.lang.Object oldValue,
java.lang.Object newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
protected boolean |
hasDOSetAttrAccess(java.lang.String attrName,
short oldValue,
short newValue,
User usr)
Check whether the given user is allowed to update the attribute and the value |
abstract boolean |
hasMatchingHandle(java.lang.String handle)
|
boolean |
hasMatchingHandle(java.lang.String handle,
User usr)
hasMatchingHandle |
boolean |
hasQueryFindAccess(User usr)
Check whether the given user is allowed to find the object using a query |
abstract boolean |
isReadOnly()
isReadOnly() Returns true if the data for this object has been marked read-only. |
boolean |
isReadOnly(User usr)
isReadOnly() Returns true if the data for this object has been marked read-only. |
abstract void |
makeReadOnly()
makeReadOnly() Mark the object as readonly WebDocWf extension |
void |
makeReadOnly(User usr)
makeReadOnly() Mark the object as readonly |
abstract void |
makeReadWrite()
Mark the object as readwrite WebDocWf extension |
void |
makeReadWrite(User usr)
Mark the object as readwrite |
Methods inherited from class com.lutris.appserver.server.sql.CloneableDO |
---|
clone |
Methods inherited from class com.lutris.appserver.server.sql.CoreDO |
---|
addToCache, deleteFromCache, disableVersioning, dumpData, evict, executeLockingStatement, finalizeDelete, get_NewVersion, get_OId, get_OIdColumnName, get_versionColumnName, getDeleteStatement, getInsertStatement, getNewVersion, getOId, getOIdColumnName, getOriginalVersion, getTableName, getUpdateStatement, getVersionColumnName, isPersistent, makeInvisible, makeVisible, objectIdentityType, originalData_get, refresh, set_NewVersion, set_OIdColumnName, set_Version, set_versionColumnName, setNewVersion, setOId, setOIdColumnName, setPersistent, setVersion, setVersionColumnName, updateCache |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SecureDO() throws DatabaseManagerException, ObjectIdException
DatabaseManagerException
ObjectIdException
public SecureDO(java.lang.String dbName) throws DatabaseManagerException, ObjectIdException
DatabaseManagerException
ObjectIdException
public SecureDO(boolean isView) throws ObjectIdException, DatabaseManagerException
ObjectIdException
DatabaseManagerException
public SecureDO(java.lang.String dbName, boolean isView) throws ObjectIdException, DatabaseManagerException
ObjectIdException
DatabaseManagerException
public SecureDO(ObjectId id) throws ObjectIdException, DatabaseManagerException
ObjectIdException
DatabaseManagerException
public SecureDO(java.lang.String dbName, ObjectId id) throws ObjectIdException, DatabaseManagerException
ObjectIdException
DatabaseManagerException
public SecureDO(java.sql.ResultSet rs) throws java.sql.SQLException, ObjectIdException, DatabaseManagerException
java.sql.SQLException
ObjectIdException
DatabaseManagerException
public SecureDO(java.lang.String dbName, java.sql.ResultSet rs) throws java.sql.SQLException, ObjectIdException, DatabaseManagerException
java.sql.SQLException
ObjectIdException
DatabaseManagerException
Method Detail |
---|
public abstract void delete() throws java.sql.SQLException, DatabaseManagerException, DataObjectException, RefAssertionException, DBRowUpdateException, QueryException
delete
in class GenericDO
DatabaseManagerException
- if a Transaction can not be created.
RefAssertionException
- thrown by okTo method.
java.sql.SQLException
- if any SQL errors occur.
DataObjectException
DBRowUpdateException
QueryException
public abstract void delete(DBTransaction dbt) throws java.sql.SQLException, DatabaseManagerException, DataObjectException, RefAssertionException, DBRowUpdateException, QueryException
dbt
- The transaction object to use for this operation.
DatabaseManagerException
- if a Transaction can not be created.
DBRowUpdateException
- if a version error occurs.
RefAssertionException
- thrown by okTo method.
java.sql.SQLException
- if any SQL errors occur.
DataObjectException
QueryException
protected abstract void checkLoad() throws DataObjectException
DataObjectException
- If a data access error occurs.public abstract java.lang.String get_Handle() throws DatabaseManagerException
GenericDO
get_Handle
in class GenericDO
DatabaseManagerException
public abstract boolean hasMatchingHandle(java.lang.String handle)
public abstract boolean isReadOnly()
public abstract void makeReadOnly()
public abstract void makeReadWrite()
public void delete(User usr) throws java.sql.SQLException, DatabaseManagerException, DataObjectException, RefAssertionException, DBRowUpdateException, QueryException, AccessException
usr
- The user for security checks
DatabaseManagerException
- if a Transaction can not be created.
RefAssertionException
- thrown by okTo method.
java.sql.SQLException
- if any SQL errors occur.
AccessException
- The user is not allowed to delete the DO
This is a WebDocWf extension for DODS row instance security
DataObjectException
DBRowUpdateException
QueryException
public void assertDODeleteAccess(User usr) throws AccessException
usr
- The user for security checks
AccessException
- The user is not allowed to delete the DO
This is a WebDocWf extension for DODS row instance securitypublic boolean hasDODeleteAccess(User usr) throws AccessEvalException
usr
- The user for security checks
AccessEvalException
- Error during access evaluation
This is a WebDocWf extension for DODS row instance securitypublic void delete(DBTransaction dbt, User usr) throws java.sql.SQLException, DatabaseManagerException, DataObjectException, RefAssertionException, DBRowUpdateException, QueryException, AccessException
usr
- The user for security checksdbt
- The transaction object to use for this operation.
DatabaseManagerException
- if a Transaction can not be created.
RefAssertionException
- thrown by okTo method.
java.sql.SQLException
- if any SQL errors occur.
AccessException
- The user is not allowed to delete the DO
This is a WebDocWf extension for DODS row instance security
DataObjectException
DBRowUpdateException
QueryException
public void assertDOCopyAccess(User usr) throws AccessException
usr
- The user for security check
AccessException
- The user is not allowed to make a copy
WebDocWf extensionpublic boolean hasDOCopyAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public java.lang.String get_Handle(User usr) throws DatabaseManagerException, AccessException
usr
- The user for security check
DatabaseManagerException
- If a connection to the database cannot be established, etc.
AccessException
- The user is not allowed to read the object existance
WebDocWf extensionpublic java.lang.String getHandle(User usr) throws DatabaseManagerException, AccessException
usr
- The user for security check
DatabaseManagerException
- If a connection to the database cannot be established, etc.
AccessException
- The user is not allowed to read the object existance
WebDocWf extensionpublic boolean hasMatchingHandle(java.lang.String handle, User usr) throws AccessException
handle
- String version of DO idusr
- The user for security check
AccessException
- The user is not allowed to read the object existance
WebDocWf extensionpublic boolean hasDOGetAttrAccess(java.lang.String attrName, java.lang.Object value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, boolean value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, byte value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, short value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, int value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, long value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, float value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, double value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
public boolean hasDOGetAttrAccess(java.lang.String attrName, byte[] value, User usr) throws AccessEvalException
attrName
- The name of the attributevalue
- The current value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, java.lang.Object oldValue, java.lang.Object newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, boolean oldValue, boolean newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, byte oldValue, byte newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, short oldValue, short newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, int oldValue, int newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, long oldValue, long newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, float oldValue, float newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, double oldValue, double newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
protected boolean hasDOSetAttrAccess(java.lang.String attrName, byte[] oldValue, byte[] newValue, User usr) throws AccessEvalException
attrName
- The name of the attributeoldValue
- The current value of the attributenewValue
- The new value of the attributeusr
- The user for security check
AccessEvalException
public void assertDOGetDOValueAccess(java.lang.String attrName, SecureDO value, User usr) throws AccessException
attrName
- The name of the attributevalue
- The object in the pointerusr
- The user for security check
AccessException
- The user is not allowed to read the object
WebDocWf extensionprotected boolean hasDOGetDOValueAccess(SecureDO value, User usr) throws AccessEvalException
value
- The object in the pointerusr
- The user for security check
AccessEvalException
protected boolean hasDOGetDOValueAccess(java.lang.Object value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(boolean value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(byte value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(short value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(int value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(long value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(float value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(double value, User usr) throws AccessEvalException
AccessEvalException
protected boolean hasDOGetDOValueAccess(byte[] value, User usr) throws AccessEvalException
AccessEvalException
protected void assertDOGetDOValueAccess(java.lang.String attrName, java.lang.Object value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, boolean value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, byte value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, short value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, int value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, long value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, float value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, double value, User usr) throws AccessException
AccessException
protected void assertDOGetDOValueAccess(java.lang.String attrName, byte[] value, User usr) throws AccessException
AccessException
public boolean hasQueryFindAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public int getVersion()
getVersion
in class CoreDO
public int get_Version()
get_Version
in class CoreDO
public int get_Version(User usr) throws AccessException
usr
- The user for security check
AccessException
public void assertDOGetVersionAccess(User usr) throws AccessException
usr
- The user for security check
WebDocWf extension
AccessException
public boolean hasDOGetVersionAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public boolean isReadOnly(User usr) throws AccessException
usr
- The user for security check
AccessException
public void assertDOIsReadOnlyAccess(User usr) throws AccessException
usr
- The user for security check
WebDocWf extension
AccessException
public boolean hasDOIsReadOnlyAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public void assertDOGetAccess(User usr) throws AccessException
usr
- The user for security check
AccessException
- The user is not allowed to read the instance existance
WebDocWf extensionpublic boolean hasDOGetAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public void makeReadOnly(User usr) throws AccessException
usr
- The user for security check
WebDocWf extension
AccessException
public void assertDOMakeReadOnlyAccess(User usr) throws AccessException
usr
- The user for security check
WebDocWf extension
AccessException
public boolean hasDOMakeReadOnlyAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public void makeReadWrite(User usr) throws AccessException
usr
- The user for security check
WebDocWf extension
AccessException
public void assertDOMakeReadWriteAccess(User usr) throws AccessException
usr
- The user for security check
WebDocWf extension
AccessException
public boolean hasDOMakeReadWriteAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
|
DODS 7.1 API | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |