/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.rpc;
import java.io.Serializable;
import de.rcenvironment.core.utils.common.rpc.RemoteOperationException;
/**
* Represents the result of a remote service method call. May either contain the method's return value (on a successful call), a declared
* exception thrown by the method, or a string containing an error message.
*
* @author Robert Mischke
*/
public class ServiceCallResult implements Serializable {
private static final long serialVersionUID = -7511179849159143497L;
/**
* The return value after a successful invocation; may be null if an error occurred or for methods that return "void".
*/
private Serializable methodReturnValue;
/**
* The type of a potential checked exception that was thrown by the method; may be null.
*/
private String methodExceptionType;
/**
* The message of a potential checked exception that was thrown by the method; may be null.
*/
private String methodExceptionMessage;
/**
* A message text representing a non-method error or exception; these are represented on the sender and destination side as
* {@link RemoteOperationException}s.
*/
private String errorMessage;
/**
* Constructor that takes a return value.
*
* @param returnValue Return value to set.
*/
public ServiceCallResult(Serializable returnValue, String methodExceptionType, String methodExceptionMessage, String errorMessage) {
this.methodReturnValue = returnValue;
// note: the exception's "cause" part is intentionally discarded here
this.methodExceptionType = methodExceptionType;
this.methodExceptionMessage = methodExceptionMessage;
this.errorMessage = errorMessage;
}
public Serializable getReturnValue() {
return methodReturnValue;
}
public boolean isSuccess() {
return methodExceptionType == null && errorMessage == null;
}
public boolean isMethodException() {
return methodExceptionType != null;
}
public boolean isRemoteOperationException() {
return errorMessage != null;
}
public String getMethodExceptionType() {
return methodExceptionType;
}
public String getMethodExceptionMessage() {
return methodExceptionMessage;
}
public String getRemoteOperationExceptionMessage() {
return errorMessage;
}
}