|
07-03-09 / 01:54 : CP2ObjC : partie cliente bridge Cappuccino/ObjC (cjed) | En complément du bridge Cappuccino/J2EE CP2JavaWS, la partie cliente d'un bridge Cappuccino/Objective-C est disponible ici. Les paramètres (arguments d'appel et retour) sont encodés/décodés au format plist (via CPKeyedArchiver/Unarchiver). Pour la partie serveur (Objective-C), on peut supposer une classe custom WORequestHandler (si WebObjects) : dans la méthode handleRequest il suffit d'extraire les paramètres d'appel de la WORequest, de les décoder (via la classe NSKeyedUnarchiver correspondante), et enfin d'appeler le service Objective-C dont on a passé le nom de l'interface et le nom de la méthode. On pourrait également passer l'objet CPInvocation complet (voir OBJRPCClient/Server de Tom Robinson - partie serveur codée en Objective-J cependant, et accédée via Jack), mais reste à vérifier si la fonction _CPKeyedArchiverEncodeObject de CPKeyedArchiver est compatible avec le décodage par NSKeyedUnarchive, car elle wrappe les valeurs primitives javascript dans des objets _CPKeyedArchiverValue. | | Commentaires | An updated CP2ObjC.zip archive is available (replaces the previous one). It now works correctly, except for CPDate arguments.
I found that in CPObject, hash method returns __address field. But there isn't such field in CPDate. And in CPKeyedArchiver code, CPDate are considered as objects (they own an isa field), but then there is an error when the _CPKeyedArchiverEncodeObject function tries to call var hash = objj_msgSend(anObject, "hash"),
--> jumps (don''t follow remaining breakpoints) and displays "ReferenceError: Can't find variable: __address"
I took me time to found that :-) (posté le 07/03/09 à 18:57 par cjed) | Poster un commentaire | |
|