def test_alias(self): class Foo: pass alias = pyamf.TypedObjectClassAlias(Foo, 'bar') self.assertEqual(alias.klass, pyamf.TypedObject) self.assertNotEqual(alias.klass, Foo)
def _getClassDefinition(self, ref): """ Reads class definition from the stream. """ is_ref = ref & REFERENCE_BIT == 0 ref >>= 1 if is_ref: class_def = self.context.getClassByReference(ref) return class_def name = self.readBytes() alias = None if name == '': name = pyamf.ASObject try: alias = pyamf.get_class_alias(name) except pyamf.UnknownClassAlias: if self.strict: raise alias = pyamf.TypedObjectClassAlias(name) class_def = ClassDefinition(alias) class_def.encoding = ref & 0x03 class_def.attr_len = ref >> 2 class_def.static_properties = [] if class_def.attr_len > 0: for i in range(class_def.attr_len): key = self.readBytes() class_def.static_properties.append(key) self.context.addClass(class_def, alias.klass) return class_def
def readTypedObject(self): """ Reads an aliased ActionScript object from the stream and attempts to 'cast' it into a python class. @see: L{pyamf.register_class} """ class_alias = self.readString() try: alias = self.context.getClassAlias(class_alias) except pyamf.UnknownClassAlias: if self.strict: raise alias = pyamf.TypedObjectClassAlias(class_alias) obj = alias.createInstance(codec=self) self.context.addObject(obj) attrs = self.readObjectAttributes(obj) alias.applyAttributes(obj, attrs, codec=self) return obj