@Override public void attribute(XPathFragment xPathFragment,NamespaceResolver namespaceResolver, String value) { attribute(xPathFragment, namespaceResolver, value, null); }
public void emptyAttribute(XPathFragment xPathFragment,NamespaceResolver namespaceResolver){ XPathFragment groupingFragment = openStartGroupingElements(namespaceResolver); openStartElement(xPathFragment, namespaceResolver); characters(NULL); endElement(xPathFragment, namespaceResolver); closeStartGroupingElements(groupingFragment); }
@Override public void startDocument(String encoding, String version) { if(isRootArray){ if(position == null){ startCollection(); } position.setEmptyCollection(false); position = createNewLevel(false, position); isLastEventStart = true; }else{ startRootObject(); } }
/** * INTERNAL: */ public void nilSimple(NamespaceResolver namespaceResolver){ XPathFragment groupingFragment = openStartGroupingElements(namespaceResolver); characters(NULL); closeStartGroupingElements(groupingFragment); }
public void startCollection() { if(position == null){ isRootArray = true; position = createNewLevel(true, null); startRootLevelCollection(); } else { if(isLastEventStart){ setComplex((T)position, true); } position = createNewLevel(true, position); } isLastEventStart = false; }
String convertedValue = getStringForQName((QName)value); writeValue(convertedValue, null, isAttribute); if(schemaType != null && isNumericOrBooleanType(schemaType)){ ConversionManager conversionManager = getConversionManager(); Class<?> theClass = conversionManager.javaType(schemaType); Object convertedValue = conversionManager.convertObject(value, theClass, schemaType); writeValue(convertedValue, schemaType, isAttribute); }else if(isCDATA){ cdata((String)value); }else{ writeValue((String)value, null, isAttribute); writeValue(value, schemaType, isAttribute); }else{ String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType)); writeValue(convertedValue, schemaType, isAttribute); }else if(schemaType != null && !isNumericOrBooleanType(schemaType)){ writeValue(convertedValue, schemaType, isAttribute); } else if(isCDATA){ String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType)); cdata(convertedValue); }else{ writeValue(value, schemaType, isAttribute);
public void attribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, Object value, QName schemaType){ if(xPathFragment.getNamespaceURI() != null && xPathFragment.getNamespaceURI() == javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI){ return; } xPathFragment.setAttribute(true); openStartElement(xPathFragment, namespaceResolver); characters(schemaType, value, null, false, true); endElement(xPathFragment, namespaceResolver); }
@Override public void openStartElement(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) { super.openStartElement(xPathFragment, namespaceResolver); if(position != null){ T newLevel = createNewLevel(false, position); if(isLastEventStart){ //this means 2 startevents in a row so the last this is a complex object setComplex(position, true); } String keyName = getKeyName(xPathFragment); if(position.isCollection && position.isEmptyCollection() ){ position.setKeyName(keyName); startEmptyCollection(); }else{ newLevel.setKeyName(keyName); } position = newLevel; isLastEventStart = true; } }
public void writeValue(Object value, QName schemaType, boolean isAttribute) { if (characterEscapeHandler != null && value instanceof String) { try { StringWriter stringWriter = new StringWriter(); characterEscapeHandler.escape(((String)value).toCharArray(), 0, ((String)value).length(), isAttribute, stringWriter); value = stringWriter.toString(); } catch (IOException e) { throw XMLMarshalException.marshalException(e); } } boolean textWrapperOpened = false; if(!isLastEventStart){ openStartElement(textWrapperFragment, namespaceResolver); textWrapperOpened = true; } T currentLevel = position; String keyName = position.getKeyName(); if(!position.isComplex){ currentLevel = (T)position.parentLevel; } addValue(currentLevel, keyName, value, schemaType); isLastEventStart = false; if(textWrapperOpened){ endElement(textWrapperFragment, namespaceResolver); } }
Attr attr = (Attr) node; String resolverPfx = null; if (getNamespaceResolver() != null) { resolverPfx = this.getNamespaceResolver().resolveNamespaceURI(attr.getNamespaceURI()); attribute(attr.getNamespaceURI(), Constants.EMPTY_STRING, resolverPfx+Constants.COLON+attr.getLocalName(), attr.getNodeValue()); } else { attribute(attr.getNamespaceURI(), Constants.EMPTY_STRING, attr.getName(), attr.getNodeValue()); attribute(javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI, Constants.EMPTY_STRING, javax.xml.XMLConstants.XMLNS_ATTRIBUTE + Constants.COLON + attr.getPrefix(), attr.getNamespaceURI()); this.getNamespaceResolver().put(attr.getPrefix(), attr.getNamespaceURI()); writeValue(node.getNodeValue(), null, false); } else { try {
private void addValue(T currentLevel, String keyName, Object value, QName schemaType){ if(currentLevel.isCollection()){ addValueToArray(currentLevel, value, schemaType); currentLevel.setEmptyCollection(false); } else { addValueToObject(currentLevel, keyName, value, schemaType); } } protected abstract void addValueToObject(T currentLevel, String keyName, Object value, QName schemaType);
@Override public void cdata(String value) { characters(value); }
/** * INTERNAL: */ @Override public void marshalWithoutRootElement(ObjectBuilder treeObjectBuilder, Object object, Descriptor descriptor, Root root, boolean isXMLRoot){ if(treeObjectBuilder != null){ addXsiTypeAndClassIndicatorIfRequired(descriptor, null, descriptor.getDefaultRootElementField(), root, object, isXMLRoot, true); treeObjectBuilder.marshalAttributes(this, object, session); } }
protected void startRootObject(){ position = createNewLevel(false, null); }
String convertedValue = getStringForQName((QName)value); writeValue(convertedValue, null, isAttribute); if(schemaType != null && isNumericOrBooleanType(schemaType)){ ConversionManager conversionManager = getConversionManager(); Class<?> theClass = conversionManager.javaType(schemaType); Object convertedValue = conversionManager.convertObject(value, theClass, schemaType); writeValue(convertedValue, schemaType, isAttribute); }else if(isCDATA){ cdata((String)value); }else{ writeValue((String)value, null, isAttribute); writeValue(value, schemaType, isAttribute); }else{ String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType)); writeValue(convertedValue, schemaType, isAttribute); }else if(schemaType != null && !isNumericOrBooleanType(schemaType)){ writeValue(convertedValue, schemaType, isAttribute); } else if(isCDATA){ String convertedValue = ((String) ((ConversionManager) session.getDatasourcePlatform().getConversionManager()).convertObject(value, CoreClassConstants.STRING, schemaType)); cdata(convertedValue); }else{ writeValue(value, schemaType, isAttribute);
public void attribute(XPathFragment xPathFragment, NamespaceResolver namespaceResolver, Object value, QName schemaType){ if(xPathFragment.getNamespaceURI() != null && xPathFragment.getNamespaceURI() == javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI){ return; } xPathFragment.setAttribute(true); openStartElement(xPathFragment, namespaceResolver); characters(schemaType, value, null, false, true); endElement(xPathFragment, namespaceResolver); }
@Override public void openStartElement(XPathFragment xPathFragment, NamespaceResolver namespaceResolver) { super.openStartElement(xPathFragment, namespaceResolver); if(position != null){ T newLevel = createNewLevel(false, position); if(isLastEventStart){ //this means 2 startevents in a row so the last this is a complex object setComplex(position, true); } String keyName = getKeyName(xPathFragment); if (keyName != null && !keyName.equals(Constants.EMPTY_STRING)) { if (position.isCollection && position.isEmptyCollection()) { position.setKeyName(keyName); startEmptyCollection(); } else { newLevel.setKeyName(keyName); } } position = newLevel; isLastEventStart = true; } }
/** * INTERNAL: */ public void nilSimple(NamespaceResolver namespaceResolver){ XPathFragment groupingFragment = openStartGroupingElements(namespaceResolver); characters(NULL); closeStartGroupingElements(groupingFragment); }
public void startCollection() { if(position == null){ isRootArray = true; position = createNewLevel(true, null); startRootLevelCollection(); } else { if(isLastEventStart){ setComplex((T)position, true); } position = createNewLevel(true, position); } isLastEventStart = false; }
public void writeValue(Object value, QName schemaType, boolean isAttribute) { if (characterEscapeHandler != null && value instanceof String) { try { StringWriter stringWriter = new StringWriter(); characterEscapeHandler.escape(((String)value).toCharArray(), 0, ((String)value).length(), isAttribute, stringWriter); value = stringWriter.toString(); } catch (IOException e) { throw XMLMarshalException.marshalException(e); } } boolean textWrapperOpened = false; if(!isLastEventStart){ openStartElement(textWrapperFragment, namespaceResolver); textWrapperOpened = true; } T currentLevel = position; String keyName = position.getKeyName(); if(!position.isComplex){ currentLevel = (T)position.parentLevel; } addValue(currentLevel, keyName, value, schemaType); isLastEventStart = false; if(textWrapperOpened){ endElement(textWrapperFragment, namespaceResolver); } }