package com.fasterxml.jackson.dataformat.xml; import java.io.*; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.core.Versioned; import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider; import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator; import com.fasterxml.jackson.dataformat.xml.ser.XmlSerializerProvider; import com.fasterxml.jackson.dataformat.xml.util.XmlRootNameLookup; public class VersionInfoTest extends XmlTestBase { public void testMapperVersions() { assertVersion(new XmlMapper()); assertVersion(new XmlFactory()); } // @since 2.1 // [Issue#48]: ObjectMapper.copy() public void testMapperCopy() { XmlMapper mapper1 = new XmlMapper(); mapper1.setXMLTextElementName("foo"); mapper1.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true); mapper1.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); XmlMapper mapper2 = mapper1.copy(); assertNotSame(mapper1, mapper2); XmlFactory xf1 = mapper1.getFactory(); XmlFactory xf2 = mapper2.getFactory(); assertNotSame(xf1, xf2); assertEquals(XmlFactory.class, xf2.getClass()); // and [Issue#48] as well, incomplete copy... assertEquals(xf1.getXMLTextElementName(), xf2.getXMLTextElementName()); assertEquals(xf1._xmlGeneratorFeatures, xf2._xmlGeneratorFeatures); assertEquals(xf1._xmlParserFeatures, xf2._xmlParserFeatures); // and [Issue#233] SerializationConfig sc1 = mapper1.getSerializationConfig(); SerializationConfig sc2 = mapper2.getSerializationConfig(); assertNotSame(sc1, sc2); assertEquals( "serialization features did not get copied", sc1.getSerializationFeatures(), sc2.getSerializationFeatures() ); } public void testSerializerProviderCopy() { DefaultSerializerProvider provider = new XmlSerializerProvider(new XmlRootNameLookup()); DefaultSerializerProvider copy = provider.copy(); assertNotSame(provider, copy); } // Another test for [Issue#48] public void testMapperSerialization() throws Exception { XmlMapper mapper1 = new XmlMapper(); mapper1.setXMLTextElementName("foo"); assertEquals("foo", mapper1.getFactory().getXMLTextElementName()); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); ObjectOutputStream objectStream = new ObjectOutputStream(bytes); objectStream.writeObject(mapper1); objectStream.close(); ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray())); XmlMapper mapper2 = (XmlMapper) input.readObject(); input.close(); assertEquals("foo", mapper2.getFactory().getXMLTextElementName()); } /* /********************************************************** /* Helper methods /********************************************************** */ private void assertVersion(Versioned vers) { final Version v = vers.version(); assertFalse("Should find version information (got "+v+")", v.isUnknownVersion()); Version exp = PackageVersion.VERSION; assertEquals(exp.toFullString(), v.toFullString()); assertEquals(exp, v); } }