Class IceMethodInvoker


  • public class IceMethodInvoker
    extends java.lang.Object
    Method-cache primed either with an ServiceInterface instance or with a Class with generic type ServiceInterface. Actual invocation happens via invoke(Object, Ice.Current, IceMapper, Object[]) No reference is held to the initial priming argument in IceMethodInvoker(ServiceInterface, OmeroContext) just the class. MAPPING RULES:
    • Method names exact
    • Collections of the same type only (no arrays)
    • Primitives use Ice primitives (long, int, bool,...)
    • Primitive wrappers all use RTypes (RLong, RInt, RBool,...)
    It is also possible to have this class not handle mapping arguments and return values by passing a return value mapper. Future:
    • Currently ignoring NotNull annotations
    Since:
    3.0-Beta2
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.reflect.Method getMethod​(java.lang.String name)
      For testing the cached method.
      java.lang.Object invoke​(java.lang.Object obj, Ice.Current current, IceMapper mapper, java.lang.Object... args)
      Calls the method named in Current.operation with the arguments provided mapped via the IceMapper instance.
      boolean isVoid​(Ice.Current current)
      Checks for a void return type, which is needed to know what type of ice_response() method to invoke.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • IceMethodInvoker

        public IceMethodInvoker​(ome.api.ServiceInterface srv,
                                ome.system.OmeroContext context)
        Create an IceMethodInvoker instance using the Class of the passed argument to call IceMethodInvoker(Class, OmeroContext).
        Parameters:
        srv - A Non-null ServiceInterface instance.
        context - The active OmeroContext instance.
      • IceMethodInvoker

        public IceMethodInvoker​(java.lang.Class<S> k,
                                ome.system.OmeroContext context)
        Creates an IceMethodInvoker instance by using reflection on the Class argument. All information is cached internally in a static map if the given service class argument has not already been cached.
        Type Parameters:
        S - A type which subclasses ServiceInterface
        Parameters:
        context - A non-null ServiceInterface Class
    • Method Detail

      • isVoid

        public boolean isVoid​(Ice.Current current)
        Checks for a void return type, which is needed to know what type of ice_response() method to invoke.
      • invoke

        public java.lang.Object invoke​(java.lang.Object obj,
                                       Ice.Current current,
                                       IceMapper mapper,
                                       java.lang.Object... args)
                                throws Ice.UserException
        Calls the method named in Current.operation with the arguments provided mapped via the IceMapper instance. The return value or any method which is thrown is equally mapped and returned. Exceptions are handled by IceMapper.handleException(Throwable, OmeroContext).
        Parameters:
        obj - Instance for the call to Method.invoke(Object, Object[]). Can be null if this is a static call.
        current - The current Ice operation. Non-null.
        mapper - A non-null mapper.
        args - The proper number of arguments for the method specified in current.
        Returns:
        Either the return value of the invocation, or the exception if one was thrown.
        Throws:
        Ice.UserException
      • getMethod

        public java.lang.reflect.Method getMethod​(java.lang.String name)
        For testing the cached method.