The Transfer Layer


The Transfer Layer provides send, receive and container composition services for the Commerce Layer service classes in order to exchange information between client and server including security attributes. The basic classes to perform these operations are the GroupTransfer and Container classes.

When a connection between a client and a server is established via CLConnection objects on either side both of them will create an associated GroupTransfer object which will be used as the underlying means of data transportation between client and server. The GroupTransfer class itself according to the SEMPER architecture uses the Communication Layer's services to build a connection and to deliver data to its destination.

If a connection has finally been established from one GroupTransfer to its corresponding partner, both constructors return thus enabling the CLConnection objects above to do their final initialisation. Once their constructors return as well, the SemperClient/SemperServer may invoke the corresponding business applications passing them the connection objects.

Each Commerce Layer service class derived from CLServices makes use of the CLConnection object it gets on invocation by using its GroupTransfer object's send/receive services to transmit data tree structures created with the methods of the Container and Node classes. Before a GroupTransfer object sends the data to its counterpart the tree nodes are interpreted and the appropriate methods of the Statement Block and the Payment Block are invoked in order e.g. to retrieve signatures and to sign the transactions (these features are currently being integrated). These classes are currently used/implemented to provide send/receive and security services:

The following passages will provide a short description of the classes:

Class: GroupTransfer

Provides the send/receive service for the Commerce Layer. Each CLConnection object creates its own GroupTransfer object to establish a connection between client and server. This object uses the Communication Block's facilities (see also the chapter about the Communication Layer) to finally build up the connection. An exception will be raised in case there is no way to instantiate a connection.

Furthermore, before the first send/receive invocation, a statement session will be built up for the connection to provide the Statement Manager's services for this connection (Encryption, Authentication, Signature).

Once there exists a GroupTransfer object on either side of a connection, Commerce Layer services can use it to exchange transaction data tree structures stored in containers.

Every time a send method is invoked it processes the data tree structure provided in a container by calling the appropriate services according to the node types, e.g. methods of the Statement Manager in case of statement nodes, resp. Payment Manager in case of payment nodes.

Class: PortManager

The PortManager class provides the management of different ports (as part of an internet address) for different entities. This class cannot be instantiated, all methods are static. This is necessary because it deals with service points of the Communication Block (see Communication Layer). For each port only one ServicePointThread can be opened. For this reason it is not possible to start two processes using the same ports (e.g. two clients or client and server). In order to start two or more clients there have to be threads (one for each) in one process.

Class: Container

Provides the services to build a container step by step. The calling entity in this case has to have more knowledge of the container structure and of the security requirements.

Class: Node

The node class is the brick on which container trees are build. We defined here a generic node class that can be used to build every kind of container. This class provides all the necessary methods to do a set, get, delete operation on every variable.

Class: TransferData

This class defines the actual data stored within the nodes of the data tree structure stored within a container that is transmitted from client to server or vice versa.

Class: Security

This class contains all security attributes to be applied on a container and single nodes that are to be sent between client and server. The following attributes are provided: These attributes - if set - are processed by the Statement Manager that will be invoked by a GroupTransfer object. Currently the options MESSAGE_CONFIDENTIALITY (encryption), MESSAGE_INTEGRITY (signature) and MESSAGE_AUTHENTICATION (authentication) are supported via calls to appropriate services of the Statement Manager.

Exceptions

Exceptions are handled by this module:

Advanced services.

There are already some classes for the handling of advanced services like context handling, yet they are not implemented yet and therefore currently not listed here.


The documentation includes an index and a tree depicting the class structure.

All the files generated by javadoc are found via the package index.