Author: jsdelfino
Date: Sat Sep 23 15:51:30 2006
New Revision: 449323
URL: http://svn.apache.org/viewvc?view=rev&rev=449323
Log:
Fixed writing of xsi:type, do not write it when writing a root document and the
root element name is known, do not write it twice on children of open types.
Modified:
incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp
Modified:
incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp
URL:
http://svn.apache.org/viewvc/incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp?view=diff&rev=449323&r1=449322&r2=449323
==============================================================================
--- incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp
(original)
+++ incubator/tuscany/cpp/sdo/runtime/core/src/commonj/sdo/SDOXMLWriter.cpp Sat
Sep 23 15:51:30 2006
@@ -129,7 +129,7 @@
writeXSIType = true;
}
- writeDO(root, elementURI, elementName, true, true);
+ writeDO(root, elementURI, elementName, writeXSIType, true);
}
rc = xmlTextWriterEndDocument(writer);
if (rc < 0) {
@@ -787,30 +787,33 @@
// write out the type if the xsi:type if the containing type is
open
// and the property is not one of the declared properties
//////////////////////////////////////////////////////////////////////////
- DataObject* dob = dataObject;
- DataObjectImpl* cont =
- ((DataObjectImpl*)dob)->getContainerImpl();
- if (cont != 0)
+ if (!writeXSIType)
{
- if (cont->getType().isOpenType())
- {
- //if (dataObject->getType().getURI() != 0)
- //{
- // std::string value =
- // dataObject->getType().getURI();
- // value += ":";
- // value += dataObject->getType().getName();
- // rc = xmlTextWriterWriteAttribute(writer,
- // (const unsigned char*)"xsi:type",
- // (const unsigned char*)value.c_str());
- //}
- //else
- //{
- if (cont->getTypeImpl().getPropertyImpl(elementName) == 0)
- {
- rc = xmlTextWriterWriteAttribute(writer,
- (const unsigned char*)"xsi:type",
- (const unsigned char*)dataObject->getType().getName());
+ DataObject* dob = dataObject;
+ DataObjectImpl* cont =
+ ((DataObjectImpl*)dob)->getContainerImpl();
+ if (cont != 0)
+ {
+ if (cont->getType().isOpenType())
+ {
+ //if (dataObject->getType().getURI() != 0)
+ //{
+ // std::string value =
+ // dataObject->getType().getURI();
+ // value += ":";
+ // value += dataObject->getType().getName();
+ // rc = xmlTextWriterWriteAttribute(writer,
+ // (const unsigned char*)"xsi:type",
+ // (const unsigned char*)value.c_str());
+ //}
+ //else
+ //{
+ if (cont->getTypeImpl().getPropertyImpl(elementName)
== 0)
+ {
+ rc = xmlTextWriterWriteAttribute(writer,
+ (const unsigned char*)"xsi:type",
+ (const unsigned
char*)dataObject->getType().getName());
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]