You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by br...@apache.org on 2007/05/08 19:08:29 UTC

svn commit: r536299 - in /incubator/yoko/trunk/bindings/src: main/java/org/apache/yoko/bindings/corba/ main/java/org/apache/yoko/bindings/corba/interceptors/ main/java/org/apache/yoko/bindings/corba/runtime/ main/java/org/apache/yoko/bindings/corba/uti...

Author: bravi
Date: Tue May  8 12:08:28 2007
New Revision: 536299

URL: http://svn.apache.org/viewvc?view=rev&rev=536299
Log:
[YOKO-366] - Creating the corba type map at the init time & not per invocation.

Modified:
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaMessage.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerConduit.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaInInterceptor.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaDSIServant.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaConduitTest.java
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaServerConduitTest.java

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java Tue May  8 12:08:28 2007
@@ -76,12 +76,21 @@
     private MessageObserver incomingObserver;
     private ORB orb;
     private OrbConfig orbConfig;
+    private List<CorbaTypeMap> typeMaps;
 
     public CorbaConduit(EndpointInfo ei, EndpointReferenceType ref, OrbConfig config) {
         endpointInfo = ei;
         target = getTargetReference(ref);
         orbConfig = config;
         orb = CorbaBindingHelper.getDefaultORB(config);
+        typeMaps = new ArrayList<CorbaTypeMap>();
+        if (ei.getService() != null) {
+            List<TypeMappingType> corbaTypes =
+                ei.getService().getDescription().getExtensors(TypeMappingType.class);
+            if (corbaTypes != null) {
+                CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
+            }
+        }
     }
 
     public void prepare(Message message) throws IOException {    
@@ -162,14 +171,7 @@
     }
         
     protected void buildRequest(CorbaMessage message, OperationType opType) throws Exception {        
-        List<CorbaTypeMap> typeMaps = new ArrayList<CorbaTypeMap>();
-
         ServiceInfo service = message.getExchange().get(ServiceInfo.class);
-        List<TypeMappingType> corbaTypes = service.getDescription().getExtensors(TypeMappingType.class);
-        if (corbaTypes != null) {
-            CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
-        }
-        
         NVList nvlist = getArguments(message);
         NamedValue ret = getReturn(message);
         Map<TypeCode, RaisesType> exceptions = getOperationExceptions(opType, typeMaps);
@@ -251,7 +253,7 @@
     protected ExceptionList getExceptionList(Map<TypeCode, RaisesType> exceptions,
                                              CorbaMessage message, 
                                              OperationType opType,
-                                             List<CorbaTypeMap> typeMaps) {
+                                             List<CorbaTypeMap> map) {
         // Get the typecodes for the exceptions this operation can throw.
         // These are defined in the operation definition from WSDL.
         ExceptionList exList = orb.create_exception_list();
@@ -288,13 +290,13 @@
         
     protected Map<TypeCode, RaisesType> getOperationExceptions(
                                          OperationType operation, 
-                                         List<CorbaTypeMap> typeMaps) {
+                                         List<CorbaTypeMap> map) {
         Map<TypeCode, RaisesType> exceptions = new HashMap<TypeCode, RaisesType>();
         List<RaisesType> exList = operation.getRaises(); 
         if (exList != null) {
             for (int i = 0; i < exList.size(); ++i) {
                 RaisesType ex = exList.get(i);
-                TypeCode tc = CorbaUtils.getTypeCode(orb, ex.getException(), typeMaps);
+                TypeCode tc = CorbaUtils.getTypeCode(orb, ex.getException(), map);
                 exceptions.put(tc, ex);
             }
         }

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java Tue May  8 12:08:28 2007
@@ -20,7 +20,8 @@
 package org.apache.yoko.bindings.corba;
 
 import java.io.IOException;
-//import java.util.List;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -35,6 +36,7 @@
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 
 import org.apache.schemas.yoko.bindings.corba.AddressType;
+import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
 
 import org.apache.yoko.bindings.corba.runtime.CorbaDSIServant;
 import org.apache.yoko.bindings.corba.utils.CorbaBindingHelper;
@@ -57,6 +59,9 @@
     private EndpointInfo endpointInfo;
     private OrbConfig orbConfig;
     private MessageObserver incomingObserver;
+    private List<CorbaTypeMap> typeMaps;
+    private byte[] objectId;
+    private POA bindingPOA;
 
     public CorbaDestination(EndpointInfo ei, OrbConfig config) {
         address = ei.getExtensor(AddressType.class);
@@ -67,6 +72,12 @@
         reference.setAddress(addr);
         endpointInfo = ei;
         orbConfig = config;
+        typeMaps = new ArrayList<CorbaTypeMap>(); 
+        List<TypeMappingType> corbaTypes =
+            binding.getService().getDescription().getExtensors(TypeMappingType.class);
+        if (corbaTypes != null) {
+            CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
+        }
     }
 
     public EndpointReferenceType getAddress() {
@@ -77,7 +88,7 @@
                                   Message partialResponse,
                                   EndpointReferenceType ref)
         throws IOException {
-        return  new CorbaServerConduit(endpointInfo, reference, orbConfig);                
+        return  new CorbaServerConduit(endpointInfo, reference, orbConfig, typeMaps);
     }
 
     public BindingInfo getBindingInfo() {
@@ -88,6 +99,10 @@
         return endpointInfo;
     }
 
+    public List<CorbaTypeMap> getCorbaTypeMap() {
+        return typeMaps;
+    }
+
     public void shutdown() {
         if (orb != null) {
             try {
@@ -105,9 +120,25 @@
     
     protected AddressType getAddressType() {
         return address;
-    }
+    }    
 
     public synchronized void setMessageObserver(MessageObserver observer) {
+        if (observer != incomingObserver) {
+            MessageObserver old = incomingObserver;
+            incomingObserver = observer;
+            if (observer != null) { 
+                if (old == null) {
+                    activate();
+                }
+            } else {
+                if (old != null) {
+                    deactivate();
+                }
+            }
+        }
+    }
+
+    public void activate() {
         String location = getDestinationAddress();
         LOG.info("Service address retrieved: " + location);
         
@@ -116,19 +147,12 @@
             LOG.log(Level.INFO, "Creating ORB with address " + location);
             orb = CorbaBindingHelper.createAddressSpecificORB(location, orbConfig);
         }
-        incomingObserver = observer;
-        activate(observer);
-    }
-
-    public void activate(MessageObserver observer) {
-        String location = getDestinationAddress();
         
         org.omg.CORBA.Object obj = null;
         try {
             POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
             POAManager poaManager = rootPOA.the_POAManager();
 
-            POA bindingPOA = null;
             try {
                 bindingPOA = rootPOA.find_POA("BindingPOA", true);
             } catch (org.omg.PortableServer.POAPackage.AdapterNonExistent ex) {
@@ -153,8 +177,8 @@
             }
 
             CorbaDSIServant servant = new CorbaDSIServant();
-            servant.init(orb, bindingPOA, this, observer);
-            byte[] objectId = bindingPOA.activate_object(servant);
+            servant.init(orb, bindingPOA, this, incomingObserver, typeMaps);
+            objectId = bindingPOA.activate_object(servant);
             obj = bindingPOA.id_to_reference(objectId);
             
             if (location.startsWith("relfile:")) {
@@ -243,5 +267,16 @@
     
     public MessageObserver getMessageObserver() {
         return incomingObserver;
+    }
+
+    public void deactivate() {
+        if (bindingPOA == null) {
+            throw new CorbaBindingException("Corba Port deactivation failed because the poa is null");
+        }
+        try {
+            bindingPOA.deactivate_object(objectId);
+        } catch (Exception ex) {
+            throw new CorbaBindingException("Unable to deactivate CORBA servant", ex);
+        }
     }
 }

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaMessage.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaMessage.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaMessage.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaMessage.java Tue May  8 12:08:28 2007
@@ -40,6 +40,7 @@
     private CorbaStreamable returnParam;
     private CorbaStreamable except;
     private SystemException systemExcept;
+    private List<CorbaTypeMap> corbaTypeMap;
     
     private NVList list;
 
@@ -55,6 +56,7 @@
             except = msg.getStreamableException();
             systemExcept = msg.getSystemException();
             list = msg.getList();
+            corbaTypeMap = msg.getCorbaTypeMap();
         } else {
             this.arguments = new ArrayList<CorbaStreamable>();    
         }        
@@ -142,5 +144,13 @@
 
     public CorbaStreamable createStreamableObject(CorbaObjectHandler obj, QName elName) {
         return new CorbaStreamableImpl(obj, elName);
+    }
+
+    public List<CorbaTypeMap> getCorbaTypeMap() {
+        return corbaTypeMap;
+    }
+
+    public void setCorbaTypeMap(List<CorbaTypeMap> typeMap) {
+        corbaTypeMap = typeMap;
     }
 }

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerConduit.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerConduit.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerConduit.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaServerConduit.java Tue May  8 12:08:28 2007
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -53,11 +54,16 @@
     private EndpointReferenceType target;
     private MessageObserver incomingObserver;
     private ORB orb;
+    private List<CorbaTypeMap> typeMaps;
 
-    public CorbaServerConduit(EndpointInfo ei, EndpointReferenceType ref, OrbConfig config) {
+    public CorbaServerConduit(EndpointInfo ei,
+                              EndpointReferenceType ref,
+                              OrbConfig config,
+                              List<CorbaTypeMap> map) {
         endpointInfo = ei;
         target = getTargetReference(ref);
         orb = CorbaBindingHelper.getDefaultORB(config);
+        typeMaps = map;
     }
 
     public void prepare(Message message) throws IOException {
@@ -73,6 +79,7 @@
             message.put(CorbaConstants.CORBA_ENDPOINT_OBJECT, targetObject);
             message.setContent(OutputStream.class,
                                new CorbaOutputStream(message));
+            ((CorbaMessage) message).setCorbaTypeMap(typeMaps);
         } catch (java.lang.Exception ex) {
             LOG.log(Level.SEVERE, "Could not resolve target object");
             throw new CorbaBindingException(ex);

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaInInterceptor.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaInInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaInInterceptor.java Tue May  8 12:08:28 2007
@@ -100,15 +100,18 @@
             } else {
                 destination = (CorbaDestination)message.getExchange().getDestination();
             }
-        
-            typeMaps = new ArrayList<CorbaTypeMap>();                
             service = destination.getBindingInfo().getService();
-            List<TypeMappingType> corbaTypes = service.getDescription().getExtensors(TypeMappingType.class);
-            if (corbaTypes != null) {
-                CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
-                corbaStaxObject.setTypeMaps(typeMaps);
-                corbaStaxObject.setServiceInfo(service);
+            typeMaps = message.getCorbaTypeMap();
+            if (typeMaps == null) {
+                typeMaps = new ArrayList<CorbaTypeMap>();                
+                List<TypeMappingType> corbaTypes =
+                    service.getDescription().getExtensors(TypeMappingType.class);
+                if (corbaTypes != null) {
+                    CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
+                }
             }
+            corbaStaxObject.setTypeMaps(typeMaps);
+            corbaStaxObject.setServiceInfo(service);
             
             // TODO: where does encoding constant go?
             //String encoding = (String)message.get("Encoding");        

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java Tue May  8 12:08:28 2007
@@ -92,15 +92,19 @@
             orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
             corbaStaxObject = new CorbaStaxObject(orb);
             Exchange exchange = message.getExchange();
-            typeMaps = new ArrayList<CorbaTypeMap>();
-
             service = exchange.get(ServiceInfo.class);
-            List<TypeMappingType> corbaTypes = service.getDescription().getExtensors(TypeMappingType.class);
-            if (corbaTypes != null) {
-                CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
-                corbaStaxObject.setTypeMaps(typeMaps);
-                corbaStaxObject.setServiceInfo(service);
-            }        
+            typeMaps = message.getCorbaTypeMap();
+            if (typeMaps == null) {
+                typeMaps = new ArrayList<CorbaTypeMap>();
+                List<TypeMappingType> corbaTypes =
+                    service.getDescription().getExtensors(TypeMappingType.class);
+                if (corbaTypes != null) {
+                    CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
+                }
+            }
+            corbaStaxObject.setTypeMaps(typeMaps);
+            corbaStaxObject.setServiceInfo(service);
+
             getXMLOutputFactory().setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
 
             // TODO: where does encoding constant go?

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaDSIServant.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaDSIServant.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaDSIServant.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaDSIServant.java Tue May  8 12:08:28 2007
@@ -40,6 +40,8 @@
 import org.apache.schemas.yoko.bindings.corba.OperationType;
 import org.apache.yoko.bindings.corba.CorbaBindingException;
 import org.apache.yoko.bindings.corba.CorbaDestination;
+import org.apache.yoko.bindings.corba.CorbaMessage;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
 import org.omg.CORBA.ORB;
 import org.omg.CORBA.ServerRequest;
 import org.omg.PortableServer.DynamicImplementation;
@@ -54,6 +56,7 @@
     private MessageObserver incomingObserver;
     private CorbaDestination destination;
     private Map<String, QName> operationMap;
+    private List<CorbaTypeMap> typeMaps;
     
     public CorbaDSIServant() {
         //Complete
@@ -63,10 +66,19 @@
                      POA poa,
                      CorbaDestination dest,
                      MessageObserver observer) {
+        init(theOrb, poa, dest, observer, null);
+    }
+
+    public void init(ORB theOrb,
+                     POA poa,
+                     CorbaDestination dest,
+                     MessageObserver observer,
+                     List<CorbaTypeMap> map) {
         orb = theOrb;
         servantPOA = poa;
         destination = dest;
         incomingObserver = observer;
+        typeMaps = map;
        
         // Get the list of interfaces that this servant will support
         try {                
@@ -125,6 +137,10 @@
     public void setOperationMapping(Map<String, QName> map) {
         operationMap = map;
     }
+
+    public void setCorbaTypeMap(List<CorbaTypeMap> map) {
+        typeMaps = map;
+    }
     
     public void invoke(ServerRequest request) throws CorbaBindingException {
         MessageImpl msgImpl = new MessageImpl();
@@ -134,9 +150,10 @@
         exg.put(ORB.class, getOrb());
         exg.put(ServerRequest.class, request);
         msgImpl.setExchange(exg);
-               
-        // invokes the interceptors        
-        getObserver().onMessage(msgImpl);              
+        CorbaMessage msg = new CorbaMessage(msgImpl);
+        msg.setCorbaTypeMap(typeMaps);
+        // invokes the interceptors
+        getObserver().onMessage(msg);
     }
        
     public String[] _all_interfaces(POA poa, byte[] objectId) {

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java Tue May  8 12:08:28 2007
@@ -155,9 +155,6 @@
                 Array arrayType = (Array)obj;
                 tc = orb.create_array_tc((int) arrayType.getBound(), 
                                          getTypeCode(orb, arrayType.getElemtype(), typeMaps));
-                //} else if (obj instanceof Const) {
-                //    Const constType = (Const)obj;
-                //    tc = getTypeCode(orb, constType.getIdltype(), typeMaps);
             } else if (obj instanceof Enum) {
                 Enum enumType = (Enum)obj;
                 String name = enumType.getName();

Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaConduitTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaConduitTest.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaConduitTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaConduitTest.java Tue May  8 12:08:28 2007
@@ -38,6 +38,7 @@
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.DescriptionInfo;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 

Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaServerConduitTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaServerConduitTest.java?view=diff&rev=536299&r1=536298&r2=536299
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaServerConduitTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaServerConduitTest.java Tue May  8 12:08:28 2007
@@ -21,6 +21,7 @@
 import java.io.OutputStream;
 import java.lang.reflect.Method;
 import java.net.URL;
+import java.util.List;
 import javax.xml.namespace.QName;
 import junit.framework.TestCase;
 
@@ -59,6 +60,7 @@
     CorbaBindingFactory factory;
     TestUtils testUtils;
     OrbConfig orbConfig;
+    List<CorbaTypeMap> corbaTypeMap;
 
     public CorbaServerConduitTest(String arg0) {
         super(arg0);
@@ -104,8 +106,11 @@
                          "/wsdl/simpleIdl.wsdl", "SimpleCORBAService",
                          "SimpleCORBAPort");
         CorbaDestination destination = new CorbaDestination(endpointInfo, orbConfig);
-        CorbaServerConduit conduit = new CorbaServerConduit(endpointInfo, destination.getAddress(), orbConfig);
-        Message message = new MessageImpl();
+        CorbaServerConduit conduit = new CorbaServerConduit(endpointInfo,
+                                                            destination.getAddress(),
+                                                            orbConfig,
+                                                            corbaTypeMap);
+        CorbaMessage message = new CorbaMessage(new MessageImpl());
         try {
             conduit.prepare(message);
         } catch (Exception ex) {
@@ -127,7 +132,10 @@
                          "SimpleCORBAPort");
 
         CorbaDestination destination = new CorbaDestination(endpointInfo, orbConfig);
-        CorbaServerConduit conduit = new CorbaServerConduit(endpointInfo, destination.getAddress(), orbConfig);
+        CorbaServerConduit conduit = new CorbaServerConduit(endpointInfo,
+                                                            destination.getAddress(),
+                                                            orbConfig,
+                                                            corbaTypeMap);
         
         EndpointReferenceType t = null;
         EndpointReferenceType ref = conduit.getTargetReference(t);
@@ -142,7 +150,10 @@
 
         CorbaDestination destination = new CorbaDestination(endpointInfo, orbConfig);
         endpointInfo.setAddress("corbaloc::localhost:40000/Simple");
-        CorbaServerConduit conduit = new CorbaServerConduit(endpointInfo, destination.getAddress(), orbConfig);           
+        CorbaServerConduit conduit = new CorbaServerConduit(endpointInfo,
+                                                            destination.getAddress(),
+                                                            orbConfig,
+                                                            corbaTypeMap);
         String address = conduit.getAddress();
         assertTrue("address should not be null", address != null);
         assertEquals(address, "corbaloc::localhost:40000/Simple");        
@@ -272,7 +283,7 @@
         target = EasyMock.createMock(EndpointReferenceType.class);                   
         endpointInfo = EasyMock.createMock(EndpointInfo.class);
         CorbaServerConduit CorbaServerConduit = 
-            new CorbaServerConduit(endpointInfo, target, orbConfig);
+            new CorbaServerConduit(endpointInfo, target, orbConfig, corbaTypeMap);
         
         if (send) {
             // setMessageObserver