You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by br...@apache.org on 2007/01/26 20:51:31 UTC
svn commit: r500339 - in /incubator/yoko/trunk/bindings/src:
main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java
test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java
Author: bravi
Date: Fri Jan 26 12:51:31 2007
New Revision: 500339
URL: http://svn.apache.org/viewvc?view=rev&rev=500339
Log:
[YOKO-170] - Adding XmlSchemaObject when writing to stax & also enabled the anonymous struct type_test.
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java?view=diff&rev=500339&r1=500338&r2=500339
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java Fri Jan 26 12:51:31 2007
@@ -204,10 +204,16 @@
public void writeObjectToStax(CorbaObjectHandler obj,
XMLEventWriter writer,
XMLEventFactory factory) {
- writeObjectToStax(obj, writer, factory, false);
+ XmlSchemaType schemaType = null;
+ if (obj != null && obj.getType() != null) {
+ CorbaTypeImpl type = obj.getType();
+ schemaType = CorbaUtils.getXmlSchemaType(serviceInfo, type.getType());
+ }
+ writeObjectToStax(obj, schemaType, writer, factory, false);
}
protected void writeObjectToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
XMLEventWriter writer,
XMLEventFactory factory,
boolean isNested) {
@@ -215,41 +221,41 @@
if (obj != null) {
TypeCode tc = obj.getTypeCode();
if (CorbaUtils.isPrimitiveIdlType(obj.getIdlType())) {
- writePrimitiveToStax(obj, writer, factory);
+ writePrimitiveToStax(obj, schemaType, writer, factory);
} else {
switch (tc.kind().value()) {
case TCKind._tk_array:
LOG.log(Level.INFO, "Writing array type to XML writer");
- writeArrayToStax(obj, writer, factory, !isNested);
+ writeArrayToStax(obj, schemaType, writer, factory, !isNested);
break;
case TCKind._tk_enum:
LOG.log(Level.INFO, "Writing enum type to XML writer");
- writeEnumToStax(obj, writer, factory);
+ writeEnumToStax(obj, schemaType, writer, factory);
break;
case TCKind._tk_except:
LOG.log(Level.INFO, "Writing exception type to XML writer");
- writeExceptionToStax(obj, writer, factory);
+ writeExceptionToStax(obj, schemaType, writer, factory);
break;
case TCKind._tk_fixed:
LOG.log(Level.INFO, "Writing fixed type to XML writer");
- writeFixedToStax(obj, writer, factory);
+ writeFixedToStax(obj, schemaType, writer, factory);
break;
case TCKind._tk_sequence:
LOG.log(Level.INFO, "Writing sequence type to XML writer");
- writeSequenceToStax(obj, writer, factory, !isNested);
+ writeSequenceToStax(obj, schemaType, writer, factory, !isNested);
break;
case TCKind._tk_struct:
LOG.log(Level.INFO, "Writing struct type to XML writer");
- writeStructToStax(obj, writer, factory);
+ writeStructToStax(obj, schemaType, writer, factory);
break;
case TCKind._tk_union:
LOG.log(Level.INFO, "Writing union type to XML writer");
- writeUnionToStax(obj, writer, factory);
+ writeUnionToStax(obj, schemaType, writer, factory);
break;
case TCKind._tk_string:
case TCKind._tk_wstring:
LOG.log(Level.INFO, "Wrting anonymous string to XML writer");
- writePrimitiveToStax(obj, writer, factory);
+ writePrimitiveToStax(obj, schemaType, writer, factory);
break;
default:
throw new CorbaBindingException("Unsupported complex type");
@@ -315,6 +321,7 @@
}
protected void writePrimitiveToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaObj,
XMLEventWriter writer,
XMLEventFactory factory)
throws XMLStreamException {
@@ -445,16 +452,21 @@
}
protected void writeArrayToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
XMLEventWriter writer,
XMLEventFactory factory,
boolean isTopLevel)
throws XMLStreamException {
+ if (schemaType == null) {
+ throw new CorbaBindingException("Couldn't find xml schema object for : " + obj.getIdlType());
+ }
QName objName = obj.getName();
if (isTopLevel) {
StartElement startEl = factory.createStartElement(objName, null, null);
writer.add(startEl);
}
CorbaArrayHandler arrayHandler = (CorbaArrayHandler)obj;
+ XmlSchemaElement el = getXmlSchemaSequenceElement(schemaType, obj.getIdlType());
List<CorbaObjectHandler> elements = arrayHandler.getElements();
for (Iterator<CorbaObjectHandler> elementsIter = elements.iterator(); elementsIter.hasNext();) {
CorbaObjectHandler handler = elementsIter.next();
@@ -464,7 +476,7 @@
StartElement startEl = factory.createStartElement(handlerName, null, null);
writer.add(startEl);
}
- writeObjectToStax(handler, writer, factory, true);
+ writeObjectToStax(handler, el, writer, factory, true);
if (nestedArray) {
EndElement endEl = factory.createEndElement(handlerName, null);
writer.add(endEl);
@@ -497,7 +509,10 @@
return obj;
}
- protected void writeEnumToStax(CorbaObjectHandler obj, XMLEventWriter writer, XMLEventFactory factory)
+ protected void writeEnumToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
+ XMLEventWriter writer,
+ XMLEventFactory factory)
throws XMLStreamException {
QName objName = obj.getName();
StartElement startEl = factory.createStartElement(objName, null, null);
@@ -542,16 +557,22 @@
}
protected void writeExceptionToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
XMLEventWriter writer,
XMLEventFactory factory)
throws XMLStreamException {
+ if (schemaType == null) {
+ throw new CorbaBindingException("Couldn't find xml schema object for : " + obj.getIdlType());
+ }
QName objName = obj.getName();
StartElement startEl = factory.createStartElement(objName, null, null);
writer.add(startEl);
CorbaExceptionHandler exObj = (CorbaExceptionHandler)obj;
+ XmlSchemaComplexType ctype = (XmlSchemaComplexType) schemaType;
+ XmlSchemaGroupBase group = (XmlSchemaGroupBase) ctype.getParticle();
List<CorbaObjectHandler> elements = exObj.getMembers();
- for (Iterator<CorbaObjectHandler> elementsIter = elements.iterator(); elementsIter.hasNext();) {
- writeObjectToStax(elementsIter.next(), writer, factory, true);
+ for (int i = 0; i < elements.size(); i++) {
+ writeObjectToStax(elements.get(i), group.getItems().getItem(i), writer, factory, true);
}
EndElement endEl = factory.createEndElement(objName, null);
writer.add(endEl);
@@ -642,15 +663,20 @@
}
protected void writeSequenceToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
XMLEventWriter writer,
XMLEventFactory factory,
boolean isTopLevel)
throws XMLStreamException {
+ if (schemaType == null) {
+ throw new CorbaBindingException("Couldn't find xml schema object for : " + obj.getIdlType());
+ }
QName name = obj.getName();
if (isTopLevel) {
StartElement startEl = factory.createStartElement(name, null, null);
writer.add(startEl);
}
+ XmlSchemaElement el = getXmlSchemaSequenceElement(schemaType, obj.getIdlType());
CorbaSequenceHandler seqHandler = (CorbaSequenceHandler)obj;
List<CorbaObjectHandler> elements = seqHandler.getElements();
for (Iterator<CorbaObjectHandler> elementsIter = elements.iterator(); elementsIter.hasNext();) {
@@ -661,7 +687,7 @@
StartElement startEl = factory.createStartElement(objName, null, null);
writer.add(startEl);
}
- writeObjectToStax(handler, writer, factory, true);
+ writeObjectToStax(handler, el, writer, factory, true);
if (nestedSequence) {
EndElement endEl = factory.createEndElement(objName, null);
writer.add(endEl);
@@ -746,18 +772,63 @@
return obj;
}
- protected void writeStructToStax(CorbaObjectHandler obj, XMLEventWriter writer, XMLEventFactory factory)
+ protected void writeStructToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
+ XMLEventWriter writer,
+ XMLEventFactory factory)
throws XMLStreamException {
+ if (schemaType == null) {
+ throw new CorbaBindingException("Couldn't find xml schema object for : " + obj.getIdlType());
+ }
QName objName = obj.getName();
- StartElement startEl = factory.createStartElement(objName, null, null);
- writer.add(startEl);
+ XmlSchemaObjectCollection attrs = null;
+ XmlSchemaObjectCollection members = null;
+
+ boolean writeElement = false;
+
+ XmlSchemaObject stype = schemaType;
+ if (schemaType instanceof XmlSchemaElement) {
+ XmlSchemaElement el = (XmlSchemaElement) schemaType;
+ stype = el.getSchemaType();
+ if (stype == null) {
+ stype = CorbaUtils.getXmlSchemaType(serviceInfo, el.getRefName());
+ }
+ writeElement = true;
+ }
+ if (stype instanceof XmlSchemaComplexType) {
+ XmlSchemaComplexType ctype = (XmlSchemaComplexType) stype;
+ attrs = ctype.getAttributes();
+ stype = ctype.getParticle();
+ writeElement = true;
+ }
+ if (stype instanceof XmlSchemaGroupRef) {
+ members = ((XmlSchemaGroupRef) stype).getParticle().getItems();
+ } else if (stype instanceof XmlSchemaGroupBase) {
+ members = ((XmlSchemaGroupBase) stype).getItems();
+ }
+
+ if (writeElement) {
+ StartElement startEl = factory.createStartElement(objName, null, null);
+ writer.add(startEl);
+ }
+
CorbaStructHandler structHandler = (CorbaStructHandler)obj;
List<CorbaObjectHandler> elements = structHandler.getMembers();
+ int attrCount = 0;
+ int memberCount = 0;
for (Iterator<CorbaObjectHandler> elementsIter = elements.iterator(); elementsIter.hasNext();) {
- writeObjectToStax(elementsIter.next(), writer, factory, true);
+ XmlSchemaObject schemaObj;
+ if ((attrs != null) && (attrCount != attrs.getCount())) {
+ schemaObj = attrs.getItem(attrCount++);
+ } else {
+ schemaObj = members.getItem(memberCount++);
+ }
+ writeObjectToStax(elementsIter.next(), schemaObj, writer, factory, true);
+ }
+ if (writeElement) {
+ EndElement endEl = factory.createEndElement(objName, null);
+ writer.add(endEl);
}
- EndElement endEl = factory.createEndElement(objName, null);
- writer.add(endEl);
}
@@ -838,16 +909,19 @@
return obj;
}
- protected void writeUnionToStax(CorbaObjectHandler obj, XMLEventWriter writer, XMLEventFactory factory)
+ protected void writeUnionToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
+ XMLEventWriter writer,
+ XMLEventFactory factory)
throws XMLStreamException {
QName objName = obj.getName();
StartElement startEl = factory.createStartElement(objName, null, null);
writer.add(startEl);
CorbaUnionHandler unionHandler = (CorbaUnionHandler)obj;
CorbaObjectHandler discValue = unionHandler.getDiscriminator();
- writeObjectToStax(discValue, writer, factory, true);
+ writeObjectToStax(discValue, null, writer, factory, true);
CorbaObjectHandler unionValue = unionHandler.getValue();
- writeObjectToStax(unionValue, writer, factory, true);
+ writeObjectToStax(unionValue, null, writer, factory, true);
EndElement endEl = factory.createEndElement(objName, null);
writer.add(endEl);
}
@@ -872,7 +946,10 @@
return obj;
}
- protected void writeFixedToStax(CorbaObjectHandler obj, XMLEventWriter writer, XMLEventFactory factory)
+ protected void writeFixedToStax(CorbaObjectHandler obj,
+ XmlSchemaObject schemaType,
+ XMLEventWriter writer,
+ XMLEventFactory factory)
throws XMLStreamException {
QName objName = obj.getName();
StartElement startEl = factory.createStartElement(objName, null, null);
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java?view=diff&rev=500339&r1=500338&r2=500339
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java Fri Jan 26 12:51:31 2007
@@ -423,7 +423,6 @@
} catch (XMLStreamException ex) {
}
- System.out.println(new String(outStream.toByteArray()));
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = null;
try {
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java?view=diff&rev=500339&r1=500338&r2=500339
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java Fri Jan 26 12:51:31 2007
@@ -79,12 +79,6 @@
public void testStructWithNillables() throws Exception {
}
- public void testCompoundArray() throws Exception {
- }
-
- public void testAnonymousStruct() throws Exception {
- }
-
public void testEmptyChoice() throws Exception {
}