/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.rpc.internal;
import java.io.IOException;
import java.util.List;
import de.rcenvironment.core.communication.spi.CallbackMethod;
import de.rcenvironment.core.communication.testutils.templates.AbstractCommonVirtualInstanceTest;
import de.rcenvironment.core.utils.common.rpc.RemotableService;
import de.rcenvironment.core.utils.common.rpc.RemoteOperationException;
import de.rcenvironment.core.utils.common.security.AllowRemoteAccess;
import de.rcenvironment.core.utils.common.security.MethodPermissionCheck;
/**
* Pseudo-service methods being used by {@link MethodCallerTest} and the service call tests in {@link AbstractCommonVirtualInstanceTest}.
*
* @author Doreen Seider
* @author Robert Mischke
*/
@RemotableService
public interface MethodCallTestInterface {
/**
* Default String return value, and the default message of thrown Exceptions (for verification by tests).
*/
String DEFAULT_RESULT_OR_MESSAGE_STRING = "expectedString";
/**
* Method with parameters and return value.
*
* @param a first parameter.
* @param b second parameter.
* @return int.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
int add(Integer a, Integer b) throws RemoteOperationException;
/**
* Method with String return value.
*
* @return the default string
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
String getString() throws RemoteOperationException;
/**
* A method for testing {@link MethodPermissionCheck}. The implementation must NOT be annotated with a {@link AllowRemoteAccess}
* annotation.
*
* @return the default string
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
String methodWithoutRemoteAccessPermission() throws RemoteOperationException;
/**
* Dummy non-static function with return value.
*
* @return the default string
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
String objectFunction() throws RemoteOperationException;
/**
* Method that throws an exception.
*
* @throws IOException Exception that is thrown.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
void ioExceptionThrower() throws RemoteOperationException, IOException;
/**
* Method that throws an exception, and declares a return value.
*
* @return the default string
* @throws IOException Exception that is thrown.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
String ioExceptionThrowerWithNonVoidReturnValue() throws RemoteOperationException, IOException;
/**
* Method that throws a RuntimeException.
*
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
void runtimeExceptionThrower() throws RemoteOperationException;
/**
* A test function for super classes.
*
* @param obj1 First object.
* @param obj2 Second object.
*
* @return A String.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
String superclass(Object obj1, Object obj2) throws RemoteOperationException;
/**
* Class with a list.
*
* @param list The list.
*
* @return the default string
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
String list(List<?> list) throws RemoteOperationException;
/**
* Ambiguous function that overloads with another.
*
* @param obj1 param1.
* @param string param2.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
void ambiguous(Object obj1, String string) throws RemoteOperationException;
/**
* Ambiguous function that overloads with another.
*
* @param obj1 param1.
* @param string param2.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
void ambiguous(String string, Object obj1) throws RemoteOperationException;
/**
* Test serializing null.
*
* @param test A null object.
* @return A null object.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
Object nullTest(Object test) throws RemoteOperationException;
/**
* Test handling of callback object.
*
* @param test A callback object.
* @throws RemoteOperationException standard exception expected by remote service call tests
*/
@CallbackMethod
void callbackTest(Object test) throws RemoteOperationException;
}