KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > xb > binding > sunday > unmarshalling > impl > runtime > RtAttributeHandler


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.xb.binding.sunday.unmarshalling.impl.runtime;
23
24 import javax.xml.namespace.QName JavaDoc;
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 /**
35  * @author <a HREF="mailto:alex@jboss.org">Alexey Loubyansky</a>
36  * @version <tt>$Revision: 1958 $</tt>
37  */

38 public class RtAttributeHandler
39    extends AttributeHandler
40 {
41    public static final RtAttributeHandler INSTANCE = new RtAttributeHandler();
42
43    public void attribute(QName JavaDoc elemName, QName JavaDoc attrName, AttributeBinding binding, Object JavaDoc owner, Object JavaDoc 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 JavaDoc 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