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();