public Map<String,String> getSchemaLocations() { Map<String, String> r = new HashMap<String,String>(); for (ClassInfoImpl<T, C, F, M> ci : beans().values()) { XmlSchema xs = reader.getPackageAnnotation( XmlSchema.class, ci.getClazz(), null ); if(xs==null) continue; String loc = xs.location(); if(loc.equals(XmlSchema.NO_LOCATION)) continue; // unspecified r.put(xs.namespace(),loc); } return r; }
public final XmlNsForm getElementFormDefault(String nsUri) { for (ClassInfoImpl<T, C, F, M> ci : beans().values()) { XmlSchema xs = reader.getPackageAnnotation( XmlSchema.class, ci.getClazz(), null ); if(xs==null) continue; if(!xs.namespace().equals(nsUri)) continue; XmlNsForm xnf = xs.elementFormDefault(); if(xnf!=XmlNsForm.UNSET) return xnf; } return XmlNsForm.UNSET; }
public final XmlNsForm getAttributeFormDefault(String nsUri) { for (ClassInfoImpl<T,C,F,M> ci : beans().values()) { XmlSchema xs = reader.getPackageAnnotation( XmlSchema.class, ci.getClazz(), null ); if(xs==null) continue; if(!xs.namespace().equals(nsUri)) continue; XmlNsForm xnf = xs.attributeFormDefault(); if(xnf!=XmlNsForm.UNSET) return xnf; } return XmlNsForm.UNSET; }
public Map<String,String> getXmlNs(String namespaceUri) { if(xmlNsCache==null) { xmlNsCache = new HashMap<String,Map<String,String>>(); for (ClassInfoImpl<T, C, F, M> ci : beans().values()) { XmlSchema xs = reader.getPackageAnnotation( XmlSchema.class, ci.getClazz(), null ); if(xs==null) continue; String uri = xs.namespace(); Map<String,String> m = xmlNsCache.get(uri); if(m==null) xmlNsCache.put(uri,m=new HashMap<String, String>()); for( XmlNs xns : xs.xmlns() ) { m.put(xns.prefix(),xns.namespaceURI()); } } } Map<String,String> r = xmlNsCache.get(namespaceUri); if(r!=null) return r; else return Collections.emptyMap(); }
/** * Gets an annotation that are allowed on both class and type. */ private <T extends Annotation> T getClassOrPackageAnnotation(Class<T> type) { T t = reader().getClassAnnotation(type,clazz,this); if(t!=null) return t; // defaults to the package level return reader().getPackageAnnotation(type,clazz,this); }
private String getEffectiveNamespaceFor(XmlElementRef r) { String nsUri = r.namespace(); XmlSchema xs = reader().getPackageAnnotation( XmlSchema.class, parent.getClazz(), this ); if(xs!=null && xs.attributeFormDefault()== XmlNsForm.QUALIFIED) { // JAX-RPC doesn't want the default namespace URI swapping to take effect to // local "unqualified" elements. UGLY. if(nsUri.length()==0) nsUri = parent.builder.defaultNsUri; } return nsUri; }
protected XmlAccessorFactory findXmlAccessorFactoryAnnotation(Class clazz) { XmlAccessorFactory factoryAnn = reader().getClassAnnotation(XmlAccessorFactory.class,clazz,this); if (factoryAnn == null) { factoryAnn = reader().getPackageAnnotation(XmlAccessorFactory.class,clazz,this); } return factoryAnn; }
final QName parseElementName(XmlElementDecl e) { String local = e.name(); String nsUri = e.namespace(); if(nsUri.equals("##default")) { // if defaulted ... XmlSchema xs = reader().getPackageAnnotation(XmlSchema.class, nav().getDeclaringClassForMethod(method),this); if(xs!=null) nsUri = xs.namespace(); else { nsUri = builder.defaultNsUri; } } return new QName(nsUri.intern(),local.intern()); }
private QName calcXmlName(String uri,String local) { // compute the default TODO.checkSpec(); if(local.length()==0 || local.equals("##default")) local = seed.getName(); if(uri.equals("##default")) { XmlSchema xs = reader().getPackageAnnotation( XmlSchema.class, parent.getClazz(), this ); // JAX-RPC doesn't want the default namespace URI swapping to take effect to // local "unqualified" elements. UGLY. if(xs!=null) { switch(xs.elementFormDefault()) { case QUALIFIED: QName typeName = parent.getTypeName(); if(typeName!=null) uri = typeName.getNamespaceURI(); else uri = xs.namespace(); if(uri.length()==0) uri = parent.builder.defaultNsUri; break; case UNQUALIFIED: case UNSET: uri = ""; } } else { uri = ""; } } return new QName(uri.intern(),local.intern()); }
static <T,C,F,M> QName calcSchemaType( AnnotationReader<T,C,F,M> reader, AnnotationSource primarySource, C enclosingClass, T individualType, Locatable src ) { XmlSchemaType xst = primarySource.readAnnotation(XmlSchemaType.class); if(xst!=null) { return new QName(xst.namespace(),xst.name()); } // check the defaulted annotation XmlSchemaTypes xsts = reader.getPackageAnnotation(XmlSchemaTypes.class,enclosingClass,src); XmlSchemaType[] values = null; if(xsts!=null) values = xsts.value(); else { xst = reader.getPackageAnnotation(XmlSchemaType.class,enclosingClass,src); if(xst!=null) { values = new XmlSchemaType[1]; values[0] = xst; } } if(values!=null) { for( XmlSchemaType item : values ) { if(reader.getClassValue(item,"type").equals(individualType)) { return new QName(item.namespace(),item.name()); } } } return null; }
private QName calcXmlName(XmlAttribute att) { String uri; String local; uri = att.namespace(); local = att.name(); // compute the default if(local.equals("##default")) local = NameConverter.standard.toVariableName(getName()); if(uri.equals("##default")) { XmlSchema xs = reader().getPackageAnnotation( XmlSchema.class, parent.getClazz(), this ); // JAX-RPC doesn't want the default namespace URI swapping to take effect to // local "unqualified" elements. UGLY. if(xs!=null) { switch(xs.attributeFormDefault()) { case QUALIFIED: uri = parent.getTypeName().getNamespaceURI(); if(uri.length()==0) uri = parent.builder.defaultNsUri; break; case UNQUALIFIED: case UNSET: uri = ""; } } else uri = ""; } return new QName(uri.intern(),local.intern()); }
XmlSchema xs = reader().getPackageAnnotation(XmlSchema.class,clazz,this); if(xs!=null) nsUri = xs.namespace();
/** * Parses an {@link XmlRootElement} annotation on a class * and determine the element name. * * @return null * if none was found. */ protected final QName parseElementName(ClassDeclT clazz) { XmlRootElement e = reader().getClassAnnotation(XmlRootElement.class,clazz,this); if(e==null) return null; String local = e.name(); if(local.equals("##default")) { // if defaulted... local = NameConverter.standard.toVariableName(nav().getClassShortName(clazz)); } String nsUri = e.namespace(); if(nsUri.equals("##default")) { // if defaulted ... XmlSchema xs = reader().getPackageAnnotation(XmlSchema.class,clazz,this); if(xs!=null) nsUri = xs.namespace(); else { nsUri = builder.defaultNsUri; } } return new QName(nsUri.intern(),local.intern()); }
private XmlJavaTypeAdapter getApplicableAdapter(T type) { XmlJavaTypeAdapter jta = seed.readAnnotation(XmlJavaTypeAdapter.class); if(jta!=null && isApplicable(jta,type)) return jta; // check the applicable adapters on the package XmlJavaTypeAdapters jtas = reader().getPackageAnnotation(XmlJavaTypeAdapters.class, parent.clazz, seed ); if(jtas!=null) { for (XmlJavaTypeAdapter xjta : jtas.value()) { if(isApplicable(xjta,type)) return xjta; } } jta = reader().getPackageAnnotation(XmlJavaTypeAdapter.class, parent.clazz, seed ); if(isApplicable(jta,type)) return jta; // then on the target class C refType = nav().asDecl(type); if(refType!=null) { jta = reader().getClassAnnotation(XmlJavaTypeAdapter.class, refType, seed ); if(jta!=null && isApplicable(jta,type)) // the one on the type always apply. return jta; } return null; }
public Map<String,String> getSchemaLocations() { Map<String, String> r = new HashMap<String,String>(); for (ClassInfoImpl<T, C, F, M> ci : beans().values()) { XmlSchema xs = reader.getPackageAnnotation( XmlSchema.class, ci.getClazz(), null ); if(xs==null) continue; String loc = xs.location(); if(loc.equals(XmlSchema.NO_LOCATION)) continue; // unspecified r.put(xs.namespace(),loc); } return r; }
XmlAccessorOrder xao = reader().getPackageAnnotation(XmlAccessorOrder.class, clazz, this); if((xao != null) && (xao.value() == XmlAccessOrder.UNDEFINED)) { propOrder = null;
public final XmlNsForm getElementFormDefault(String nsUri) { for (ClassInfoImpl<T, C, F, M> ci : beans().values()) { XmlSchema xs = reader.getPackageAnnotation( XmlSchema.class, ci.getClazz(), null ); if(xs==null) continue; if(!xs.namespace().equals(nsUri)) continue; XmlNsForm xnf = xs.elementFormDefault(); if(xnf!=XmlNsForm.UNSET) return xnf; } return XmlNsForm.UNSET; }
/** * Gets an annotation that are allowed on both class and type. */ private <T extends Annotation> T getClassOrPackageAnnotation(Class<T> type) { T t = reader().getClassAnnotation(type,clazz,this); if(t!=null) return t; // defaults to the package level return reader().getPackageAnnotation(type,clazz,this); }
private String getEffectiveNamespaceFor(XmlElementRef r) { String nsUri = r.namespace(); XmlSchema xs = reader().getPackageAnnotation( XmlSchema.class, parent.getClazz(), this ); if(xs!=null && xs.attributeFormDefault()== XmlNsForm.QUALIFIED) { // JAX-RPC doesn't want the default namespace URI swapping to take effect to // local "unqualified" elements. UGLY. if(nsUri.length()==0) nsUri = parent.builder.defaultNsUri; } return nsUri; }
protected XmlAccessorFactory findXmlAccessorFactoryAnnotation(Class clazz) { XmlAccessorFactory factoryAnn = reader().getClassAnnotation(XmlAccessorFactory.class,clazz,this); if (factoryAnn == null) { factoryAnn = reader().getPackageAnnotation(XmlAccessorFactory.class,clazz,this); } return factoryAnn; }