Use an object's most recent completion code to determine the outcome of a request that your application made against that object.
Most state-changing methods in the IBM® Integration API do not provide return code that indicates the success or failure of a specific action. For these methods, you must write different code to discover the outcome of the action.
The following code example shows how to view the outcome of a request to modify the LongDescription of the integration node, where b is an instance of a BrokerProxy object:
GregorianCalendar oldCCTime =
b.getTimeOfLastCompletionCode();
b.setLongDescription(newDesc);
GregorianCalendar newCCTime = oldCCTime;
while ((newCCTime == null) || (newCCTime.equals(oldCCTime))) {
newCCTime = b.getTimeOfLastCompletionCode());
Thread.sleep(1000);
}
CompletionCodeType ccType = b.getLastCompletionCode();
if (ccType == CompletionCodeType.success) {
// etc.
}
In this example, the application initially determines when an action on the integration node was last completed, by using the getTimeOfLastCompletionCode() method. This method returns the time that the topology last received a completion code or, if no return codes were received, a null value. The application updates the integration node's LongDescription, then continually monitors the topology, waiting for the results of the setLongDescription() command to be returned to the IBM Integration API. When the results are returned, control breaks out of the while loop and the last completion code is determined.
This algorithm for determining the outcome of commands is inefficient, because it causes the custom integration application to wait while the integration node processes the request. The algorithm is also not suited for multi-threading.
For a more efficient application, and one that is suitable for a multi-threaded environment, code an alternative approach that uses administered object notifications; see Checking the results of integration node management with object notification by using a custom integration application.
If
you prefer, you can make property changes synchronously by using the
methodBrokerProxy.setSynchronous() method. When
you make synchronous property changes, methods such as setLongDescription() do
not return until the change is processed by the integration node.
For more information about synchronous property changes, see the description
of the BrokerProxy.setSynchronous()) method in
the IBM Integration
API Javadoc information (IBM Integration
API).