Xml :: Flex - Generate Actionscript Classes From XSD For Serialization/deserialization?
Oct 26, 2011
I've been looking at various questions in StackOverflow and in other sites, but I have not seen a library that a) generates actionscript code given XSDb) serializes to and deserializes from XML using the generated classes. In Java world this is JAXB. I have a set of large XSDs, based on which a web service is producing XML output. I don't want to write actionscriptclasses by hand, that'd be huge piece of work. Having source code in actionscript since writing code based on runtime binding of xml/json to objects is much more error prone compared to having proxy like classes.
I'm trying to use the native flex serialization/deserialization process to save/load state of a workspace in flex. In order to save or load a file I have to use my servlet, which just bounces back the bytes from the input stream to the output stream. Here's a basic outline of my Flex code:[code]So my problem here is not with the saving of the workspace. That works great. My problem is with the loading of a workspace. The event.data that I write to the byte array is not reconstituted into a MyWorkspace object even though it is exactly what I wrote to the file.There has to be a way of making a MyWorkspace object from the data, but I can't figure it out.
Another observation on serialization:Make sure that you have registered ALL classes that may be written by the writeObject() method.By 'registering' I mean using the registerClassAlias() call.Most noticeably this goes for subclasses.For example, if I write an object to the streamwith
ActionScript Code: writeObject(question) and question is an object of class MCQuestion, which is a subclass of class Question,
I have a problem with BlazeDS to Flex mobile deserialization, so that I try to send back list of maps List<Map<String, Object>> with different Objects in every Map, but when I receive this list in flex code:
hastalarim = event.result as ArrayCollection; But when I debug this in flex code I see that there're 7 instances of the same Object (the first object that was inserted on server-side) in that list.
Whenever I start a new game, I make a whole bunch of classes that extend my base classes, so: URL...and has some setup code.Now all I need is a way to generate these classes at the start of the project so I don't have to create each one manually. It will save me at least an hour of faffing around per game. So how do I do it? I normally use FlashDevelop but I also have FlexBuilder 3, or I'm happy to download whatever other software I need (PC).
I have been trying to test my application to make sure that all the important classes can serialize/reload themselves properly (especially those which implement IExternalizable):
[Test] public function testMyObjectSerialization():void { var myobj:MyObject = new MyObject();[code]....
And I would like to be warned when I try to serialize a strongly-typed object which does not have a [RemoteClass] set (because that almost certainly represents a bug in my code).So, is there any way to configure the AMF serializer to give warnings?Also, it seems like this might be possible using services-config.xml... But the documentation seems to imply that services-config is channel-level, and I'd really like it if my unit tests could run without talking to the server (and I'm not using LCDS, so a bunch of the services-config wouldn't apply to me anyway).
I'm trying to generate a report on what classes are being used in our application... bonus points if i can tell which methods and properties are actually being used as well.
I know I can read the catalog.xml for RSL Libraries which is a great start, but I'm not sure if such a thing exists for applications and modules(compiled or uncompiled).
I think I'm looking for some kind of recursive describeType() method, or (gag) maybe I just need to write my own? I don't care how it works, my app dioesnt even tneed to be running... we just need an inventory of what's really being used and what might be garbage, essentialy.
What is serialization support like for the new Vector class? I have a Vector.<GameMove> which I'd like to serialize into a ByteArray. GameMove is a custom class. I presume it's necesssary to call registerClassAlias() on GameMove, but do I also have to register Vector.<GameMove>? It's it it's own distinctive type, or is it kinda composed of those two types?
I have a Panel in my application which contains 2 buttons and 3 canvas components at certain posstions...now I want to store the current state of panel in some file or database...and afterwards I want to load the same panel again in my application when I come back and run the application. I tried to convert whole panel into ByteArray object using its readObject() and writeObject() methods...but when I read the ByteArray and add the panel in my application using addChild() method it doesn't add anything and there was no error or fault...
writeObject creates ByteArray that I am able to print but when i get it back and add child, I am not able to get the panel and it's children.
I recently came into a situation when sending a nested object from Java to Flex via a HashMap the Objects were null. More precisely:final Map< Integer, List<String>> tempMap = new HashMap<Integer, List<String>>();would send the keys as integers but the values were all null.But when sending the same with String keys:final Map<String, List<String>> tempMap = new HashMap<String, List<String>>();the objects came thru.Are there any restrictions in BlazeDS serialization when using complex types as keys?
Is there any way, without having the creator of the object implement any special functions (no specific serialization functions) (however, they can use annotations), to have Flash serialize a generic, possibly deep (objects within objects within objects, etc, etc, etc) object?
I was wondering if it is possible to do custom serialization of Arrays/ArrayCollections in as3 via amf. To be more specific, i want to be able to pool objects on the client so that im not instantiating new objects every time i make a RemoteObject call. I tried using IExternalizable but that only lets me serialize the objects myself not instantiate them. The flash player is still instantiating objects itself and them letting me set the object state via readExternal.
My workflow usually goes like this: i create a symbol in Flash IDE with textfields, containers, etc. Then I select "export for actionscript" and type in the classname (automatic declaration of stage instances, of course, is off). Then i create a corresponding classfile in FDT and declare all this textfields and other objects that are in my symbol. This is pretty routine and boring process that takes a lot of time.
Is there a way to automate it? Maybe some plugin for flash IDE that will automatically create a class file based on symbol exported for AS?
Update: So, following the answer Pavel fljōt provided, i wrote my own command to accomplish this task.[URL]..
I'm using BlazeDS to remote some Java objects that I'm consuming in a Flex application. I'm getting a type coercion error with one of my classes that I can't for the life of me figure out. I have other classes that are working fine using the same data types, and I've gone over my mapping a dozen times. I'm following all of the necessary conventions for getters and setters as far as I know...
Anyhow, my question is: how can I debug this problem? Running the Flex app in debug mode spits out some generic errors to the console that don't really help much (TypeError: Error #1034: Type Coercion failed: cannot convert Object@5d1d809 to valueObjects.SomeClass.).
What is the best practice about xml deserialization in ActionScript 3?
I'm developing a real time multiplayer Facebook game. I prefered writing client side with Flash. Beside, server-side is written with Java. Communication between server and client is provided with "socket".Server and client sends xml to each other. As might be expected those Xmls contains "objects" which are derived from classes located in both side.[code]...
Does anyone know how to get actionscript to render a null date value '000:00:00T00:00:00'? I am calling a web service that expects date fields in the SOAP xml. I need some of these dates to serialize as null and I can't see how to produce null. The closest value I can get is '1899-11-30T00:00:00Z'. Below is the code I am using:
I'm trying to put an image, generated from some text, in a RichEditableText. Since it's a styled text, I thought about putting it another RichEditableText, style it, then print it to a Bitmap to use as source for InlineGraphicsElement.I use the following code to do that
var txt:RichEditableText = new RichEditableText(); txt.text = name; // Appliy given styles to the text flow of input rich editable text
I have a java server side project which contains JAX-WS web-services (using JavaEE 6 and the @WebService annotation).
Is there some kind of plugin that would allow me to generate Flex client stubs during my maven build ?
I have taken a look at enunciate, but it seems to generate only AMF client.
I've also tried to look at GraniteDS, but their doc seems a little opaque to me.
Notice my Flex project is compiled using flexmojos, which contains a flexmojos:generate mojo that should be able to generate domain object (however I don't understand how to say it to use domain classes from ANOTHER project, and not from a different folder).
So, is there any maven plugin that would allow the kind of feature described in this Adobe page ?
I am trying to set up a communication between a flash client and a C# server. I would like to know if Flash allows me to perform XML serialization in the way that C# does. This is because I would like to use the XMLserialization class in C# for passing of data. If this is not possible, what other methods are available for communication?
I am using AS2 in flash CS3. I am trying to set up a communication between a flash client and a C# server. I would like to know if Flash allows me to perform XML serialization in the way that C# does. This is because I would like to use the XMLserialization class in C# for passing of data. If this is not possible, what other methods are available for communication?
I have an actionscript class that serializes and unserializes data compatible with php's serialization functions. I expanded it to support binary data but now the unserialization does not seem to work. For example, this data is not unserialized correctly:
The game is written in Flash, and I plan to develop the server in node.js because (a) it would be a cool project for learning node.js, and (b) it's fast, which is important for games.The server's architecture is based on messages sent between the server and client (sort of like Minecraft's server protocol). The message format I have so far is a byte (the packet type), two bytes (the message length) and that many bytes (the message data, which is a mapping of key-value pairs). Problem is, I really don't want to develop my own serialization format (because while I probably could, implementing it would be a pain compared to using an existing solution).Unfortunately, I am having problems finding a good candidate for the message data serialization format.
ActionScript's own remoting format might work, but I don't like it much.SON has support in node.js (obviously) and in ActionScript, but it's also textual and I would prefer binary for enhanced speed.MessagePack looked like a good candidate, but I can't find an ActionScript implementation. (There's one called as3-msgpack on Google Code, but I get weird errors and can't access it.)BSON has an ActionScript implementation, but no node.js support besides their MongoDB library (and I'm planning on using Redis).
I have an API that inherits flash.display.Sprite .When I try to generate the ASDocs for the API, The ASdoc shows that my class inherits from flash.display.Sprite, but doesnt link or there is no click-able link to the Sprite's ASDoc. Can anyone tell me what I am missing.
I'm building a realtime action multiplayer game in Flash which is using too much bandwidth because it sends message objects as XML (as required by the Smartfox server). I'm now trying to cut down on that by serializing my objects to strings before feeding them to Smartfox. I've tried JSON but it doesn't work. Is there another serialization method that is compacter, for example that encodes numbers in Base64 instead of decimals? I don't care about human-readability in this case.
i need to serialize AS3 strong typed Objects, send them to a C# Application and then be able to derserialize them as Hashtables/Dictionarys or so because i have no corresponding C# Class. I then will make some changes to that Hastable and need to be able to send them back to the as3 App. I tried using JSON (see this question with bounty Typed AS3 JSON Encoder and Decoder ?) as i already got JSON serialization to Hashtables in C#. It does not work because AS3 has no support for typed JSON.
I also looked in XML and found asx3m http://code.google.com/p/asx3m/ which is strong typed in as3 but i can find a solution to serialie and deserialize this to proper hashtables in c#.
Is there a way to synthesize getters/setters in AS3? It's very common that you have a class with lots of variables, especially in math calculations (Model in MVC pattern), that you'd like to expose. Is there something like synthesize property in Objective-C, that allows to generate getters/setters?
I'm looking for something that automatically generates images from the content in some SWF and stores the images on a server to be fetched if the user doesn't have Flash Player installed. The purpose is to at least show a static diagram instead of just a table with data, if Flash Player isn't installed.
It's quite easy to create an image from a DisplayObject using Actionscript, but that requires someone opens the SWF in the first place. I would like this to execute on the server side. Is it possible? Is there a headless Flash Player that could be used with PHP for example?
How do I generate a self-signed certificate to sign an adobe AIR app? I'm using the maven flexmojos plugin. I've followed an openssl tutorial to generate a .p12, but now the mvn plugin /adt compiler is telling me that the certificate is not a X509 certificate.
I have a script that parses some complex XML. When the XML element is of a certain type, it generates a comboBox using the XML element's children to populate the box. I then want to check all of the values of the all the generated ComboBoxes against their correct answers (which is also info stored in the XML file). When creating the ComboBoxes, I added an "id" property. However, it seems that I cannot them use:
dynamicQuestion.id.selectedItem.labelField
to check the answers. However, I am able to get the labelField if I know the variable name used to create the ComboBox.
dynamicQuestion.selectedItem.labelField
This indicates (to me) that I need to dynamically generate the variable name as I'm creating new instances of the ComboBox. But how do I dynamically generate a variable name? If I use
var thisBox:String = "box"+boxCount; var newBox:ComboBox = thisBox as ComboBox;
I get an implicit coercion error. I also tried changing the creation statement to a function that accepted an argument, "thisBox," but this didn't work either. Conceptually, this seems quite simple, but I'm having a hard time putting it to practice. It seems that the comboBox's id is what is generated by created the box using script (e.g., var thisBox). How do I dynamically generate this name?