Example #1
0
 def testItShouldSetArgumentsOfInvoke(self):
     factory = self.factory.invoke(987654321, "myMethod")
     factory.setArguments([ReflectedType.fromNative(5, reflector=None), ReflectedType.fromNative("aString", reflector=None)])
     message = factory.builder
     
     assert message.reflection_request.invoke.argument[0].type == Message.Argument.PRIMITIVE
     assert message.reflection_request.invoke.argument[0].primitive.type == Message.Primitive.INT
     assert message.reflection_request.invoke.argument[0].primitive.int == 5
     assert message.reflection_request.invoke.argument[1].type == Message.Argument.STRING
     assert message.reflection_request.invoke.argument[1].string == "aString"
Example #2
0
File: base.py Project: Syi/mercury
    def arg(self, native, obj_type=None):
        """
        Utility method to build a ReflectedType from a native value.

        This should be used to force an object to assume a particular data type
        in Java.
        """

        return ReflectedType.fromNative(native, reflector=self.__reflector, obj_type=obj_type)
Example #3
0
    def testItShouldBuildASetPropertyMessage(self):
        message = self.factory.setProperty(987654321, "myProperty", ReflectedType.fromNative(5, reflector=None)).builder

        assert message.type == Message.REFLECTION_REQUEST
        assert message.reflection_request.type == Message.ReflectionRequest.SET_PROPERTY
        assert message.reflection_request.set_property.object.reference == 987654321
        assert message.reflection_request.set_property.property == "myProperty"
        assert message.reflection_request.set_property.value.type == Message.Argument.PRIMITIVE
        assert message.reflection_request.set_property.value.primitive.type == Message.Primitive.INT
        assert message.reflection_request.set_property.value.primitive.int == 5
    def testItShouldBuildASetPropertyMessage(self):
        message = self.factory.setProperty(
            987654321, "myProperty",
            ReflectedType.fromNative(5, reflector=None)).builder

        assert message.type == Message.REFLECTION_REQUEST
        assert message.reflection_request.type == Message.ReflectionRequest.SET_PROPERTY
        assert message.reflection_request.set_property.object.reference == 987654321
        assert message.reflection_request.set_property.property == "myProperty"
        assert message.reflection_request.set_property.value.type == Message.Argument.PRIMITIVE
        assert message.reflection_request.set_property.value.primitive.type == Message.Primitive.INT
        assert message.reflection_request.set_property.value.primitive.int == 5
Example #5
0
    def getProperty(self, robj, property_name):
        """
        Reads a property from an object, and returns the value.
        """

        response = self.sendAndReceive(ReflectionRequestFactory.getProperty(robj._ref, property_name))

        if response is None:
            raise ReflectionException("expected a response to GET_PROPERTY")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(response.reflection_response.errormessage)
Example #6
0
    def invoke(self, robj, method, *args):
        """
        Invokes a method on an object, and returns the return value.
        """

        response = self.sendAndReceive(ReflectionRequestFactory.invoke(robj._ref, method).setArguments(args))

        if response is None:
            raise ReflectionException("expected a response to INVOKE")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(response.reflection_response.errormessage)
Example #7
0
    def resolve(self, class_name):
        """
        Resolves a Java class, given its fully qualified name, and returns a
        ReflectedObject that can be used to instantiate it with #construct.
        """

        response = self.sendAndReceive(ReflectionRequestFactory.resolve(class_name))

        if response is None:
            raise ReflectionException("expected a response to RESOLVE")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(response.reflection_response.errormessage)
Example #8
0
    def construct(self, robj, *args):
        """
        Constructs a new instance of a class, with optional arguments, and
        returns the object instance.
        """

        response = self.sendAndReceive(ReflectionRequestFactory.construct(robj._ref).setArguments(args))

        if response is None:
            raise ReflectionException("expected a response to CONSTRUCT")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(response.reflection_response.errormessage)
Example #9
0
    def getProperty(self, robj, property_name):
        """
        Reads a property from an object, and returns the value.
        """

        response = self.sendAndReceive(
            ReflectionRequestFactory.getProperty(robj._ref, property_name))

        if response is None:
            raise ReflectionException("expected a response to GET_PROPERTY")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(
                response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(
                response.reflection_response.errormessage)
Example #10
0
    def resolve(self, class_name):
        """
        Resolves a Java class, given its fully qualified name, and returns a
        ReflectedObject that can be used to instantiate it with #construct.
        """

        response = self.sendAndReceive(
            ReflectionRequestFactory.resolve(class_name))

        if response is None:
            raise ReflectionException("expected a response to RESOLVE")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(
                response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(
                response.reflection_response.errormessage)
Example #11
0
    def invoke(self, robj, method, *args):
        """
        Invokes a method on an object, and returns the return value.
        """

        response = self.sendAndReceive(
            ReflectionRequestFactory.invoke(robj._ref,
                                            method).setArguments(args))

        if response is None:
            raise ReflectionException("expected a response to INVOKE")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(
                response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(
                response.reflection_response.errormessage)
Example #12
0
    def construct(self, robj, *args):
        """
        Constructs a new instance of a class, with optional arguments, and
        returns the object instance.
        """

        response = self.sendAndReceive(
            ReflectionRequestFactory.construct(robj._ref).setArguments(args))

        if response is None:
            raise ReflectionException("expected a response to CONSTRUCT")
        elif response.reflection_response.status == Message.ReflectionResponse.SUCCESS:
            return ReflectedType.fromArgument(
                response.reflection_response.result, reflector=self)
        else:
            raise ReflectionException(
                response.reflection_response.errormessage)