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"
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)
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 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)
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)
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)
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)