Example #1
0
 def __init__(self, native, *args, **kwargs):
     ReflectedType.__init__(self, *args, **kwargs)
     
     try:
         self._native = native.decode("utf-8")
     except UnicodeError:
         self._native = native
Example #2
0
    def __init__(self, ref, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._ref = ref
        self._class = None
        self._field_names = set()
        self._not_field_names = set(['_ref', 'getField'])
Example #3
0
    def __init__(self, native, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        try:
            self._native = native.decode("utf-8")
        except UnicodeError:
            self._native = native
Example #4
0
    def __init__(self, ref, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._ref = ref
        self._class = None
        self._field_names = set()
        self._not_field_names = set(['_ref', 'getField'])
Example #5
0
    def __setattr__(self, attr, value):
        if attr.startswith('_'):
            object.__setattr__(self, attr, value)
            return

        if attr in self._field_names:
            return self._reflector.setProperty(self, attr, ReflectedType.fromNative(value, reflector=self._reflector))

        if attr not in self._not_field_names:
            try:
                return self._reflector.setProperty(self, attr, ReflectedType.fromNative(value, reflector=self._reflector))
            except ReflectionException:
                self._not_field_names.add(attr)
Example #6
0
    def _pb(self):
        """
        Get an Argument representation of the Array, as defined in the drozer
        protocol.
        """

        argument = Message.Argument(type=Message.Argument.ARRAY)

        if self._native[0]._pb().type == Message.Argument.ARRAY:
            argument.array.type = Message.Array.ARRAY
        elif self._native[0]._pb().type == Message.Argument.NULL:
            argument.array.type = Message.Array.OBJECT
        elif self._native[0]._pb().type == Message.Argument.OBJECT:
            argument.array.type = Message.Array.OBJECT
        elif self._native[0]._pb().type == Message.Argument.STRING:
            argument.array.type = Message.Array.STRING
        elif self._native[0]._pb().type == Message.Argument.PRIMITIVE:
            argument.array.type = Message.Array.PRIMITIVE

        for e in self._native:
            element = argument.array.element.add()
            element.MergeFrom(
                ReflectedType.fromNative(e, reflector=self._reflector)._pb())

        return argument
Example #7
0
    def __setattr__(self, attr, value):
        if attr.startswith('_'):
            object.__setattr__(self, attr, value)
            return

        if attr in self._field_names:
            return self._reflector.setProperty(
                self, attr,
                ReflectedType.fromNative(value, reflector=self._reflector))

        if attr not in self._not_field_names:
            try:
                return self._reflector.setProperty(
                    self, attr,
                    ReflectedType.fromNative(value, reflector=self._reflector))
            except ReflectionException:
                self._not_field_names.add(attr)
Example #8
0
    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 #9
0
    def _invoker(self, method_name, *args, **kwargs):
        """
        Invokes methods on the object, in the Java VM, proxying through the
        reflector's invoke() method.
        """

        result = self._reflector.invoke(self, method_name, *map(lambda arg: ReflectedType.fromNative(arg, reflector=self._reflector), args), **kwargs)

        return result
Example #10
0
    def fromArgument(cls, argument, reflector):
        """
        Builds a new ReflectedArray, given an Argument as defined in the drozer
        protocol that contains an Array.
        """

        array = []

        for element in argument.array.element:
            array.append(ReflectedType.fromArgument(element, reflector))

        return ReflectedArray(array, reflector=reflector)
Example #11
0
    def fromArgument(cls, argument, reflector):
        """
        Builds a new ReflectedArray, given an Argument as defined in the drozer
        protocol that contains an Array.
        """

        array = []

        for element in argument.array.element:
            array.append(ReflectedType.fromArgument(element, reflector))

        return ReflectedArray(array, reflector=reflector)
Example #12
0
    def _invoker(self, method_name, *args, **kwargs):
        """
        Invokes methods on the object, in the Java VM, proxying through the
        reflector's invoke() method.
        """

        result = self._reflector.invoke(
            self, method_name,
            *map(
                lambda arg: ReflectedType.fromNative(
                    arg, reflector=self._reflector), args), **kwargs)

        return result
Example #13
0
    def __validateAndConvert(self, objects):
        """
        A utility method to help build a ReflectedArray from a collection of
        other objects.

        This enforces some validation, such as checking that all objects in an
        array are of consistent type.
        """

        if not hasattr(objects, '__iter__'):
            raise TypeError("objects is not iterable")

        list_type = None

        for obj in objects:
            if not list_type:
                list_type = type(obj)
            else:
                if type(obj) != list_type:
                    raise TypeError("mismatched array element types")

            yield ReflectedType.fromNative(obj, self._reflector)
Example #14
0
    def __validateAndConvert(self, objects):
        """
        A utility method to help build a ReflectedArray from a collection of
        other objects.

        This enforces some validation, such as checking that all objects in an
        array are of consistent type.
        """

        if not hasattr(objects, '__iter__'):
            raise TypeError("objects is not iterable")

        list_type = None

        for obj in objects:
            if not list_type:
                list_type = type(obj)
            else:
                if type(obj) != list_type:
                    raise TypeError("mismatched array element types")

            yield ReflectedType.fromNative(obj, self._reflector)
Example #15
0
    def _pb(self):
        """
        Get an Argument representation of the Array, as defined in the drozer
        protocol.
        """

        argument = Message.Argument(type=Message.Argument.ARRAY)

        if self._native[0]._pb().type == Message.Argument.ARRAY:
            argument.array.type = Message.Array.ARRAY
        elif self._native[0]._pb().type == Message.Argument.NULL:
            argument.array.type = Message.Array.OBJECT
        elif self._native[0]._pb().type == Message.Argument.OBJECT:
            argument.array.type = Message.Array.OBJECT
        elif self._native[0]._pb().type == Message.Argument.STRING:
            argument.array.type = Message.Array.STRING
        elif self._native[0]._pb().type == Message.Argument.PRIMITIVE:
            argument.array.type = Message.Array.PRIMITIVE

        for e in self._native:
            element = argument.array.element.add()
            element.MergeFrom(ReflectedType.fromNative(e, reflector=self._reflector)._pb())

        return argument
Example #16
0
 def __eq__(self, other):
     if (other == None):
         return True
     else:
         return ReflectedType.__eq__(self, other)
Example #17
0
    def __init__(self, primitive_type, native, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._type = primitive_type
        self._native = native
Example #18
0
 def __ne__(self, other):
     if(other == None):
         return False
     else:
         return ReflectedType.__ne__(self, other)
Example #19
0
 def __eq__(self, other):
     if(other == None):
         return True
     else:
         return ReflectedType.__eq__(self, other)
Example #20
0
    def append(self, obj):
        self._native.append(ReflectedType.fromNative(obj, self._reflector))

        return self
Example #21
0
    def append(self, obj):
        self._native.append(ReflectedType.fromNative(obj, self._reflector))

        return self
Example #22
0
 def __init__(self, native, *args, **kwargs):
     ReflectedType.__init__(self, *args, **kwargs)
     
     self._native = native
Example #23
0
    def __init__(self, native, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._native = native
Example #24
0
 def __setitem__(self, index, obj):
     self._native[index] = ReflectedType.fromNative(obj, self._reflector)
Example #25
0
    def __init__(self, primitive_type, native, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._type = primitive_type
        self._native = native
Example #26
0
 def insert(self, i, obj):
     self._native.insert(i, ReflectedType.fromNative(obj, self._reflector))
Example #27
0
 def __ne__(self, other):
     if (other == None):
         return False
     else:
         return ReflectedType.__ne__(self, other)
Example #28
0
 def insert(self, i, obj):
     self._native.insert(i, ReflectedType.fromNative(obj, self._reflector))
Example #29
0
    def __init__(self, objects, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._native = list(self.__validateAndConvert(objects))
Example #30
0
    def __init__(self, objects, *args, **kwargs):
        ReflectedType.__init__(self, *args, **kwargs)

        self._native = list(self.__validateAndConvert(objects))
Example #31
0
 def __setitem__(self, index, obj):
     self._native[index] = ReflectedType.fromNative(obj, self._reflector)