This document describes how an incoming request by the browser client is processed inside an adapter. The request contains all the changes of properties that have been made at client side. The following topics are covered:
init()
This method is called only once - when creating the adapter inside a subsession.
Before calling this method, Application Designer makes sure that the adapter instance is properly
registered inside the Application Designer environment. Therefore - for example - you have access
to the session management: use the findSessionContext()
or
findSubSessionContext()
method in order to look for some
values inside the init()
method. It is not possible to use
the find...SessionContext()
methods inside the constructor
of an adapter - since the session is not yet assigned to the adapter instance.
When navigating between pages (using the switchToPage()
or
openPopupPage()
method), the corresponding adapter
objects are only created once. For example, if you navigate from page
"A" to page "B" and back to
page "A", the adapter of page
"A" does not change. The
init()
method is only called once - at the time the
adapter is instanciated.
activate(...)
This method is implemented by the Adapter
class already. You
only need to overwrite this method if you want to passivate the state between
requests. In this case, you can activate this state inside your implemented method
of your adapter class. If you use the adapter class to cooperate, for example, with
components running in a container of an application server, you should synchronize
the state passivation with the container's passivation.
reactOnDataTransferStart()
This method is called when the transfer of the changed properties starts. You can
initialize some internal members at this time. If you overwrite this method, do not
forget to include the method of the super-class
(Adapter.reactOnDataTransferStart()
) into your method
implementation!
setXxx(), setYyy(), ...
Now, the set methods of the changed properties of the browser client are
transferred. It is very important that your implemented set methods never cause an
exception or an error.
reactOnDataTransferEnd()
This method is called after setting the changed properties. Use this method to
perform operations you always want to execute when processing a request.
invoke()-Method
If the request has a method call inside, the method is invoked now.
processAsDefault()
If the request has no method call, this standard method is called.
reactOnDataCollectionStart()
This method is called when the transfer of adapter properties starts. Use this
method, for example, for performance improvements during the following get methods,
for example, by building temporary objects.
getXxx(), getYyy()
All get methods of the adapter - including array elements which may be passed back
by - are called.
reactOnDataColletionEnd()
This method is called when data collection is finished. Temporary objects - which
you may have created for performance reasons - can be released for garbage
collection now.
passivate(...)
This method is the counterpart of the activate method.
endProcess()
This method is called inside the adapter if the user decides to terminate the
subsession. For example, in the Application Designer workplace environment, this method is called
whenever the user chooses the close button of a page.
You can deny closing a subsession in your implemented method:
public class ABCAdapter extends com.softwareag.cis.server.Adapter { ... ... public void endProcess() { // veto the endProcess in case of unsaved data if (changedDataNotSaved == true) { this.outputMessage("E","Please save data first"); return; } // close subsession super.endProcess(); } }
If a session is removed from Application Designer - for example, if the user closes the browser or if a system administrator removes the session - the adapter instances are informed in the following way:
destroy()
In your implemented method, clean up all resources bound to your adapter instance.
You cannot deny the destroying of the session - but you can react.
Error and runtime exceptions occurring during the adapter request processing may be handled centrally inside your adapter. For more details, see Binding between Page and Adapter.
The methods named above are already implemented with default behavior inside the class
com.softwareag.cis.server.Adapter
. Pay attention when
overwriting these methods inside your adapter and always include the super-class's
processing into your own implementation. The first statement inside your implementation
should call the super-class method:
public class ABCAdapter extends com.softwareag.cis.server.Adapter { ... ... public void reactOnDataTransferStart() { super.reactOnDataTransferStart(); // now own implementation ... ... } }