コード例 #1
0
ファイル: reflected_object.py プロジェクト: 0xr0ot/drozer
    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)
コード例 #2
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
コード例 #3
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)
コード例 #4
0
ファイル: reflected_object.py プロジェクト: 0xr0ot/drozer
    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
コード例 #5
0
ファイル: base.py プロジェクト: LeadroyaL/drozer-py3
    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)
コード例 #6
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
コード例 #7
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)
コード例 #8
0
ファイル: reflected_array.py プロジェクト: 0xr0ot/drozer
    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)
コード例 #9
0
ファイル: reflected_array.py プロジェクト: 0xr0ot/drozer
    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
コード例 #10
0
 def insert(self, i, obj):
     self._native.insert(i, ReflectedType.fromNative(obj, self._reflector))
コード例 #11
0
    def append(self, obj):
        self._native.append(ReflectedType.fromNative(obj, self._reflector))

        return self
コード例 #12
0
 def __setitem__(self, index, obj):
     self._native[index] = ReflectedType.fromNative(obj, self._reflector)
コード例 #13
0
ファイル: reflected_array.py プロジェクト: 0xr0ot/drozer
 def insert(self, i, obj):
     self._native.insert(i, ReflectedType.fromNative(obj, self._reflector))
コード例 #14
0
ファイル: reflected_array.py プロジェクト: 0xr0ot/drozer
    def append(self, obj):
        self._native.append(ReflectedType.fromNative(obj, self._reflector))

        return self
コード例 #15
0
ファイル: reflected_array.py プロジェクト: 0xr0ot/drozer
 def __setitem__(self, index, obj):
     self._native[index] = ReflectedType.fromNative(obj, self._reflector)