1 22 package org.jboss.xb.binding.sunday.unmarshalling.impl.runtime; 23 24 import javax.xml.namespace.QName ; 25 26 import org.jboss.xb.binding.GenericValueContainer; 27 import org.jboss.xb.binding.JBossXBRuntimeException; 28 import org.jboss.xb.binding.Util; 29 import org.jboss.xb.binding.group.ValueList; 30 import org.jboss.xb.binding.metadata.PropertyMetaData; 31 import org.jboss.xb.binding.sunday.unmarshalling.AttributeBinding; 32 import org.jboss.xb.binding.sunday.unmarshalling.AttributeHandler; 33 34 38 public class RtAttributeHandler 39 extends AttributeHandler 40 { 41 public static final RtAttributeHandler INSTANCE = new RtAttributeHandler(); 42 43 public void attribute(QName elemName, QName attrName, AttributeBinding binding, Object owner, Object value) 44 { 45 if(owner instanceof MapEntry) 46 { 47 if(binding.isMapEntryKey()) 48 { 49 ((MapEntry)owner).setKey(value); 50 } 51 else if(binding.isMapEntryValue()) 52 { 53 ((MapEntry)owner).setValue(value); 54 } 55 else 56 { 57 throw new JBossXBRuntimeException( 58 "Parent object is a map entry but attribute " + 59 attrName + 60 " in element " + 61 elemName + 62 " bound to neither key nor value in a map entry." 63 ); 64 } 65 } 66 else if(owner instanceof GenericValueContainer) 67 { 68 ((GenericValueContainer)owner).addChild(attrName, value); 69 } 70 else if(owner instanceof ValueList) 71 { 72 ValueList valueList = (ValueList)owner; 73 valueList.getInitializer().addAttributeValue(attrName, binding, valueList, value); 74 } 75 else 76 { 77 String property = null; 78 PropertyMetaData propertyMetaData = binding.getPropertyMetaData(); 79 if(propertyMetaData != null) 80 { 81 property = propertyMetaData.getName(); 82 } 83 84 if(property == null) 85 { 86 property = Util.xmlNameToFieldName(attrName.getLocalPart(), binding.getSchema().isIgnoreLowLine()); 87 } 88 89 RtUtil.set(owner, value, property, null, 90 binding.getSchema().isIgnoreUnresolvedFieldOrClass(), 91 binding.getValueAdapter()); 92 } 93 } 94 } 95 | Popular Tags |