|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface TopLinkOperations
Interface that specifies a basic set of TopLink operations. Implemented by TopLinkTemplate. Not often used, but a useful option to enhance testability, as it can easily be mocked or stubbed.
Provides TopLinkTemplate's data access methods that mirror various TopLink Session/UnitOfWork methods. See the TopLink javadocs for details on those methods.
Method Summary | |
---|---|
Object |
copy(Object entity)
Create a detached copy of the given entity object, using TopLink's default ObjectCopyingPolicy. |
Object |
copy(Object entity,
oracle.toplink.sessions.ObjectCopyingPolicy copyingPolicy)
Create a detached copy of the given entity object. |
List |
copyAll(Collection entities)
Create detached copies of all given entity objects, using TopLink's default ObjectCopyingPolicy. |
List |
copyAll(Collection entities,
oracle.toplink.sessions.ObjectCopyingPolicy copyingPolicy)
Create detached copies of all given entity objects. |
Object |
deepMerge(Object entity)
Reassociate the given entity copy with the current UnitOfWork, using deep merging of all contained entities. |
void |
delete(Object entity)
Delete the given entity. |
void |
deleteAll(Collection entities)
Delete all given entities. |
Object |
execute(TopLinkCallback action)
Execute the action specified by the given action object within a TopLink Session. |
List |
executeFind(TopLinkCallback action)
Execute the specified action assuming that the result object is a Collection. |
Object |
executeNamedQuery(Class entityClass,
String queryName)
Execute a given named query with the given arguments. |
Object |
executeNamedQuery(Class entityClass,
String queryName,
boolean enforceReadOnly)
Execute a given named query with the given arguments. |
Object |
executeNamedQuery(Class entityClass,
String queryName,
Object[] args)
Execute a given named query with the given arguments. |
Object |
executeNamedQuery(Class entityClass,
String queryName,
Object[] args,
boolean enforceReadOnly)
Execute a given named query with the given arguments. |
Object |
executeQuery(oracle.toplink.queryframework.DatabaseQuery query)
Execute the given query object with the given arguments. |
Object |
executeQuery(oracle.toplink.queryframework.DatabaseQuery query,
boolean enforceReadOnly)
Execute the given query object with the given arguments. |
Object |
executeQuery(oracle.toplink.queryframework.DatabaseQuery query,
Object[] args)
Execute the given query object with the given arguments. |
Object |
executeQuery(oracle.toplink.queryframework.DatabaseQuery query,
Object[] args,
boolean enforceReadOnly)
Execute the given query object with the given arguments. |
Object |
merge(Object entity)
Reassociate the given entity copy with the current UnitOfWork, using simple merging. |
Object |
mergeWithReferences(Object entity)
Reassociate the given entity copy with the current UnitOfWork, using merging with all references from this clone. |
Object |
read(Class entityClass,
oracle.toplink.queryframework.Call call)
Read an entity instance of the given class, as returned by the given call. |
Object |
read(Class entityClass,
oracle.toplink.queryframework.Call call,
boolean enforceReadOnly)
Read an entity instance of the given class, as returned by the given call. |
Object |
read(Class entityClass,
oracle.toplink.expressions.Expression expression)
Read an entity instance of the given class that matches the given expression. |
Object |
read(Class entityClass,
oracle.toplink.expressions.Expression expression,
boolean enforceReadOnly)
Read an entity instance of the given class that matches the given expression. |
List |
readAll(Class entityClass)
Read all entity instances of the given class. |
List |
readAll(Class entityClass,
boolean enforceReadOnly)
Read all entity instances of the given class. |
List |
readAll(Class entityClass,
oracle.toplink.queryframework.Call call)
Read all entity instances of the given class, as returned by the given call. |
List |
readAll(Class entityClass,
oracle.toplink.queryframework.Call call,
boolean enforceReadOnly)
Read all entity instances of the given class, as returned by the given call. |
List |
readAll(Class entityClass,
oracle.toplink.expressions.Expression expression)
Read all entity instances of the given class that match the given expression. |
List |
readAll(Class entityClass,
oracle.toplink.expressions.Expression expression,
boolean enforceReadOnly)
Read all entity instances of the given class that match the given expression. |
Object |
readAndCopy(Class entityClass,
Object id)
Read the entity instance of the given class with the given id, throwing an exception if not found. |
Object |
readAndCopy(Class entityClass,
Object[] keys)
Read the entity instance of the given class with the given composite id, throwing an exception if not found. |
Object |
readAndCopy(Class entityClass,
Object[] keys,
boolean enforceReadOnly)
Read the entity instance of the given class with the given composite id, throwing an exception if not found. |
Object |
readAndCopy(Class entityClass,
Object id,
boolean enforceReadOnly)
Read the entity instance of the given class with the given id, throwing an exception if not found. |
Object |
readById(Class entityClass,
Object id)
Read the entity instance of the given class with the given id, throwing an exception if not found. |
Object |
readById(Class entityClass,
Object[] keys)
Read the entity instance of the given class with the given composite id, throwing an exception if not found. |
Object |
readById(Class entityClass,
Object[] keys,
boolean enforceReadOnly)
Read the entity instance of the given class with the given composite id, throwing an exception if not found. |
Object |
readById(Class entityClass,
Object id,
boolean enforceReadOnly)
Read the entity instance of the given class with the given id, throwing an exception if not found. |
Object |
refresh(Object entity)
Refresh the given entity object, returning the refreshed object. |
Object |
refresh(Object entity,
boolean enforceReadOnly)
Refresh the given entity object, returning the refreshed object. |
List |
refreshAll(Collection entities)
Refresh the given entity objects, returning the corresponding refreshed objects. |
List |
refreshAll(Collection entities,
boolean enforceReadOnly)
Refresh the given entity objects, returning the corresponding refreshed objects. |
Object |
register(Object entity)
Register the given (new or existing) entity with the current UnitOfWork. |
List |
registerAll(Collection entities)
Register all given entities with the current UnitOfWork. |
Object |
registerExisting(Object entity)
Register the given existing entity with the current UnitOfWork. |
void |
registerNew(Object entity)
Register the given new entity with the current UnitOfWork. |
Object |
shallowMerge(Object entity)
Reassociate the given entity copy with the current UnitOfWork, using shallow merging of the entity instance. |
Method Detail |
---|
Object execute(TopLinkCallback action) throws DataAccessException
Note: Callback code is not supposed to handle transactions itself! Use an appropriate transaction manager like TopLinkTransactionManager.
action
- callback object that specifies the TopLink action
null
DataAccessException
- in case of TopLink errorsTopLinkTransactionManager
,
org.springframework.dao
,
org.springframework.transaction
,
Session
List executeFind(TopLinkCallback action) throws DataAccessException
action
- callback object that specifies the TopLink action
null
DataAccessException
- in case of TopLink errorsObject executeNamedQuery(Class entityClass, String queryName) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity class that has the named query descriptorqueryName
- the name of the query
DataAccessException
- in case of TopLink errorsSession.executeQuery(String, Class)
Object executeNamedQuery(Class entityClass, String queryName, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity class that has the named query descriptorqueryName
- the name of the queryenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.executeQuery(String, Class)
Object executeNamedQuery(Class entityClass, String queryName, Object[] args) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity class that has the named query descriptorqueryName
- the name of the queryargs
- the arguments for the query (can be null
)
DataAccessException
- in case of TopLink errorsSession.executeQuery(String, Class, java.util.Vector)
Object executeNamedQuery(Class entityClass, String queryName, Object[] args, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity class that has the named query descriptorqueryName
- the name of the queryargs
- the arguments for the query (can be null
)enforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.executeQuery(String, Class, java.util.Vector)
Object executeQuery(oracle.toplink.queryframework.DatabaseQuery query) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
query
- the query object to execute (for example,
a ReadObjectQuery or ReadAllQuery instance)
DataAccessException
- in case of TopLink errorsSession.executeQuery(oracle.toplink.queryframework.DatabaseQuery)
Object executeQuery(oracle.toplink.queryframework.DatabaseQuery query, boolean enforceReadOnly) throws DataAccessException
query
- the query object to execute (for example,
a ReadObjectQuery or ReadAllQuery instance)enforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.executeQuery(oracle.toplink.queryframework.DatabaseQuery)
Object executeQuery(oracle.toplink.queryframework.DatabaseQuery query, Object[] args) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
query
- the query object to execute (for example,
a ReadObjectQuery or ReadAllQuery instance)args
- the arguments for the query (can be null
)
DataAccessException
- in case of TopLink errorsSession.executeQuery(oracle.toplink.queryframework.DatabaseQuery, java.util.Vector)
Object executeQuery(oracle.toplink.queryframework.DatabaseQuery query, Object[] args, boolean enforceReadOnly) throws DataAccessException
query
- the query object to execute (for example,
a ReadObjectQuery or ReadAllQuery instance)args
- the arguments for the query (can be null
)enforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.executeQuery(oracle.toplink.queryframework.DatabaseQuery, java.util.Vector)
List readAll(Class entityClass) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity class
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class)
List readAll(Class entityClass, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class)
List readAll(Class entityClass, oracle.toplink.expressions.Expression expression) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classexpression
- the TopLink expression to match,
usually built through the TopLink ExpressionBuilder
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.expressions.Expression)
,
ExpressionBuilder
List readAll(Class entityClass, oracle.toplink.expressions.Expression expression, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classexpression
- the TopLink expression to match,
usually built through the TopLink ExpressionBuilderenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.expressions.Expression)
,
ExpressionBuilder
List readAll(Class entityClass, oracle.toplink.queryframework.Call call) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classcall
- the TopLink Call object to apply (either a SQLCall or an EJBQLCall)
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.queryframework.Call)
,
oracle.toplink.queryframework.SQLCall
,
oracle.toplink.queryframework.EJBQLCall
List readAll(Class entityClass, oracle.toplink.queryframework.Call call, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classcall
- the TopLink Call object to apply (either a SQLCall or an EJBQLCall)enforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.expressions.Expression)
,
oracle.toplink.queryframework.SQLCall
,
oracle.toplink.queryframework.EJBQLCall
Object read(Class entityClass, oracle.toplink.expressions.Expression expression) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classexpression
- the TopLink expression to match,
usually built through the TopLink ExpressionBuilder
null
if none found
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.expressions.Expression)
,
ExpressionBuilder
Object read(Class entityClass, oracle.toplink.expressions.Expression expression, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classexpression
- the TopLink expression to match,
usually built through the TopLink ExpressionBuilderenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
null
if none found
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.expressions.Expression)
,
ExpressionBuilder
Object read(Class entityClass, oracle.toplink.queryframework.Call call) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classcall
- the TopLink Call object to apply (either a SQLCall or an EJBQLCall)
null
if none found
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.queryframework.Call)
,
oracle.toplink.queryframework.SQLCall
,
oracle.toplink.queryframework.EJBQLCall
Object read(Class entityClass, oracle.toplink.queryframework.Call call, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classcall
- the TopLink Call object to apply (either a SQLCall or an EJBQLCall)enforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
null
if none found
DataAccessException
- in case of TopLink errorsSession.readAllObjects(Class, oracle.toplink.expressions.Expression)
,
oracle.toplink.queryframework.SQLCall
,
oracle.toplink.queryframework.EJBQLCall
Object readById(Class entityClass, Object id) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classid
- the id of the desired object
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
Object readById(Class entityClass, Object id, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classid
- the id of the desired objectenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
Object readById(Class entityClass, Object[] keys) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classkeys
- the composite id elements of the desired object
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
Object readById(Class entityClass, Object[] keys, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classkeys
- the composite id elements of the desired objectenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
Object readAndCopy(Class entityClass, Object id) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classid
- the id of the desired object
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
,
Session.copyObject(Object)
Object readAndCopy(Class entityClass, Object id, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classid
- the id of the desired objectenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
,
Session.copyObject(Object)
Object readAndCopy(Class entityClass, Object[] keys) throws DataAccessException
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entityClass
- the entity classkeys
- the composite id elements of the desired object
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
,
Session.copyObject(Object)
Object readAndCopy(Class entityClass, Object[] keys, boolean enforceReadOnly) throws DataAccessException
entityClass
- the entity classkeys
- the composite id elements of the desired objectenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
ObjectRetrievalFailureException
- if not found
DataAccessException
- in case of TopLink errorsReadObjectQuery.setSelectionKey(java.util.Vector)
,
Session.copyObject(Object)
Object copy(Object entity) throws DataAccessException
entity
- the entity object to copy
DataAccessException
- in case of TopLink errorsSession.copyObject(Object)
Object copy(Object entity, oracle.toplink.sessions.ObjectCopyingPolicy copyingPolicy) throws DataAccessException
entity
- the entity object to copycopyingPolicy
- the TopLink ObjectCopyingPolicy to apply
DataAccessException
- in case of TopLink errorsSession.copyObject(Object, oracle.toplink.sessions.ObjectCopyingPolicy)
List copyAll(Collection entities) throws DataAccessException
entities
- the entity objects to copy
DataAccessException
- in case of TopLink errorsSession.copyObject(Object)
List copyAll(Collection entities, oracle.toplink.sessions.ObjectCopyingPolicy copyingPolicy) throws DataAccessException
entities
- the entity objects to copycopyingPolicy
- the TopLink ObjectCopyingPolicy to apply
DataAccessException
- in case of TopLink errorsSession.copyObject(Object)
Object refresh(Object entity) throws DataAccessException
The returned object will only be different from the passed-in object if the passed-in object is not the currently registered version of the corresponding entity.
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entity
- the entity object to refresh
DataAccessException
- in case of TopLink errorsSession.refreshObject(Object)
Object refresh(Object entity, boolean enforceReadOnly) throws DataAccessException
The returned object will only be different from the passed-in object if the passed-in object is not the currently registered version of the corresponding entity.
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entity
- the entity object to refreshenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.refreshObject(Object)
List refreshAll(Collection entities) throws DataAccessException
A returned object will only be different from the corresponding passed-in object if the passed-in object is not the currently registered version of the corresponding entity.
Retrieves read-write objects from the TopLink UnitOfWork in case of a non-read-only transaction, and read-only objects else.
entities
- the entity objects to refresh
DataAccessException
- in case of TopLink errorsSession.refreshObject(Object)
List refreshAll(Collection entities, boolean enforceReadOnly) throws DataAccessException
A returned object will only be different from the corresponding passed-in object if the passed-in object is not the currently registered version of the corresponding entity.
entities
- the entity objects to refreshenforceReadOnly
- whether to always retrieve read-only objects from
the plain TopLink Session (else, read-write objects will be retrieved
from the TopLink UnitOfWork in case of a non-read-only transaction)
DataAccessException
- in case of TopLink errorsSession.refreshObject(Object)
Object register(Object entity)
The entity will be checked for existence, according to TopLink's
configured existence checking policy. To avoid the (potentially costly)
existence check, consider using the specific registerNew
or registerExisting
method.
Do not edit the passed-in object any further afterwards.
entity
- the entity to register
DataAccessException
- in case of TopLink errorsUnitOfWork.registerObject(Object)
,
registerNew(Object)
,
registerExisting(Object)
List registerAll(Collection entities)
entities
- the entities to register
DataAccessException
- in case of TopLink errorsUnitOfWork.registerAllObjects(java.util.Collection)
void registerNew(Object entity)
entity
- the new entity to register
DataAccessException
- in case of TopLink errorsUnitOfWork.registerNewObject(Object)
Object registerExisting(Object entity)
entity
- the existing entity to register
DataAccessException
- in case of TopLink errorsUnitOfWork.registerExistingObject(Object)
Object merge(Object entity) throws DataAccessException
The given object will not be reassociated itself: instead, the state will be copied onto the persistent object with the same identifier. In case of a new entity, merge will copy to a registered object as well, but will also update the identifier of the passed-in object.
entity
- the updated copy to merge
DataAccessException
- in case of TopLink errorsUnitOfWork.mergeClone(Object)
Object deepMerge(Object entity) throws DataAccessException
The given object will not be reassociated itself: instead, the state will be copied onto the persistent object with the same identifier. In case of a new entity, merge will register a copy as well, but will also update the identifier of the passed-in object.
entity
- the updated copy to merge
DataAccessException
- in case of TopLink errorsUnitOfWork.deepMergeClone(Object)
Object shallowMerge(Object entity) throws DataAccessException
The given object will not be reassociated itself: instead, the state will be copied onto the persistent object with the same identifier. In case of a new entity, merge will register a copy as well, but will also update the identifier of the passed-in object.
entity
- the updated copy to merge
DataAccessException
- in case of TopLink errorsUnitOfWork.shallowMergeClone(Object)
Object mergeWithReferences(Object entity) throws DataAccessException
The given object will not be reassociated itself: instead, the state will be copied onto the persistent object with the same identifier. In case of a new entity, merge will register a copy as well, but will also update the identifier of the passed-in object.
entity
- the updated copy to merge
DataAccessException
- in case of TopLink errorsUnitOfWork.mergeCloneWithReferences(Object)
void delete(Object entity) throws DataAccessException
entity
- the entity to delete
DataAccessException
- in case of TopLink errorsUnitOfWork.deleteObject(Object)
void deleteAll(Collection entities) throws DataAccessException
entities
- the entities to delete
DataAccessException
- in case of TopLink errorsUnitOfWork.deleteAllObjects(java.util.Collection)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |