1 22 package org.jboss.kernel.plugins.deployment.xml; 23 24 import javax.xml.namespace.NamespaceContext ; 25 import javax.xml.namespace.QName ; 26 27 import org.jboss.beans.metadata.plugins.AbstractArrayMetaData; 28 import org.jboss.beans.metadata.plugins.AbstractCollectionMetaData; 29 import org.jboss.beans.metadata.plugins.AbstractListMetaData; 30 import org.jboss.beans.metadata.plugins.AbstractSetMetaData; 31 import org.jboss.xb.binding.sunday.unmarshalling.DefaultElementHandler; 32 import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding; 33 import org.xml.sax.Attributes ; 34 35 41 public class CollectionHandler extends DefaultElementHandler 42 { 43 44 public static final CollectionHandler HANDLER = new CollectionHandler(); 45 46 public Object startElement(Object parent, QName name, ElementBinding element) 47 { 48 if (BeanSchemaBinding20.collectionQName.equals(name)) 49 return new AbstractCollectionMetaData(); 50 else if (BeanSchemaBinding20.listQName.equals(name)) 51 return new AbstractListMetaData(); 52 else if (BeanSchemaBinding20.setQName.equals(name)) 53 return new AbstractSetMetaData(); 54 else if (BeanSchemaBinding20.arrayQName.equals(name)) 55 return new AbstractArrayMetaData(); 56 else 57 throw new IllegalArgumentException ("Unknown collection qname=" + name); 58 } 59 60 public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx) 61 { 62 AbstractCollectionMetaData collection = (AbstractCollectionMetaData) o; 63 for (int i = 0; i < attrs.getLength(); ++i) 64 { 65 String localName = attrs.getLocalName(i); 66 if ("class".equals(localName)) 67 collection.setType(attrs.getValue(i)); 68 else if ("elementClass".equals(localName)) 69 collection.setElementType(attrs.getValue(i)); 70 } 71 } 72 } 73 | Popular Tags |