1 29 30 package com.caucho.jaxb.skeleton; 31 32 import com.caucho.jaxb.JAXBUtil; 33 34 import javax.xml.bind.JAXBException; 35 import javax.xml.bind.Marshaller; 36 import javax.xml.bind.Unmarshaller; 37 import javax.xml.bind.annotation.XmlElementWrapper; 38 import javax.xml.namespace.QName ; 39 import javax.xml.stream.XMLStreamException; 40 import javax.xml.stream.XMLStreamReader; 41 import javax.xml.stream.XMLStreamWriter; 42 import java.io.IOException ; 43 import java.util.ArrayList ; 44 import java.util.Iterator ; 45 import java.util.List ; 46 47 50 public class ListProperty extends IterableProperty { 51 public ListProperty(Property componentProperty) 52 { 53 _componentProperty = componentProperty; 54 } 55 56 public Object read(Unmarshaller u, XMLStreamReader in, QName qname) 57 throws IOException , XMLStreamException, JAXBException 58 { 59 ArrayList <Object > list = new ArrayList <Object >(); 60 61 if (in.getEventType() != in.START_ELEMENT || ! qname.equals(in.getName())) 62 return list; 64 while (in.getEventType() == in.START_ELEMENT && qname.equals(in.getName())) 65 list.add(_componentProperty.read(u, in, qname)); 66 67 return list; 68 } 69 70 public void write(Marshaller m, XMLStreamWriter out, Object obj, QName qname) 71 throws IOException , XMLStreamException, JAXBException 72 { 73 75 if (obj != null) { 76 if (obj instanceof List ) { 77 List list = (List ) obj; 78 79 for (Object o : list) 80 _componentProperty.write(m, out, o, qname); 81 } 82 else 83 throw new ClassCastException ("Argument not a List"); 84 } 85 } 86 87 public String getSchemaType() 88 { 89 return _componentProperty.getSchemaType(); 90 } 91 92 public boolean isXmlPrimitiveType() 93 { 94 return getComponentProperty().isXmlPrimitiveType(); 95 } 96 97 public String getMaxOccurs() 98 { 99 return "unbounded"; 100 } 101 } 102 | Popular Tags |