Oracle Fusion Middleware Java API Reference for Oracle ADF Model
11g Release 1 (11.1.1.0.0)

E10653-01

oracle.jbo.common.ws
Class WSApplicationModuleImpl

java.lang.Object
  extended by java.util.AbstractMap
      extended by oracle.jbo.common.JboAbstractMap
          extended by oracle.jbo.common.ws.WSObject
              extended by oracle.jbo.common.ws.WSApplicationModuleImpl
All Implemented Interfaces:
java.io.Serializable, java.util.Map, ApplicationModule, ComponentObject, Exportable, Properties, Session, VariableManagerOwner, VariableManagerOwnerBase, WarningContainer

public class WSApplicationModuleImpl
extends WSObject
implements ApplicationModule, Session, java.io.Serializable, Exportable

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.AbstractMap
java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>
 
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K,V>
 
Field Summary
static int BATCH_ALLOW_CACHE
           
static int BATCH_ALLOW_INFO
           
static int BATCH_ALLOW_MASTER_DETL
           
static int BATCH_ALLOW_PASSIVATION
           
static int BATCH_ALLOW_RANGE
           
static int BATCH_ALLOW_RANGE_SET
           
static int BATCH_ALLOW_STRUCT
           
static int BATCH_ALLOW_XML
           
static int BATCH_ALLOW_XTN
           
static int BATCH_DEFAULT
           
static java.lang.String END_REQUEST_RELEASE_LEVEL
           
 
Fields inherited from class oracle.jbo.common.ws.WSObject
mVariableOpers
 
Fields inherited from class oracle.jbo.common.JboAbstractMap
MAP_NULL_VALUE
 
Fields inherited from interface oracle.jbo.ApplicationModule
ACTIVATE_CLIENT_FLAG, ACTIVATE_REMOVE_FLAG, ACTIVATE_SKIP_RESTORE_VO_FROM_DEF, ACTIVATE_TRANSIENT_FLAG, ACTIVATE_UNDO_FLAG, DEFAULT_DEF_FULL_NAME, DEFAULT_ROOT_APP_MOD_NAME, EFF_DT_PROPERTY_STR, IMAGE_LOC, PASSIVATE_DEFER_FLAG, PASSIVATE_HINT_FLAG, PASSIVATE_TO_DATABASE, PASSIVATE_TO_FILE, PASSIVATE_TO_MEMORY, PASSIVATE_TO_STACK_FLAG, PASSIVATE_TRANSIENT_FLAG, PASSIVATE_UNDO_FLAG, RELEASE_LEVEL_MANAGED, RELEASE_LEVEL_RESERVED, RELEASE_LEVEL_UNMANAGED, REMOVE_SNAPSHOT, RESET_CLIENT_ONLY_FLAG, RESET_INTERNAL_FLAG, RESET_KEEP_ALL_SNAPSHOTS_FLAG, RESET_MANAGE_SNAPSHOTS, RESET_RELOAD_FLAG, RESET_ROLLBACK_FLAG, SYNC_BATCH, SYNC_IMMEDIATE, SYNC_LAZY
 
Fields inherited from interface oracle.jbo.Session
JBO_SESSION_COOKIE, JBO_SESSION_LOCALE
 
Constructor Summary
  WSApplicationModuleImpl(ApplicationModule am)
           
  WSApplicationModuleImpl(SessionCookie sessionCookie)
           
protected WSApplicationModuleImpl(java.lang.String name, java.lang.String defName, WSApplicationModuleImpl parent)
           
protected WSApplicationModuleImpl(java.lang.String name, WSApplicationModuleImpl parent)
           
 
Method Summary
 byte[] activateState(int id, boolean remove)
           
 byte[] activateState(int id, boolean remove, SessionData info)
           
 byte[] activateState(int id, SessionData info, int flags)
          Internal: Applications should not use this method.
 byte[] activateStateForUndo(java.lang.String id, int flags)
          Restore an application module undo record.
protected  void addChild(java.lang.Object child)
           
 void addChildAM(WSApplicationModuleImpl childAM)
           
 void addResponse(java.io.Serializable resp)
           
 void addWarning(JboWarning warn)
          Override from WarningContainer
 void applyVOSortCriteria(ViewObject vo, SortCriteria[] sortBy)
          Internal: Applications should not use this method.
 void beginRequest(java.util.HashMap ctx)
           
 void clearVOCaches(java.lang.String entityName, boolean recurse)
          Clears the view object cache for all view objects that use an entity object identified by entityName.
 void closeWSApplicationModule()
          Shuts down the WSApplicationModule.
 ApplicationModule createApplicationModule(java.lang.String amName, java.lang.String defName)
          Creates a nested application module in this application module from the application module definition.
 ComponentObject createComponentObject(java.lang.String coName, java.lang.String coDefName)
          Creates a component object in this application module from the component object definition.
 ViewDef createCompositeViewDef(java.lang.String name, java.lang.String fullName)
           
 Request createRequest()
           
 ServiceMessage createSyncMessage()
           
 ViewLink createViewLink(java.lang.String vlName, java.lang.String defName, ViewObject master, ViewObject detail)
          Creates a view link in this application module from the view link definition.
 ViewLink createViewLinkBetweenViewObjects(java.lang.String vlName, java.lang.String accessorName, ViewObject master, AttributeDef[] srcAttrs, ViewObject detail, AttributeDef[] destAttrs, java.lang.String assocClause)
          Creates a view link in this application module.
 ViewLink createViewLinkFromEntityAssocName(java.lang.String vlName, java.lang.String entityAssocName, ViewObject master, ViewObject detail)
          Creates a view link in this application module from an entity association.
 ViewObject createViewObject(java.lang.String voName, java.lang.String defName)
          Creates a view object in this application module from the view definition.
 ViewObject createViewObjectFromQueryClauses(java.lang.String voName, java.lang.String eoName, java.lang.String selectClause, java.lang.String fromClause, java.lang.String whereClause, java.lang.String orderByClause)
          Creates a view object in this application module from an entity Object and additional SQL clauses.
 ViewObject createViewObjectFromQueryStmt(java.lang.String voName, java.lang.String sqlStatement)
          Creates a view object in this application module based on a SQL statement.
 ViewObject createViewObjectFromQueryStmt(java.lang.String voName, java.lang.String sqlStatement, java.lang.String voImplClassName)
          Creates a read-only view object similar to ApplicationModule.createViewObjectFromQueryStmt(String, String).
 ViewObject createViewObjectOnEntity(java.lang.String voName, java.lang.String eoName)
           
 ViewObject createViewObjectOnRowSet(java.lang.String voName, RowSet rs)
           
 void detach()
           
 void doFinish(boolean isEndOfSvcMsg)
           
 void doInit()
           
 ApplicationPoolSvcMsgContext doPoolMessage(ApplicationPoolSvcMsgContext ctx)
          Internal use only.
 void doWork()
           
 void endRequest(java.util.HashMap ctx)
           
 void fetchAttributeProperties(java.lang.String[] voNames, java.lang.String[][] voAttrNames, LocaleContext locale)
          Fetches all custom properties for the given list of attributes for the named view objects in this application module over to the remote client objects in one network roundtrip.
 ApplicationModule findApplicationModule(java.lang.String amName)
          Finds the named application module.
 ComponentObject findComponentObject(java.lang.String coName)
          Finds the named component object.
 ViewObject findCustomViewObject(java.lang.String voName, java.lang.String voType)
           
 ViewObject findCustomViewObject(WSViewObjectImpl wsvo, java.lang.String voType)
           
 RowSetIterator findRSIForEntity(RowSetIterator[] rsis, int eRowHandle)
          Finds the RowSetIterator associated with the specified entity row handle.
 ApplicationModule findSharedApplicationModule(java.lang.String appModuleName)
          INTERNAL: Applications should not use.
 ViewLink findViewLink(java.lang.String vlName)
          Finds the named view link.
 ViewObject findViewObject(java.lang.String voName)
          Finds the named view object.
 ViewObject findViewObjectUsingEntity(ViewObject[] vos, java.lang.String entityName, java.lang.String[] attrNames)
          Given an array of view objects (the vos parameter), finds the first matching view object.
 ViewObject findViewObjectWithParameters(java.lang.String voname, VariableManager params, boolean executeIfNeeded)
          Internal: Applications should not use this method. Given a view object name, use findViewObject(String name) to find the view object and set it's named bind parameters with the values passed in the 'params' argument.
 WSApplicationModuleImpl findWSApplicationModule(java.lang.String amName)
           
 WSComponentObjectImpl findWSComponentObject(java.lang.String coName)
           
 WSViewLinkImpl findWSViewLink(java.lang.String vlName)
           
 WSViewObjectImpl findWSViewObject(java.lang.String voName)
           
 java.lang.Object get(java.lang.Object keyObj)
           
 java.util.HashMap getActiveObjects()
           
 java.lang.String[] getAllApplicationModuleDefNames()
          Gets the names of the Application Module definitions contained in all packages.
 java.lang.String[] getAllEntityAssociationDefNames()
          Gets the names of the entity association definitions defined in all packages.
 java.lang.String[] getAllEntityDefNames()
          Gets the names of the Entity Object definitions available in all packages.
 java.util.ArrayList getAllRowSetIterators()
           
 java.lang.String[] getAllViewDefNames()
          Gets the names of the View Object definitions available in all packages.
 java.lang.String[] getAllViewLinkDefNames()
          Gets the names of the View Link definitions defined in all packages.
 java.lang.String getAMFullName()
           
 java.lang.String[] getApplicationModuleDefNames(java.lang.String packageName)
          Gets the names of the Application Module definitions contained in a package.
 ApplicationModule getApplicationModuleImpl()
           
 java.lang.String[] getApplicationModuleNames()
          Returns an array of names of the nested application modules that are currently loaded within this application module.
 java.lang.String[] getApplicationModuleNames(boolean inclLoadedOnes, boolean inclNotLoadedOnes)
          Returns an array of names of the nested application modules in this application module.
 int getBatchCommMode()
           
 ApplicationModule getCustomApplicationModule()
           
 java.lang.String getDefFullName()
          Retrieves the fully-qualified name of the component's definition.
 java.lang.String getDefName()
          Retrieves the name of the component's definition.
 java.lang.String[] getEntityAssociationDefNames(java.lang.String packageName)
          Gets the names of the entity association definitions defined in a package.
 java.lang.String[] getEntityDefNames(java.lang.String packageName)
          Gets the names of the Entity Object definitions available in a package.
 java.util.Hashtable getEnvironment()
          Returns the BC4J context for the session.
 JboExceptionHandler getExceptionHandler()
           
 java.lang.String getFullName()
          Retrieves the fully-qualified name of this component.
 java.lang.Object getImplObject()
           
 java.lang.String getListBindingName(RowSetIterator rsi, Key rowKey, java.lang.String attrName, java.lang.String lbName)
           
 RowSetIterator getListBindingRSI(RowSetIterator rsi, Key rowKey, java.lang.String attrName, java.lang.String lbName)
           
 java.util.Locale getLocale()
          Gets the current Locale used for localizing error messages.
 LocaleContext getLocaleContext()
          retrieves the locale context for the session
 java.lang.Class getMessageBundleClass()
           
 int getMostRecentStackId()
          Internal: Applications should not use this method.
 java.lang.String getName()
          Returns the name of this Variable Manager Owner.
 ObjectMarshaller getObjectMarshaller()
           
 java.util.HashMap getObjects()
           
 java.lang.String[] getPackageNames()
          Gets names of the packages that make up this middle tier application.
 WSObject getParent()
           
 java.util.Hashtable getProperties()
          Gets the table of properties.
 java.lang.Object getProperty(java.lang.String hintName)
          Retrieves the specified property, if it exists.
 java.lang.Object getProperty(java.lang.String hintName, LocaleContext locale)
           
 int getReleaseLevel()
          Returns the release level that should be employed by clients of this application module.
 int getRemoteObjectId(java.lang.Object obj)
           
 ResourceBundleDef getResourceBundleDef()
           
 java.lang.String getResponseName()
           
 WSApplicationModuleImpl getRootWSApplicationModule()
           
 Session getSession()
          Gets the application module's session.
 SessionCookie getSessionCookie()
           
 ClientDocument getStyles(java.lang.String name)
          Gets the style definition from an XML file in the middle tier.
 java.lang.Object getSyncLock()
          Gets the locking object for this application module.
 int getSyncMode()
          Returns the sync mode for this application module.
 Transaction getTransaction()
          Gets this application module's database transaction.
 java.util.Hashtable getUserData()
          Returns application context for the session.
 java.lang.String[] getUserRoles()
          Returns the Roles/Groups for current user principal.
 java.lang.String getVersion()
          Gets the middle tier's version information.
 java.lang.String[] getViewDefNames(java.lang.String packageName)
          Gets the names of the View Object definitions available in a package.
 java.lang.String[] getViewLinkDefNames(java.lang.String packageName)
          Gets the names of the View Link definitions defined in a package.
 java.lang.String[] getViewLinkNames()
          Returns an array of the names of the view links that are currently loaded within this application module.
 java.lang.String[] getViewLinkNames(boolean inclLoadedOnes, boolean inclNotLoadedOnes)
          Returns an array of names of the view links in this application module.
 java.lang.String[] getViewObjectNames()
          Returns an array of names of the view objects that are currently loaded within this application module.
 java.lang.String[] getViewObjectNames(boolean inclLoadedOnes, boolean inclNotLoadedOnes)
          Returns an array of names of the view objects in this application module.
 WSApplicationModuleMarshaller getWSApplicationModuleMarshaller()
           
 java.lang.String[] getWSApplicationModuleNames()
           
 java.lang.String[] getWSViewLinkNames()
           
 java.lang.String[] getWSViewObjectNames()
           
 void invalidateSession()
          INTERNAL: Applications should not use.
 java.lang.Object invokeExportedMethod(java.lang.String methodName, java.lang.String[] argTypes, java.lang.Object[] args)
           
 boolean isClient()
          Returns whether this session is running as a client in 3 tier or not.
static boolean isEmpty(java.lang.String s)
           
 boolean isOnLine()
           
 boolean isRoot()
          Returns true if this application module is a root application module.
 boolean isSyncIteratorState()
           
 boolean isSyncNeeded()
           
 boolean isUserInRole(java.lang.String role)
           
 boolean isValidIdForUndo(java.lang.String id)
          Determines if an id created using ApplicationModule.passivateStateForUndo(String, byte[], int) is still valid.
 void loadPackage(java.lang.String packageName)
          Loads a package that may be browsed for defined objects.
 void markForError(java.lang.Exception ex, boolean hasImplObject)
           
 java.lang.Object marshal(java.lang.Object obj)
           
 int passivateState(byte[] clientData)
           
 int passivateState(byte[] clientData, int flags)
          Internal: Applications should not use this method.
 int passivateState(int id, byte[] clientData)
          Internal: Applications should not user this method.
 int passivateState(int id, byte[] clientData, int flags)
          Internal: Applications should not use this method.
 java.lang.String passivateStateForUndo(java.lang.String id, byte[] clientData, int flags)
          Create an application module undo record.
 void prepareResetState()
           
 void prepareSession(SessionData info)
          Internal: Applications should not use this method.
 void prepareViewObjects(java.lang.String[] voNames, java.lang.String[][] voAttrNames, LocaleContext locale)
          Prepares view objects for execution.
 java.lang.Object refreshProperty(java.lang.String hintName)
          Retrieves the specified property, if it exists.
 void registerObjFromActivation(java.lang.Object obj)
           
 void remove()
          Deletes this component.
 void removeState(int id)
          Internal: Applications should not use this method.
 int reservePassivationId()
          Internal: Applications should not user this method.
 int reserveSnapshotId(int flags)
          Internal: Applications should not use this method.
 void resetState(boolean reload)
           
 void resetState(int flags)
          Advanced use only
 void resolve(ApplicationModule am)
          Resolves the "impl" pointers
 ServiceMessage sendRequests(java.lang.String reqName, ServiceMessage msg)
           
 void setBatchCommMode(int mode)
           
 void setDataModelRefresh(boolean b)
           
 void setExceptionHandler(JboExceptionHandler hndlr)
          Sets the exception handler for this application module.
 void setImplObject(java.lang.Object o)
           
 void setIsSyncNeeded(boolean b)
           
 void setLocale(java.util.Locale locale)
          Sets a new Locale for localizing error messages.
 void setReleaseLevel(int releaseLevel)
           
 void setStoreForPassiveState(byte storageType)
          Internal: Applications should not use this method.
 void setStyles(java.lang.String name, ClientDocument clientDocument)
          Saves a style definition XML file in the middle tier.
 void setSyncIteratorState(boolean b)
           
 void setSyncMode(int mode)
          Sets the data synchronization mode between the client and the middle tier.
 void sync()
          In 3 tier mode, this method enumerates through all row sets contained in this application module and flushes any changes pending in these row sets to the middle tier.
 void syncIfNeeded()
           
 java.lang.Object[] transformExceptionParams(ViewObject[] vos, java.lang.String entityDefName, java.lang.String className, java.lang.Object[] params)
          Internal: Applications should not use this method. This method uses findViewObjectUsingEntity() to get the first view object that this entity is used in and then transforms the parameters from a given JboException from their entity layer equivalents to the view object equivalents.
 
Methods inherited from class oracle.jbo.common.ws.WSObject
closeObject, ensureVariableManager, getId, getImageLoc, getVariableManager, hasVariables, isReadOnly, setName
 
Methods inherited from class oracle.jbo.common.JboAbstractMap
entrySet, equals, hashCode, internalGet, internalPut, put, setThrowIfPropertyNotFoundOnGet
 
Methods inherited from class java.util.AbstractMap
clear, clone, containsKey, containsValue, isEmpty, keySet, putAll, remove, size, toString, values
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

BATCH_ALLOW_XTN

public static final int BATCH_ALLOW_XTN
See Also:
Constant Field Values

BATCH_ALLOW_RANGE_SET

public static final int BATCH_ALLOW_RANGE_SET
See Also:
Constant Field Values

BATCH_ALLOW_INFO

public static final int BATCH_ALLOW_INFO
See Also:
Constant Field Values

BATCH_ALLOW_CACHE

public static final int BATCH_ALLOW_CACHE
See Also:
Constant Field Values

BATCH_ALLOW_PASSIVATION

public static final int BATCH_ALLOW_PASSIVATION
See Also:
Constant Field Values

BATCH_ALLOW_XML

public static final int BATCH_ALLOW_XML
See Also:
Constant Field Values

BATCH_ALLOW_MASTER_DETL

public static final int BATCH_ALLOW_MASTER_DETL
See Also:
Constant Field Values

BATCH_ALLOW_STRUCT

public static final int BATCH_ALLOW_STRUCT
See Also:
Constant Field Values

BATCH_ALLOW_RANGE

public static final int BATCH_ALLOW_RANGE
See Also:
Constant Field Values

BATCH_DEFAULT

public static final int BATCH_DEFAULT
See Also:
Constant Field Values

END_REQUEST_RELEASE_LEVEL

public static final java.lang.String END_REQUEST_RELEASE_LEVEL
See Also:
Constant Field Values
Constructor Detail

WSApplicationModuleImpl

public WSApplicationModuleImpl(ApplicationModule am)

WSApplicationModuleImpl

public WSApplicationModuleImpl(SessionCookie sessionCookie)

WSApplicationModuleImpl

protected WSApplicationModuleImpl(java.lang.String name,
                                  WSApplicationModuleImpl parent)

WSApplicationModuleImpl

protected WSApplicationModuleImpl(java.lang.String name,
                                  java.lang.String defName,
                                  WSApplicationModuleImpl parent)
Method Detail

getSessionCookie

public SessionCookie getSessionCookie()

isOnLine

public boolean isOnLine()

getResponseName

public java.lang.String getResponseName()

getRemoteObjectId

public int getRemoteObjectId(java.lang.Object obj)

marshal

public java.lang.Object marshal(java.lang.Object obj)

setDataModelRefresh

public void setDataModelRefresh(boolean b)

addResponse

public void addResponse(java.io.Serializable resp)

getObjectMarshaller

public ObjectMarshaller getObjectMarshaller()

getParent

public WSObject getParent()
Specified by:
getParent in class WSObject

getObjects

public java.util.HashMap getObjects()

getActiveObjects

public java.util.HashMap getActiveObjects()

isSyncIteratorState

public boolean isSyncIteratorState()

setSyncIteratorState

public void setSyncIteratorState(boolean b)

getApplicationModuleImpl

public ApplicationModule getApplicationModuleImpl()

getImplObject

public java.lang.Object getImplObject()
Specified by:
getImplObject in class WSObject

setImplObject

public void setImplObject(java.lang.Object o)
Specified by:
setImplObject in class WSObject

markForError

public void markForError(java.lang.Exception ex,
                         boolean hasImplObject)
Specified by:
markForError in class WSObject

detach

public void detach()

getAMFullName

public java.lang.String getAMFullName()

registerObjFromActivation

public void registerObjFromActivation(java.lang.Object obj)

addChildAM

public void addChildAM(WSApplicationModuleImpl childAM)

addChild

protected void addChild(java.lang.Object child)

prepareResetState

public void prepareResetState()

doInit

public void doInit()

doWork

public void doWork()

doFinish

public void doFinish(boolean isEndOfSvcMsg)

getAllRowSetIterators

public java.util.ArrayList getAllRowSetIterators()

createApplicationModule

public ApplicationModule createApplicationModule(java.lang.String amName,
                                                 java.lang.String defName)
Description copied from interface: ApplicationModule
Creates a nested application module in this application module from the application module definition. The application module definition is identified by the defName parameter.

Example code:

    ApplicationModule nestedAM = parentAM.createApplicationModule("MyAM", "package1.Package1Module");
 

Specified by:
createApplicationModule in interface ApplicationModule
Parameters:
amName - the name to be assigned to the application module. If null, a system generated name is assigned.
defName - the name of the application module definition from which the new nested application module is to be created. It must be a fully qualified definition name (including the package name). If ApplicationModule.DEFAULT_DEF_FULL_NAME or null is passed, a generic application module (one without custom code or static component objects) is created.
Returns:
a new nested application module.

isEmpty

public static boolean isEmpty(java.lang.String s)

findApplicationModule

public ApplicationModule findApplicationModule(java.lang.String amName)
Description copied from interface: ApplicationModule
Finds the named application module. The application module name passed in (amName) may be a single part name or a multi-part name. If it is multi-part (separated by dots), each part from left represents the containing (parent) application module.

Based on the name, findApplicationModule first tries to find the nested application module starting with this application module. If it finds a match, it returns it. In this case, the name is said to be relative.

If it does not find a match, it starts searching for the application module from the root application module. If it finds a match, it returns it. In this case, the name is said to be absolute.

For example, suppose we have the following containership of nested application modules:

    Root (root Application Module)
       ChildAM1
          GrandChildAM1_1
          GrandChildAM1_2
             GreatGrandChildAM1_2_1
       ChildAM2
          GrandChildAM2_1
 

If one calls findApplicationModule("GrandChildAM1_2") on ChildAM1, it will find it from ChildAM1 and return it.

If one calls findApplicationModule("GrandChildAM1_2.GreatGrandChildAM1_2_1") on ChildAM1, it will find it from ChildAM1 and return it.

Both these are relative name cases.

If one calls findApplicationModule("Root.ChildAM2.GrandChildAM2_1") on ChildAM1, it will first try to find it from ChildAM1. This will fail because ChildAM1 does not have a nested application module named Root. After that, the search begins from the root application module. This will succeed because Root has a nested application module named ChildAM2 and ChildAM2 in turn has a nested nested application module named GrandChildAM2_1. This is an absolute name case.

For application module searching, findApplicationModule() makes no distinction between nested application modules included in other application modules during design time and those created programmatically during runtime.

Example code:

    ApplicationModule nestedAM = parentAM.findApplicationModule("MyNestedAM");
 

Specified by:
findApplicationModule in interface ApplicationModule
Parameters:
amName - the name of the nested application module. It may be a relative name or an absolute name. If null, the root application module is returned.
Returns:
the nested application module. null if the application module is not found.

findWSApplicationModule

public WSApplicationModuleImpl findWSApplicationModule(java.lang.String amName)

getApplicationModuleNames

public java.lang.String[] getApplicationModuleNames()
Description copied from interface: ApplicationModule
Returns an array of names of the nested application modules that are currently loaded within this application module.

Example code:

    String[] nestedAMNames = parentAM.getApplicationModuleNames();

    // If you want to retrieve all currently loaded nested Application Modules
    ApplicationModule[] nestedAMs = new ApplicationModule[nestedAMNames.length];

    for (int i = 0; i < nestedAMNames.length; i++)
    {
       nestedAM[i] = parentAM.findApplicationModule(nestedAMNames[i]);
    }
 

If you need names of application modules that are not yet loaded, use ApplicationModule.getApplicationModuleNames(boolean, boolean).

Specified by:
getApplicationModuleNames in interface ApplicationModule
Returns:
an array of nested application module names. If this application module contains no nested application module, it returns an empty array, i.e., new String[0].
See Also:
ApplicationModule.findApplicationModule(String)

getApplicationModuleNames

public java.lang.String[] getApplicationModuleNames(boolean inclLoadedOnes,
                                                    boolean inclNotLoadedOnes)
Description copied from interface: ApplicationModule
Returns an array of names of the nested application modules in this application module.

This method allows the user to control whether the returning names are those of loaded (instantiated) nested application modules, or those of not yet loaded (uninstantiated) nested application modules, or both. Not yet loaded application modules would appear only if lazy loading is turned on.

Note that ApplicationModule.getApplicationModuleNames() is equivalent to getApplicationModuleNames(true, false).

If this method is called with loadedOnes = true and fromDef = true, both loaded and not-yet-loaded application module names are returned. No duplicate name is returned. Note that loaded application modules include dynamically created ones.

Specified by:
getApplicationModuleNames in interface ApplicationModule
Parameters:
inclLoadedOnes - if true, loaded ones are returned.
inclNotLoadedOnes - if true, names of the child application modules from the application module definition are returned. Some of these child AMs could have already been loaded and some may have not yet been loaded.
Returns:
an array of nested application module names. If this application module contains no nested application module, it returns an empty array, i.e., new String[0].

getWSApplicationModuleNames

public java.lang.String[] getWSApplicationModuleNames()

createRequest

public Request createRequest()

createSyncMessage

public ServiceMessage createSyncMessage()

setIsSyncNeeded

public void setIsSyncNeeded(boolean b)

isSyncNeeded

public boolean isSyncNeeded()

syncIfNeeded

public void syncIfNeeded()

sync

public void sync()
Description copied from interface: ApplicationModule
In 3 tier mode, this method enumerates through all row sets contained in this application module and flushes any changes pending in these row sets to the middle tier. Note that if this application module's sync mode is ApplicationModule.SYNC_IMMEDIATE, no pending changes would be found, and sync() will effectively be a no-op.

In 2 tier mode, this method is a no-op, as all changes are applied immediately.

Specified by:
sync in interface ApplicationModule

sendRequests

public ServiceMessage sendRequests(java.lang.String reqName,
                                   ServiceMessage msg)

setBatchCommMode

public void setBatchCommMode(int mode)

getBatchCommMode

public int getBatchCommMode()

setSyncMode

public void setSyncMode(int mode)
Description copied from interface: ApplicationModule
Sets the data synchronization mode between the client and the middle tier. There are two sync modes: ApplicationModule.SYNC_LAZY and ApplicationModule.SYNC_IMMEDIATE.

SYNC_LAZY is typically more efficient in that it causes fewer round trips to the middle tier.

Note that the sync mode is an attribute of the root application module. If one calls getSyncMode or setSyncMode on a nested application module, it is routed to the root application module. Also, note that pending changes are managed at the root application module. When the changes are flushed from the client to the middle tier, all changes pending under the root application module are flushed.

Specified by:
setSyncMode in interface ApplicationModule
Parameters:
mode - the new synchronization mode: SYNC_LAZY or SYNC_IMMEDIATE.
See Also:
ApplicationModule.getSyncMode(), ApplicationModule.SYNC_LAZY, ApplicationModule.SYNC_IMMEDIATE

getSyncMode

public int getSyncMode()
Description copied from interface: ApplicationModule
Returns the sync mode for this application module.

Note that the sync mode is an attribute of the root application module. If one calls getSyncMode or setSyncMode on a nested application module, it is routed to the root application module. Also, note that pending changes are managed at the root application module. When the changes are flushed from the client to the middle tier, all changes pending under the root application module are flushed.

Specified by:
getSyncMode in interface ApplicationModule
Returns:
the sync mode: SYNC_LAZY or SYNC_IMMEDIATE.
See Also:
ApplicationModule.setSyncMode(int mode), ApplicationModule.SYNC_LAZY, ApplicationModule.SYNC_IMMEDIATE

createViewObject

public ViewObject createViewObject(java.lang.String voName,
                                   java.lang.String defName)
Description copied from interface: ApplicationModule
Creates a view object in this application module from the view definition. The view definition is identified by the defName parameter.

Example code:

    ViewObject vo = am.createViewObject("MyVO", "package1.DeptView");
 

Specified by:
createViewObject in interface ApplicationModule
Parameters:
voName - the name to be assigned to the view object. If null, a system generated name is assigned.
defName - the name of the view definition from which the new view object is to be created. It must be a fully qualified name (including the package name).
Returns:
a new view object.

createViewObjectFromQueryClauses

public ViewObject createViewObjectFromQueryClauses(java.lang.String voName,
                                                   java.lang.String eoName,
                                                   java.lang.String selectClause,
                                                   java.lang.String fromClause,
                                                   java.lang.String whereClause,
                                                   java.lang.String orderByClause)
Description copied from interface: ApplicationModule
Creates a view object in this application module from an entity Object and additional SQL clauses. The returning view object will have that entity object as its sole entity object base. This method cannot create a view object that joins two entity objects. The view object's attributes will be those that are mapped to the entity object's attributes.

For example, suppose we have an entity object named Emp in a package named package1. The following code block creates a view object using this method:

    ViewObject vo = am.createViewObjectFromQueryClauses("MyVO",
         "package1.Emp",      // Fully qualified EO name
         "E.ENAME as EmpName, E.EMPNO as EmpNo",  // select clause
         "EMP E",             // from clause
         "E.DEPTNO = 10",     // where clause
          null);              // order by clause
 

Internally, this methods create a temporary view definition from the entity object and sets the select, from, where, and order-by clauses of the view definition. Then, it uses that view definition to create the view object.

Specified by:
createViewObjectFromQueryClauses in interface ApplicationModule
Parameters:
voName - the name to be assigned the view object. If null, a system generated name is assigned.
eoName - the name of the entity object from which the new view object is to be derived.
selectClause - a SQL statement SELECT clause. The name or alias of each column should match the name of the corresponding entity object's attribute. In the above example code, "ENAME" and "EMPNO" are database column names, and "EmpName" and "EmpNo" are entity object's attribute names. If null, a default SELECT clause will be generated from the entity definition (selecting all entity attributes that are mapped to database query columns).
fromClause - a SQL statement FROM clause. If null, a default FROM clause will be generated from the entity definition.
whereClause - a SQL statement WHERE clause. If null, no where clause is specified, i.e., all rows from the database table/view are retrieved.
orderByClause - a SQL statement ORDER-BY clause. If null no order-by clause is established.
Returns:
a new view object.

createViewObjectOnEntity

public ViewObject createViewObjectOnEntity(java.lang.String voName,
                                           java.lang.String eoName)
Specified by:
createViewObjectOnEntity in interface ApplicationModule

createViewObjectOnRowSet

public ViewObject createViewObjectOnRowSet(java.lang.String voName,
                                           RowSet rs)
Specified by:
createViewObjectOnRowSet in interface ApplicationModule

createViewObjectFromQueryStmt

public ViewObject createViewObjectFromQueryStmt(java.lang.String voName,
                                                java.lang.String sqlStatement)
Description copied from interface: ApplicationModule
Creates a view object in this application module based on a SQL statement. The returning view object does not have any entity object base and all its attributes are ATTR_SQL_DERIVED kind attributes. Thus, all attributes are read-only.

Example code:

    ViewObject vo = am.createViewObjectFromQueryStmt("MyVO",
         "SELECT EMP.ENAME as EmpName, EMP.MGR as EmpMgr FROM EMP");
 

In this example, the resulting view object will have two attributes, named EmpName and EmpMgr.

Internally, this method create a temporary view definition with no entity object base and maps database columns to attribute definitions. Then, it uses that view definition to create the view object.

Specified by:
createViewObjectFromQueryStmt in interface ApplicationModule
Parameters:
voName - the name to be assigned the view object. If null, a system generated name is assigned.
sqlStatement - the SQL query statement for the view object.
Returns:
a new view object.

createViewObjectFromQueryStmt

public ViewObject createViewObjectFromQueryStmt(java.lang.String voName,
                                                java.lang.String sqlStatement,
                                                java.lang.String voImplClassName)
Description copied from interface: ApplicationModule
Creates a read-only view object similar to ApplicationModule.createViewObjectFromQueryStmt(String, String).

Example code:

    ViewObject vo = am.createViewObjectFromQueryStmt("MyVO",
         "SELECT EMP.ENAME as EmpName, EMP.MGR as EmpMgr FROM EMP", "MyEmpVOImpl");
 

In this example the ViewObject returned is an instance of MyEmpVOImpl. MyEmpVOImpl must extend the oracle.jbo.ViewObjectImpl class.

Specified by:
createViewObjectFromQueryStmt in interface ApplicationModule

findViewObject

public ViewObject findViewObject(java.lang.String voName)
Description copied from interface: ApplicationModule
Finds the named view object. The view object name passed in (voName) may or may not be qualified with the name of the containing application module. If it is, the view object name is said to be an AM-qualified view object name. If not, the name is said to be an unqualified view object name.

An AM-qualified name is a multi-part name (separated by dots). The last part of the name is the view object name (view object part of the name). All preceding parts consistitute the name of the application module that contains the view object. For an AM-qualified name, findViewObject() first locates the containing application module using the application module name. In fact, it uses ApplicationModule.findApplicationModule(String) to find the application module. Thus, the application module name in an AM-qualified view object name may be relative or absolute application module name. See findApplicationModule() discussions on absolute and relative application module names. Once the application module is found, the view object part is used to find the view object in that application module.

If the view object name is unqualified, the search for the view object is made on this application module.

For example, suppose we have the following containership of nested application modules and view objects:

    Root (root Application Module)
       ChildAM1
          ViewObjectA
          GrandChildAM1_1
             ViewObjectB
          GrandChildAM1_2
             GreatGrandChildAM1_2_1
                ViewObjectC
       ChildAM2
          GrandChildAM2_1
             ViewObjectD
 

ChildAM1.findViewObject("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewObjectC") will succeed (using relative application module name).

ChildAM2.findViewObject("Root.ChildAM1.GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewObjectC") will succeed (using absolute application module name) and return the same view object as ChildAM1.findViewObject("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewObjectC").

Both these are AM-qualified name cases.

GrandChildAM2_1.findViewObject("ViewObjectD") will succeed. This is is an unqualified name case.

For view object searching, findViewObject() makes no distinction between view objects included the application module during design time and those created programmatically during runtime.

Example code:

    ViewObject vo = am.findViewObject("MyVO");
 

Specified by:
findViewObject in interface ApplicationModule
Parameters:
voName - the name of the view object.
Returns:
the view object. null if the view object is not found.
See Also:
ApplicationModule.findApplicationModule(String), ApplicationModule.findViewLink(String)

findWSViewObject

public WSViewObjectImpl findWSViewObject(java.lang.String voName)

getViewObjectNames

public java.lang.String[] getViewObjectNames()
Description copied from interface: ApplicationModule
Returns an array of names of the view objects that are currently loaded within this application module.

Example code:

    String[] voNames = am.getViewObjectNames();

    // If you want to retrieve all currently loaded view objects
    ViewObject[] vos = new ViewObject[voNames.length];

    for (int i = 0; i < voNames.length; i++)
    {
       vos[i] = am.findViewObject(voNames[i]);
    }
 

If you need names of view objects that are not yet loaded, use ApplicationModule.getViewObjectNames(boolean, boolean).

Specified by:
getViewObjectNames in interface ApplicationModule
Returns:
an array of view object names. If this application module contains no view object, it returns an empty array, i.e., new String[0].
See Also:
ApplicationModule.findViewObject(String)

getViewObjectNames

public java.lang.String[] getViewObjectNames(boolean inclLoadedOnes,
                                             boolean inclNotLoadedOnes)
Description copied from interface: ApplicationModule
Returns an array of names of the view objects in this application module.

This method allows the user to control whether the returning names are those of loaded (instantiated) view objects, or those of not yet loaded (uninstantiated) view objects, or both. Not yet loaded view objects would appear only if lazy loading is turned on.

Note that ApplicationModule.getViewObjectNames() is equivalent to getViewObjectNames(true, false).

If this method is called with loadedOnes = true and fromDef = true, both loaded and not-yet-loaded view object names are returned. No duplicate name is returned. Note that loaded view objects include dynamically created ones.

Specified by:
getViewObjectNames in interface ApplicationModule
Parameters:
inclLoadedOnes - if true, loaded ones are returned.
inclNotLoadedOnes - if true, names of the view objects from the application module definition are returned. Some of these VOs could have already been loaded and some may have not yet been loaded.
Returns:
an array of view object names. If this application module contains no view object, it returns an empty array, i.e., new String[0].

getWSViewObjectNames

public java.lang.String[] getWSViewObjectNames()

createViewLink

public ViewLink createViewLink(java.lang.String vlName,
                               java.lang.String defName,
                               ViewObject master,
                               ViewObject detail)
Description copied from interface: ApplicationModule
Creates a view link in this application module from the view link definition. The view link definition is identified by the defName parameter.

master and detail identifies two view objects that will linked by this new view link.

For example, assume that during design time, the user used the design time view object Wizard to create two view objects, DeptView and EmpView inside of a package named package1. Then, assume that the user invoked the view link wizard to create a view link definition (in the same package) named DeptEmpViewLink, that correlates the DeptNo attribute of DeptView to the DeptNo attribute of EmpView.

Given these, the user can use the code block like the following to create in this application module (represented by am) two view objects and a view link programmatically (during runtime):

    ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");

    ViewLink vl = am.createViewLink("MyDeptEmpLink", "package1.DeptEmpViewLink",
                                    voDept, voEmp);
 

This will set up a master-detail relationship between voDept and voEmp. Whenever voDept's currency moves, voEmp's result set will be refreshed to show employees that work in the department.

This method verifies that the view objects passed in match the view link definition. Specifically, in the above example, createViewLink() checks to ensure that the master (voDept) is an instance of package1.DeptView and that the detail (voEmp) is an instance of package1.EmpView. If match fails, an error (InvalidParamException) is reported, as the user tried to set up a view link between two view objects where the View Link definition does not match the view link definitions of master and detail.

One exception to this match rule is that createViewLink() allows the user to reverse the view link direction. Thus, in the above example, the following would have succeeded:

    ViewLink vl = am.createViewLink("MyEmpDeptLink", "package1.DeptEmpViewLink",
                                    voEmp, voDept);
 

Note that in the above code block, voEmp is the master and voDept is the detail. The view link definition is used in the reverse direction.

Specified by:
createViewLink in interface ApplicationModule
Parameters:
vlName - the name to be assigned to the view link. If null, a system generated name is assigned.
defName - the name of the link definition from which the new view link is to be created. It must be a fully qualified name (including the package name).
master - the view object that is to play the role of master.
detail - the view object that is to play the role of detail.
Returns:
a new view link.
See Also:
ApplicationModule.createViewObject(String, String)

createViewLinkFromEntityAssocName

public ViewLink createViewLinkFromEntityAssocName(java.lang.String vlName,
                                                  java.lang.String entityAssocName,
                                                  ViewObject master,
                                                  ViewObject detail)
Description copied from interface: ApplicationModule
Creates a view link in this application module from an entity association. The returning view link will use the entity association's definition to build a link between the two Viwe Objects.

For example, suppose we have two entity objects in package package1: Dept and Emp. An entity association DeptEmpAssoc is created between the two entity objects relating the Deptno attribute. Two view objects are defined on these entity objects, DeptView and EmpView.

The following code creates two view objects in this application module and link them, using DeptEmpAssoc:

    ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");

    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "package1.DeptEmpAssoc",
                        voDept, voEmp);
 

This will set up a master-detail relationship between voDept and voEmp. Whenever voDept's currency moves, voEmp's result set will be refreshed to show employees that work in the department.

Internally, this method creates a temporary view link definition from the entity association and uses it to create the view link.

This method verifies that the view objects passed in match the entity association definition. Specifically, in the above example, createViewLinkFromEntityAssocName() checks to ensure that the master (voDept) uses the Dept entity object as one of its entity bases and the detail (voEmp) uses the Emp entity object as one of its entity bases. If match fails, an error (InvalidParamException) is reported, as the user tried to set up a view link between two view objects where the entity association is unable to relate the two view objects.

The primary difference between ApplicationModule.createViewLink(String, String, ViewObject, ViewObject) and createViewLinkFromEntityAssocName is that the former requires the view link definition name, and the latter requires the entity association name.

Specified by:
createViewLinkFromEntityAssocName in interface ApplicationModule
Parameters:
vlName - the name to be assigned to the view link. If null, a system generated name is assigned.
entityAssocName - the name of the entity association from which the new view link is to be derived. It must be a fully qualified name (including the package name).
master - the view object that is to play the role of master.
detail - the view object that is to play the role of detail.
Returns:
a new view link.
See Also:
ApplicationModule.createViewObject(String, String)

createViewLinkBetweenViewObjects

public ViewLink createViewLinkBetweenViewObjects(java.lang.String vlName,
                                                 java.lang.String accessorName,
                                                 ViewObject master,
                                                 AttributeDef[] srcAttrs,
                                                 ViewObject detail,
                                                 AttributeDef[] destAttrs,
                                                 java.lang.String assocClause)
Description copied from interface: ApplicationModule
Creates a view link in this application module. This view link is not created from either a view link definition or an entity association. Rather, all required information are passed as parameters, and the view link is created based on the info. The user must supply the following info:

For example, suppose we have two view objects in package package1: DeptView and EmpView. Each of them has an attribute named Deptno.

The following code creates two view objects in this application module and link them by the Deptno attribute:

    ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");

    AttributeDef[] deptLinkAttrs = new AttributeDef[] { voDept.findAttributeDef("Deptno") };
    AttributeDef[] empLinkAttrs = new AttributeDef[] { voEmp.findAttributeDef("Deptno") };

    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "Employees",
                        voDept, deptLinkAttrs,
                        voEmp, empLinkAttrs,
                        null);
 

This will set up a master-detail relationship between voDept and voEmp. Whenever voDept's currency moves, voEmp's result set will be refreshed to show employees that work in the department.

Using the Association Clause
This view link will generate a SQL clause like EMP.DEPTNO=? on voEmp. The Deptno value of the current row in voDept (master) is bound into the bind variable ('?'). This results in limiting query on voEmp to employees whose Deptno equals the current Dept's Deptno.

By supplying a non-null association clause (the last parameter), the user can override the default SQL clause and replace it with his. For example, if he wishes to include only employees whose JOB is ANALYST, he can supply the following assocClause: EMP.DEPTNO=? AND EMP.JOB='ANALYST'.

Using the Accessor Name
If the user supplies a non-null accessorName (the second parameter), a dynamic attribute is added to master view object which allows the user retrieve related rows from a master row.

In the above code example, a dynamic attribute "Employees" is added to voDept, such that if the user retrieve that attribute on a row the came from voDept, it will return a row set of Emp's that are related to that row.

The code example below retrieves all rows from voDept and for each Dept row, retrieves its employees by using the "Employees" attribute and prints their names.

    Row deptRow;

    while ((deptRow = voDept.next()) != null)
    {
       System.out.println("Dept: " + deptRow.getAttribute("Dname"));

       RowSet emps = (RowSet) deptRow.getAttribute("Employees");
       Row empRow;

       while ((empRow = emps.next()) != null)
       {
          System.out.println("  Emp: " + empRow.getAttribute("Ename"));
       }
    }
 

Specified by:
createViewLinkBetweenViewObjects in interface ApplicationModule
Parameters:
vlName - the name to be assigned to the view link. If null, a system generated name is assigned.
accessorName - the name to be given to the dynamic attribute to be added to master view object. Given a row from the master view object, the user can retrieve the attribute of this name to get a row set of related rows from the detail view object. See the above discussions for more info. If null, no dynamic attribute is added.
master - the view object that is to play the role of master.
srcAttrs - an array of attributes from master view object to be related to detail.
detail - the view object that is to play the role of detail.
destAttrs - an array of attributes from detail view object to be related to master.
assocClause - a custom association clause. See the above discussions for more info. If null, system generated SQL clause will be used.
Returns:
a new view link.
See Also:
ApplicationModule.createViewObject(String, String), StructureDef.findAttributeDef(String), RowIterator.next(), AttributeList.getAttribute(String)

findViewLink

public ViewLink findViewLink(java.lang.String vlName)
Description copied from interface: ApplicationModule
Finds the named view link. The view link name passed in (vlName) may or may not be qualified with the name of the containing application module. If it is, the view link name is said to be an AM-qualified view link name. If not, the name is said to be an unqualified view link name.

An AM-qualified name is a multi-part name (separated by dots). The last part of the name is the view link name (view link part of the name). All preceding parts consistitute the name of the application module that contains the view link. For an AM-qualified name, findViewLink() first locates the containing application module using the application module name. In fact, it uses ApplicationModule.findApplicationModule(String) to find the application module. Thus, the application module name in an AM-qualified view link name may be relative or absolute application module name. See findApplicationModule() discussions on absolute and relative application module names. Once the application module is found, the view link part is used to find the view link in that application module.

If the view link name is unqualified, the search for the view link is made on this application module.

For example, suppose we have the following containership of nested application modules and view links:

    Root (root Application Module)
       ChildAM1
          ViewLinkA
          GrandChildAM1_1
             ViewLinkB
          GrandChildAM1_2
             GreatGrandChildAM1_2_1
                ViewLinkC
       ChildAM2
          GrandChildAM2_1
             ViewLinkD
 

ChildAM1.findViewLink("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewLinkC") will succeed (using relative application module name).

ChildAM2.findViewLink("Root.ChildAM1.GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewLinkC") will succeed (using absolute application module name) and return the same view link as ChildAM1.findViewLink("GrandChildAM1_2.GreatGrandChildAM1_2_1.ViewLinkC").

Both these are AM-qualified name cases.

GrandChildAM2_1.findViewLink("ViewLinkD") will succeed. This is is an unqualified name case.

For view link searching, findViewLink() makes no distinction between view links included the application module during design time and those created programmatically during runtime.

Example code:

    ViewLink vl = am.findViewLink("MyVL");
 

Specified by:
findViewLink in interface ApplicationModule
Parameters:
vlName - the name of the view link.
Returns:
the view link. null if the view link is not found.
See Also:
ApplicationModule.findApplicationModule(String), ApplicationModule.findViewObject(String)

findWSViewLink

public WSViewLinkImpl findWSViewLink(java.lang.String vlName)

getViewLinkNames

public java.lang.String[] getViewLinkNames()
Description copied from interface: ApplicationModule
Returns an array of the names of the view links that are currently loaded within this application module.

Example code:

    String[] vlNames = am.getViewLinkNames();

    // If you want to retrieve all currently loaded view links
    ViewLink[] vls = new ViewLink[vlNames.length];

    for (int i = 0; i < vlNames.length; i++)
    {
       vls[i] = am.findViewLink(vlNames[i]);
    }
 

If you need names of view objects that are not yet loaded, use ApplicationModule.getViewLinkNames(boolean, boolean).

Specified by:
getViewLinkNames in interface ApplicationModule
Returns:
an array of view link names. If this application module contains no view link, it returns an empty array, i.e., new String[0].
See Also:
ApplicationModule.findViewLink(String)

getViewLinkNames

public java.lang.String[] getViewLinkNames(boolean inclLoadedOnes,
                                           boolean inclNotLoadedOnes)
Description copied from interface: ApplicationModule
Returns an array of names of the view links in this application module.

This method allows the user to control whether the returning names are those of loaded (instantiated) view links, or those of not yet loaded (uninstantiated) view links, or both. Not yet loaded view links would appear only if lazy loading is turned on.

Note that ApplicationModule.getViewLinkNames() is equivalent to getViewLinkNames(true, false).

If this method is called with loadedOnes = true and fromDef = true, both loaded and not-yet-loaded view link names are returned. No duplicate name is returned. Note that loaded view links include dynamically created ones.

Specified by:
getViewLinkNames in interface ApplicationModule
Parameters:
inclLoadedOnes - if true, loaded ones are returned.
inclNotLoadedOnes - if true, names of the view links from the application module definition are returned. Some of these VLs could have already been loaded and some may have not yet been loaded.
Returns:
an array of view link names. If this application module contains no view link, it returns an empty array, i.e., new String[0].

getWSViewLinkNames

public java.lang.String[] getWSViewLinkNames()

createComponentObject

public ComponentObject createComponentObject(java.lang.String coName,
                                             java.lang.String coDefName)
Description copied from interface: ApplicationModule
Creates a component object in this application module from the component object definition. The component object definition is identified by the defName parameter.

Example code:

    ComponentObject vo = am.createComponentObject("MyCO", "package1.MyComponentDef");
 

A component object is a generic object that an application module can contain. A Comonent object is any object that implements the ComponentObject interface. In particular, ViewObject and ViewLink implement the ComponentObject interface.

Thus, this method enables the user to build a custom ComponentObject and have it be managed by application module. Specificially, he must first implement a Java class that implements ComponentObject.

Then, as is the case with view objects and view links, he must build a component object definition (an XML file) reachable from the class path. (Note that for view objects and view links, BC4J design time provides tools to produce these definition files. For custom component object, the user must provide a custom tool to produce definition files or provide finished definition files himself.)

Specified by:
createComponentObject in interface ApplicationModule
Parameters:
coName - the name to be assigned to the component object. If null, a system generated name is assigned.
coDefName - the name of the component object definition from which the new component object is to be created. It must be a fully qualified name (including the package name).
Returns:
a new component object.

findComponentObject

public ComponentObject findComponentObject(java.lang.String coName)
Description copied from interface: ApplicationModule
Finds the named component object. See ApplicationModule.createComponentObject(String, String) for explanation of BC4J's support for custom component objects.

See ApplicationModule.findViewObject(String) for explanation on AM-qualified names and unqualified names.

Specified by:
findComponentObject in interface ApplicationModule
Parameters:
coName - the name of the component object.
Returns:
the component object. null if the component object is not found.
See Also:
ApplicationModule.findApplicationModule(String)

findWSComponentObject

public WSComponentObjectImpl findWSComponentObject(java.lang.String coName)

isRoot

public boolean isRoot()
Description copied from interface: ApplicationModule
Returns true if this application module is a root application module.

Specified by:
isRoot in interface ApplicationModule
Returns:
true if this application module is a root application module. false if this application module is a nested application module.

getRootWSApplicationModule

public WSApplicationModuleImpl getRootWSApplicationModule()

getTransaction

public Transaction getTransaction()
Description copied from interface: ApplicationModule
Gets this application module's database transaction. Note that if this method is invoked on a nested application module, the root application module's transaction is returned. This is because the transaction is shared by all application modules contained by the root application module.

If the user creates two root application modules, they normally do not share the transaction. To share a transaction acroos root application modules, the user would need to define a global transaction through JTA and have both application modules participate in it.

Specified by:
getTransaction in interface ApplicationModule
Returns:
the transaction.

getSession

public Session getSession()
Description copied from interface: ApplicationModule
Gets the application module's session. Note that if this method is invoked on a nested application module, the root application module's session is returned. This is because the session is shared by all application modules contained by the root application module.

If the user creates two root application modules, each has its own session.

Note that this is the same session that is passed to the ApplicationModuleImpl.activate(Session) call.

Specified by:
getSession in interface ApplicationModule
Returns:
the session.
See Also:
ApplicationModuleImpl.activate(Session)

getSyncLock

public java.lang.Object getSyncLock()
Description copied from interface: ApplicationModule
Gets the locking object for this application module. Note that if this method is invoked on a nested application module, the root application module's locking object is returned. This is because the locking object is shared by all application modules contained by the root application module.

This locking object should be used to synchronize multiple calls into BC4J. The client application code rarely needs to worry about synchronization. It is the middle tier (the server) code that needs to synchronize calls into the middle tier to serialize updates to shared middle tier objects.

Here is an example of how to synchronize access using this method:

    synchronized(am.getSyncLock())
    {
       // Code that needs to execute serially.
    }
 

Specified by:
getSyncLock in interface ApplicationModule
Returns:
the locking object.

clearVOCaches

public void clearVOCaches(java.lang.String entityName,
                          boolean recurse)
Description copied from interface: ApplicationModule
Clears the view object cache for all view objects that use an entity object identified by entityName. This method finds all view objects that use the entity, then calls ViewObject.clearCache() on each view object.

If entityName is null, then the caches of all view objects in the application module are cleared. If recurse is true, it recurses into nested application modules.

Specified by:
clearVOCaches in interface ApplicationModule
Parameters:
entityName - fully qualified name of the entity object. If null all view object caches are cleared.
recurse - a flag indicating whether to recurse into nested application modules.

findRSIForEntity

public RowSetIterator findRSIForEntity(RowSetIterator[] rsis,
                                       int eRowHandle)
Description copied from interface: ApplicationModule
Finds the RowSetIterator associated with the specified entity row handle. This method is provided to handle errors that occur during entity post cycle.

If an error occurs while an entity is being posted to database, the system throws a DMLException. Inside the DMLException instance is an opaque handle (an integer) identifying the entity (an instance of EntityImpl) that caused the error.

For example, the DMLException could have been thrown because the row violated a database constraint. The client might want to give the user a chance to correct the problem by displaying the the view row that uses this entity.

To do this, the client would "gather" all row set iterators that can be used to report and fix the problem. It would then call this method, passing in the array of row set iterators and the entity row handle returned by DMLException.

Among the row set iterator in the array, findRSIForEntity will pick the "best" candidate and return it to the client. The client then can use the row set iterator to report the problem and give the user a chance to fix the problem.

Specified by:
findRSIForEntity in interface ApplicationModule
Parameters:
rsis - an array of RowSetIterator's to look through.
eRowHandle - the entity row handle.
Returns:
the RowSetIterator.
See Also:
DMLException, RowSetIterator, DMLException

getListBindingName

public java.lang.String getListBindingName(RowSetIterator rsi,
                                           Key rowKey,
                                           java.lang.String attrName,
                                           java.lang.String lbName)
Specified by:
getListBindingName in interface ApplicationModule

getListBindingRSI

public RowSetIterator getListBindingRSI(RowSetIterator rsi,
                                        Key rowKey,
                                        java.lang.String attrName,
                                        java.lang.String lbName)
Specified by:
getListBindingRSI in interface ApplicationModule

findViewObjectWithParameters

public ViewObject findViewObjectWithParameters(java.lang.String voname,
                                               VariableManager params,
                                               boolean executeIfNeeded)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method. Given a view object name, use findViewObject(String name) to find the view object and set it's named bind parameters with the values passed in the 'params' argument. If the execute flag is true, execute this view object before returning it to the caller if it's not already executed or if it's bind parameter values have changed.

Specified by:
findViewObjectWithParameters in interface ApplicationModule

findViewObjectUsingEntity

public ViewObject findViewObjectUsingEntity(ViewObject[] vos,
                                            java.lang.String entityName,
                                            java.lang.String[] attrNames)
Description copied from interface: ApplicationModule
Given an array of view objects (the vos parameter), finds the first matching view object. It uses the following rules to determine if the view object matches the description. The method is used to find a view object that can be used to edit an entity object's attribute. If a matching view object is identified, and if attrName coming in was not empty, the view object's attribute name is copied into the attrName.

Specified by:
findViewObjectUsingEntity in interface ApplicationModule
Parameters:
vos - an array of possible view objects.
entityName - fully qualified name of the entity object. Should not be null.
attrNames - if empty, i.e., null or an array of length 0, then the attribute matching rule will be skipped (see the above discussion). If not empty, it should have only one element and that element should be the name of an attribute of the entity. The attribute matching rule will apply. If a matching view object is found, attrName[0] upon return should have the name of a view object mapped to the entity attribute.

transformExceptionParams

public java.lang.Object[] transformExceptionParams(ViewObject[] vos,
                                                   java.lang.String entityDefName,
                                                   java.lang.String className,
                                                   java.lang.Object[] params)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method. This method uses findViewObjectUsingEntity() to get the first view object that this entity is used in and then transforms the parameters from a given JboException from their entity layer equivalents to the view object equivalents. This method is primarily used by JboException subclasses to map their parameters when doEntityToVOMapping() is called on those Exceptions.

Specified by:
transformExceptionParams in interface ApplicationModule
Parameters:
vos - an array of possible view objects.
entityDefName - fully qualified name of the entity object. Should not be null.
className - Qualified classname for the Exception which is being mapped
params - Parameters from the Exception that is to be transformed into view object equivalents.

getExceptionHandler

public JboExceptionHandler getExceptionHandler()
Specified by:
getExceptionHandler in interface ApplicationModule

setExceptionHandler

public void setExceptionHandler(JboExceptionHandler hndlr)
Description copied from interface: ApplicationModule
Sets the exception handler for this application module. An exception handler must implement the JboExceptionHandler interface.

JboExceptionHandler handle exceptions (java.lang.Exception) and warnings (JboWarning). In 2 tier mode, the handler will only see warnings but no exception. In 2 tier mode, Exceptions are thrown through the normal Java throw mechanism. They should be handled through catch blocks. For warnings, no throw/catch mechanism is available. The handler must process them.

In 3 tier mode, the handler may have to process exceptions in addition to warnings. When a method call is marshalled from the client tier into the middle tier, the middle tier processing of the method may result in more than one exceptions. All these exceptions are caught by the marshalling code and brought back to the client tier. As Java's throw mechanism allows throwing of only one exception, these multiple exceptions cannot be processed through Java throw. Thus, for each of these exceptions, a call is made to handler's handleException(), so that the handler can process it.

Specified by:
setExceptionHandler in interface ApplicationModule
Parameters:
hndlr - an exception handler.

addWarning

public void addWarning(JboWarning warn)
Description copied from interface: ApplicationModule
Override from WarningContainer

Adds a warning message. In 2 tier mode, the warning is passed to this method is sent to the exception handler immediately if an exception handler is present (exception handler is specified through a call to ApplicationModule.setExceptionHandler(JboExceptionHandler)). This is done through a call to JboExceptionHandler.handleWarning(JboWarning).

In 3 tier mode, the warnings that came to this application module through calls to addWarning() in the middle tier are "chained" until the middle tier processing completes. They are brought to the client at the end of middle tier processing, and, for each warning, a call is made to JboExceptionHandler.handleWarning(JboWarning) if an exception handler is present.

Specified by:
addWarning in interface ApplicationModule
Specified by:
addWarning in interface WarningContainer
Parameters:
warn - warning message.

getStyles

public ClientDocument getStyles(java.lang.String name)
Description copied from interface: ApplicationModule
Gets the style definition from an XML file in the middle tier. While this method, along with setStyles(), was originally provided for DAC (Data Aware Control), it can be used for general purpose.

This method retrieves the content of an XML document specified by name and returns it as a ClientDocument. It locates the XML file through the following logic:

For example, if DACStylesDirectory is package1.mypackage and name is styles.myStyle, the resulting XML file name on Unix would be package1/mypackage/styles/myStyle.xml.

ClientDocument enables the user to manipulate an arbitrary tree of an XML style document. Thus, the user can retrieve a ClientDocument using this method and modify parts of the tree and write it back out using ApplicationModule.setStyles(String, ClientDocument).

Specified by:
getStyles in interface ApplicationModule
Parameters:
name - the XML file name.
Returns:
the content of the XML file as a ClientDocument.
See Also:
ClientDocument

setStyles

public void setStyles(java.lang.String name,
                      ClientDocument clientDocument)
Description copied from interface: ApplicationModule
Saves a style definition XML file in the middle tier. While this method, along with getStyles(), was originally provided for DAC (Data Aware Control), it can be used for general purpose.

This method saves the content of the document (the clientDocument parameter) in an XML file specified by name. It locates the XML file through the following logic:

For example, if DACStylesDirectory is package1.mypackage and name is styles.myStyle, the resulting XML file name on Unix would be package1/mypackage/styles/myStyle.xml.

ClientDocument enables the user to build an arbitrary tree of an XML style document. Thus, this method can be used to programmatically build and save an XML file.

Specified by:
setStyles in interface ApplicationModule
Parameters:
name - the XML file name.
clientDocument - the ClientDocument to be saved.
See Also:
ClientDocument

reserveSnapshotId

public int reserveSnapshotId(int flags)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Reserves a unique indentifier which may later be specified when passivating AM state as the identifier to be used for re-establishing AM state.

If the PASSIVATE_TRANSIENT_FLAG has not been set then this method will return a passivation id from one of the persistent Serializers (File and Database). This method will then reserve a stack snapshot id for that persistent snapshot. The reserved stack id may be acquired by invoking ApplicationModule.getMostRecentStackId().

If the PASSIVATE_TRANSIENT_FLAG has been set then this method will return a stack id. The stack id is unique for a session transaction only. This may need to be extended to provide a UUID so that applications do not inadvertantly try to undo state across transaction boundaries.

This method may be invoked to obtain a unique snapshot identifier before a snapshot is actually acquired. An example use case is an HTTP servlet that must encode all URLs with the snapshot id before the snapshot is acquired.

Specified by:
reserveSnapshotId in interface ApplicationModule
Parameters:
flags - a bit map defining passivation flags.
Returns:
a unique integer identifier that may later be used to passivate and activate application module state
See Also:
ApplicationModule.passivateState(int, byte[], int).

getMostRecentStackId

public int getMostRecentStackId()
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Acquire the snapshot id of the most recent stack snapshot. This method may be used by clients to acquire the stack snapshot id of a persistent snapshot.

Please see ApplicationModule.passivateState(byte[]) for more information regarding stack passivation.

Specified by:
getMostRecentStackId in interface ApplicationModule

reservePassivationId

public int reservePassivationId()
Description copied from interface: ApplicationModule
Internal: Applications should not user this method.

Specified by:
reservePassivationId in interface ApplicationModule

passivateState

public int passivateState(int id,
                          byte[] clientData)
Description copied from interface: ApplicationModule
Internal: Applications should not user this method.

Specified by:
passivateState in interface ApplicationModule

passivateState

public int passivateState(byte[] clientData)
Specified by:
passivateState in interface ApplicationModule

passivateState

public int passivateState(int id,
                          byte[] clientData,
                          int flags)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Serializes the current state of this application module's session, along with all changes cached, to a byte array and returns a unique identifier with which to re-establish the state.

This method accepts an id which represents the unique identifier that should be used to re-establish the application module state. The id must have been generated by invoking ApplicationModule.reserveSnapshotId(int).

The same snapshot type bit which was specified when the snapshot id was reserved should be specified when this method is invoked. For example, if reserveSnapshotId was invoked with the PASSIVATE_TRANSIENT_FLAG set then this method should be invoked with the PASSIVATE_TRANSIENT_FLAG set. Failing to do so may result in invalid snapshot id exceptions.

For more information regarding passivation please see ApplicationModule.passivateState(byte[], int).

Specified by:
passivateState in interface ApplicationModule
Parameters:
id - a reserved passivation id
clientData - cached changes, or any information that a client might want to store.
flags - a bit map defining passivation flags.
Returns:
a unique integer identifier associated with an instance of the application module.
See Also:
ApplicationModule.reservePassivationId()

passivateState

public int passivateState(byte[] clientData,
                          int flags)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Creates a snapshot of the current state of this application module's session. If the PASSIVATE_TRANSIENT_FLAG is not set then the snapshot bytes will be serialized to a persistent store (database or file). If the PASSIVATE_TRANSIENT_FLAG bit is set then the snapshot bytes will be pushed to the application module snapshot stack. The method will then return a unique identifier which may be used to activate the state. Please note that the same snapshot type bit should be used to activate the state as was used to passivate the state. Failing to do so could result in the snapshot record not being located.

This method always works from the top-level application module. If you have nested application modules and you call this method on a inner application module, it will still work from the top-level module.

In contrast to ApplicationModule.activateState(int, SessionData, int), which deserializes a session-state from the persistent store, calling passivateState, does not affect the transaction state.

The cached changes, or clientData, can be any information that a client might want to store. For example, a JSP client could store the additional client-state information in this byte array so that when the JSP client becomes active and connects to an application module later, it could get its passivated state from the application module. This would reduce the amount of state information stored at the client side to a bare minimum (typically just an application module persistence ID).

A value of null for clientData indicates that the state will be stored, but there is no client data to be preserved.

This method preserves currency. When ApplicationModule.activateState(int, SessionData, int) is called, the active row is returned.

For example, the following code snippet inserts a new row in a view object, then calls passivateState to save the application module state. The transaction is rolled back and activateState is called. The value of getCurrentRow called before the passivateState should match the the value of getCurrentRow called after activateState.

 // create a view object "depts"
 ViewObject depts = appModule.createViewObject("myDeptView", "myDeptViewDef");

 // insert a new row into depts
 Row r = depts.createRow();
 r.setAttribute("DeptNum","56");
 depts.insertRow(r);

 Row afterInsert = depts.getCurrentRow();

 // Passivate the application module state
 int id = appModule.passivateState(null);

 // rollback the transaction
 appModule.getTransaction.rollback();

 // move the cursor to the last row -- just to make it interesting
 depts.last();

 // now activate the application module state
 // currency should be on the new row inserted.
 appModule.activateState(id, SessionData, int);

 Row afterActivate = depts.getCurrentRow();
 

The values afterInsert and afterActivate should be the same.

Specified by:
passivateState in interface ApplicationModule
Parameters:
clientData - cached changes, or any information that a client might want to store.
flags - a bit map defining passivation flags.
Returns:
a unique integer identifier associated with an instance of the application module.

passivateStateForUndo

public java.lang.String passivateStateForUndo(java.lang.String id,
                                              byte[] clientData,
                                              int flags)
Description copied from interface: ApplicationModule
Create an application module undo record.

application module state that is passivated using this method will have transaction scope only -- the passivated state will be removed when a transaction commit/rollback occurs.

application module state snapshots that are created using this method will be pushed to an LIFO stack. This stack is defined as part of the application module transaction state and as such will be maintained by application module passivation/activation.

The application developer may specify their own snapshot id by passing an id in for the request. If no id has been specified then an id will be generated by the system and returned. If a snapshot already exists for this transaction with the specified id then the old snapshot will be removed from the snapshot stack.

The application developer may control whether a persistent snapshot (on-disk) or a transient snapshot (in-memory) is taken with the BC4J session property, PropertyConstants.ENV_SNAPSHOT_STORE_UNDO.

A value of PropertyConstants.SNAPSHOT_STORE_PERSISTENT (default) directs the algorithm to create a persistent snapshot (on-disk) for this undo request. The location of the persistent snapshot may further be controlled by the BC4J propery PropertyConstants.ENV_PASSIVATION_STORE which accepts values of {file,database}.

A value of PropertyConstants.SNAPSHOT_STORE_TRANSIENT directs the algorithm to create a transient snapshot (in-memory). Transient snapshots are not guaranteed to be maintained in the event of system failure.

Setting the flags parameter value to ApplicationModule.PASSIVATE_DEFER_FLAG allows the snapshot creation to be deferred until the application module is checked in. For typical web-based applications, this means that the snapshot would be created at the end of the request when the application module checkin is invoked.

Most applications using the application module pool are highly encouraged to use this flag value for performance and memory usage optimization. Deferring the snapshot creation allows one snapshot to be used for both transaction undo and failover support.

Deferred passivation should not be requested if it is necessary to capture the application module state at the time of the undo request -- a deferred undo request does not guarantee that the passivated state equals the application module state at the time of the undo request.

Specified by:
passivateStateForUndo in interface ApplicationModule
Parameters:
id - the id which is to be used to identify this undo record. The id should be unique within a transaction. If an id is not specified then an id will be generated by the system and returned.
clientData - a byte array representing any clientData which the invoker wishes to associate with the undo record.
flags - an int representing passivateStateForUndo flags. Valid flags are:

ApplicationModule.PASSIVATE_DEFER_FLAG see the discussion above for more information regarding the use of this flag.

In order to specify default behaviour the application developer may pass 0 for the flags parameter. Default behaviour is defined as immediate passivation.


activateState

public byte[] activateState(int id,
                            boolean remove,
                            SessionData info)
Specified by:
activateState in interface ApplicationModule

activateState

public byte[] activateState(int id,
                            boolean remove)
Specified by:
activateState in interface ApplicationModule

activateState

public byte[] activateState(int id,
                            SessionData info,
                            int flags)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Deserializes a session-state from the persistent store based on the given id. This method always works from the top-level application module. If you have nested application modules and you call this method on a inner application module, it will still work from the top-level module.

When the PERSISTENT_SNAPSHOT bit is set then this method will attempt to locate the snapshot bytes in a persistent store (database or file). If the PERSISTENT_SNAPSHOT bit is not set then this method will locate the snapshot bytes on the stack.

When this method is called, the rows that are updated are locked; new rows are inserted into the transaction cache and posted. This is in contrast to ApplicationModule.passivateState(byte[], int), which does not affect the transaction state.

The activateState method preserves currency. When it is called, it will return the row that was active when ApplicationModule.passivateState(byte[], int) was called. For an example usage of activateState, see ApplicationModule.passivateState(byte[], int).

If the REMOVE_SNAPSHOT bit is set in the flags then the activation framework will remove the snapshot from the persistent store after activation.

It is up to the developer to devise a clean-up strategy for the redundant store.

Specified by:
activateState in interface ApplicationModule
Parameters:
id - a unique integer identifier associated with an instance of the application module.
Returns:
a byte array containing any client information that was originally stored with the ApplicationModule.passivateState(byte[], int) method.

activateStateForUndo

public byte[] activateStateForUndo(java.lang.String id,
                                   int flags)
Description copied from interface: ApplicationModule
Restore an application module undo record.

Activates an application module state which was created using ApplicationModule.passivateStateForUndo(String, byte[], int).

If the id is not on the undo stack then an exception will be thrown indicating that it is an invalid undo id.

Invoking this method will remove all those undo records that are above (more recent) than the specified undo record.

Specified by:
activateStateForUndo in interface ApplicationModule
Parameters:
id - the id of an undo record that was created using ApplicationModule.passivateStateForUndo(String, byte[], int)
flags - Valid flags are:

N/A -- The flags are currently unused. Please pass 0.


isValidIdForUndo

public boolean isValidIdForUndo(java.lang.String id)
Description copied from interface: ApplicationModule
Determines if an id created using ApplicationModule.passivateStateForUndo(String, byte[], int) is still valid.

An id may become invalid if a transaction boundary (commit/rollback) has occured since the id was created.

Specified by:
isValidIdForUndo in interface ApplicationModule
Parameters:
id - the id of an undo record that was created using ApplicationModule.passivateStateForUndo(String id, byte[] clientData, int flags)

doPoolMessage

public ApplicationPoolSvcMsgContext doPoolMessage(ApplicationPoolSvcMsgContext ctx)
Description copied from interface: ApplicationModule
Internal use only. Applications should not use. Used by the ApplicationPool to send batch application module requests.

Specified by:
doPoolMessage in interface ApplicationModule

prepareSession

public void prepareSession(SessionData info)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Specified by:
prepareSession in interface ApplicationModule

resetState

public void resetState(boolean reload)
Specified by:
resetState in interface ApplicationModule

resetState

public void resetState(int flags)
Description copied from interface: ApplicationModule
Advanced use only

Applications should override/extend ApplicationModuleImpl.reset() to reset custom application module state. reset() is invoked by the internal resetState before resetState begins cleaning up internal application module state.

Flag usage:

RESET_RELOAD_FLAG directs resetState to eagerly reload the application module compoonents.

RESET_ROLLBACK_FLAG directs resetState to rollback the application module.

RESET_INTERNAL_FLAG directs resetState to perform an internal reset only. The ApplicationPool uses this to reset a managed state application module while also managing the previous session's state. For example, when RESET_INTERNAL has been specified the reset will not remove the persistent snapshot records on the snapshot stack.

Resets the non-transaction state of an application module. For example:

 appModule.resetState(false);
 

Specified by:
resetState in interface ApplicationModule

removeState

public void removeState(int id)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Removes the application module's session-state, and any cached change information, from the persistent store based on the given id. For example:

 appModule.removeState(id);
 

Specified by:
removeState in interface ApplicationModule
Parameters:
id - an unique integer identifier associated with an instance of the application module.

setStoreForPassiveState

public void setStoreForPassiveState(byte storageType)
Description copied from interface: ApplicationModule
Internal: Applications should not use this method.

Determines where the application module will store serialized versions of its session-state, plus any cached changes. This information can be stored to the database, to a file, or to memory, based on the value of the storageType parameter. The storageType can be set to:

This method should be called before calling ApplicationModule.passivateState(byte[]). Note that once an application module has serialized its state, it cannot be asked to change its store. This method will throw an JboException if this application module has already stored its state earlier.

For example, the following code will set the storage to database, file, or memory, based on the value of the str parameter. Database is the default target:

 String str =
    oracle.jbo.common.JboEnvUtil.getProperty("jbo.test.passivateStateTo");
 if (str != null)
 {
    if (str.equals("file"))
    {
      appModule.setStoreForPassiveState(ApplicationModule.PASSIVATE_TO_FILE);
    }
    else
    if (str.equals("memory"))
    {
      appModule.setStoreForPassiveState(ApplicationModule.PASSIVATE_TO_MEMORY);
    }
 

Specified by:
setStoreForPassiveState in interface ApplicationModule
Parameters:
storageType - where the application module state is stored. Can be one of ApplicationModule.PASSIVATE_TO_DATABASE (default target), ApplicationModule.PASSIVATE_TO_FILE, or ApplicationModule.PASSIVATE_TO_MEMORY.
See Also:
ApplicationModule.passivateState(byte[])

prepareViewObjects

public void prepareViewObjects(java.lang.String[] voNames,
                               java.lang.String[][] voAttrNames,
                               LocaleContext locale)
Description copied from interface: ApplicationModule
Prepares view objects for execution. One known implementing class is ApplicationModuleImpl, and it activates attributes on each of the view objects passed in.

Specified by:
prepareViewObjects in interface ApplicationModule
Parameters:
voNames - An array of view object names in this application module
voAttrNames - For each view object name, a list of attribute names for which the custom properties need to be brought over to the client side.

fetchAttributeProperties

public void fetchAttributeProperties(java.lang.String[] voNames,
                                     java.lang.String[][] voAttrNames,
                                     LocaleContext locale)
Description copied from interface: ApplicationModule
Fetches all custom properties for the given list of attributes for the named view objects in this application module over to the remote client objects in one network roundtrip. This method is a no-op in when this application module is deployed in local-mode.

For clients like JClient applications, this method helps in downloading all the attribute properties over to the client side in one roundtrip so that startup of these applications are more performant. Calls to properties methods like getFormat(), getLabel(), etc. on the Attribute definition then, does not go over the network boundary for the attributes that are included in the parameter list.

Specified by:
fetchAttributeProperties in interface ApplicationModule
Parameters:
voNames - An array of view object names in this application module
voAttrNames - For each view object name, a list of attribute names for which the custom properties need to be brought over to the client side.

applyVOSortCriteria

public void applyVOSortCriteria(ViewObject vo,
                                SortCriteria[] sortBy)
Internal: Applications should not use this method.


getDefName

public java.lang.String getDefName()
Description copied from interface: ComponentObject
Retrieves the name of the component's definition.

Specified by:
getDefName in interface ComponentObject
Returns:
a class name.

getDefFullName

public java.lang.String getDefFullName()
Description copied from interface: ComponentObject
Retrieves the fully-qualified name of the component's definition.

Specified by:
getDefFullName in interface ComponentObject
Returns:
a class name.

getName

public java.lang.String getName()
Description copied from interface: VariableManagerOwner
Returns the name of this Variable Manager Owner.

Specified by:
getName in interface ComponentObject
Specified by:
getName in interface VariableManagerOwner
Specified by:
getName in class WSObject
Returns:
the name.

getFullName

public java.lang.String getFullName()
Description copied from interface: ComponentObject
Retrieves the fully-qualified name of this component.

Specified by:
getFullName in interface ComponentObject
Overrides:
getFullName in class WSObject
Returns:
the name of the object.

remove

public void remove()
Description copied from interface: ComponentObject
Deletes this component.

Specified by:
remove in interface ComponentObject

closeWSApplicationModule

public void closeWSApplicationModule()
Shuts down the WSApplicationModule. This will not effect the MT resource that is associated with this WSApplicationModule.


getProperty

public java.lang.Object getProperty(java.lang.String hintName)
Description copied from interface: Properties
Retrieves the specified property, if it exists.

Specified by:
getProperty in interface Properties
Parameters:
hintName - Property name.
Returns:
the value of the property, if any, otherwise null.

getProperty

public java.lang.Object getProperty(java.lang.String hintName,
                                    LocaleContext locale)
Specified by:
getProperty in interface Properties

refreshProperty

public java.lang.Object refreshProperty(java.lang.String hintName)
Description copied from interface: Properties
Retrieves the specified property, if it exists. If the application running in a 3 tier environment, it retrieves the property from the middle-tier server, refreshing the value on the client side. If the application is running in a 2 tier environment, it is equivalent to getProperty.

Specified by:
refreshProperty in interface Properties
Parameters:
hintName - Property name.
Returns:
the value of the property, if any, otherwise null.

getProperties

public java.util.Hashtable getProperties()
Description copied from interface: Properties
Gets the table of properties.

Specified by:
getProperties in interface Properties
Returns:
a hashtable of properties.

resolve

public void resolve(ApplicationModule am)
Resolves the "impl" pointers


getWSApplicationModuleMarshaller

public WSApplicationModuleMarshaller getWSApplicationModuleMarshaller()

get

public java.lang.Object get(java.lang.Object keyObj)
Specified by:
get in interface java.util.Map
Overrides:
get in class WSObject

getVersion

public java.lang.String getVersion()
Description copied from interface: Session
Gets the middle tier's version information.

Specified by:
getVersion in interface Session
Returns:
The version information in the form major.minor.patch.bldNum.

getLocale

public java.util.Locale getLocale()
Description copied from interface: Session
Gets the current Locale used for localizing error messages.

Specified by:
getLocale in interface Session
Returns:
the current Locale.

setLocale

public void setLocale(java.util.Locale locale)
Description copied from interface: Session
Sets a new Locale for localizing error messages.

Specified by:
setLocale in interface Session
Parameters:
locale - the new Locale.

getPackageNames

public java.lang.String[] getPackageNames()
Description copied from interface: Session
Gets names of the packages that make up this middle tier application.

Specified by:
getPackageNames in interface Session
Returns:
The package names.

getApplicationModuleDefNames

public java.lang.String[] getApplicationModuleDefNames(java.lang.String packageName)
Description copied from interface: Session
Gets the names of the Application Module definitions contained in a package.

Specified by:
getApplicationModuleDefNames in interface Session
Parameters:
packageName - the name of the package.
Returns:
an array of ApplicationModule definition names.

getAllApplicationModuleDefNames

public java.lang.String[] getAllApplicationModuleDefNames()
Description copied from interface: Session
Gets the names of the Application Module definitions contained in all packages.

Specified by:
getAllApplicationModuleDefNames in interface Session
Returns:
an array of ApplicationModule definition names.

getViewDefNames

public java.lang.String[] getViewDefNames(java.lang.String packageName)
Description copied from interface: Session
Gets the names of the View Object definitions available in a package.

Specified by:
getViewDefNames in interface Session
Parameters:
packageName - the name of the package.
Returns:
String[] an array of ViewDef names.

getAllViewDefNames

public java.lang.String[] getAllViewDefNames()
Description copied from interface: Session
Gets the names of the View Object definitions available in all packages.

Specified by:
getAllViewDefNames in interface Session
Returns:
String[] an array of ViewDef names.

getEntityDefNames

public java.lang.String[] getEntityDefNames(java.lang.String packageName)
Description copied from interface: Session
Gets the names of the Entity Object definitions available in a package.

Specified by:
getEntityDefNames in interface Session
Parameters:
packageName - the name of the package.
Returns:
String[] an array of EntityDef names.

getAllEntityDefNames

public java.lang.String[] getAllEntityDefNames()
Description copied from interface: Session
Gets the names of the Entity Object definitions available in all packages.

Specified by:
getAllEntityDefNames in interface Session
Returns:
String[] an array of EntityDef names.

getEntityAssociationDefNames

public java.lang.String[] getEntityAssociationDefNames(java.lang.String packageName)
Description copied from interface: Session
Gets the names of the entity association definitions defined in a package.

Specified by:
getEntityAssociationDefNames in interface Session
Parameters:
packageName - the name of the package.
Returns:
String[] an array of EntityAssociationDef names.

getAllEntityAssociationDefNames

public java.lang.String[] getAllEntityAssociationDefNames()
Description copied from interface: Session
Gets the names of the entity association definitions defined in all packages.

Specified by:
getAllEntityAssociationDefNames in interface Session
Returns:
String[] an array of EntityAssociationDef names.

getViewLinkDefNames

public java.lang.String[] getViewLinkDefNames(java.lang.String packageName)
Description copied from interface: Session
Gets the names of the View Link definitions defined in a package.

Specified by:
getViewLinkDefNames in interface Session
Parameters:
packageName - the name of the package.
Returns:
String[] an array of ViewLinkDef names.

getAllViewLinkDefNames

public java.lang.String[] getAllViewLinkDefNames()
Description copied from interface: Session
Gets the names of the View Link definitions defined in all packages.

Specified by:
getAllViewLinkDefNames in interface Session
Returns:
String[] an array of ViewLinkDef names.

loadPackage

public void loadPackage(java.lang.String packageName)
Description copied from interface: Session
Loads a package that may be browsed for defined objects.

Specified by:
loadPackage in interface Session
Parameters:
packageName - a fully qualified package name.

getEnvironment

public java.util.Hashtable getEnvironment()
Description copied from interface: Session
Returns the BC4J context for the session. Examples of BC4J context include the values for the BC4J properties defined in PropertyMetadata. Applications should store custom session context in the Session userdata.

Specified by:
getEnvironment in interface Session
Returns:
a hashtable of BC4J session properties
See Also:
Session.getUserData()

getLocaleContext

public LocaleContext getLocaleContext()
Description copied from interface: Session
retrieves the locale context for the session

Specified by:
getLocaleContext in interface Session

getUserData

public java.util.Hashtable getUserData()
Description copied from interface: Session
Returns application context for the session. Applications may store any custom session data in this Hashtable. This hashtable will be reset by ApplicationModuleImpl.prepareSession(Session).

Specified by:
getUserData in interface Session

findSharedApplicationModule

public ApplicationModule findSharedApplicationModule(java.lang.String appModuleName)
Description copied from interface: Session
INTERNAL: Applications should not use.

Specified by:
findSharedApplicationModule in interface Session

invalidateSession

public void invalidateSession()
Description copied from interface: Session
INTERNAL: Applications should not use.

Specified by:
invalidateSession in interface Session

getUserRoles

public java.lang.String[] getUserRoles()
Description copied from interface: Session
Returns the Roles/Groups for current user principal.

Specified by:
getUserRoles in interface Session
Returns:
list of role names.

isUserInRole

public boolean isUserInRole(java.lang.String role)
Specified by:
isUserInRole in interface Session
Parameters:
role - the name of the role.
Returns:
true if the user is in role; false otherwise.

isClient

public boolean isClient()
Description copied from interface: Session
Returns whether this session is running as a client in 3 tier or not.

Specified by:
isClient in interface Session
Returns:
true if the session is in 3 tier. false if in 2 tier.

getCustomApplicationModule

public ApplicationModule getCustomApplicationModule()

invokeExportedMethod

public java.lang.Object invokeExportedMethod(java.lang.String methodName,
                                             java.lang.String[] argTypes,
                                             java.lang.Object[] args)
Specified by:
invokeExportedMethod in interface Exportable

findCustomViewObject

public ViewObject findCustomViewObject(java.lang.String voName,
                                       java.lang.String voType)

findCustomViewObject

public ViewObject findCustomViewObject(WSViewObjectImpl wsvo,
                                       java.lang.String voType)

getReleaseLevel

public int getReleaseLevel()
Description copied from interface: ApplicationModule
Returns the release level that should be employed by clients of this application module.

For example, the ADF/BC DataControl will invoke getReleaseLevel() to determine if this application module may be released to the ApplicationPool in SHARED_MANAGED_RELEASE_MODE or if the application module may be released in RESERVED_UNMANAGED_RELEASE_MODE.

Two release levels are currently supported:

RELEASE_LEVEL_MANAGED Default. Indicates that the application module is in a state that may be managed by BC4J state management service.

For more information about the BC4J state management service please see the passivation documentation.

RELEASE_LEVEL_RESERVED Indicates that the application module may not be managed by the BC4J state management service. Application modules may specify this release level if they reference session/txn state that may not be recreated by passivation/activation.

Common examples of state that is not currently managed by the state management service are posted database changes and database locks. Other custom examples may exist.

Care should be taken that the default RELEASE_LEVEL_MANAGED level is used for most releases. Using a RELEASE_LEVEL_RESERVED level throughout an application could result in scalability issues as application modules accumulate with the accumulation of new sessions.

If both flags have been specified then RELEASE_LEVEL_RESERVED will take precedence.

Specified by:
getReleaseLevel in interface ApplicationModule
Returns:
ApplicationModule.RELEASE_LEVEL_MANAGED or ApplicationModule.RELEASE_LEVEL_RESERVED

setReleaseLevel

public void setReleaseLevel(int releaseLevel)
Specified by:
setReleaseLevel in interface ApplicationModule
See Also:
ApplicationModule.getReleaseLevel()

createCompositeViewDef

public ViewDef createCompositeViewDef(java.lang.String name,
                                      java.lang.String fullName)
Specified by:
createCompositeViewDef in interface ApplicationModule

beginRequest

public void beginRequest(java.util.HashMap ctx)

endRequest

public void endRequest(java.util.HashMap ctx)

getMessageBundleClass

public java.lang.Class getMessageBundleClass()
Specified by:
getMessageBundleClass in interface VariableManagerOwnerBase

getResourceBundleDef

public ResourceBundleDef getResourceBundleDef()
Specified by:
getResourceBundleDef in interface VariableManagerOwnerBase

Oracle Fusion Middleware Java API Reference for Oracle ADF Model
11g Release 1 (11.1.1.0.0)

E10653-01

Copyright © 1997, 2008, Oracle. All rights reserved.