|
Business Components | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--oracle.jbo.common.ws.WSObject | +--oracle.jbo.common.ws.WSApplicationModule
Fields inherited from interface oracle.jbo.ApplicationModule |
DEFAULT_DEF_FULL_NAME, DEFAULT_ROOT_APP_MOD_NAME, PASSIVATE_TO_DATABASE,
PASSIVATE_TO_FILE, PASSIVATE_TO_MEMORY, SYNC_BATCH,
SYNC_IMMEDIATE, SYNC_LAZY |
Constructor Summary |
Type | Constructor |
---|---|
|
WSApplicationModule(ApplicationModule am)
|
|
WSApplicationModule(SessionCookie sessionCookie)
|
protected |
WSApplicationModule(java.lang.String name,
java.lang.String defName,
WSApplicationModule parent)
|
protected |
WSApplicationModule(java.lang.String name,
WSApplicationModule parent)
|
Method Summary |
Type | Method |
---|---|
byte[] |
activateState(int id,
boolean remove)
Internal: Applications should not use this method. |
byte[] |
activateState(int id,
boolean remove,
SessionData info)
Internal: Applications should not use this method. |
protected void |
addChild(java.lang.Object child)
|
void |
addWarning(JboWarning warn)
Adds a warning message. |
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 . |
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. |
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 Object 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 an 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. |
void |
detach()
|
void |
doInit()
|
void |
doWork()
|
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 ViewObjects 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. |
RowSetIterator |
findRSIForEntity(RowSetIterator[] rsis,
int eRowHandle)
Finds the RowSetIterator associated with the
specified Entity row handle. |
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[] attrName)
Given an array of View Objects (the vos parameter), finds the first matching View Object. |
WSComponentObject |
findWSComponentObject(java.lang.String coName)
|
WSViewLink |
findWSViewLink(java.lang.String vlName)
|
WSViewObject |
findWSViewObject(java.lang.String voName)
|
com.sun.java.util.collections.ArrayList |
getAllRowSetIterators()
|
java.lang.String |
getAMFullName()
|
java.lang.String[] |
getApplicationModuleNames()
Returns an array of names of the nested Application Modules that are contained within this Application Module. |
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. |
JboExceptionHandler |
getExceptionHandler()
|
java.lang.String |
getFullName()
Retrieves the fully-qualified name of this component. |
java.lang.Object |
getImplObject()
|
java.lang.String |
getName()
Retrieves the name of this component. |
com.sun.java.util.collections.HashMap |
getObjects()
|
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. |
Session |
getSession()
Gets the Application Module's session. |
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.lang.String[] |
getViewLinkNames()
Returns an array of the names of the View Links that are contained in this Application Module. |
java.lang.String[] |
getViewObjectNames()
Returns an array of names of the View Objects that are contained in this Application Module. |
boolean |
isRoot()
Returns true if this Application Module is a root Application Module. |
int |
passivateState(byte[] clientData)
Internal: Applications should not use this method. |
int |
passivateState(int id,
byte[] clientData)
Internal: Applications should not use this method. |
void |
prepareSession(SessionData info)
Internal: Applications should not use this method. |
java.lang.Object |
refreshProperty(java.lang.String hintName)
Retrieves the specified property, if it exists. |
void |
remove()
Deletes this component. |
void |
removeState(int id)
Internal: Applications should not use this method. |
int |
reservePassivationId()
Internal: Applications should not use this method. |
void |
resetState(boolean reload)
Internal: Applications should not use this method. |
void |
resolve(ApplicationModule am)
|
byte[] |
serialize()
|
void |
setExceptionHandler(JboExceptionHandler hndlr)
Sets the exception handler for this Application Module. |
void |
setImplObject(java.lang.Object o)
|
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 |
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. |
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 ViewObject that this entity is used in and then transforms the parameters from a given JboException from their Entity layer equivalents to the ViewObject equivalents. |
Methods inherited from class oracle.jbo.common.ws.WSObject |
getId |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public WSApplicationModule(ApplicationModule am)
public WSApplicationModule(SessionCookie sessionCookie)
protected WSApplicationModule(java.lang.String name, WSApplicationModule parent)
protected WSApplicationModule(java.lang.String name, java.lang.String defName, WSApplicationModule parent)
Method Detail |
public WSObject getParent()
getParent
in class WSObject
public com.sun.java.util.collections.HashMap getObjects()
public java.lang.Object getImplObject()
getImplObject
in class WSObject
public void setImplObject(java.lang.Object o)
setImplObject
in class WSObject
public void detach()
public java.lang.String getAMFullName()
protected void addChild(java.lang.Object child)
public byte[] serialize()
public void doInit()
public void doWork()
public com.sun.java.util.collections.ArrayList getAllRowSetIterators()
public ApplicationModule createApplicationModule(java.lang.String amName, java.lang.String defName)
ApplicationModule
defName
parameter.
Example code:
ApplicationModule nestedAM = parentAM.createApplicationModule("MyAM", "package1.Package1Module");
createApplicationModule
in interface ApplicationModule
oracle.jbo.ApplicationModule
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.InvalidObjNameException
- if amName
is an invalid name.
amName
must be a vaild Java name.NameClashException
- if a nested Application Module of amName
already exists in this Application Module. The
Application Module name must be unique.NoDefException
- if Application Module definition (named by the
defName
parameter) was not found.
Make sure defName
is fully qualified
with the package name.PersistenceException
- if some error was found while loading the
Application Module definition.public ApplicationModule findApplicationModule(java.lang.String amName)
ApplicationModule
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");
findApplicationModule
in interface ApplicationModule
oracle.jbo.ApplicationModule
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.null
if
the Application Module is not found.InvalidObjNameException
- if amName
is an invalid name.
amName
must be a vaild Java name.public java.lang.String[] getApplicationModuleNames()
ApplicationModule
Example code:
String[] nestedAMNames = parentAM.getApplicationModuleNames(); // If you want to retrieve all nested Application Modules ApplicationModule[] nestedAMs = new ApplicationModule[nestedAMNames.length]; for (int i = 0; i < nestedAMNames.length; i++) { nestedAM[i] = parentAM.findApplicationModule(nestedAMNames[i]); }
getApplicationModuleNames
in interface ApplicationModule
oracle.jbo.ApplicationModule
ApplicationModule.findApplicationModule(String)
public void sync()
ApplicationModule
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.
sync
in interface ApplicationModule
public void setSyncMode(int mode)
ApplicationModule
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.
setSyncMode
in interface ApplicationModule
oracle.jbo.ApplicationModule
mode
- the new synchronization mode: SYNC_LAZY
or
SYNC_IMMEDIATE
.ApplicationModule.getSyncMode()
,
ApplicationModule.SYNC_LAZY
,
ApplicationModule.SYNC_IMMEDIATE
public int getSyncMode()
ApplicationModule
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.
getSyncMode
in interface ApplicationModule
oracle.jbo.ApplicationModule
ApplicationModule.setSyncMode(int mode)
,
ApplicationModule.SYNC_LAZY
,
ApplicationModule.SYNC_IMMEDIATE
public ViewObject createViewObject(java.lang.String voName, java.lang.String defName)
ApplicationModule
defName
parameter.
Example code:
ViewObject vo = am.createViewObject("MyVO", "package1.DeptView");
createViewObject
in interface ApplicationModule
oracle.jbo.ApplicationModule
voName
- the name to be assigned to the View Object.
If null
, a system generated
name is assigned.defName
- the name of the View Object definition from which the new
View Object is to be created. It must
be a fully qualified name (including the package name).InvalidObjNameException
- if voName
is an invalid name.
voName
must be a vaild Java name.NameClashException
- if a View Object of voName
already exists in this Application Module. The
View Object name must be unique.NoDefException
- if View Object definition (named by the
defName
parameter) was not found.
Make sure defName
is fully qualified
with the package name.PersistenceException
- if some error was found while loading the
View Object definition.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)
ApplicationModule
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 Object definition from the Entity Object and sets the select, from, where, and order-by clauses of the View Definition. Then, it uses that View Object definition to create the View Object.
createViewObjectFromQueryClauses
in interface ApplicationModule
oracle.jbo.ApplicationModule
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 must 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.fromClause
- a SQL statement FROM clause.whereClause
- a SQL statement WHERE clause. If null
no where clause is established, 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.InvalidObjNameException
- if voName
is an invalid
name.
voName
must be a vaild Java name.NameClashException
- if a View Object of voName
already exists in this Application Module. The
View Object name must be unique.NoDefException
- if Entity Object (named by the
eoName
parameter) was not found.
Make sure eoName
is fully qualified
with the package name.PersistenceException
- if some error was found while loading the
Entity Object definition.SQLStmtException
- if a SQL syntax problem has been discovered while
attempting to parse the SQL clauses.public ViewObject createViewObjectFromQueryStmt(java.lang.String voName, java.lang.String sqlStatement)
ApplicationModule
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 Object definition with no Entity Object base and maps database columns to attribute definitions. Then, it uses that View Object definition to create the View Object.
createViewObjectFromQueryStmt
in interface ApplicationModule
oracle.jbo.ApplicationModule
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.InvalidObjNameException
- if voName
is an invalid name.
voName
must be a vaild Java name.NameClashException
- if a View Object of voName
already exists in this Application Module. The
View Object name must be unique.SQLStmtException
- if a SQL syntax problem has been discovered while
attempting to parse the SQL statement.public ViewObject findViewObject(java.lang.String voName)
ApplicationModule
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");
findViewObject
in interface ApplicationModule
oracle.jbo.ApplicationModule
voName
- the name of the View Object.null
if the View Object
is not found.NoObjException
- if an AM-qualified name was specified and the
containing Application Module could not be found.InvalidObjNameException
- if voName
is an invalid name.
voName
must be a vaild Java name.ApplicationModule.findApplicationModule(String)
,
ApplicationModule.findViewLink(String)
public WSViewObject findWSViewObject(java.lang.String voName)
public java.lang.String[] getViewObjectNames()
ApplicationModule
Example code:
String[] voNames = am.getViewObjectNames(); // If you want to retrieve all View Objects ViewObject[] vos = new ViewObject[voNames.length]; for (int i = 0; i < voNames.length; i++) { vos[i] = am.findViewObject(voNames[i]); }
getViewObjectNames
in interface ApplicationModule
oracle.jbo.ApplicationModule
ApplicationModule.findViewObject(String)
public ViewLink createViewLink(java.lang.String vlName, java.lang.String defName, ViewObject master, ViewObject detail)
ApplicationModule
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.
createViewLink
in interface ApplicationModule
oracle.jbo.ApplicationModule
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.InvalidObjNameException
- if vlName
is an invalid name.
vlName
must be a vaild Java name.NameClashException
- if a View Link of vlName
already exists in this Application Module. The
View Link name must be unique.NoDefException
- if View Link definition (named by the
defName
parameter) was not found.
Make sure defName
is fully qualified
with the package name.PersistenceException
- if some error was found while loading the
View Link definition.InvalidParamException
- (1) if master or detail is
null
(2) if master and detail
represent the same View Object (circular View
Link is disallowed)
(3) if master and detail's
definitions do not match the View Link
definition. See the above discussion for
more info.InvalidOperException
- if a recursive View Link chain is found.
Suppose we have three View Objects, VO_A, VO_B, VO_C.
Suppose we have View Links that link VO_A to
VO_B, VO_B to VO_C, and VO_C back to VO_A. Then,
we have a recursive View Link chain. This is
disallowed and reported as an error.ApplicationModule.createViewObject(String, String)
public ViewLink createViewLinkFromEntityAssocName(java.lang.String vlName, java.lang.String entityAssocName, ViewObject master, ViewObject detail)
ApplicationModule
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 (
The primary difference between
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.
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.
createViewLinkFromEntityAssocName
in interface
ApplicationModule
oracle.jbo.ApplicationModule
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.InvalidObjNameException
- if vlName
is an invalid name.
vlName
must be a vaild Java name.NameClashException
- if a View Link of vlName
already exists in this Application Module. The
View Link name must be unique.NoDefException
- if Entity Association (named by the
entityAssocName
parameter) was not found.
Make sure entityAssocName
is fully qualified
with the package name.PersistenceException
- if some error was found while loading the
Entity Association.InvalidParamException
- (1) if master or detail is
null
(2) if master and detail
represent the same View Object (circular View
Link is disallowed)
(3) if master and detail's
definitions do not match the Entity Association's
definition. See the above discussion for
more info.InvalidOperException
- if a recursive View Link chain is found.
Suppose we have three View Objects, VO_A, VO_B, VO_C.
Suppose we have View Links that link VO_A to
VO_B, VO_B to VO_C, and VO_C back to VO_A. Then,
we have a recursive View Link chain. This is
disallowed and reported as an error.ApplicationModule.createViewObject(String, String)
public ViewLink createViewLinkBetweenViewObjects(java.lang.String vlName, java.lang.String accessorName, ViewObject master, AttributeDef[] srcAttrs, ViewObject detail, AttributeDef[] destAttrs, java.lang.String assocClause)
ApplicationModule
For example, suppose we have two Views 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")); } }
createViewLinkBetweenViewObjects
in interface ApplicationModule
oracle.jbo.ApplicationModule
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.InvalidObjNameException
- (1) if vlName
is
an invalid name.
vlName
must be a vaild Java name.
(2) if accessorName
is an invalid name.
accessorName
must be valid Java name.NameClashException
- (1) if a View Link of vlName
already exists in this Application Module. The
View Link name must be unique.
(2) if an attribute of accessorName
already exists in the master View Object. The
accessor (attribute) name must be unique.InvalidParamException
- (1) if master or detail is
null
(2) if master and detail
represent the same View Object (circular View
Link is disallowed)
(3) if master and detail's
definitions do not match the Entity Association's
definition. See the above discussion for
more info.InvalidOperException
- if a recursive View Link chain is found.
Suppose we have three View Objects, VO_A, VO_B, VO_C.
Suppose we have View Links that link VO_A to
VO_B, VO_B to VO_C, and VO_C back to VO_A. Then,
we have a recursive View Link chain. This is
disallowed and reported as an error.ApplicationModule.createViewObject(String, String)
,
StructureDef.findAttributeDef(String)
,
RowIterator.next()
,
AttributeList.getAttribute(String)
public ViewLink findViewLink(java.lang.String vlName)
ApplicationModule
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");
findViewLink
in interface ApplicationModule
oracle.jbo.ApplicationModule
vlName
- the name of the View Link.null
if the View Link
is not found.NoObjException
- if an AM-qualified name was specified and the
containing Application Module could not be found.InvalidObjNameException
- if vlName
is an invalid name.
vlName
must be a vaild Java name.ApplicationModule.findApplicationModule(String)
,
ApplicationModule.findViewObject(String)
public WSViewLink findWSViewLink(java.lang.String vlName)
public java.lang.String[] getViewLinkNames()
ApplicationModule
Example code:
String[] vlNames = am.getViewLinkNames(); // If you want to retrieve all View Links ViewLink[] vls = new ViewLink[vlNames.length]; for (int i = 0; i < vlNames.length; i++) { vls[i] = am.findViewLink(vlNames[i]); }
getViewLinkNames
in interface ApplicationModule
oracle.jbo.ApplicationModule
ApplicationModule.findViewLink(String)
public ComponentObject createComponentObject(java.lang.String coName, java.lang.String coDefName)
ApplicationModule
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.)
createComponentObject
in interface ApplicationModule
oracle.jbo.ApplicationModule
coName
- the name to be assigned to the Component Object.
If null
, a system generated
name is assigned.defName
- 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).InvalidObjNameException
- if coName
is an invalid name.
coName
must be a vaild Java name.NameClashException
- if a Component Object of coName
already exists in this Application Module. The
Component Object name must be unique.NoDefException
- if Component Object definition (named by the
defName
parameter) was not found.
Make sure defName
is fully qualified
with the package name.PersistenceException
- if some error was found while loading the
Component Object definition.public ComponentObject findComponentObject(java.lang.String coName)
ApplicationModule
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.
findComponentObject
in interface ApplicationModule
oracle.jbo.ApplicationModule
coName
- the name of the Component Object.null
if the Component Object
is not found.NoObjException
- if an AM-qualified name was specified and the
containing Application Module could not be found.InvalidObjNameException
- if coName
is an invalid name.
coName
must be a vaild Java name.ApplicationModule.findApplicationModule(String)
public WSComponentObject findWSComponentObject(java.lang.String coName)
public boolean isRoot()
ApplicationModule
isRoot
in interface ApplicationModule
oracle.jbo.ApplicationModule
public Transaction getTransaction()
ApplicationModule
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.
getTransaction
in interface ApplicationModule
oracle.jbo.ApplicationModule
java.lang.IllegalStateException
- if no root Application Module is found.
This could happen if the user calls this
method on an Application Module that haspublic Session getSession()
ApplicationModule
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.
getSession
in interface ApplicationModule
oracle.jbo.ApplicationModule
java.lang.IllegalStateException
- if no root Application Module is found.
This could happen if the user calls this
method on an Application Module that hasApplicationModuleImpl.activate(Session)
public java.lang.Object getSyncLock()
ApplicationModule
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. }
getSyncLock
in interface ApplicationModule
oracle.jbo.ApplicationModule
public void clearVOCaches(java.lang.String entityName, boolean recurse)
ApplicationModule
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.
clearVOCaches
in interface ApplicationModule
oracle.jbo.ApplicationModule
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.public RowSetIterator findRSIForEntity(RowSetIterator[] rsis, int eRowHandle)
ApplicationModule
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.
findRSIForEntity
in interface ApplicationModule
oracle.jbo.ApplicationModule
rsis
- an array of RowSetIterator
's to look through.eRowHandle
- the Entity row handle.RowSetIterator
.DMLException
,
RowSetIterator
,
DMLException
public ViewObject findViewObjectUsingEntity(ViewObject[] vos, java.lang.String entityName, java.lang.String[] attrName)
ApplicationModule
findViewObjectUsingEntity
in interface ApplicationModule
oracle.jbo.ApplicationModule
vos
- an array of possible View Objects.entityName
- fully qualified name of the Entity object.
Should not be null
.attrName
- 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.NoDefException
- if the Entity could not be found.PersistenceException
- if some error was found while loading the
Entity Object definition.public java.lang.Object[] transformExceptionParams(ViewObject[] vos, java.lang.String entityDefName, java.lang.String className, java.lang.Object[] params)
ApplicationModule
transformExceptionParams
in interface ApplicationModule
oracle.jbo.ApplicationModule
vos
- an array of possible View Objects.entityName
- fully qualified name of the Entity object.
Should not be null
.exceptionClassName
- Qualified classname for the Exception which is being mappedparams
- Parameters from the Exception that is to be transformed into ViewObject
equivalents.NoDefException
- if the Entity could not be found.PersistenceException
- if some error was found while loading the
Entity Object definition.public JboExceptionHandler getExceptionHandler()
getExceptionHandler
in interface ApplicationModule
public void setExceptionHandler(JboExceptionHandler hndlr)
ApplicationModule
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.
setExceptionHandler
in interface ApplicationModule
oracle.jbo.ApplicationModule
hndlr
- an exception handler.public void addWarning(JboWarning warn)
ApplicationModule
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.
addWarning
in interface ApplicationModule
oracle.jbo.ApplicationModule
warn
- warning message.public ClientDocument getStyles(java.lang.String name)
ApplicationModule
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:
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)
.
getStyles
in interface ApplicationModule
oracle.jbo.ApplicationModule
name
- the XML file name.ClientDocument
.ClientDocument
public void setStyles(java.lang.String name, ClientDocument clientDocument)
ApplicationModule
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:
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.
setStyles
in interface ApplicationModule
oracle.jbo.ApplicationModule
name
- the XML file name.clientDocument
- the ClientDocument
to be saved.ClientDocument
public int reservePassivationId()
ApplicationModule
Reserves a unique indentifier which may later be specified when passivating AM state as the identifier to be used for re-establishing AM state.
This method may be invoked to obtain a unique passivation identifier before passivation actually occurs. An example use case is an HTTP servlet that must encode all URLs with an Application Module's state identifier before that Application Module is passivated.
reservePassivationId
in interface ApplicationModule
oracle.jbo.ApplicationModule
ApplicationModule.passivateState(int, byte[]).
public int passivateState(int id, byte[] clientData)
ApplicationModule
Serializes the current state of this Application Module's session, along with all changes cached, to a persistent store 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.reservePassivationId()
.
For more information regarding passivation please see ApplicationModule.passivateState(byte[])
.
passivateState
in interface ApplicationModule
oracle.jbo.ApplicationModule
id
- a reserved passivation idclientData
- cached changes, or any information that a client might
want to store.oracle.jbo.server.ApplicationModule#reservePassivationId()
public int passivateState(byte[] clientData)
ApplicationModule
Serializes the current state of this Application Module's session, along with all changes cached, to a persistent store and returns a unique identifier with which to re-establish the state.
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, boolean)
, 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, boolean)
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, false); Row afterActivate = depts.getCurrentRow();
The values afterInsert and afterActivate should be the same.
passivateState
in interface ApplicationModule
oracle.jbo.ApplicationModule
clientData
- cached changes, or any information that a client might
want to store.public byte[] activateState(int id, boolean remove, SessionData info)
ApplicationModule
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 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[])
, 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[])
was called.
For an example usage of activateState, see ApplicationModule.passivateState(byte[])
.
The remove parameter gives you the option of removing the state or keeping it. A value of true will remove the session-state from the persistent store. If false is passed to the method, then the Application Module state remains in whatever persistence store was selected. It is up to the developer to devise a clean-up strategy for the redundant store.
activateState
in interface ApplicationModule
oracle.jbo.ApplicationModule
id
- a unique integer identifier associated with an instance of the
Application Module.remove
- true to remove the session-state from the persistent
store.ApplicationModule.passivateState(byte[])
method.public byte[] activateState(int id, boolean remove)
ApplicationModule
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 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[])
, 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[])
was called.
For an example usage of activateState, see ApplicationModule.passivateState(byte[])
.
The remove parameter gives you the option of removing the state or keeping it. A value of true will remove the session-state from the persistent store. If false is passed to the method, then the Application Module state remains in whatever persistence store was selected. It is up to the developer to devise a clean-up strategy for the redundant store.
activateState
in interface ApplicationModule
oracle.jbo.ApplicationModule
id
- a unique integer identifier associated with an instance of the
Application Module.remove
- true to remove the session-state from the persistent
store.ApplicationModule.passivateState(byte[])
method.public void prepareSession(SessionData info)
ApplicationModule
prepareSession
in interface ApplicationModule
public void resetState(boolean reload)
ApplicationModule
Resets the non-transaction state of an application module. For example:
appModule.resetState(false);
resetState
in interface ApplicationModule
oracle.jbo.ApplicationModule
reload
- forces the application module to reload any child view usages,
application module usages, and view link usages.public void removeState(int id)
ApplicationModule
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);
removeState
in interface ApplicationModule
oracle.jbo.ApplicationModule
id
- an unique integer identifier associated with an instance of the
Application Module.public void setStoreForPassiveState(byte storageType)
ApplicationModule
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:
ApplicationModule.PASSIVATE_TO_DATABASE
(default target)ApplicationModule.PASSIVATE_TO_FILE
ApplicationModule.PASSIVATE_TO_MEMORY
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); }
setStoreForPassiveState
in interface ApplicationModule
oracle.jbo.ApplicationModule
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
.JboException
- if this Application Module has already
stored its state earlier.ApplicationModule.passivateState(byte[])
public void fetchAttributeProperties(java.lang.String[] voNames, java.lang.String[][] voAttrNames, LocaleContext locale)
ApplicationModule
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.
fetchAttributeProperties
in interface ApplicationModule
oracle.jbo.ApplicationModule
voAndAttrNames
- An array of ViewObject names in this application
module and for each ViewObject name, a list of attribute names for which
the custom properties need to be brought over to the client side.public java.lang.String getDefName()
ComponentObject
getDefName
in interface ComponentObject
oracle.jbo.ComponentObject
public java.lang.String getDefFullName()
ComponentObject
getDefFullName
in interface ComponentObject
oracle.jbo.ComponentObject
public java.lang.String getName()
ComponentObject
getName
in interface ComponentObject
oracle.jbo.ComponentObject
public java.lang.String getFullName()
ComponentObject
getFullName
in interface ComponentObject
oracle.jbo.ComponentObject
public void remove()
ComponentObject
remove
in interface ComponentObject
public java.lang.Object getProperty(java.lang.String hintName)
Properties
getProperty
in interface Properties
oracle.jbo.Properties
hintName
- Property name.null
.public java.lang.Object refreshProperty(java.lang.String hintName)
Properties
getProperty
.refreshProperty
in interface Properties
oracle.jbo.Properties
hintName
- Property name.null
.public java.util.Hashtable getProperties()
Properties
getProperties
in interface Properties
oracle.jbo.Properties
public void resolve(ApplicationModule am)
|
Business Components | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |