Une nouveauté de Flex 3 qui est passé inaperçue c’est la possibilité de recevoir des objets fortement typés depuis un service SOAP comme on pourrait le faire via le protocole AMF. Tout se fait dans la class singleton SchemaTypeRegistry. Il suffit de lui fournir le nom de l’objet reçu , son namespace dans l’enveloppe SOAP et la class de destination. Un petit exemple vaut mieux qu’un long discours : Imaginons que l’on veuille maper un objet user ayant pour namespace « http://www.matsiya.fr/user » vers une class User il suffira d’ajouter dans l’application (le mapping concernera alors tous les services) :
SchemaTypeRegistry.getInstance().registerClass(new QName("http://www.matsiya.fr/user", "user"), User);
Il est aussi tout à fait possible de définir le SchemaTypeRegistry pour une opération donnée en le spécifiant au XMLDecoder :
var sr:SchemaTypeRegistry = new SchemaTypeRegistry(); sr.registerClass(new QName("http://www.mastiya.fr/user", "user"), User);op.decoder.typeRegistry = sr; //op étant notre opérationEtrange qu’adobe ne communique pas plus à ce sujet, la doc est quasi inexistante pour cette fonctionnalité et surtout tout ce qui touche au XMLDecoder. Malheureusement cette technique n’est utilisable que pour les services de type SOAP, à ma connaissance il n’est pas possible de forcer le décodage d’un XML externe ou résultant d’un service REST via le XMLDecoder.
Articles sur le même sujet :

Commentaires