public void annotate(JAnnotatable programElement) { if(typeUse.getAdapterUse()==null && !typeUse.isCollection()) return; // nothing CAdapter adapterUse = typeUse.getAdapterUse(); if(adapterUse!=null) { // ugly, ugly hack if(adapterUse.getAdapterIfKnown() == SwaRefAdapterMarker.class) { programElement.annotate(XmlAttachmentRef.class); } else { // [RESULT] // @XmlJavaTypeAdapter( Foo.class ) programElement.annotate2(XmlJavaTypeAdapterWriter.class).value( adapterUse.adapterType.toType(outline,EXPOSED)); } } if(typeUse.isCollection()) programElement.annotate(XmlList.class); }
public void annotate(JAnnotatable programElement) { if(typeUse.getAdapterUse()==null && !typeUse.isCollection()) return; // nothing CAdapter adapterUse = typeUse.getAdapterUse(); if(adapterUse!=null) { // ugly, ugly hack if(adapterUse.getAdapterIfKnown()== SwaRefAdapter.class) { programElement.annotate(XmlAttachmentRef.class); } else { // [RESULT] // @XmlJavaTypeAdapter( Foo.class ) programElement.annotate2(XmlJavaTypeAdapterWriter.class).value( adapterUse.adapterType.toType(outline,EXPOSED)); } } if(typeUse.isCollection()) programElement.annotate(XmlList.class); }
/** * Annotate the field according to the recipes given as {@link CPropertyInfo}. */ protected void annotate( JAnnotatable field ) { assert(field!=null); /* TODO: consider moving this logic to somewhere else so that it can be better shared, for how a field gets annotated doesn't really depend on how we generate accessors. so perhaps we should separate those two. */ // TODO: consider a visitor if (prop instanceof CAttributePropertyInfo) { annotateAttribute(field); } else if (prop instanceof CElementPropertyInfo) { annotateElement(field); } else if (prop instanceof CValuePropertyInfo) { field.annotate(XmlValue.class); } else if (prop instanceof CReferencePropertyInfo) { annotateReference(field); } outline.parent().generateAdapterIfNecessary(prop,field); QName st = prop.getSchemaType(); if(st!=null) field.annotate2(XmlSchemaTypeWriter.class) .name(st.getLocalPart()) .namespace(st.getNamespaceURI()); if(prop.inlineBinaryData()) field.annotate(XmlInlineBinaryData.class); }
/** * Annotate the element property 'field' */ private void annotateElement(JAnnotatable field) { CElementPropertyInfo ep = (CElementPropertyInfo) prop; List<CTypeRef> types = ep.getTypes(); if(ep.isValueList()) { field.annotate(XmlList.class); } assert ep.getXmlName()==null; // if( eName!=null ) { // wrapper // XmlElementWrapperWriter xcw = field.annotate2(XmlElementWrapperWriter.class); // xcw.name(eName.getLocalPart()) // .namespace(eName.getNamespaceURI()); // } if (types.size() == 1) { CTypeRef t = types.get(0); writeXmlElementAnnotation(field, t, resolve(t,IMPLEMENTATION), false); } else { for (CTypeRef t : types) { // generate @XmlElements writeXmlElementAnnotation(field, t, resolve(t,IMPLEMENTATION), true); } xesw = null; } }
private XmlElementWriter getXew(boolean checkWrapper, JAnnotatable field) { XmlElementWriter xew; if(checkWrapper) { if(xesw==null) { xesw = field.annotate2(XmlElementsWriter.class); } xew = xesw.value(); } else { xew = field.annotate2(XmlElementWriter.class); } return xew; }
/** * Annotate the attribute property 'field' */ private void annotateAttribute(JAnnotatable field) { CAttributePropertyInfo ap = (CAttributePropertyInfo) prop; QName attName = ap.getXmlName(); // [RESULT] // @XmlAttribute(name="foo", required=true, namespace="bar://baz") XmlAttributeWriter xaw = field.annotate2(XmlAttributeWriter.class); final String generatedName = attName.getLocalPart(); final String generatedNS = attName.getNamespaceURI(); // Issue 570; always force generating name="" when do it when globalBindings underscoreBinding is set to non default value // generate name property? if(!generatedName.equals(ap.getName(false)) || !generatedName.equals(ap.getName(true)) || (outline.parent().getModel().getNameConverter() != NameConverter.standard)) { xaw.name(generatedName); } // generate namespace property? if(!generatedNS.equals("")) { // assume attributeFormDefault == unqualified xaw.namespace(generatedNS); } // generate required property? if(ap.isRequired()) { xaw.required(true); } }
/** * Annotate the field according to the recipes given as {@link CPropertyInfo}. */ @Override protected void annotate( JAnnotatable field ) { super.annotate(field); if (prop instanceof CReferencePropertyInfo) { CReferencePropertyInfo pref = (CReferencePropertyInfo)prop; if (pref.isDummy()) { annotateDummy(field); } } }
/** * Generates {@link XmlJavaTypeAdapter} from {@link PropertyInfo} if necessary. * Also generates other per-property annotations * (such as {@link XmlID}, {@link XmlIDREF}, and {@link XmlMimeType} if necessary. */ public final void generateAdapterIfNecessary(CPropertyInfo prop, JAnnotatable field) { CAdapter adapter = prop.getAdapter(); if (adapter != null) { if (adapter.getAdapterIfKnown() == SwaRefAdapterMarker.class) { field.annotate(XmlAttachmentRef.class); } else { // [RESULT] // @XmlJavaTypeAdapter( Foo.class ) XmlJavaTypeAdapterWriter xjtw = field.annotate2(XmlJavaTypeAdapterWriter.class); xjtw.value(adapter.adapterType.toType(this, EXPOSED)); } } switch (prop.id()) { case ID: field.annotate(XmlID.class); break; case IDREF: field.annotate(XmlIDREF.class); break; } if (prop.getExpectedMimeType() != null) { field.annotate2(XmlMimeTypeWriter.class).value(prop.getExpectedMimeType().toString()); } }