registerInterface

A local Java object, to be mapped out of this environment via a given
bridge.

A proxy object, mapped into this environment via some bridge
B1, and now to be mapped out of this environment via a
given bridge B2.

A proxy object, created as a remote object is mapped into this
environment via a given bridge.

The object actually registered may differ from the specified
object that is passed as an argument. This enables an
environment to work in a multi-threaded scenario, where two threads can
call registerInterface for the same combination of
oid and type at the same time; the race
condition is solved by letting one of the calls register its argument
object, ignoring the argument object of the
other call, and letting both calls return the same
object.

The registered object is held only weakly by the environment. After a
call to registerInterface, a call to
getRegisteredInterface only succeeds as long as the
registered object is still strongly reachable, and the registered object
has not been explicitly revoked by calling
revokeInterface.

Parameters:

object - the object to register; must be non-null

oid - in-out parameter containing the OID of object.
This must be a non-null reference to an array of length at least one;
the zeroth element is used to pass the argument in and out. If the
zeroth element is null on input, the OID will be computed and passed
out (that is, the zeroth element will never be null upon normal
return).

type - the UNO interface type to register. This argument must be
non-null, and must denote a UNO interface type. The given
object should implement this type.

Returns:

the registered object (may differ from the object
passed in); will never be null

revokeInterface

Calls to registerInterface and
revokeInterface must be paired. A facet is only removed
from the environment when it has been revoked as often as it has been
registered. This may change in the future, so that a facet would be
removed upon the first call to revokeInterface (and calls to
revokeInterface would no longer be necessary if the calling
code does not want to control the temporal extent of the
registration).

It is not an error if the specified facet is not registered at this
environment (either because no corresponding object has ever been
registered, or it has been explicitly revoked, or it is no longer
strongly reachable). In such a case, this method simply does
nothing.

Parameters:

oid - the OID of the object to revoke; must be non-null

type - the UNO interface type of the object to revoke. This
argument must be non-null, and must denote a UNO interface type.