1 package org.sapia.util.xml.idefix.serializer; 2 3 import org.sapia.util.xml.Namespace; 4 import org.sapia.util.xml.idefix.SerializationContext; 5 import org.sapia.util.xml.idefix.SerializationException; 6 import org.sapia.util.xml.idefix.SerializerIF; 7 import org.sapia.util.xml.idefix.SerializerNotFoundException; 8 9 import java.lang.reflect.Array ; 10 11 12 22 public class ArraySerializer implements SerializerIF { 23 26 public ArraySerializer() { 27 super(); 28 } 29 30 38 public void serialize(Object anObject, SerializationContext aContext) 39 throws SerializationException { 40 throw new UnsupportedOperationException ( 41 "The array serializer can serialize a root element"); 42 } 43 44 54 public void serialize(Object anArray, Namespace aNamespace, 55 String anObjectName, SerializationContext aContext) 56 throws SerializationException { 57 try { 58 aContext.getXmlBuffer().addNamespace(aNamespace.getURI(), 60 aNamespace.getPrefix()); 61 aContext.getXmlBuffer().startElement(aNamespace.getURI(), anObjectName); 62 63 SerializerIF aSerializer = aContext.getSerializerFactory().getSerializer(anArray.getClass() 65 .getComponentType()); 66 67 int anArrayLength = Array.getLength(anArray); 69 70 for (int i = 0; i < anArrayLength; i++) { 71 Object anObject = Array.get(anArray, i); 72 aSerializer.serialize(anObject, aContext); 73 } 74 75 aContext.getXmlBuffer().endElement(aNamespace.getURI(), anObjectName); 77 aContext.getXmlBuffer().removeNamespace(aNamespace.getURI()); 78 } catch (SerializerNotFoundException snfe) { 79 String aMessage = "Unable to found a serializer for the array: " + 80 anArray; 81 throw new SerializationException(aMessage, snfe); 82 } 83 } 84 } 85 | Popular Tags |