2010-04-09 4 views
0

Je suis en train de tester mon application pour vous assurer que toutes les classes importantes peuvent sérialisation/se recharger correctement (en particulier ceux qui mettent en œuvre IExternalizable):Flex: Configurer les avertissements de sérialisation 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); 
} 

Et je voudrais être prévenu lorsque je tente de sérialiser un objet fortement typé qui n'a pas d'ensemble [RemoteClass] (parce que cela représente presque certainement un bug dans mon code).

Alors, est-il possible de configurer le sérialiseur AMF pour donner des avertissements?

En outre, il semble que ce pourrait être possible en utilisant services-config.xml ... Mais la documentation semble impliquer que services-config est-niveau du canal, et je voudrais vraiment si mes tests unitaires pourrait fonctionner sans parler au serveur (et je n'utilise pas LCDS, donc un tas de services-config ne s'appliquerait pas à moi de toute façon).

+0

Voulez-vous que les avertissements apparaissent au moment de la compilation ou de l'exécution? – AaronLS

+0

Je ne vois pas comment il est possible qu'ils apparaissent à la compilation ... Par exemple, si j'ai la classe Foo {var bars: Array = [nouveau Bar(), nouveau Baz()]} ', il ' d être impossible pour le compilateur de savoir A) que je veux sérialiser 'bars' et B) que' bars' contient un 'Baz'. –

+0

Alors, oui, je voudrais qu'ils apparaissent à l'exécution. –

Répondre

2

Il est impossible de configurer la sérialisation/désérialisation AMF native à partir de Flash Player pour vous avertir si [RemoteClass] ou toute autre métadonnée est définie ou non.

Cependant, vous pouvez écrire votre propre classe pour cela - vous pouvez enregistrer tous les objets dans une liste et vérifier [Remote] en utilisant flash.utils.describeType. Ou utilisez un wrapper sur writeObject qui vérifie les métadonnées [Remote].

+0

Malheureusement, cela ne fonctionnera pas pour les classes qui implémentent 'IExternalizable', car il n'y a aucun moyen de savoir ce qu'elles vont écrire dans le flux de sortie. Bien sûr, je pourrais créer une sous-classe de 'ByteArray', qui regarde * tout * qui y est écrit ... Mais cela semble être une bonne dose de douleur :( –

+0

Aussi, avez-vous une référence pour" il n'y a aucun moyen de configurer la sérialisation/désérialisation AMF native "? Parce qu'il * semble *, si j'utilisais' services-config.xml' et un serveur LCDS, alors ce serait possible ... –

+0

Je n'ai pas de référence publique, je viens de demander Ingénieur FP près de mon bureau.Sur le côté serveur c'est une histoire différente..vous pouvez personnaliser beaucoup de choses et le code est open source –

Questions connexes