View Javadoc

    1   package org.codehaus.xfire.aegis.type.java5;
    2
    3   import java.beans.PropertyDescriptor;
    4
    5   import javax.xml.namespace.QName;
    6
    7   import org.codehaus.xfire.aegis.type.basic.BeanTypeInfo;
    8   import org.codehaus.xfire.util.NamespaceHelper;
    9
    10  public class AnnotatedTypeInfo
    11      extends BeanTypeInfo
    12  {
    13      public AnnotatedTypeInfo(Class typeClass)
    14      {
    15          super(typeClass);
    16
    17          initialize();
    18      }
    19
    20      protected boolean isAttribute(PropertyDescriptor desc)
    21      {
    22          return desc.getReadMethod().isAnnotationPresent(XmlAttribute.class);
    23      }
    24
    25      protected boolean isElement(PropertyDescriptor desc)
    26      {
    27          return !isAttribute(desc);
    28      }
    29
    30      protected boolean isAnnotatedElement(PropertyDescriptor desc)
    31      {
    32          return desc.getReadMethod().isAnnotationPresent(XmlElement.class);
    33      }
    34
    35      protected QName createQName(PropertyDescriptor desc)
    36      {
    37          String name = null;
    38          String ns = null;
    39
    40          XmlType xtype = (XmlType) getTypeClass().getAnnotation(XmlType.class);
    41          if (xtype != null)
    42          {
    43              ns = xtype.namespace();
    44          }
    45
    46          if (isAttribute(desc))
    47          {
    48              XmlAttribute att = desc.getReadMethod().getAnnotation(XmlAttribute.class);
    49              name = att.name();
    50              if (att.namespace().length() > 0) ns = att.namespace();
    51          }
    52          else if (isAnnotatedElement(desc))
    53          {
    54              XmlElement att = desc.getReadMethod().getAnnotation(XmlElement.class);
    55              name = att.name();
    56              if (att.namespace().length() > 0) ns = att.namespace();
    57          }
    58
    59          if (name == null || name.length() == 0)
    60              name = desc.getName();
    61
    62          if (ns == null || ns.length() == 0)
    63              ns = NamespaceHelper.makeNamespaceFromClassName( getTypeClass().getName(), "http");
    64
    65          return new QName(ns, name);
    66      }
    67
    68      public boolean isNillable(QName name)
    69      {
    70          return super.isNillable(name);
    71      }
    72  }