public void attributes(Object o, QName elementName, ElementBinding element, Attributes attrs, NamespaceContext nsCtx) { if(attrsHandler != null) { attrsHandler.attributes(o, elementName, element.getType(), attrs, nsCtx); } }
return null; return element.getType();
if(value != null) QName typeQName = element.getType().getQName(); xsiTypeQName = (QName)cls2TypeMap.get(value.getClass());
private static MapEntryMetaData getMapEntryMetaData(TermBinding term, QName qName) { MapEntryMetaData mapEntryMetaData = term.getMapEntryMetaData(); if(mapEntryMetaData == null) { String msg; if(term.isModelGroup()) { msg = "Term " + qName + " bound as map entry key or value but map entry metadata is not available for its parent term."; } else { ElementBinding element = (ElementBinding)term; msg = "Element " + qName + " bound as map entry key or value but map entry metadata is not available for its parent element nor its " + (element.getType().getQName() == null ? "annonymous" : element.getType().getQName().toString() ) + " type."; } throw new JBossXBRuntimeException(msg); } return mapEntryMetaData; }
private ElementBinding findLocalPathElement(ElementBinding element, String[] path, int pos) { String name = path[pos]; if (!name.equals(element.getQName().getLocalPart())) return null; // End of path if (path.length - 1 == pos) return element; ParticleBinding particle = element.getType().getParticle(); if (particle == null) return null; TermBinding term = particle.getTerm(); if (!term.isModelGroup()) return null; ModelGroupBinding group = (ModelGroupBinding)term; Iterator i = group.getParticles().iterator(); // Increase depth return findLocalPathElement(i, path, pos + 1); }
NamespaceContext nsCtx) TypeBinding type = element.getType(); for(int i = 0; i < attrs.getLength(); ++i)
public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs, NamespaceContext nsCtx) { ElementBinding element = (ElementBinding)particle.getTerm(); Object o = startElement(parent, elementName, element); if(o != null) { attrs = element.getType().expandWithDefaultAttributes(attrs); attributes(o, elementName, element, attrs, nsCtx); } return o; }
private Class classForElement(ElementBinding element, Class parentClass) TypeBinding type = element.getType(); QName typeQName = type.getQName(); if(typeQName != null && Constants.NS_XML_SCHEMA.equals(typeQName.getNamespaceURI()))
private boolean marshalElement(ElementBinding element, TypeBinding xsiType, boolean optional, boolean declareNs) { Object value = stack.peek(); boolean nillable = element.isNillable(); boolean result = value != null || value == null && (optional || nillable); boolean trace = log.isTraceEnabled() && result; if(trace) { log.trace("started element " + element.getQName()); } if(value != null) { boolean declareXsiType = xsiType != null; marshalElementType(element.getQName(), declareXsiType ? xsiType : element.getType(), declareNs, declareXsiType ); } else if(nillable) { writeNillable(element.getQName(), nillable); } if(trace) { log.trace("finished element " + element.getQName()); } return result; }
private String classFromQName(ElementBinding element) { String clsName; QName typeBase = element.getType().getQName(); if(typeBase == null) { typeBase = element.getQName(); } SchemaBinding schema = element.getSchema(); PackageMetaData pkgMetaData = schema.getPackageMetaData(); if(pkgMetaData == null) { clsName = Util.xmlNameToClassName(typeBase.getNamespaceURI(), typeBase.getLocalPart(), schema.isIgnoreLowLine() ); } else { String pkg = pkgMetaData.getName(); clsName = pkg == null || pkg.length() == 0 ? Util.xmlNameToClassName(typeBase.getLocalPart(), schema.isIgnoreLowLine()) : pkg + "." + Util.xmlNameToClassName(typeBase.getLocalPart(), schema.isIgnoreLowLine()); } return clsName; }
/** * TODO: it seems like for correct type resolution in startParticle * I should take into account the way the object is going to be added * to the parent in setParent (and, hence, do some steps that are done in setParticle). * In setParent then I should reuse the results of what has been done in startParticle. */ public Object startParticle(Object parent, QName elementName, ParticleBinding particle, Attributes attrs, NamespaceContext nsCtx) { TermBinding term = particle.getTerm(); Object o = startElement(parent, elementName, particle); if(!term.isModelGroup()) { ElementBinding element = (ElementBinding)term; if(o != null) { attrs = element.getType().expandWithDefaultAttributes(attrs); attributes(o, elementName, element, attrs, nsCtx); } } return o; }
if (element != null) typeBinding = element.getType();
TypeBinding type = ((ElementBinding)term).getType(); if(type.isSimple() || classMetaData == null && mapEntryMetaData == null && if(!term.isModelGroup()) TypeBinding type = ((ElementBinding)term).getType(); if(type.getAttributes().isEmpty()) else if(((ElementBinding)term).getType().getInterceptors(arrayItem.getQName()).isEmpty() && arrayItem.getInterceptors().isEmpty()) QName typeName = ((ElementBinding)term).getType().getQName(); throw new JBossXBRuntimeException( "Couldn't apply 'array wrapper' pattern for element " + TypeBinding simpleType = element.getType().getSimpleType(); if (simpleType != null)
TypeBinding parentType = parentElement.getType(); wildcard = parentType.getWildcard();
parentType = element.getType(); ParticleBinding typeParticle = parentType.getParticle(); ModelGroupBinding modelGroup = typeParticle == null ? null : (ModelGroupBinding)typeParticle.getTerm(); TypeBinding type = element.getType(); if(type == null) startName + " is not bound " + (parentBinding == null ? "as a global element." : "in type " + parentBinding.getType().getQName()); if(schemaBinding != null && schemaBinding.isStrictSchema())
TypeBinding type = element.getType(); List interceptors = element.getInterceptors(); int interceptorsTotal = interceptors.size(); if (parentParticle != null && parentParticle.getTerm().isElement()) WildcardBinding wildcard = ((ElementBinding) parentParticle.getTerm()).getType().getWildcard(); if (wildcard != null)