2010-04-09 3 views
0

Я пытался проверить мое приложение, чтобы убедиться, что все важные классы могут сериализовать/перезагрузить себя должным образом (особенно те, которые реализуют IExternalizable):Flex: настроить предупреждения сериализации AMF?

[Test] 
public function testMyObjectSerialization():void { 
    var myobj:MyObject = new MyObject(); 
    var ba:ByteArray = new ByteArray(); 
    ba.writeObject(myobj); 
    ba.position = 0; 
    var loadedObj:MyObject = ba.readObject(); 
    assertMyObjectEqual(myobj, loadedObj); 
} 

И я хотел бы быть предупрежден, когда я пытаюсь сериализуйте строго типизированный объект, который не имеет набора [RemoteClass] (потому что это почти наверняка представляет ошибку в моем коде).

Итак, есть ли способ настроить сериализатор AMF для предупреждения?

Кроме того, похоже, этого может возможно с помощью services-config.xml ... Но документация, кажется, подразумевает, что services-config является канального уровня, и я бы очень хотелось, чтобы мои тесты блок может работать без разговора с сервером (и я не использую LCDS, так что куча services-config в любом случае не будет применяться ко мне).

+0

Вы хотите, чтобы предупреждения отображались во время компиляции или времени выполнения? – AaronLS

+0

Я не вижу, как это возможно для их появления во время компиляции ... Например, если у меня есть 'class Foo {var bars: Array = [new Bar(), новый Baz()]}', d невозможно компилятору узнать A), что я хочу сериализовать 'bars' и B), что' bars' содержит 'Baz'. –

+0

Итак, да, я бы хотел, чтобы они появлялись во время работы. –

ответ

2

Невозможно настроить встроенную сериализацию/десериализацию AMF из Flash Player, чтобы дать вам предупреждения, если установлено [RemoteClass] или любые другие метаданные.

Однако вы можете написать свой собственный класс, чтобы сделать это - вы можете зарегистрировать все объекты в списке и проверить на [Remote], используя flash.utils.describeType. Или используйте оболочку над writeObject, которая проверяет метаданные [Remote].

+0

К сожалению, это не будет работать для классов, которые реализуют 'IExternalizable', потому что нет способа узнать, что они будут писать в выходной поток. Конечно, я мог бы создать подкласс 'ByteArray', который следит за * всем *, написанным на нем ... Но это кажется довольно большим количеством боли :( –

+0

Также у вас есть ссылка на« нет способа настроить родной AMF-сериализации/десериализации "? Потому что это кажется *, если бы я использовал' services-config.xml' и LCDS-сервер, тогда это было бы возможно ... –

+0

У меня нет публичной ссылки, я просто спросил Инженер FP у моего стола. На стороне сервера это совсем другая история. Вы можете настроить многие вещи, а код - с открытым исходным кодом. –

 Смежные вопросы

  • Нет связанных вопросов^_^