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 2007/07/10 11:57:09 UTC

svn commit: r554914 - in /incubator/yoko/trunk/bindings/src: main/java/org/apache/yoko/bindings/corba/runtime/ main/java/org/apache/yoko/bindings/corba/types/ test/java/org/apache/yoko/bindings/corba/types/

Author: dmiddlem
Date: Tue Jul 10 04:57:07 2007
New Revision: 554914

URL: http://svn.apache.org/viewvc?view=rev&rev=554914
Log:
Commit for YOKO-398:
- Fixing the use of Anys as element types for sequences.

Modified:
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java?view=diff&rev=554914&r1=554913&r2=554914
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectReader.java Tue Jul 10 04:57:07 2007
@@ -461,6 +461,11 @@
         CorbaObjectHandler handler = null;
         try {
             handler = (CorbaObjectHandler) templateConstructor.newInstance(params);
+            // To construct an any, we also need to set a typemap.  This should be available through
+            // the template object.
+            if (template instanceof CorbaAnyHandler) {
+                ((CorbaAnyHandler)handler).setTypeMap(((CorbaAnyHandler)template).getTypeMap());
+            }
         } catch (java.lang.Exception ex) {
             throw new CorbaBindingException("Unable to instantiate sequence element", ex);
         }

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java?view=diff&rev=554914&r1=554913&r2=554914
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java Tue Jul 10 04:57:07 2007
@@ -116,7 +116,8 @@
             result = new CorbaPrimitiveHandler(containedName, idlType, tc, null);
         } else if (tc.kind().value() == TCKind._tk_any) {
             idlType = CorbaConstants.NT_CORBA_ANY;
-            result = new CorbaAnyHandler(containedName, idlType, tc, null, handler.getTypeMap());
+            result = new CorbaAnyHandler(containedName, idlType, tc, null);
+            ((CorbaAnyHandler)result).setTypeMap(handler.getTypeMap());
         } else {
             idlType = handler.getTypeMap().getIdlType(tc);
             result = CorbaHandlerUtils.initializeObjectHandler(orb, containedName, idlType,

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java?view=diff&rev=554914&r1=554913&r2=554914
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java Tue Jul 10 04:57:07 2007
@@ -36,12 +36,10 @@
     public CorbaAnyHandler(QName anyName, 
                            QName anyIdlType, 
                            TypeCode anyTC, 
-                           Object anyType,
-                           CorbaTypeMap tm) {
+                           Object anyType) {
         super(anyName, anyIdlType, anyTC, anyType);
         
         value = null;
-        typeMap = tm;
     }
     
     public Any getValue() {
@@ -58,6 +56,10 @@
 
     public void clear() {
         value = null;
+    }
+
+    public void setTypeMap(CorbaTypeMap tm) {
+        typeMap = tm;
     }
 
     public CorbaTypeMap getTypeMap() {

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java?view=diff&rev=554914&r1=554913&r2=554914
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java Tue Jul 10 04:57:07 2007
@@ -81,7 +81,8 @@
             handler = new CorbaPrimitiveHandler(name, idlType, tc, null);
         } else if (tc.kind().value() == TCKind._tk_any) {
             // Any is a special kind of primitive so it gets its own handler
-            handler = new CorbaAnyHandler(name, idlType, tc, null, typeMap);
+            handler = new CorbaAnyHandler(name, idlType, tc, null);
+            ((CorbaAnyHandler)handler).setTypeMap(typeMap);
         } else {
             CorbaTypeImpl type = CorbaUtils.getCorbaType(idlType, typeMap);
             switch (tc.kind().value()) {
@@ -411,7 +412,8 @@
             CorbaTypeImpl type = CorbaUtils.getCorbaType(idlType, typeMap);
             switch (tc.kind().value()) {
             case TCKind._tk_any:
-                handler = new CorbaAnyHandler(name, idlType, tc, type, typeMap);
+                handler = new CorbaAnyHandler(name, idlType, tc, type);
+                ((CorbaAnyHandler)handler).setTypeMap(typeMap);
                 result = new CorbaAnyListener(handler, typeMap, orb, serviceInfo);
                 break;
             case TCKind._tk_array:

Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java?view=diff&rev=554914&r1=554913&r2=554914
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java Tue Jul 10 04:57:07 2007
@@ -73,7 +73,8 @@
         TypeCode anyTC = orb.get_primitive_tc(TCKind.from_int(TCKind._tk_any));
         CorbaTypeMap tm = new CorbaTypeMap(CorbaConstants.NU_WSDL_CORBA);
         
-        CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null, tm);
+        CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
+        anyHandler.setTypeMap(tm);
 
         // Test the get/set value methods
         anyHandler.setValue(a);