FileDocCategorySizeDatePackage
RegisteredStatics.javaAPI DocGlassfish v2 API8501Wed Jun 13 23:03:48 BST 2007com.sun.jts.CosTransactions

RegisteredStatics

public class RegisteredStatics extends Object
The RegisteredStatics class provides operations that manage the set of StaticResource objects and distributes association operations to those registered objects.
version
0.01
author
Simon Holdsworth, IBM Corporation
see

Fields Summary
private Vector
registered
Constructors Summary
RegisteredStatics()
Default RegisteredStatics constructor.

param
return
see


               
     
Methods Summary
voidaddStatic(StaticResource obj)
Adds the given StaticResource object to the set of those informed of thread association changes.

If there is a current thread association, then the added StaticResource is called immediately so that it is aware of the association.

param
obj The StaticResource to be added.
return
see


        registered.addElement(obj);

        // Determine whether there is a current association.

        try {
            org.omg.CosTransactions.Coordinator coord =
                CurrentTransaction.getCurrentCoordinator();

            // Tell the StaticResource that the association has started.
            // Pretend that it is a begin association, as the
            // StaticResource has not seen the transaction before.

            if (coord != null) {
                obj.startAssociation(coord, true);
            }
        } catch(Throwable exc) {
            // Discard any exception.
        }
    
voiddistributeEnd(ControlImpl control, boolean complete)
Informs all registered StaticResource objects that a thread association has ended.

The Control object representing the transaction is given.

A flag is passed indicating whether this association is as a result of the transaction completing.

param
control The transaction whose association has ended.
param
complete Indicates that this is a commit/rollback rather than a suspend.
return
see


        // Determine the Coordinator for the transaction.

        org.omg.CosTransactions.Coordinator coord = null;

        try {
            coord = control.get_coordinator();
        } catch (Unavailable exc) {}

        // Browse through the set, telling each that the association is ending.

        if (coord != null) {
            for (int i = 0; i < registered.size(); i++) {
                StaticResource resource =
                    (StaticResource)registered.elementAt(i);
                try {
                    resource.endAssociation(coord, complete);
                } catch (Throwable e) {
                    // Discard any exception.
                }
            }
        }
    
voiddistributeStart(ControlImpl control, boolean begin)
Informs all registered objects an association has started.

The Control object which represents the transaction is given.

A flag is passed indicating whether this association is as a result of a Current.begin operation.

param
control The transaction whose association has started.
param
begin Indicates if this is a begin rather than a resume.
return
see


        // Determine the Coordinator for the transaction.

        org.omg.CosTransactions.Coordinator coord = null;

        try {
            coord = control.get_coordinator();
        } catch (Unavailable exc) {}

        // Browse through the set, telling each that association is starting.

        if (coord != null) {

            for (int i = 0; i < registered.size(); i++) {

                StaticResource resource =
                    (StaticResource) registered.elementAt(i);

                try {
                    resource.startAssociation(coord, begin);
                } catch (INVALID_TRANSACTION exc) {
                    // Catch INVALID_TRANSACTION exception, and allow it to
                    // percolate. We need to inform all previously called
                    // StaticResources that the association has ended
                    // immediately.

                    for (int j = i - 1; j >= 0; j--) {
                        ((StaticResource) registered.elementAt(j)).
                            endAssociation(coord, begin);
                    }

                    throw (INVALID_TRANSACTION)exc.fillInStackTrace();
                } catch (Throwable exc) {
                    // discard any other exception
                }
            }
        }
    
booleanremoveStatic(StaticResource obj)
Removes the given StaticResource object from the set of those informed of thread association changes.

param
obj The StaticResource to be removed.
return
Indicates success of the operation.
see


        boolean result = registered.removeElement(obj);
        return result;