/**
* Start time:14:03:29 2009-01-30<br>
* Project: mobicents-media-server-controllers<br>
*
* @author <a href="mailto:baranowb@gmail.com">baranowb - Bartosz Baranowski
* </a>
* @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
*/
package javax.megaco.association;
import javax.megaco.AssociationEvent;
import javax.megaco.ErrorCode;
import javax.megaco.MethodInvocationException;
import javax.megaco.ReturnStatus;
public class DeleteTxnResp extends AssociationEvent {
private int txnHandle = -1;
protected ReturnStatus eventStatus = null;
protected ErrorCode errorCode = null;
public DeleteTxnResp(Object source, int assocHandle) throws IllegalArgumentException {
super(source, assocHandle);
// TODO Auto-generated constructor stub
}
public DeleteTxnResp(Object source, int assocHandle, int txnHandle) throws IllegalArgumentException {
super(source, assocHandle);
this.setTxnHandle(txnHandle);
}
@Override
public final int getAssocOperIdentifier() {
return AssocEventType.M_DELETE_TXN_RESP;
}
/**
* This method returns whether the delete transaction event was successful
* or not.
*
* @return Returns an integer value that identifies whether the delete
* transaction event issued earlier could be performed successfuly
* or not. The values are field constants defined in class
* ReturnStatus. If the returnStatus is not set, then this method
* would return value null.
*/
public final ReturnStatus getEventStatus() {
// return eventStatus == null ? 0 : eventStatus.getReturnStatus();
return eventStatus;
}
/**
* This method sets the status of whether the processing of the delete
* transaction event was successful or not.
*
* @param returnStatus
* - The return status of the processing of the delete
* transaction event. The static object corresponding to the
* return status which are one of the derived classes of the
* ReturnStatus shall be set.
* @throws IllegalArgumentException
* This exception is raised if the reference of Return Status
* passed to this method is NULL.
*/
public final void setEventStatus(ReturnStatus returnStatus) throws IllegalArgumentException {
if (returnStatus == null)
throw new IllegalArgumentException("Event status can not be null.");
this.eventStatus = returnStatus;
}
/**
* This method returns the error code qualifying why the modify association
* event could not be processed successfuly.
*
* @return Returns an integer value that identifies the error code
* specifying why the execution of the modify association event
* could not be successful. The possible values are field constants
* defined for the class ErrorCode. If the error code is not set,
* then this method would return value null.
* @throws IllegalStateException
* - This exception would be raised if the return status is set
* to M_SUCCESS, the error code is not set and hence should not
* invoke this method.
*/
public final ErrorCode getErrorCode() throws IllegalStateException {
if (getEventStatus() == null || getEventStatus().getReturnStatus() == ReturnStatus.M_SUCCESS) {
throw new IllegalStateException("Event status is success or not set, error code is not premited.");
}
// return errorCode == null ? 0 : errorCode.getErrorCode();
return errorCode;
}
/**
* This method sets the error code specifying why the delete transaction
* event could not be executed successfuly.
*
* @param errorCode
* - The error code correspondingto why the delete transaction
* event could not be executed successfuly. The values are
* defined in AssocEventType.
* @throws IllegalArgumentException
* This exception would be raised in following conditions <br>
* 1. If the return status is not set to M_FAILURE, the error
* code should not be set. <br>
* 2. If the error code is not valid for the DeleteTxnReq event.
*/
public final void setErrorCode(ErrorCode errorCode) throws IllegalArgumentException {
if (errorCode == null)
throw new IllegalArgumentException("Error code can not be null.");
if (getEventStatus() == null || getEventStatus().getReturnStatus() != ReturnStatus.M_FAILURE) {
throw new IllegalArgumentException("Event status is not failure or nto set, error code is not premited.");
}
this.errorCode = errorCode;
}
// FIXME those are nto defined in jdoc....
/**
* Gets an object identifier that specifies the transaction identifier. If
* the transaction identifier is set to 0, then this would be the case when
* the transaction identifier is to represent all transactions.<br>
* <br>
* If the transaction identifier is not set, then this method returns 0,
* indicating all transactions.
*
* @return Returns an integer value that specifies the transaction
* identifier.
*/
public final int getTxnHandle() {
if (txnHandle == -1)
return 0;
return txnHandle;
}
/**
* This method sets the transaction identifier. To delete all transactions,
* the transaction identifier is set to 0.
*
* @param transactionHandle
* A reference to transaction identifier.
* @throws IllegalArgumentException
* This exception is raised if the value of transaction handle
* passed to this method is less than 0.
*/
public final void setTxnHandle(int transactionHandle) throws IllegalArgumentException {
if (transactionHandle < 0)
throw new IllegalArgumentException("Txn Handle can not be less than zero");
this.txnHandle = transactionHandle;
}
}