/*
* Created on Oct 22, 2004 by mschilli
*/
package alma.acs.callbacks;
import org.apache.commons.lang.ArrayUtils;
import org.omg.CORBA.UserException;
import alma.ACS.CBDescOut;
import alma.ACSErr.Completion;
import alma.acs.exceptions.AcsJCompletion;
import alma.acs.exceptions.AcsJException;
/**
* Defines several helper classes.
*
*
* @author mschilli
*/
public class Objects {
/**
* Wraps an arbitrary Throwable in an AcsJException.
* TODO HSO 2006-08-17: why do we not use a generated subclass of AcsJException, e.g. one from module acserrTypes ?
*/
static public class MyAcsJException extends AcsJException {
public MyAcsJException(Throwable cause) {
super(null, cause);
}
protected int getErrorType () {
return 0;
}
protected int getErrorCode () {
return 0;
}
public UserException toCorbaException () {
return null;
}
}
/**
* Only necessary because the constructors in that AcsJCompletion class are protected
*/
static public class MyAcsJCompletion extends AcsJCompletion {
public MyAcsJCompletion() {
super();
}
public MyAcsJCompletion(AcsJException acsJEx) {
super(acsJEx);
}
public MyAcsJCompletion(int type, int code) {
super(type, code);
}
}
// =================== String ====================
/**
*
* @author mschilli
*/
static public class CBstringImpl extends alma.ACS.CBstringPOA {
protected ResponseReceiver<String> toBeCalledBack;
public void setXXX (ResponseReceiver<String> x) {
this.toBeCalledBack = x;
}
protected CBstringImpl(ResponseReceiver<String> x) {
toBeCalledBack = x;
}
public boolean negotiate (long time_to_transmit, CBDescOut desc) {
return true;
}
/**
* @see alma.ACS.CBvoidOperations#working(alma.ACSERR.Completion,
* alma.ACS.CBDescOut)
*/
public void working (String returnValue, Completion completion, CBDescOut desc) {}
/**
* @see alma.ACS.CBvoidOperations#done(alma.ACS.Completion, alma.ACS.CBDescOut)
*/
public void done (String returnValue, Completion completion, CBDescOut desc) {
AcsJCompletion c = AcsJCompletion.fromCorbaCompletion(completion);
if (c.isError()) {
toBeCalledBack.incomingException(c.getAcsJException());
} else {
toBeCalledBack.incomingResponse(returnValue);
}
}
}
/**
*
* @author mschilli
*/
static public class CBstringSeqImpl extends alma.ACS.CBstringSeqPOA {
protected ResponseReceiver<String[]> toBeCalledBack;
public void setXXX (ResponseReceiver<String[]> x) {
this.toBeCalledBack = x;
}
protected CBstringSeqImpl(ResponseReceiver<String[]> x) {
toBeCalledBack = x;
}
public boolean negotiate (long time_to_transmit, CBDescOut desc) {
return true;
}
/**
* @see alma.ACS.CBvoidOperations#working(alma.ACSERR.Completion,
* alma.ACS.CBDescOut)
*/
public void working (String[] returnValue, Completion completion, CBDescOut desc) {}
/**
* @see alma.ACS.CBvoidOperations#done(alma.ACS.Completion, alma.ACS.CBDescOut)
*/
public void done (String[] returnValue, Completion completion, CBDescOut desc) {
AcsJCompletion c = AcsJCompletion.fromCorbaCompletion(completion);
if (c.isError()) {
toBeCalledBack.incomingException(c.getAcsJException());
} else {
toBeCalledBack.incomingResponse(returnValue);
}
}
}
// =================== Long ====================
/**
*
* @author mschilli
*/
static public class CBlongImpl extends alma.ACS.CBlongPOA {
protected ResponseReceiver<Integer> toBeCalledBack;
public void setXXX (ResponseReceiver<Integer> x) {
this.toBeCalledBack = x;
}
protected CBlongImpl(ResponseReceiver<Integer> x) {
toBeCalledBack = x;
}
public boolean negotiate (long time_to_transmit, CBDescOut desc) {
return true;
}
/**
* @see alma.ACS.CBvoidOperations#working(alma.ACSERR.Completion,
* alma.ACS.CBDescOut)
*/
public void working (int returnValue, Completion completion, CBDescOut desc) {}
/**
* @see alma.ACS.CBvoidOperations#done(alma.ACS.Completion, alma.ACS.CBDescOut)
*/
public void done (int returnValue, Completion completion, CBDescOut desc) {
AcsJCompletion c = AcsJCompletion.fromCorbaCompletion(completion);
if (c.isError()) {
toBeCalledBack.incomingException(c.getAcsJException());
} else {
toBeCalledBack.incomingResponse(returnValue);
}
}
}
/**
*
* @author mschilli
*/
static public class CBlongSeqImpl extends alma.ACS.CBlongSeqPOA {
protected ResponseReceiver<Integer[]> toBeCalledBack;
public void setXXX (ResponseReceiver<Integer[]> x) {
this.toBeCalledBack = x;
}
protected CBlongSeqImpl(ResponseReceiver<Integer[]> x) {
toBeCalledBack = x;
}
public boolean negotiate (long time_to_transmit, CBDescOut desc) {
return true;
}
/**
* @see alma.ACS.CBvoidOperations#working(alma.ACSERR.Completion,
* alma.ACS.CBDescOut)
*/
public void working (int[] returnValue, Completion completion, CBDescOut desc) {}
/**
* @see alma.ACS.CBvoidOperations#done(alma.ACS.Completion, alma.ACS.CBDescOut)
*/
public void done (int[] returnValue, Completion completion, CBDescOut desc) {
AcsJCompletion c = AcsJCompletion.fromCorbaCompletion(completion);
if (c.isError()) {
toBeCalledBack.incomingException(c.getAcsJException());
} else {
toBeCalledBack.incomingResponse(ArrayUtils.toObject(returnValue));
}
}
}
// =================== Double ====================
/**
*
* @author mschilli
*/
static public class CBdoubleImpl extends alma.ACS.CBdoublePOA {
protected ResponseReceiver<Double> toBeCalledBack;
public void setXXX (ResponseReceiver<Double> x) {
this.toBeCalledBack = x;
}
protected CBdoubleImpl(ResponseReceiver<Double> x) {
toBeCalledBack = x;
}
public boolean negotiate (long time_to_transmit, CBDescOut desc) {
return true;
}
/**
* @see alma.ACS.CBvoidOperations#working(alma.ACSERR.Completion,
* alma.ACS.CBDescOut)
*/
public void working (double returnValue, Completion completion, CBDescOut desc) {}
/**
* @see alma.ACS.CBvoidOperations#done(alma.ACS.Completion, alma.ACS.CBDescOut)
*/
public void done (double returnValue, Completion completion, CBDescOut desc) {
AcsJCompletion c = AcsJCompletion.fromCorbaCompletion(completion);
if (c.isError()) {
toBeCalledBack.incomingException(c.getAcsJException());
} else {
toBeCalledBack.incomingResponse(returnValue);
}
}
}
/**
*
* @author mschilli
*/
static public class CBdoubleSeqImpl extends alma.ACS.CBdoubleSeqPOA {
protected ResponseReceiver<Double[]> toBeCalledBack;
public void setXXX (ResponseReceiver<Double[]> x) {
this.toBeCalledBack = x;
}
protected CBdoubleSeqImpl(ResponseReceiver<Double[]> x) {
toBeCalledBack = x;
}
public boolean negotiate (long time_to_transmit, CBDescOut desc) {
return true;
}
/**
* @see alma.ACS.CBvoidOperations#working(alma.ACSERR.Completion,
* alma.ACS.CBDescOut)
*/
public void working (double[] returnValue, Completion completion, CBDescOut desc) {}
/**
* @see alma.ACS.CBvoidOperations#done(alma.ACS.Completion, alma.ACS.CBDescOut)
*/
public void done (double[] returnValue, Completion completion, CBDescOut desc) {
AcsJCompletion c = AcsJCompletion.fromCorbaCompletion(completion);
if (c.isError()) {
toBeCalledBack.incomingException(c.getAcsJException());
} else {
toBeCalledBack.incomingResponse(ArrayUtils.toObject(returnValue));
}
}
}
}