?? annotatedtypeinfo.java
字號:
package org.codehaus.xfire.aegis.type.java5;import java.beans.PropertyDescriptor;import javax.xml.namespace.QName;import org.codehaus.xfire.aegis.type.Type;import org.codehaus.xfire.aegis.type.TypeMapping;import org.codehaus.xfire.aegis.type.basic.BeanTypeInfo;import org.codehaus.xfire.util.NamespaceHelper;public class AnnotatedTypeInfo extends BeanTypeInfo{ public AnnotatedTypeInfo(TypeMapping tm, Class typeClass, String ns) { super(typeClass, ns); setTypeMapping(tm); initialize(); } /** * Override from parent in order to check for IgnoreProperty annotation. */ protected void mapProperty(PropertyDescriptor pd) { if (isIgnored(pd)) return; // do not map ignored properties String name = pd.getName(); if (isAttribute(pd)) { mapAttribute(name, createMappedName(pd)); } else if (isElement(pd)) { mapElement(name, createMappedName(pd)); } } @Override protected boolean registerType(PropertyDescriptor desc) { XmlAttribute att = desc.getReadMethod().getAnnotation(XmlAttribute.class); if (att != null && att.type() != Type.class) return false; XmlElement el = desc.getReadMethod().getAnnotation(XmlElement.class); if (el != null && el.type() != Type.class) return false; return super.registerType(desc); } protected boolean isIgnored(PropertyDescriptor desc) { return desc.getReadMethod().isAnnotationPresent(IgnoreProperty.class); } protected boolean isAttribute(PropertyDescriptor desc) { return desc.getReadMethod().isAnnotationPresent(XmlAttribute.class); } protected boolean isElement(PropertyDescriptor desc) { return !isAttribute(desc); } protected boolean isAnnotatedElement(PropertyDescriptor desc) { return desc.getReadMethod().isAnnotationPresent(XmlElement.class); } @Override protected QName createMappedName(PropertyDescriptor desc) { return createQName(desc); } protected QName createQName(PropertyDescriptor desc) { String name = null; String ns = null; XmlType xtype = (XmlType) getTypeClass().getAnnotation(XmlType.class); if (xtype != null) { ns = xtype.namespace(); } if (isAttribute(desc)) { XmlAttribute att = desc.getReadMethod().getAnnotation(XmlAttribute.class); name = att.name(); if (att.namespace().length() > 0) ns = att.namespace(); } else if (isAnnotatedElement(desc)) { XmlElement att = desc.getReadMethod().getAnnotation(XmlElement.class); name = att.name(); if (att.namespace().length() > 0) ns = att.namespace(); } if (name == null || name.length() == 0) name = desc.getName(); if (ns == null || ns.length() == 0) ns = NamespaceHelper.makeNamespaceFromClassName( getTypeClass().getName(), "http"); return new QName(ns, name); } public boolean isNillable(QName name) { PropertyDescriptor desc = getPropertyDescriptorFromMappedName(name); if (isAnnotatedElement(desc)) { XmlElement att = desc.getReadMethod().getAnnotation(XmlElement.class); return att.nillable(); } else { return super.isNillable(name); } } public int getMinOccurs ( QName name ) { PropertyDescriptor desc = getPropertyDescriptorFromMappedName(name); if (isAnnotatedElement(desc)) { XmlElement att = desc.getReadMethod().getAnnotation(XmlElement.class); String minOccurs = att.minOccurs(); if ( minOccurs != null && minOccurs.length() > 0 ) { return Integer.parseInt( minOccurs ); } } return super.getMinOccurs(name); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -