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 dm...@apache.org on 2006/06/29 14:25:31 UTC
svn commit: r418055 - in /incubator/yoko/trunk/bindings/src:
main/java/org/apache/yoko/bindings/corba/
main/java/org/apache/yoko/bindings/corba/extensions/
test/java/org/apache/yoko/bindings/corba/
Author: dmiddlem
Date: Thu Jun 29 07:25:29 2006
New Revision: 418055
URL: http://svn.apache.org/viewvc?rev=418055&view=rev
Log:
Adding preliminary support for arrays and sequences.
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectHolder.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectReader.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectWriter.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaUtils.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaAddressExtensionHelper.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaBindingExtensionHelper.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaOperationExtensionHelper.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaTypesExtensionHelper.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingImplTest.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectHolderTest.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStreamableTest.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java Thu Jun 29 07:25:29 2006
@@ -23,7 +23,6 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Stack;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -36,18 +35,17 @@
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
-import javax.xml.stream.events.XMLEvent;
import javax.xml.ws.Holder;
import javax.xml.ws.WebServiceException;
import javax.xml.ws.handler.MessageContext;
-import org.apache.schemas.yoko.bindings.corba.ArgType;
import org.apache.schemas.yoko.bindings.corba.Array;
-import org.apache.schemas.yoko.bindings.corba.CorbaType;
import org.apache.schemas.yoko.bindings.corba.Exception;
+import org.apache.schemas.yoko.bindings.corba.MemberType;
import org.apache.schemas.yoko.bindings.corba.ModeType;
import org.apache.schemas.yoko.bindings.corba.NamedType;
import org.apache.schemas.yoko.bindings.corba.OperationType;
@@ -56,6 +54,8 @@
import org.apache.schemas.yoko.bindings.corba.Struct;
import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
import org.apache.schemas.yoko.bindings.corba.Union;
+//import org.apache.schemas.yoko.bindings.corba.Unionbranch;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
import org.objectweb.celtix.Bus;
import org.objectweb.celtix.bindings.AbstractBindingImpl;
@@ -72,6 +72,7 @@
import org.objectweb.celtix.wsdl.EndpointReferenceUtils;
import org.omg.CORBA.ORB;
+import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
public class CorbaBindingImpl extends AbstractBindingImpl {
@@ -107,11 +108,17 @@
TypeMappingType tmType = (TypeMappingType) e;
CorbaTypeMap map = new CorbaTypeMap(tmType.getTargetNamespace());
map.setPrefix(wsdlDef.getPrefix(tmType.getTargetNamespace()));
+ LOG.info("Found typemap in WSDL (Namespace: "
+ + tmType.getTargetNamespace()
+ + ", Prefix: "
+ + wsdlDef.getPrefix(tmType.getTargetNamespace()));
List types = tmType.getStructOrExceptionOrUnion();
+ LOG.info("Found " + types.size() + " types defined in the typemap");
for (int j = 0; j < types.size(); ++j) {
- CorbaType corbaType = (CorbaType) types.get(j);
+ CorbaTypeImpl corbaType = (CorbaTypeImpl)types.get(j);
map.addType(corbaType.getName(), corbaType);
+ LOG.info("Adding type " + corbaType.getName());
}
typeMaps.add(map);
}
@@ -184,7 +191,9 @@
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = inputFactory.createXMLEventReader(inStream);
- CorbaObjectHolder obj = readCorbaObject(evtReader, paramTypes.get(i));
+ CorbaObjectHolder obj = readCorbaObject(evtReader,
+ paramTypes.get(i).getIdltype(),
+ false);
CorbaStreamable streamable = new CorbaStreamable(obj, elName);
ModeType paramMode = paramTypes.get(i).getMode();
@@ -209,7 +218,9 @@
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = inputFactory.createXMLEventReader(inStream);
- CorbaObjectHolder obj = readCorbaObject(evtReader, opElement.getReturn());
+ CorbaObjectHolder obj = readCorbaObject(evtReader,
+ opElement.getReturn().getIdltype(),
+ false);
CorbaStreamable streamable = new CorbaStreamable(obj, callback.getWebResultQName());
corbaCtx.getMessage().setStreamableReturn(streamable);
@@ -324,14 +335,12 @@
}
public void write(MessageContext msgContext, OutputStreamMessageContext outContext) throws IOException {
- // Complete. This will not be needed for this binding as we are not
- // using Celtix transports
+ // Complete. This will not be needed for this binding as we are not using Celtix transports
// which require StreamMessageContexts.
}
public void read(InputStreamMessageContext inContext, MessageContext context) throws IOException {
- // Complete. This will not be needed for this binding as we are not
- // using Celtix transports
+ // Complete. This will not be needed for this binding as we are not using Celtix transports
// which require StreamMessageContexts.
}
@@ -345,82 +354,136 @@
// TODO - provide implementation.
}
- public CorbaObjectHolder readCorbaObject(XMLEventReader reader, ArgType argType)
+ public CorbaObjectHolder readCorbaObject(XMLEventReader reader, QName idlType, boolean isNested)
throws CorbaBindingException {
CorbaObjectHolder obj = null;
- Stack<CorbaObjectHolder> objStack = new Stack<CorbaObjectHolder>();
+ // Find the first start element in the reader. This should be the beginning of our object
+ try {
+ if (!isNested) {
+ while (reader.peek().getEventType() != XMLStreamConstants.START_ELEMENT) {
+ reader.nextEvent();
+ }
+ }
+ } catch (XMLStreamException ex) {
+ throw new CorbaBindingException("Unable to locate start of object", ex);
+ }
- NamedType currentType = null;
- QName currentIdlType = null;
+ TypeCode tc = CorbaUtils.getTypeCode(orb, idlType, typeMaps);
+ if (CorbaUtils.isPrimitiveIdlType(idlType)) {
+ obj = readPrimitiveCorbaObject(reader, idlType, tc);
+ } else {
+ obj = readComplexCorbaObject(reader, idlType, tc);
+ }
- try {
- XMLEvent evt = reader.nextEvent();
+ return obj;
+ }
- // Find the start of the document. Anything before this we can
- // ignore.
- while (!evt.isStartDocument()) {
- evt = reader.nextEvent();
- }
-
- // Build the object until we get an end of document tag
- while (!evt.isEndDocument()) {
- switch (evt.getEventType()) {
- case XMLStreamConstants.START_ELEMENT:
- StartElement startEl = evt.asStartElement();
-
- if (obj == null) {
- currentIdlType = argType.getIdltype();
-
- if (!CorbaUtils.isPrimitiveIdlType(currentIdlType)) {
- currentType = CorbaUtils.getCorbaType(currentIdlType, typeMaps);
- if (currentType == null) {
- throw new CorbaBindingException("Unable to locate type definition");
- }
- }
- } else {
- // TODO: This is a special case if we have an exception, struct, or union
- }
-
- TypeCode tc = CorbaUtils.getTypeCode(orb, currentIdlType, typeMaps);
- obj = new CorbaObjectHolder(startEl.getName(), currentIdlType, tc, currentType);
- break;
- case XMLStreamConstants.END_ELEMENT:
- if (!objStack.isEmpty()) {
- CorbaObjectHolder temp = objStack.pop();
- temp.addMember(obj);
- obj = temp;
+ public CorbaObjectHolder readPrimitiveCorbaObject(XMLEventReader reader, QName idlType, TypeCode tc)
+ throws CorbaBindingException {
+ CorbaObjectHolder obj = null;
+ try {
+ LOG.info("Reading primitive type from XML reader");
+
+ StartElement startEl = reader.nextEvent().asStartElement();
+ Characters charEl = reader.nextEvent().asCharacters();
+ // need to consume an end element to prepare the reader for another event if this
+ // primitive is part of a complex type.
+ reader.nextEvent().asEndElement();
+
+ obj = new CorbaObjectHolder(startEl.getName(), idlType, tc, null);
+ obj.setObjectValueFromData(charEl.getData());
+ } catch (java.lang.Exception ex) {
+ LOG.severe("Error: Object not correctly defined in the XML reader");
+ throw new CorbaBindingException("Invalid XML event read", ex);
+ }
+
+ return obj;
+ }
- currentIdlType = obj.getIdlType();
- currentType = obj.getTypeDefintion();
+ public CorbaObjectHolder readComplexCorbaObject(XMLEventReader reader, QName idlType, TypeCode tc)
+ throws CorbaBindingException {
+ CorbaObjectHolder obj = null;
+ CorbaTypeImpl typeDefinition = CorbaUtils.getCorbaType(idlType, typeMaps);
+
+ try {
+ // the way we handle complex types will depend on the structure of the complex type being handled.
+ switch(tc.kind().value()) {
+ case TCKind._tk_array:
+ LOG.info("Reading array type from XML reader");
+ Array arrayType = (Array)typeDefinition;
+ StartElement arrayStartEl = reader.nextEvent().asStartElement();
+ obj = new CorbaObjectHolder(arrayStartEl.getName(), idlType, tc, arrayType);
+ for (int i = 0; i < arrayType.getBound(); ++i) {
+ CorbaObjectHolder member = readCorbaObject(reader, arrayType.getElemtype(), true);
+ obj.addNestedObject(member);
+ }
+ break;
+ case TCKind._tk_enum:
+ LOG.info("Reading enumeration type from XML reader");
+ break;
+ case TCKind._tk_except:
+ LOG.info("Reading exception type from XML reader");
+ Exception exType = (Exception)typeDefinition;
+ StartElement exStartEl = reader.nextEvent().asStartElement();
+ obj = new CorbaObjectHolder(exStartEl.getName(), idlType, tc, exType);
+ List<MemberType> exMembers = exType.getMember();
+ for (int i = 0; i < exMembers.size(); ++i) {
+ CorbaObjectHolder member = readCorbaObject(reader, exMembers.get(i).getIdltype(), true);
+ obj.addNestedObject(member);
+ }
+ break;
+ case TCKind._tk_sequence:
+ LOG.info("Reading sequence type from XML reader");
+ Sequence seqType = (Sequence)typeDefinition;
+ StartElement seqStartEl = reader.nextEvent().asStartElement();
+ obj = new CorbaObjectHolder(seqStartEl.getName(), idlType, tc, seqType);
+ long bound = seqType.getBound();
+ if (bound == 0) {
+ LOG.info("Unbounded sequence found");
+ while (reader.peek().getEventType() == XMLStreamConstants.START_ELEMENT) {
+ CorbaObjectHolder member = readCorbaObject(reader, seqType.getElemtype(), true);
+ obj.addNestedObject(member);
}
- break;
- case XMLStreamConstants.CHARACTERS:
- Characters charEl = evt.asCharacters();
- String data = charEl.getData();
-
- // An array and sequence are special cases. Store the
- // elements of the array into
- // the members of the current object holder.
- if (currentType instanceof Array || currentType instanceof Sequence) {
- // TODO: these are special types that will need to be handled differently
- } else {
- obj.setValue(data);
+ } else {
+ LOG.info("Bounded sequence found");
+ for (long i = 0; i < bound; ++i) {
+ CorbaObjectHolder member = readCorbaObject(reader, seqType.getElemtype(), true);
+ obj.addNestedObject(member);
}
- break;
- default:
- // We can ignore the other cases for now
}
-
- // get the next event
- evt = reader.nextEvent();
- }
+ break;
+ case TCKind._tk_struct:
+ LOG.info("Reading struct type from XML reader");
+ Struct structType = (Struct)typeDefinition;
+ StartElement structStartEl = reader.nextEvent().asStartElement();
+ obj = new CorbaObjectHolder(structStartEl.getName(), idlType, tc, structType);
+ List<MemberType> structMembers = structType.getMember();
+ for (int i = 0; i < structMembers.size(); ++i) {
+ CorbaObjectHolder member = readCorbaObject(reader,
+ structMembers.get(i).getIdltype(),
+ true);
+ obj.addNestedObject(member);
+ }
+ break;
+ case TCKind._tk_union:
+ LOG.info("Reading union type from XML reader");
+ break;
+ default:
+ throw new CorbaBindingException("Unsupported complex type");
+ }
+ // All the complex types will consume an end element before they return so that the reader is
+ // prepared to describe a new object if this complex is nested within another complex object.
+ // This also serves as a check to make sure that the object is properly constructed in the XML
+ // reader.
+ reader.nextEvent().asEndElement();
} catch (java.lang.Exception ex) {
- throw new CorbaBindingException("readCorbaObject exception", ex);
+ LOG.severe("Received exception while reading complex object of type " + idlType);
+ throw new CorbaBindingException("Error while reading complex corba type", ex);
}
-
+
return obj;
}
-
+
public void writeCorbaObject(CorbaObjectHolder obj, XMLEventWriter writer, XMLEventFactory factory) {
try {
// If the factory is null, then this should be the beginning of the
@@ -447,10 +510,10 @@
|| objType instanceof Union
|| objType instanceof Array
|| objType instanceof Sequence) {
-
- List<CorbaObjectHolder> structMembers = obj.getMembers();
- for (int i = 0; i < structMembers.size(); ++i) {
- writeCorbaObject(structMembers.get(i), writer, factory);
+ LOG.info("Writing a complex type");
+ List<CorbaObjectHolder> members = obj.getNestedObjects();
+ for (int i = 0; i < members.size(); ++i) {
+ writeCorbaObject(members.get(i), writer, factory);
}
} else {
Characters charEvt = factory.createCharacters(obj.getValueData());
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java Thu Jun 29 07:25:29 2006
@@ -126,8 +126,9 @@
NVList list = orb.create_list(arguments.length);
for (int i = 0; i < paramTypes.size(); ++i) {
ParamType pType = paramTypes.get(i);
-// QName paramName = new QName(pType.getName());
- QName paramName = new QName(callback.getWebParam(i).name());
+ // TODO: Revisit. Is this the correct namespace to use?
+ QName paramName = new QName(callback.getWebParam(i).targetNamespace(),
+ callback.getWebParam(i).name());
QName paramIdlType = pType.getIdltype();
ModeType paramMode = pType.getMode();
@@ -207,10 +208,11 @@
Array arrayType = (Array) typeDef;
QName arrayElementType = arrayType.getElemtype();
for (int i = 0; i < arrayType.getBound(); ++i) {
- QName elementName = new QName(arrayType.getName() + "[" + i + "]");
+ // TODO: Revisit. Is this the correct namespace to use?
+ QName elementName = new QName(name.getNamespaceURI(), "item");
CorbaObjectHolder elementObj =
createCorbaObjectHolder(elementName, arrayElementType, typeMaps);
- obj.addMember(elementObj);
+ obj.addNestedObject(elementObj);
}
break;
case TCKind._tk_except:
@@ -222,17 +224,26 @@
QName memberName = new QName(member.getName());
QName memberType = member.getIdltype();
CorbaObjectHolder memberObj = createCorbaObjectHolder(memberName, memberType, typeMaps);
- obj.addMember(memberObj);
+ obj.addNestedObject(memberObj);
}
break;
case TCKind._tk_sequence:
Sequence seqType = (Sequence) typeDef;
QName seqElementType = seqType.getElemtype();
+ if (seqType.getBound() == 0) {
+ // This is an unbounded sequence. Store a 'template' object that we can use to create
+ // new objects as needed
+ QName elementName = new QName(name.getNamespaceURI(), "item");
+ CorbaObjectHolder elementObj =
+ createCorbaObjectHolder(elementName, seqElementType, typeMaps);
+ obj.setObjectValue(elementObj);
+ }
for (int i = 0; i < seqType.getBound(); ++i) {
- QName elementName = new QName(seqType.getName() + "[" + i + "]");
+ // TODO: Revisit. Is this the correct namespace to use?
+ QName elementName = new QName(name.getNamespaceURI(), "item");
CorbaObjectHolder elementObj =
createCorbaObjectHolder(elementName, seqElementType, typeMaps);
- obj.addMember(elementObj);
+ obj.addNestedObject(elementObj);
}
break;
case TCKind._tk_struct:
@@ -244,7 +255,7 @@
QName memberName = new QName(member.getName());
QName memberType = member.getIdltype();
CorbaObjectHolder memberObj = createCorbaObjectHolder(memberName, memberType, typeMaps);
- obj.addMember(memberObj);
+ obj.addNestedObject(memberObj);
}
break;
case TCKind._tk_union:
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectHolder.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectHolder.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectHolder.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectHolder.java Thu Jun 29 07:25:29 2006
@@ -37,8 +37,8 @@
private final NamedType typeDefinition;
// object data
- private Object value;
- private List<CorbaObjectHolder> members;
+ private Object objValue;
+ private List<CorbaObjectHolder> nestedObjs;
public CorbaObjectHolder(QName name, QName idl, TypeCode tc, Object typeDef) {
objectName = name;
@@ -46,8 +46,8 @@
typeCode = tc;
typeDefinition = (NamedType) typeDef;
- value = null;
- members = new ArrayList<CorbaObjectHolder>();
+ objValue = null;
+ nestedObjs = new ArrayList<CorbaObjectHolder>();
}
public boolean isPrimitiveType() {
@@ -75,7 +75,7 @@
}
public Object getValue() {
- return value;
+ return objValue;
}
public String getValueData() {
@@ -84,125 +84,115 @@
switch (typeCode.kind().value()) {
case TCKind._tk_boolean:
- retValue = ((Boolean)value).toString();
+ retValue = ((Boolean)objValue).toString();
break;
case TCKind._tk_char:
- char charValue = ((Character)value).charValue();
+ char charValue = ((Character)objValue).charValue();
retValue = Byte.toString((byte) charValue);
break;
case TCKind._tk_wchar:
- retValue = ((Character)value).toString();
+ retValue = ((Character)objValue).toString();
break;
case TCKind._tk_octet:
- retValue = ((Byte)value).toString();
+ retValue = ((Byte)objValue).toString();
break;
case TCKind._tk_short:
case TCKind._tk_ushort:
- retValue = ((Short)value).toString();
+ retValue = ((Short)objValue).toString();
break;
case TCKind._tk_long:
- retValue = ((Long)value).toString();
+ retValue = ((Long)objValue).toString();
break;
case TCKind._tk_ulong:
case TCKind._tk_longlong:
case TCKind._tk_ulonglong:
- retValue = ((java.math.BigInteger) value).toString();
+ retValue = ((java.math.BigInteger) objValue).toString();
break;
case TCKind._tk_float:
- retValue = ((Float)value).toString();
+ retValue = ((Float)objValue).toString();
break;
case TCKind._tk_double:
- retValue = ((Double)value).toString();
+ retValue = ((Double)objValue).toString();
break;
case TCKind._tk_string:
case TCKind._tk_wstring:
- retValue = (String)value;
+ retValue = (String)objValue;
break;
default:
// TODO: Revisit. Is this enough?
- retValue = (String)value;
+ retValue = (String)objValue;
}
return retValue;
}
- // TODO: UPDATE THIS SO THAT IT DOES NOT CLASH WITH THE STRING PARAMETER
- // VERSION.
- // This way we can directly store a value rather than converting to a string
- // and
- // then back to the value
- // public void setValue(Object val) {
- // value = val;
- // }
+ public void setObjectValue(Object val) {
+ objValue = val;
+ }
- // NOTE: we are using character data here because our objects will be read
- // from a StAX XML Event,
+ // NOTE: we are using character data here because our objects will be read from a StAX XML Event,
// which gives us all data in character form.
- // TODO: Need to add support for non-primitve values that do not have data
- // members (e.g. fixed, enum, ...)
- public void setValue(String data) {
+ // TODO: Need to add support for non-primitve values that do not have data members (e.g. fixed,
+ // enum, ...)
+ public void setObjectValueFromData(String data) {
switch (typeCode.kind().value()) {
case TCKind._tk_boolean:
- value = new Boolean(data);
+ objValue = new Boolean(data);
break;
case TCKind._tk_char:
// A char is mapped to a byte, we need it as a character
Byte byteValue = new Byte(data);
- value = new Character((char) byteValue.byteValue());
+ objValue = new Character((char) byteValue.byteValue());
break;
case TCKind._tk_wchar:
// A wide char is mapped to a string, we need it as a character
- value = new Character(data.charAt(0));
+ objValue = new Character(data.charAt(0));
break;
case TCKind._tk_octet:
// An octet is mapped to a short, we need it as a byte
Short shortValue = new Short(data);
- value = new Byte(shortValue.byteValue());
+ objValue = new Byte(shortValue.byteValue());
break;
case TCKind._tk_short:
case TCKind._tk_ushort:
- value = new Short(data);
+ objValue = new Short(data);
break;
case TCKind._tk_long:
- value = new Long(data);
+ objValue = new Long(data);
break;
case TCKind._tk_ulong:
case TCKind._tk_longlong:
case TCKind._tk_ulonglong:
- value = new java.math.BigInteger(data);
+ objValue = new java.math.BigInteger(data);
break;
case TCKind._tk_float:
- value = new Float(data);
+ objValue = new Float(data);
break;
case TCKind._tk_double:
- value = new Double(data);
+ objValue = new Double(data);
break;
case TCKind._tk_string:
case TCKind._tk_wstring:
- value = data;
+ objValue = data;
break;
default:
// TODO: Non-primitive. REVISIT: Is the string the best way to store
// this in an 'object'?
- value = data;
+ objValue = data;
}
}
- public void addMember(CorbaObjectHolder el) {
- members.add(el);
- }
-
- public CorbaObjectHolder getMember(int index) {
- return members.get(index);
+ public void addNestedObject(CorbaObjectHolder el) {
+ nestedObjs.add(el);
}
- public List<CorbaObjectHolder> getMembers() {
- return members;
+ public CorbaObjectHolder getNestedObject(int index) {
+ return nestedObjs.get(index);
}
- public int getMembersSize() {
- return members.size();
+ public List<CorbaObjectHolder> getNestedObjects() {
+ return nestedObjs;
}
}
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectReader.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectReader.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectReader.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectReader.java Thu Jun 29 07:25:29 2006
@@ -42,54 +42,52 @@
}
public void read(CorbaObjectHolder obj) throws CorbaBindingException {
- // TODO: These will be updated so that we don't have to convert the
- // value to a string.
switch (obj.getType().kind().value()) {
case TCKind._tk_boolean:
- obj.setValue(this.readBoolean().toString());
+ obj.setObjectValue(this.readBoolean());
break;
case TCKind._tk_char:
Character charValue = this.readChar();
byte charByteValue = (byte) charValue.charValue();
- obj.setValue(Byte.toString(charByteValue));
+ obj.setObjectValue(new Byte(charByteValue));
break;
case TCKind._tk_wchar:
- obj.setValue(this.readWChar().toString());
+ obj.setObjectValue(this.readWChar());
break;
case TCKind._tk_octet:
Byte octetValue = this.readOctet();
short octetShortValue = octetValue.shortValue();
- obj.setValue(Short.toString(octetShortValue));
+ obj.setObjectValue(new Short(octetShortValue));
break;
case TCKind._tk_short:
- obj.setValue(this.readShort().toString());
+ obj.setObjectValue(this.readShort());
break;
case TCKind._tk_ushort:
- obj.setValue(this.readUShort().toString());
+ obj.setObjectValue(this.readUShort());
break;
case TCKind._tk_long:
- obj.setValue(this.readLong().toString());
+ obj.setObjectValue(this.readLong());
break;
case TCKind._tk_ulong:
- obj.setValue(this.readULong().toString());
+ obj.setObjectValue(this.readULong());
break;
case TCKind._tk_longlong:
- obj.setValue(this.readLongLong().toString());
+ obj.setObjectValue(this.readLongLong());
break;
case TCKind._tk_ulonglong:
- obj.setValue(this.readULongLong().toString());
+ obj.setObjectValue(this.readULongLong());
break;
case TCKind._tk_float:
- obj.setValue(this.readFloat().toString());
+ obj.setObjectValue(this.readFloat());
break;
case TCKind._tk_double:
- obj.setValue(this.readDouble().toString());
+ obj.setObjectValue(this.readDouble());
break;
case TCKind._tk_string:
- obj.setValue(this.readString().toString());
+ obj.setObjectValue(this.readString());
break;
case TCKind._tk_wstring:
- obj.setValue(this.readWString().toString());
+ obj.setObjectValue(this.readWString());
break;
// Now for the complex types
@@ -286,7 +284,7 @@
Enum enumType = (Enum) obj.getTypeDefintion();
List<Enumerator> enumerators = enumType.getEnumerator();
- obj.setValue(enumerators.get(enumIndex).getValue());
+ obj.setObjectValueFromData(enumerators.get(enumIndex).getValue());
}
public String readEnumLabel() throws CorbaBindingException {
@@ -295,7 +293,7 @@
}
public void readStruct(CorbaObjectHolder obj) throws CorbaBindingException {
- List<CorbaObjectHolder> structMembers = obj.getMembers();
+ List<CorbaObjectHolder> structMembers = obj.getNestedObjects();
for (int i = 0; i < structMembers.size(); ++i) {
this.read(structMembers.get(i));
@@ -305,10 +303,10 @@
public void readException(CorbaObjectHolder obj) throws CorbaBindingException {
// Exceptions are very similar to a struct, except that they also have a repository ID which gets
// propgated as a string. This will be stored in the object holders value field
- List<CorbaObjectHolder> exceptElements = obj.getMembers();
+ List<CorbaObjectHolder> exceptElements = obj.getNestedObjects();
String exceptId = stream.read_string();
- obj.setValue(exceptId);
+ obj.setObjectValueFromData(exceptId);
for (int i = 0; i < exceptElements.size(); ++i) {
this.read(exceptElements.get(i));
@@ -332,7 +330,7 @@
}
public void readArray(CorbaObjectHolder obj) throws CorbaBindingException {
- List<CorbaObjectHolder> arrayElements = obj.getMembers();
+ List<CorbaObjectHolder> arrayElements = obj.getNestedObjects();
for (int i = 0; i < arrayElements.size(); ++i) {
this.read(arrayElements.get(i));
@@ -341,13 +339,30 @@
public void readSequence(CorbaObjectHolder obj)
throws CorbaBindingException {
- List<CorbaObjectHolder> seqElements = obj.getMembers();
+ List<CorbaObjectHolder> seqElements = obj.getNestedObjects();
int length = stream.read_ulong();
- assert length == seqElements.size();
-
- for (int i = 0; i < length; ++i) {
- this.read(seqElements.get(i));
+
+ if (seqElements.size() == 0) {
+ // No predefined elements means an unbounded sequence. We need to use the object stored in the
+ // ObjectHolders value as a template to build a new nested object. We have to do it this way
+ // because we have no way of knowing in advance how big the sequence is going to be when we
+ // pre-build the object.
+ CorbaObjectHolder template = (CorbaObjectHolder)obj.getValue();
+ for (int i = 0; i < length; ++i) {
+ CorbaObjectHolder nestedObj = new CorbaObjectHolder(template.getName(),
+ template.getIdlType(),
+ template.getType(),
+ template.getTypeDefintion());
+ this.read(nestedObj);
+ obj.addNestedObject(nestedObj);
+ }
+
+ } else {
+ // We have a bounded sequence and the object should already be pre-built
+ for (int i = 0; i < length; ++i) {
+ this.read(seqElements.get(i));
+ }
}
}
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectWriter.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectWriter.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaObjectWriter.java Thu Jun 29 07:25:29 2006
@@ -181,7 +181,7 @@
}
public void writeStruct(CorbaObjectHolder obj) throws CorbaBindingException {
- List<CorbaObjectHolder> structElements = obj.getMembers();
+ List<CorbaObjectHolder> structElements = obj.getNestedObjects();
for (int i = 0; i < structElements.size(); ++i) {
this.write(structElements.get(i));
@@ -209,7 +209,7 @@
}
public void writeArray(CorbaObjectHolder obj) throws CorbaBindingException {
- List<CorbaObjectHolder> arrayElements = obj.getMembers();
+ List<CorbaObjectHolder> arrayElements = obj.getNestedObjects();
for (int i = 0; i < arrayElements.size(); ++i) {
this.write(arrayElements.get(i));
@@ -217,7 +217,7 @@
}
public void writeSequence(CorbaObjectHolder obj) throws CorbaBindingException {
- List<CorbaObjectHolder> seqElements = obj.getMembers();
+ List<CorbaObjectHolder> seqElements = obj.getNestedObjects();
int length = seqElements.size();
stream.write_ulong(length);
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java Thu Jun 29 07:25:29 2006
@@ -21,24 +21,24 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.schemas.yoko.bindings.corba.CorbaType;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
public class CorbaTypeMap {
private String targetNamespace;
private String prefix;
- private Map<String, CorbaType> typeMap;
+ private Map<String, CorbaTypeImpl> typeMap;
public CorbaTypeMap(String namespace) {
targetNamespace = namespace;
- typeMap = new HashMap<String, CorbaType>();
+ typeMap = new HashMap<String, CorbaTypeImpl>();
}
- public void addType(String name, CorbaType type) {
+ public void addType(String name, CorbaTypeImpl type) {
typeMap.put(name, type);
}
- public CorbaType getType(String name) {
+ public CorbaTypeImpl getType(String name) {
assert name != null;
return typeMap.get(name);
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaUtils.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaUtils.java Thu Jun 29 07:25:29 2006
@@ -82,7 +82,8 @@
}
if (currentMap == null) {
- throw new CorbaBindingException("Unable to locate typemap for prefix " + type.getPrefix());
+ throw new CorbaBindingException("Unable to locate typemap for prefix \""
+ + type.getPrefix() + "\"");
}
CorbaType obj = currentMap.getType(type.getLocalPart());
@@ -220,7 +221,7 @@
// NOTE: Does this really only apply to structs, exceptions, and unions?
if (obj instanceof Struct) {
- Struct structType = (Struct) obj;
+ Struct structType = (Struct)obj;
List<MemberType> members = structType.getMember();
for (int i = 0; i < members.size(); ++i) {
MemberType m = members.get(i);
@@ -229,7 +230,7 @@
}
}
} else if (obj instanceof Exception) {
- Exception exceptType = (Exception) obj;
+ Exception exceptType = (Exception)obj;
List<MemberType> members = exceptType.getMember();
for (int i = 0; i < members.size(); ++i) {
MemberType m = members.get(i);
@@ -242,7 +243,8 @@
} else if (obj instanceof Sequence) {
// TODO
} else if (obj instanceof Array) {
- // TODO
+ Array arrayType = (Array)obj;
+ return arrayType.getElemtype();
}
return null;
}
@@ -303,6 +305,18 @@
}
} else if (obj instanceof Union) {
// TODO: Exception for the current milestone
+ } else if (obj instanceof Array) {
+ Array arrayType = (Array)obj;
+ QName arrayIdlType = arrayType.getElemtype();
+
+ if (!isPrimitiveIdlType(arrayIdlType) && arrayIdlType != null) {
+ for (int i = 0; i < typeMaps.size(); ++i) {
+ if (typeMaps.get(i).getPrefix().equals(arrayIdlType.getPrefix())) {
+ type = (NamedType)typeMaps.get(i).getType(arrayIdlType.getLocalPart());
+ break;
+ }
+ }
+ }
}
return type;
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaAddressExtensionHelper.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaAddressExtensionHelper.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaAddressExtensionHelper.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaAddressExtensionHelper.java Thu Jun 29 07:25:29 2006
@@ -30,19 +30,16 @@
import org.w3c.dom.NamedNodeMap;
import org.apache.schemas.yoko.bindings.corba.AddressType;
+import org.apache.yoko.bindings.corba.CorbaConstants;
public class CorbaAddressExtensionHelper implements ExtensionDeserializer {
- private static String corbaPrefix = "corba";
-
- private static String corbaURI = "http://schemas.apache.org/yoko/bindings/corba";
-
public CorbaAddressExtensionHelper() {
}
public static void addExtension(ExtensionRegistry registry,
Class parentType, String element) {
- QName extQName = new QName(corbaURI, element, corbaPrefix);
+ QName extQName = new QName(CorbaConstants.NU_WSDL_CORBA, element, CorbaConstants.NP_WSDL_CORBA);
CorbaAddressExtensionHelper helper = new CorbaAddressExtensionHelper();
registry.registerDeserializer(parentType, extQName, helper);
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaBindingExtensionHelper.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaBindingExtensionHelper.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaBindingExtensionHelper.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaBindingExtensionHelper.java Thu Jun 29 07:25:29 2006
@@ -29,18 +29,16 @@
import org.w3c.dom.NamedNodeMap;
import org.apache.schemas.yoko.bindings.corba.BindingType;
+import org.apache.yoko.bindings.corba.CorbaConstants;
public class CorbaBindingExtensionHelper implements ExtensionDeserializer {
- private static String corbaPrefix = "corba";
-
- private static String corbaURI = "http://schemas.apache.org/yoko/bindings/corba";
public CorbaBindingExtensionHelper() {
}
public static void addExtension(ExtensionRegistry registry,
Class parentType, String element) {
- QName extQName = new QName(corbaURI, element, corbaPrefix);
+ QName extQName = new QName(CorbaConstants.NU_WSDL_CORBA, element, CorbaConstants.NU_WSDL_CORBA);
CorbaBindingExtensionHelper helper = new CorbaBindingExtensionHelper();
registry.registerDeserializer(parentType, extQName, helper);
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaOperationExtensionHelper.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaOperationExtensionHelper.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaOperationExtensionHelper.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaOperationExtensionHelper.java Thu Jun 29 07:25:29 2006
@@ -41,16 +41,12 @@
public class CorbaOperationExtensionHelper implements ExtensionDeserializer {
- private static String corbaPrefix = "corba";
-
- private static String corbaURI = "http://schemas.apache.org/yoko/bindings/corba";
-
public CorbaOperationExtensionHelper() {
}
public static void addExtension(ExtensionRegistry registry,
Class parentType, String element) {
- QName extQName = new QName(corbaURI, element, corbaPrefix);
+ QName extQName = new QName(CorbaConstants.NU_WSDL_CORBA, element, CorbaConstants.NP_WSDL_CORBA);
CorbaOperationExtensionHelper helper = new CorbaOperationExtensionHelper();
registry.registerDeserializer(parentType, extQName, helper);
@@ -84,20 +80,13 @@
if (paramAttrNode.getNodeName().equals("name")) {
param.setName(paramAttrNode.getNodeValue());
} else if (paramAttrNode.getNodeName().equals("mode")) {
- param.setMode(ModeType.fromValue(paramAttrNode
- .getNodeValue()));
+ param.setMode(ModeType.fromValue(paramAttrNode.getNodeValue()));
} else if (paramAttrNode.getNodeName().equals("idltype")) {
String idlType = paramAttrNode.getNodeValue();
int seperatorIndex = idlType.indexOf(':');
- String prefix = idlType
- .substring(0, seperatorIndex);
- String localPart = idlType.substring(
- seperatorIndex + 1, idlType.length());
- assert prefix.equals(CorbaConstants.NP_WSDL_CORBA);
- param
- .setIdltype(new QName(
- CorbaConstants.NU_WSDL_CORBA,
- localPart, prefix));
+ String prefix = idlType.substring(0, seperatorIndex);
+ String localPart = idlType.substring(seperatorIndex + 1, idlType.length());
+ param.setIdltype(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
opType.getParam().add(param);
@@ -110,13 +99,9 @@
if (retAttrNode.getNodeName().equals("idltype")) {
String idlType = retAttrNode.getNodeValue();
int seperatorIndex = idlType.indexOf(':');
- String prefix = idlType
- .substring(0, seperatorIndex);
- String localPart = idlType.substring(
- seperatorIndex + 1, idlType.length());
- assert prefix.equals(CorbaConstants.NP_WSDL_CORBA);
- ret.setIdltype(new QName(CorbaConstants.NU_WSDL_CORBA,
- localPart, prefix));
+ String prefix = idlType.substring(0, seperatorIndex);
+ String localPart = idlType.substring(seperatorIndex + 1, idlType.length());
+ ret.setIdltype(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
opType.setReturn(ret);
@@ -129,15 +114,9 @@
if (raiseAttrNode.getNodeName().equals("exception")) {
String idlType = raiseAttrNode.getNodeValue();
int seperatorIndex = idlType.indexOf(':');
- String prefix = idlType
- .substring(0, seperatorIndex);
- String localPart = idlType.substring(
- seperatorIndex + 1, idlType.length());
- assert prefix.equals(CorbaConstants.NP_WSDL_CORBA);
- raises
- .setException(new QName(
- CorbaConstants.NU_WSDL_CORBA,
- localPart, prefix));
+ String prefix = idlType.substring(0, seperatorIndex);
+ String localPart = idlType.substring(seperatorIndex + 1, idlType.length());
+ raises.setException(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
opType.getRaises().add(raises);
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaTypesExtensionHelper.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaTypesExtensionHelper.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaTypesExtensionHelper.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/extensions/CorbaTypesExtensionHelper.java Thu Jun 29 07:25:29 2006
@@ -47,19 +47,17 @@
import org.apache.schemas.yoko.bindings.corba.Struct;
import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
import org.apache.schemas.yoko.bindings.corba.Union;
+import org.apache.yoko.bindings.corba.CorbaConstants;
public class CorbaTypesExtensionHelper implements ExtensionDeserializer {
- private static String corbaPrefix = "corba";
- private static String corbaURI = "http://schemas.apache.org/yoko/bindings/corba";
-
public CorbaTypesExtensionHelper() {
}
public static void addExtension(ExtensionRegistry registry,
Class parentType,
String element) {
- QName extQName = new QName(corbaURI, element, corbaPrefix);
+ QName extQName = new QName(CorbaConstants.NU_WSDL_CORBA, element, CorbaConstants.NP_WSDL_CORBA);
CorbaTypesExtensionHelper helper = new CorbaTypesExtensionHelper();
registry.registerDeserializer(parentType, extQName, helper);
@@ -85,43 +83,43 @@
Node currentNode = typeChildNodes.item(i);
if (currentNode.getNodeName().equals("corba:const")) {
- Const constType = getConstDefinition(currentNode);
+ Const constType = getConstDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(constType);
} else if (currentNode.getNodeName().equals("corba:enum")) {
- Enum enumType = getEnumDefinition(currentNode);
+ Enum enumType = getEnumDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(enumType);
} else if (currentNode.getNodeName().equals("corba:struct")) {
- Struct structType = getStructDefinition(currentNode);
+ Struct structType = getStructDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(structType);
} else if (currentNode.getNodeName().equals("corba:exception")) {
- Exception exceptType = getExceptionDefinition(currentNode);
+ Exception exceptType = getExceptionDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(exceptType);
} else if (currentNode.getNodeName().equals("corba:fixed")) {
- Fixed fixedType = getFixedDefinition(currentNode);
+ Fixed fixedType = getFixedDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(fixedType);
} else if (currentNode.getNodeName().equals("corba:union")) {
- Union unionType = getUnionDefinition(currentNode);
+ Union unionType = getUnionDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(unionType);
} else if (currentNode.getNodeName().equals("corba:alias")) {
- Alias aliasType = getAliasDefinition(currentNode);
+ Alias aliasType = getAliasDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(aliasType);
} else if (currentNode.getNodeName().equals("corba:array")) {
- Array arrayType = getArrayDefinition(currentNode);
+ Array arrayType = getArrayDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(arrayType);
} else if (currentNode.getNodeName().equals("corba:sequence")) {
- Sequence sequenceType = getSequenceDefinition(currentNode);
+ Sequence sequenceType = getSequenceDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(sequenceType);
} else if (currentNode.getNodeName().equals("corba:anonstring")) {
- Anonstring anonstringType = getAnonStringDefinition(currentNode);
+ Anonstring anonstringType = getAnonStringDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(anonstringType);
} else if (currentNode.getNodeName().equals("corba:anonfixed")) {
- Anonfixed anonfixedType = getAnonFixedDefinition(currentNode);
+ Anonfixed anonfixedType = getAnonFixedDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(anonfixedType);
} else if (currentNode.getNodeName().equals("corba:anonsequence")) {
- Anonsequence anonsequenceType = getAnonSequenceDefinition(currentNode);
+ Anonsequence anonsequenceType = getAnonSequenceDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(anonsequenceType);
} else if (currentNode.getNodeName().equals("corba:anonarray")) {
- Anonarray anonarrayType = getAnonArrayDefinition(currentNode);
+ Anonarray anonarrayType = getAnonArrayDefinition(currentNode, def);
mappingType.getStructOrExceptionOrUnion().add(anonarrayType);
} else {
// TODO: How do we want to handle this?
@@ -130,7 +128,7 @@
return mappingType;
}
- public Const getConstDefinition(Node node) {
+ public Const getConstDefinition(Node node, Definition def) {
Const constType = new Const();
NamedNodeMap constAttributes = node.getAttributes();
@@ -141,13 +139,17 @@
} else if (constAttributes.item(i).getNodeName().equals("value")) {
constType.setValue(constAttributes.item(i).getNodeValue());
} else if (constAttributes.item(i).getNodeName().equals("idltype")) {
- constType.setIdltype(QName.valueOf(constAttributes.item(i).getNodeValue()));
+ String idlType = constAttributes.item(i).getNodeValue();
+ int seperatorIndex = idlType.indexOf(':');
+ String prefix = idlType.substring(0, seperatorIndex);
+ String localPart = idlType.substring(seperatorIndex + 1, idlType.length());
+ constType.setIdltype(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
return constType;
}
- public Enum getEnumDefinition(Node node) {
+ public Enum getEnumDefinition(Node node, Definition def) {
Enum enumType = new Enum();
NamedNodeMap enumAttributes = node.getAttributes();
@@ -182,7 +184,7 @@
return enumType;
}
- public Struct getStructDefinition(Node node) {
+ public Struct getStructDefinition(Node node, Definition def) {
Struct structType = new Struct();
NamedNodeMap structAttributes = node.getAttributes();
@@ -209,7 +211,11 @@
if (memberAttrNode.getNodeName().equals("name")) {
member.setName(memberAttrNode.getNodeValue());
} else if (memberAttrNode.getNodeName().equals("idltype")) {
- member.setIdltype(QName.valueOf(memberAttrNode.getNodeValue()));
+ String idlType = memberAttrNode.getNodeValue();
+ int seperatorIndex = idlType.indexOf(':');
+ String prefix = idlType.substring(0, seperatorIndex);
+ String localPart = idlType.substring(seperatorIndex + 1, idlType.length());
+ member.setIdltype(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
structType.getMember().add(member);
@@ -218,7 +224,7 @@
return structType;
}
- public Exception getExceptionDefinition(Node node) {
+ public Exception getExceptionDefinition(Node node, Definition def) {
Exception exceptType = new Exception();
NamedNodeMap exceptAttributes = node.getAttributes();
@@ -245,7 +251,11 @@
if (memberAttrNode.getNodeName().equals("name")) {
member.setName(memberAttrNode.getNodeValue());
} else if (memberAttrNode.getNodeName().equals("idltype")) {
- member.setIdltype(QName.valueOf(memberAttrNode.getNodeValue()));
+ String idlType = memberAttrNode.getNodeValue();
+ int seperatorIndex = idlType.indexOf(':');
+ String prefix = idlType.substring(0, seperatorIndex);
+ String localPart = idlType.substring(seperatorIndex + 1, idlType.length());
+ member.setIdltype(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
exceptType.getMember().add(member);
@@ -254,7 +264,7 @@
return exceptType;
}
- public Fixed getFixedDefinition(Node node) {
+ public Fixed getFixedDefinition(Node node, Definition def) {
Fixed fixedType = new Fixed();
// Store information about the fixed type
@@ -273,12 +283,11 @@
return fixedType;
}
- public Union getUnionDefinition(Node node) {
- System.out.println("DEBUG> - Union type defined");
+ public Union getUnionDefinition(Node node, Definition def) {
return null;
}
- public Alias getAliasDefinition(Node node) {
+ public Alias getAliasDefinition(Node node, Definition def) {
Alias aliasType = new Alias();
// Store information about the typedef
@@ -289,13 +298,17 @@
} else if (aliasAttributes.item(i).getNodeName().equals("repositoryID")) {
aliasType.setRepositoryID(aliasAttributes.item(i).getNodeValue());
} else if (aliasAttributes.item(i).getNodeName().equals("basetype")) {
- aliasType.setBasetype(QName.valueOf(aliasAttributes.item(i).getNodeValue()));
+ String baseType = aliasAttributes.item(i).getNodeValue();
+ int seperatorIndex = baseType.indexOf(':');
+ String prefix = baseType.substring(0, seperatorIndex);
+ String localPart = baseType.substring(seperatorIndex + 1, baseType.length());
+ aliasType.setBasetype(new QName(def.getNamespace(prefix), localPart, prefix));
}
}
return aliasType;
}
- public Array getArrayDefinition(Node node) {
+ public Array getArrayDefinition(Node node, Definition def) {
Array arrayType = new Array();
// Store information about the array
@@ -306,7 +319,11 @@
} else if (arrayAttributes.item(i).getNodeName().equals("repositoryID")) {
arrayType.setRepositoryID(arrayAttributes.item(i).getNodeValue());
} else if (arrayAttributes.item(i).getNodeName().equals("elemtype")) {
- arrayType.setElemtype(QName.valueOf(arrayAttributes.item(i).getNodeValue()));
+ String elemType = arrayAttributes.item(i).getNodeValue();
+ int seperatorIndex = elemType.indexOf(':');
+ String prefix = elemType.substring(0, seperatorIndex);
+ String localPart = elemType.substring(seperatorIndex + 1, elemType.length());
+ arrayType.setElemtype(new QName(def.getNamespace(prefix), localPart, prefix));
} else if (arrayAttributes.item(i).getNodeName().equals("bound")) {
arrayType.setBound(Long.parseLong(arrayAttributes.item(i).getNodeValue()));
}
@@ -314,7 +331,7 @@
return arrayType;
}
- public Sequence getSequenceDefinition(Node node) {
+ public Sequence getSequenceDefinition(Node node, Definition def) {
Sequence sequenceType = new Sequence();
// Store information about the sequence
@@ -324,8 +341,12 @@
sequenceType.setName(sequenceAttributes.item(i).getNodeValue());
} else if (sequenceAttributes.item(i).getNodeName().equals("repositoryID")) {
sequenceType.setRepositoryID(sequenceAttributes.item(i).getNodeValue());
- } else if (sequenceAttributes.item(i).getNodeName().equals("elemType")) {
- sequenceType.setElemtype(QName.valueOf(sequenceAttributes.item(i).getNodeValue()));
+ } else if (sequenceAttributes.item(i).getNodeName().equals("elemtype")) {
+ String elemType = sequenceAttributes.item(i).getNodeValue();
+ int seperatorIndex = elemType.indexOf(':');
+ String prefix = elemType.substring(0, seperatorIndex);
+ String localPart = elemType.substring(seperatorIndex + 1, elemType.length());
+ sequenceType.setElemtype(new QName(def.getNamespace(prefix), localPart, prefix));
} else if (sequenceAttributes.item(i).getNodeName().equals("bound")) {
sequenceType.setBound(Long.parseLong(sequenceAttributes.item(i).getNodeValue()));
}
@@ -333,19 +354,19 @@
return sequenceType;
}
- public Anonstring getAnonStringDefinition(Node node) {
+ public Anonstring getAnonStringDefinition(Node node, Definition def) {
return null;
}
- public Anonfixed getAnonFixedDefinition(Node node) {
+ public Anonfixed getAnonFixedDefinition(Node node, Definition def) {
return null;
}
- public Anonsequence getAnonSequenceDefinition(Node node) {
+ public Anonsequence getAnonSequenceDefinition(Node node, Definition def) {
return null;
}
- public Anonarray getAnonArrayDefinition(Node node) {
+ public Anonarray getAnonArrayDefinition(Node node, Definition def) {
return null;
}
}
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingImplTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingImplTest.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingImplTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingImplTest.java Thu Jun 29 07:25:29 2006
@@ -126,7 +126,7 @@
QName paramIdlType = CorbaConstants.NT_CORBA_STRING;
TypeCode paramTC = CorbaUtils.getPrimitiveTypeCode(orb, paramIdlType);
CorbaObjectHolder obj = new CorbaObjectHolder(paramName, paramIdlType, paramTC, null);
- obj.setValue("TestString");
+ obj.setObjectValueFromData("TestString");
CorbaStreamable streamable = new CorbaStreamable(obj, paramName);
CorbaMessage msg = new CorbaMessage();
msg.addStreamableArgument(streamable);
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectHolderTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectHolderTest.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectHolderTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectHolderTest.java Thu Jun 29 07:25:29 2006
@@ -88,13 +88,13 @@
assertNull(objDef);
}
- public void testSetObjectValue() {
+ public void testSetObjectValueFromData() {
QName objName = new QName("object");
QName objIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "long", CorbaConstants.NP_WSDL_CORBA);
TypeCode objTypeCode = orb.get_primitive_tc(TCKind.tk_long);
CorbaObjectHolder obj = new CorbaObjectHolder(objName, objIdlType, objTypeCode, null);
- obj.setValue("12345678");
+ obj.setObjectValueFromData("12345678");
Object value = obj.getValue();
assertTrue(value instanceof Long);
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStreamableTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStreamableTest.java?rev=418055&r1=418054&r2=418055&view=diff
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStreamableTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStreamableTest.java Thu Jun 29 07:25:29 2006
@@ -130,7 +130,7 @@
QName objIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "wstring", CorbaConstants.NP_WSDL_CORBA);
TypeCode objTypeCode = orb.get_primitive_tc(TCKind.tk_wstring);
CorbaObjectHolder obj = new CorbaObjectHolder(objName, objIdlType, objTypeCode, null);
- obj.setValue("TestWString");
+ obj.setObjectValueFromData("TestWString");
CorbaStreamable streamable = new CorbaStreamable(obj, objName);
Buffer buf = new Buffer();