Revision: 7761
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 11, 2008 17:20 by narkisr
Initial Code
package amfdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import flex.messaging.io.SerializationContext; import flex.messaging.io.amf.Amf3Input; import flex.messaging.io.amf.Amf3Output; import javax.xml.parsers.DocumentBuilderFactory; public class AmfTest { public static void main(String[] args) { try { SerializationContext context = getSerializationContext(); TestBean testBean = new TestBean(); testBean.setByte(new Byte((byte) 9)); testBean.setBigDecimal(new BigDecimal("9.9")); testBean.setBoolean(new Boolean("true")); testBean.setCharacter(new Character('c')); testBean.setCalendar(Calendar.getInstance()); testBean.setDate(Calendar.getInstance().getTime()); testBean.setDouble(new Double(999.9)); testBean.setFloat(new Float(99.9f)); testBean.setInteger(new Integer("999")); testBean.setList(new ArrayList()); testBean.setLong(new Long(99999)); testBean.setMap(new HashMap()); testBean.setDocument(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); testBean.setShort(new Short("99")); testBean.setString("test"); ByteArrayOutputStream bout = new ByteArrayOutputStream(); Amf3Output amf3Output = new Amf3Output(context); amf3Output.setOutputStream(bout); amf3Output.writeObject(testBean); amf3Output.flush(); amf3Output.close(); InputStream bIn = new ByteArrayInputStream(bout.toByteArray()); Amf3Input amf3Input = new Amf3Input(context); amf3Input.setInputStream(bIn); TestBean o = (TestBean) amf3Input.readObject(); System.out.println(o.getByte().equals(testBean.getByte())); System.out.println(o.getBigDecimal().equals(testBean.getBigDecimal())); System.out.println(o.getBoolean().equals(testBean.getBoolean())); System.out.println(o.getCharacter().equals(testBean.getCharacter())); System.out.println(o.getCalendar().equals(testBean.getCalendar())); System.out.println(o.getDate().equals(testBean.getDate())); System.out.println(o.getDouble().equals(testBean.getDouble())); System.out.println(o.getFloat().equals(testBean.getFloat())); System.out.println(o.getInteger().equals(testBean.getInteger())); System.out.println(o.getLong().equals(testBean.getLong())); System.out.println(o.getString().equals(testBean.getString())); } catch (Exception e) { e.printStackTrace(); } } public static SerializationContext getSerializationContext() { //Threadlocal SerializationContent SerializationContext serializationContext = SerializationContext.getSerializationContext(); serializationContext.enableSmallMessages = true; serializationContext.instantiateTypes = true; //use _remoteClass field serializationContext.supportRemoteClass = true; //false Legacy Flex 1.5 behavior was to return a java.util.Collection for Array //ture New Flex 2+ behavior is to return Object[] for AS3 Array serializationContext.legacyCollection = false; serializationContext.legacyMap = false; //false Legacy flash.xml.XMLDocument Type //true New E4X XML Type serializationContext.legacyXMLDocument = false; //determines whether the constructed Document is name-space aware serializationContext.legacyXMLNamespaces = false; serializationContext.legacyThrowable = false; serializationContext.legacyBigNumbers = false; serializationContext.restoreReferences = false; serializationContext.logPropertyErrors = false; serializationContext.ignorePropertyErrors = true; return serializationContext; /* serializationContext.enableSmallMessages = serialization.getPropertyAsBoolean(ENABLE_SMALL_MESSAGES, true); serializationContext.instantiateTypes = serialization.getPropertyAsBoolean(INSTANTIATE_TYPES, true); serializationContext.supportRemoteClass = serialization.getPropertyAsBoolean(SUPPORT_REMOTE_CLASS, false); serializationContext.legacyCollection = serialization.getPropertyAsBoolean(LEGACY_COLLECTION, false); serializationContext.legacyMap = serialization.getPropertyAsBoolean(LEGACY_MAP, false); serializationContext.legacyXMLDocument = serialization.getPropertyAsBoolean(LEGACY_XML, false); serializationContext.legacyXMLNamespaces = serialization.getPropertyAsBoolean(LEGACY_XML_NAMESPACES, false); serializationContext.legacyThrowable = serialization.getPropertyAsBoolean(LEGACY_THROWABLE, false); serializationContext.legacyBigNumbers = serialization.getPropertyAsBoolean(LEGACY_BIG_NUMBERS, false); boolean showStacktraces = serialization.getPropertyAsBoolean(SHOW_STACKTRACES, false); if (showStacktraces && Log.isWarn()) log.warn("The " + SHOW_STACKTRACES + " configuration option is deprecated and non-functional. Please remove this from your configuration file."); serializationContext.restoreReferences = serialization.getPropertyAsBoolean(RESTORE_REFERENCES, false); serializationContext.logPropertyErrors = serialization.getPropertyAsBoolean(LOG_PROPERTY_ERRORS, false); serializationContext.ignorePropertyErrors = serialization.getPropertyAsBoolean(IGNORE_PROPERTY_ERRORS, true); */ } }
Initial URL
Initial Description
A working example that uses BlaszDS in order to serialize Java object into AMF (this code should be cleaned up a bit), in order for it to compile and work it is required to add flex-messaging-core.jar and flex-messaging-common.jar to the classpath.
Initial Title
Serialization of Java object to AMF
Initial Tags
actionscript, java, Flex
Initial Language
Java