You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/08/01 05:13:56 UTC

svn commit: r681597 - in /cxf/trunk: rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/ rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/interceptors/ rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/ rt/bindi...

Author: dkulp
Date: Thu Jul 31 20:13:55 2008
New Revision: 681597

URL: http://svn.apache.org/viewvc?rev=681597&view=rev
Log:
Some CORBA cleanups, fix problems with unsigned types, start exploring how to support derived types.


Removed:
    cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaStreamWriterTest.java
Modified:
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaBindingFactory.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaDestination.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/interceptors/CorbaStreamFaultInInterceptor.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServant.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaFaultStreamWriter.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReader.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaStreamWriter.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/AbstractCorbaTypeListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaAnyListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaArrayListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaExceptionListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaObjectReferenceEventProducer.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaPrimitiveHandler.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaSequenceListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaStructListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaTypeListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaUnionListener.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaBindingHelper.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaUtils.java
    cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/OrbConfig.java
    cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServantTest.java
    cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReaderTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient3.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient4.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/corba/CORBADocLitClientTypeTest.java

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaBindingFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaBindingFactory.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaBindingFactory.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaBindingFactory.java Thu Jul 31 20:13:55 2008
@@ -109,4 +109,9 @@
         uriPrefixes.add("corba");
         return uriPrefixes;
     }
+    
+    public OrbConfig getOrbConfig() {
+        return orbConfig;
+    }
+
 }

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaDestination.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaDestination.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaDestination.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/CorbaDestination.java Thu Jul 31 20:13:55 2008
@@ -20,8 +20,9 @@
 package org.apache.cxf.binding.corba;
 
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -30,6 +31,7 @@
 import org.apache.cxf.binding.corba.utils.CorbaUtils;
 import org.apache.cxf.binding.corba.utils.OrbConfig;
 import org.apache.cxf.binding.corba.wsdl.AddressType;
+import org.apache.cxf.binding.corba.wsdl.PolicyType;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.BindingInfo;
@@ -40,19 +42,19 @@
 import org.apache.cxf.ws.addressing.AttributedURIType;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.omg.CORBA.ORB;
-import org.omg.CORBA.Object;
 import org.omg.CORBA.Policy;
-import org.omg.CosNaming.NameComponent;
-import org.omg.CosNaming.NamingContextExt;
-import org.omg.CosNaming.NamingContextExtHelper;
+import org.omg.PortableServer.IdAssignmentPolicyValue;
+import org.omg.PortableServer.LifespanPolicyValue;
 import org.omg.PortableServer.POA;
 import org.omg.PortableServer.POAHelper;
 import org.omg.PortableServer.POAManager;
+import org.omg.PortableServer.ThreadPolicyValue;
 
 public class CorbaDestination implements Destination {
     
-
+    private static final String IOR_SHARED_KEY = "ior:shared-key";
     private static final Logger LOG = LogUtils.getL7dLogger(CorbaDestination.class);
+    
     private AddressType address;
     private EndpointReferenceType reference;
     private ORB orb;
@@ -63,6 +65,9 @@
     private CorbaTypeMap typeMap;
     private byte[] objectId;
     private POA bindingPOA;
+    private String poaName;
+    private String serviceId;
+    private boolean isPersistent;
     private org.omg.CORBA.Object obj;
 
     public CorbaDestination(EndpointInfo ei, OrbConfig config) {
@@ -83,6 +88,13 @@
         } else {
             typeMap = TypeMapCache.get(binding.getService());
         }
+        isPersistent = orbConfig.isPersistentPoa();
+        PolicyType policy = ei.getExtensor(PolicyType.class);
+        if (policy != null) {
+            poaName = policy.getPoaname();
+            isPersistent = policy.isPersistent();
+            serviceId = policy.getServiceid();            
+        }
     }
 
     public OrbConfig getOrbConfig() {
@@ -116,9 +128,14 @@
     public void shutdown() {
         if (orb != null) {
             try {
-                // Indicate that we are done with the ORB.  We'll ask for it to be destroyed but it
-                // someone else is using it, it really won't be (just its use count decremented)
-                CorbaBindingHelper.destroyORB(getDestinationAddress(), orb);
+                // Ask for the ORB to be destroyed.  If another destination is using it, we'll
+                // simply decrement a use count, but not destroy the ORB so that we don't break the
+                // other CorbaDestination.
+                if (CorbaUtils.isIOR(getDestinationAddress())) {
+                    CorbaBindingHelper.destroyORB(IOR_SHARED_KEY, orb);
+                } else {
+                    CorbaBindingHelper.destroyORB(getDestinationAddress(), orb);
+                }
             } catch (Exception ex) {
                 throw new CorbaBindingException(ex);
             }
@@ -126,6 +143,29 @@
         }
     }
     
+    public ORB getORB(List<String> orbArgs, 
+                      String location, 
+                      java.util.Properties props) {
+        // See if an ORB has already been created for the given address. If so,
+        // we'll simply use it
+        // so that we don't try re-create another ORB on the same host and port.
+        if (CorbaUtils.isIOR(location)) {
+            location = IOR_SHARED_KEY;
+        }
+        orb = CorbaBindingHelper.getAddressSpecificORB(location);
+        if (orb == null) {
+            orb = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
+            CorbaBindingHelper.addAddressSpecificORB(location, orb);
+        }
+
+        // Get the binding helper to remember that we need this ORB kept alive, even if another
+        // destination tries to destroy it.
+        CorbaBindingHelper.keepORBAlive(location);
+        
+        return orb;
+
+    }
+    
     protected ORB getOrb() {
         return orb;
     }
@@ -151,10 +191,66 @@
     }
 
     public void activate() {
+        java.util.Properties props = new java.util.Properties();
+        if (orbConfig.getOrbClass() != null) {
+            props.put("org.omg.CORBA.ORBClass", orbConfig.getOrbClass());
+        }
+        if (orbConfig.getOrbSingletonClass() != null) {
+            props.put("org.omg.CORBA.ORBSingletonClass", orbConfig
+                .getOrbSingletonClass());
+        }
+        
         String location = getDestinationAddress();
+        
+        if (!CorbaUtils.isValidURL(location)) {
+            throw new CorbaBindingException(
+                    "Invalid addressing specified for CORBA port location");
+        }
+        
         LOG.info("Service address retrieved: " + location);
         
-        orb = CorbaBindingHelper.getAddressSpecificORB(location);
+        
+        URI addressURI = null;
+        try {
+            addressURI = new URI(location);
+        } catch (java.net.URISyntaxException ex) {
+            throw new CorbaBindingException(
+                    "Unable to create ORB with address " + address);
+        }
+        
+        
+        List<String> orbArgs = new ArrayList<String>(orbConfig.getOrbArgs());
+
+        String scheme = addressURI.getScheme();
+        // A corbaloc address gives us host and port information to use when
+        // setting up the
+        // endpoint for the ORB. Other types of references will just create ORBs
+        // on the
+        // host and port used when no preference has been specified.
+        if (poaName != null) {
+            poaName = poaName.replace('.', '_');
+        }
+        if ("corbaloc".equals(scheme)) {
+            if (poaName == null) {
+                poaName = getEndPointInfo().getName().getLocalPart().replace('.', '_');                
+            }
+            setCorbaLocArgs(addressURI, orbArgs);
+        }
+
+        if (isPersistent) {
+            if (poaName == null) {
+                throw new CorbaBindingException(
+                        "POA name missing for corba port "
+                                + "with a persistent policy");
+            }
+        } else {
+            poaName = CorbaUtils.getUniquePOAName(getEndPointInfo()
+                    .getService().getName(), getEndPointInfo().getName()
+                    .getLocalPart(), poaName).replace('.', '_');
+        }
+
+        orb = getORB(orbArgs, location, props);        
+        
         if (orb == null) {
             LOG.log(Level.INFO, "Creating ORB with address " + location);
             orb = CorbaBindingHelper.createAddressSpecificORB(location, orbConfig);
@@ -165,52 +261,52 @@
         try {
             POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
             POAManager poaManager = rootPOA.the_POAManager();
-
             try {
-                bindingPOA = rootPOA.find_POA("BindingPOA", true);
+                bindingPOA = rootPOA.find_POA(poaName, false);
             } catch (org.omg.PortableServer.POAPackage.AdapterNonExistent ex) {
-                // An AdapterNonExistent exception will be thrown if the POA does not exist.  If
-                // this is the case, then we'll create one.
-                Policy[] policies = new Policy[ orbConfig.isPersistentPoa() ? 3 : 2];
-                policies[0] = rootPOA
-                .create_id_uniqueness_policy(
-                    org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
-                policies[1] = rootPOA
-                        .create_implicit_activation_policy(
-                            org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
-                if (orbConfig.isPersistentPoa()) {
-                    policies[2] = rootPOA
-                        .create_lifespan_policy(org.omg.PortableServer.LifespanPolicyValue.PERSISTENT);
-                }
-                bindingPOA = rootPOA.create_POA("BindingPOA", poaManager, policies);
+                // do nothing
             }
-            
+
+            // When using object references, we can run into a situation where
+            // we are implementing
+            // multiple instances of the same port type such that we would end
+            // up using the same
+            // poaname for each when persistance is used. Handle this case by
+            // not throwing an
+            // exception at this point during the activation, we should see an
+            // exception if we try
+            // an activate two objects with the same servant ID instead.
+            if (bindingPOA != null && !isPersistent) {
+                throw new CorbaBindingException(
+                        "Corba Port activation failed because the poa "
+                                + poaName + " already exists");
+            } else if (bindingPOA == null) {
+                bindingPOA = createPOA(poaName, rootPOA, poaManager);
+            }
+                        
             if (bindingPOA == null) {
                 throw new CorbaBindingException("Unable to create CXF CORBA Binding POA");
             }
 
             CorbaDSIServant servant = new CorbaDSIServant();
             servant.init(orb, bindingPOA, this, incomingObserver, typeMap);
-            objectId = bindingPOA.activate_object(servant);
+            if (serviceId != null) {
+                objectId = serviceId.getBytes();
+                try {
+                    bindingPOA.activate_object_with_id(objectId, servant);
+                } catch (org.omg.PortableServer.POAPackage.ObjectAlreadyActive ex) {
+                    if (!isPersistent) {
+                        throw new CorbaBindingException("Object "
+                                                        + serviceId
+                                                        + " already active for non-persistent poa");
+                    }
+                }
+            } else {                
+                objectId = bindingPOA.activate_object(servant);
+            }
             obj = bindingPOA.id_to_reference(objectId);
+            CorbaUtils.exportObjectReference(orb, obj, location, address);
             
-            if (location.startsWith("relfile:")) {
-                URI iorFile = new URI(location.substring(3));
-                CorbaUtils.exportObjectReferenceToFile(obj, orb, iorFile);
-            } else if (location.startsWith("file:")) {
-                URI uri = new URI(location);
-                CorbaUtils.exportObjectReferenceToFile(obj, orb, uri);
-            } else if (location.startsWith("corbaloc")) {
-                // Try add the key to the boot manager.  This is required for a corbaloc
-                addKeyToBootManager(location, obj);
-            } else if (location.startsWith("corbaname")) {
-                addKeyToNameservice(location, obj);
-            } else {
-                String ior = orb.object_to_string(obj);
-                address.setLocation(ior);
-                URI uri = new URI("endpoint.ior");
-                CorbaUtils.exportObjectReferenceToFile(obj, orb, uri);
-            }
             populateEpr(orb.object_to_string(obj));
             LOG.info("Object Reference: " + orb.object_to_string(obj));
             // TODO: Provide other export mechanisms? 
@@ -220,17 +316,6 @@
         }
     }
 
-    private void addKeyToNameservice(String location, Object ref) throws Exception {
-        int idx = location.indexOf("#");
-        String name = location.substring(idx + 1);
-        
-        //Register in NameService
-        org.omg.CORBA.Object nsObj = orb.resolve_initial_references("NameService");
-        NamingContextExt rootContext = NamingContextExtHelper.narrow(nsObj);
-        NameComponent[] nc = rootContext.to_name(name);
-        rootContext.rebind(nc, ref);
-    }
-
     private void populateEpr(String ior) {
         AttributedURIType addr = new AttributedURIType();
         addr.setValue(ior);
@@ -272,27 +357,65 @@
             }
         }
     }
+    
+    private void setCorbaLocArgs(URI addressURI, List<String> orbArgs) {
+        String schemeSpecificPart = addressURI.getSchemeSpecificPart();
+        int keyIndex = schemeSpecificPart.indexOf('/');
+        String corbaAddr = schemeSpecificPart.substring(0, keyIndex);
+        String key = schemeSpecificPart.substring(keyIndex + 1);
+
+        int index = corbaAddr.indexOf(':');
+        String protocol = "iiop";
+        if (index != 0) {
+            protocol = corbaAddr.substring(0, index);
+        }
+        int oldIndex = index;
+        index = corbaAddr.indexOf(':', oldIndex + 1);
+        String host = corbaAddr.substring(oldIndex + 1, index);
+        String port = corbaAddr.substring(index + 1);
+
+        orbArgs.add("-ORB" + key + ":" + protocol + ":host");
+        orbArgs.add(host);
+        orbArgs.add("-ORB" + key + ":" + protocol + ":port");
+        orbArgs.add(port);
+        orbArgs.add("-ORBpoa:" + poaName + ":direct_persistent");
+        orbArgs.add("true");
+        orbArgs.add("-ORBpoa:" + poaName + ":well_known_address");
+        orbArgs.add(key);
+        isPersistent = true;
+        serviceId = key;
+    }
+
+    protected POA createPOA(String name, POA parentPOA, POAManager poaManager) {
+        List<Policy> policies = new ArrayList<Policy>();
+
+        
+        policies.add(parentPOA
+                .create_thread_policy(ThreadPolicyValue.ORB_CTRL_MODEL));
+
+        if (isPersistent) {
+            policies.add(parentPOA
+                    .create_lifespan_policy(LifespanPolicyValue.PERSISTENT));
+        } else {
+            policies.add(parentPOA
+                    .create_lifespan_policy(LifespanPolicyValue.TRANSIENT));
+        }
+
+        if (serviceId != null) {
+            policies.add(parentPOA
+                            .create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID));
+        }
+
+        
+        policies.addAll(orbConfig.getExtraPolicies());
+        
+        Policy[] policyList = (Policy[])policies.toArray(new Policy[policies.size()]);
 
-    private void addKeyToBootManager(String location, org.omg.CORBA.Object value) {
-        int keyIndex = location.indexOf('/');
-        String key = location.substring(keyIndex + 1);
         try {
-            Class<?> bootMgrHelperClass = Class.forName("org.apache.yoko.orb.OB.BootManagerHelper");
-            Class<?> bootMgrClass = Class.forName("org.apache.yoko.orb.OB.BootManager");
-            Method narrowMethod =
-                bootMgrHelperClass.getMethod("narrow", org.omg.CORBA.Object.class);
-            java.lang.Object bootMgr = narrowMethod.invoke(null,
-                                                           orb.resolve_initial_references("BootManager"));
-            Method addBindingMethod = 
-                bootMgrClass.getMethod("add_binding", byte[].class, org.omg.CORBA.Object.class);
-            addBindingMethod.invoke(bootMgr, key.getBytes(), value);
-            LOG.info("Added key " + key + " to bootmanager");
-        } catch (ClassNotFoundException ex) {
-            //Not supported by the orb. skip it.
-        } catch (java.lang.reflect.InvocationTargetException ex) {
-            //Not supported by the orb. skip it.
+            return parentPOA.create_POA(name, poaManager, policyList);
         } catch (Exception ex) {
-            throw new CorbaBindingException(ex);
+            throw new CorbaBindingException(
+                    "Could not create POA during activation", ex);
         }
     }
 

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/interceptors/CorbaStreamFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/interceptors/CorbaStreamFaultInInterceptor.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/interceptors/CorbaStreamFaultInInterceptor.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/interceptors/CorbaStreamFaultInInterceptor.java Thu Jul 31 20:13:55 2008
@@ -107,9 +107,13 @@
                     Class<?> exClass = fault.getProperty(Class.class.getName(), Class.class);
                     if (exClass != null) {
                         Class<?> beanClass = e.getClass();
-                        Constructor constructor =
+                        Constructor<?> constructor =
                             exClass.getConstructor(new Class[]{String.class, beanClass});
-                        e = constructor.newInstance(new Object[]{"", e});
+                        
+                        String repId = (message.getStreamableException()._type().id() != null) 
+                            ? message.getStreamableException()._type().id()
+                                : "";
+                        e = constructor.newInstance(new Object[]{repId, e});
                     } else {
                         // Get the Fault                         
                         Fault faultEx = (Fault) message.getContent(Exception.class);

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServant.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServant.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServant.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServant.java Thu Jul 31 20:13:55 2008
@@ -39,6 +39,7 @@
 import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.MessageImpl;
 import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.service.model.BindingMessageInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.transport.MessageObserver;
 import org.omg.CORBA.ORB;
@@ -142,15 +143,34 @@
     }
     
     public void invoke(ServerRequest request) throws CorbaBindingException {
+        String opName = request.operation();
+        QName requestOperation = operationMap.get(opName);
+        
         MessageImpl msgImpl = new MessageImpl();
         msgImpl.setDestination(getDestination());
         Exchange exg = new ExchangeImpl();
-        exg.put(String.class, operationMap.get(request.operation()).getLocalPart());
+        exg.put(String.class, requestOperation.getLocalPart());
         exg.put(ORB.class, getOrb());
         exg.put(ServerRequest.class, request);
         msgImpl.setExchange(exg);
         CorbaMessage msg = new CorbaMessage(msgImpl);
         msg.setCorbaTypeMap(typeMap);
+        
+        // If there's no output message part in our operation then it's a oneway op
+        BindingMessageInfo bindingMsgOutputInfo = null;
+        BindingOperationInfo bindingOpInfo = null;
+        try {
+            bindingOpInfo = this.destination.getEndPointInfo().getBinding().getOperation(requestOperation);
+        } catch (Exception ex) {
+            throw new CorbaBindingException("Invalid Request. Operation unknown: " + opName);
+        }
+        if (bindingOpInfo != null) {
+            bindingMsgOutputInfo = bindingOpInfo.getOutput();
+            if (bindingMsgOutputInfo == null) {
+                exg.setOneWay(true);
+            } 
+        }
+        
         // invokes the interceptors
         getObserver().onMessage(msg);
     }

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaFaultStreamWriter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaFaultStreamWriter.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaFaultStreamWriter.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaFaultStreamWriter.java Thu Jul 31 20:13:55 2008
@@ -46,6 +46,7 @@
     protected void setCurrentTypeListener(QName name) throws XMLStreamException {
         QName idlType = exType.getException();
         currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb, serviceInfo);
+        currentTypeListener.setNamespaceContext(ctx);
         listeners[0] = currentTypeListener;
     }
 

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReader.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReader.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReader.java Thu Jul 31 20:13:55 2008
@@ -18,6 +18,8 @@
  */
 package org.apache.cxf.binding.corba.runtime;
 
+
+import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.math.BigInteger;
 import java.util.ArrayList;
@@ -189,7 +191,7 @@
 
     public Integer readUShort() throws CorbaBindingException {
         try {
-            Integer result = new Integer(stream.read_ushort());
+            int result = stream.read_ushort();
             if (result < 0) {
                 result = (result - Short.MIN_VALUE) - Short.MIN_VALUE;
             }
@@ -212,7 +214,9 @@
 
     public BigInteger readULong() throws CorbaBindingException {
         try {
-            return new BigInteger(stream.read_ulong() + "");
+            long l = stream.read_ulong();
+            l &= 0xffffffffL;
+            return BigInteger.valueOf(l);
         } catch (org.omg.CORBA.MARSHAL ex) {
             LOG.log(Level.SEVERE, "CorbaObjectReader: could not read unsigned long");
             throw new CorbaBindingException("CorbaObjectReader: readULong MARSHAL exception", ex);
@@ -230,7 +234,16 @@
 
     public BigInteger readULongLong() throws CorbaBindingException {
         try {
-            return new BigInteger(stream.read_ulonglong() + "");
+            long l = stream.read_ulonglong();
+            if (l < 0) {
+                long l2 = l & 0x7FFFFFFFFFFFFFL;
+                BigInteger i = BigInteger.valueOf(l2);
+                BigInteger i2 = BigInteger.valueOf(0);
+                i2.setBit(63);
+                i = i.or(i2);
+                return i;
+            }
+            return BigInteger.valueOf(l);
         } catch (org.omg.CORBA.MARSHAL ex) {
             LOG.log(Level.SEVERE, "CorbaObjectReader: could not read unsigned long long");
             throw new CorbaBindingException("CorbaObjectReader: readULongLong MARSHAL exception", ex);
@@ -384,11 +397,96 @@
         CorbaArrayHandler arrayObj = (CorbaArrayHandler)obj;
         List<CorbaObjectHandler> arrayElements = arrayObj.getElements();
 
-        for (int i = 0; i < arrayElements.size(); ++i) {
-            this.read(arrayElements.get(i));
+        Object val = null;
+        int arraySize = arrayElements.size();
+        if (arraySize > 0) {
+            switch(arrayElements.get(0).getTypeCodeKind().value()) {
+            case TCKind._tk_boolean: {
+                boolean[] values = new boolean[arraySize];
+                stream.read_boolean_array(values, 0, arraySize); 
+                val = values;
+                break;
+            }
+            case TCKind._tk_char: {
+                char[] values = new char[arraySize];
+                stream.read_char_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_wchar: {
+                char[] values = new char[arraySize];
+                stream.read_wchar_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_octet: {
+                byte[] values = new byte[arraySize];
+                stream.read_octet_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_short: {
+                short[] values = new short[arraySize];
+                stream.read_short_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_ushort: {
+                short[] values = new short[arraySize];
+                stream.read_ushort_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_long: {
+                int[] values = new int[arraySize];
+                stream.read_long_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_ulong: {
+                int[] values = new int[arraySize];
+                stream.read_ulong_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_longlong: {
+                long[] values = new long[arraySize];
+                stream.read_longlong_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_ulonglong: {
+                long[] values = new long[arraySize];
+                stream.read_ulonglong_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_float: {
+                float[] values = new float[arraySize];
+                stream.read_float_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            case TCKind._tk_double: {
+                double[] values = new double[arraySize];
+                stream.read_double_array(values, 0, arraySize);
+                val = values;
+                break;
+            }
+            default:
+                for (int i = 0; i < arrayElements.size(); ++i) {
+                    this.read(arrayElements.get(i));
+                }
+            }
+            if (val != null) {
+                int sz = Array.getLength(val);
+                for (int i = 0; i < sz; i++) {
+                    ((CorbaPrimitiveHandler)arrayElements.get(i)).setValue(Array.get(val, i));
+                }
+            }
         }
     }
-
+    
     public void readSequence(CorbaObjectHandler obj) throws CorbaBindingException {
         if (obj instanceof CorbaOctetSequenceHandler) {
             int length = stream.read_ulong();
@@ -405,7 +503,6 @@
             // existance of template, which will be present for all unbounded sequences and for bound
             // sequences with recursive type elements.  Use the template element to construct each
             // object that is in the input stream.
-            //if (bound == 0) {
             if (sequenceObj.getTemplateElement() != null) {
                 sequenceObj.clear();
                 CorbaObjectHandler template = sequenceObj.getTemplateElement();

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaStreamWriter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaStreamWriter.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaStreamWriter.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/runtime/CorbaStreamWriter.java Thu Jul 31 20:13:55 2008
@@ -19,7 +19,12 @@
 
 package org.apache.cxf.binding.corba.runtime;
 
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.Stack;
 
 import javax.xml.namespace.NamespaceContext;
@@ -44,6 +49,7 @@
     protected CorbaTypeMap typeMap;
     protected ORB orb;
     protected CorbaTypeListener currentTypeListener;
+    protected CorbaNamespaceContext ctx = new CorbaNamespaceContext();
 
     private List<ArgType> params;
     private int paramCounter;
@@ -54,7 +60,6 @@
 
     private boolean skipWrap;
     
-    private NamespaceContext ctx;
 
     public CorbaStreamWriter(ORB orbRef,
                              CorbaTypeMap map,
@@ -104,6 +109,7 @@
                 currentTypeListener.processEndElement(name);
             }
         }
+        ctx.pop();
     }
 
     public void writeStartElement(java.lang.String localName)
@@ -114,7 +120,8 @@
     public void writeStartElement(java.lang.String prefix,
                                   java.lang.String localName,
                                   java.lang.String namespaceURI)
-        throws XMLStreamException {         
+        throws XMLStreamException {
+        ctx.push();
         if (prefix != null) {
             setPrefix(prefix, namespaceURI);
         }
@@ -138,6 +145,7 @@
         QName idlType = param.getIdltype();
         if (!skipWrap || (name.getLocalPart().equals(param.getName()))) {
             currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb, serviceInfo);
+            currentTypeListener.setNamespaceContext(ctx);
             listeners[paramCounter] = currentTypeListener;
             paramCounter++;
         } else {
@@ -268,14 +276,13 @@
 
     public java.lang.String getPrefix(java.lang.String uri)
         throws XMLStreamException {
-        //return ctx.getPrefix(uri);
-        return null;
+        return ctx.getPrefix(uri);
     }
 
     public void setPrefix(java.lang.String prefix,
                           java.lang.String uri)
         throws XMLStreamException {
-        //ctx.setPrefix(prefix, uri);
+        ctx.setPrefix(prefix, uri);
     }
 
     public void setDefaultNamespace(java.lang.String uri)
@@ -285,7 +292,7 @@
 
     public void setNamespaceContext(NamespaceContext context)
         throws XMLStreamException {
-        this.ctx = context;
+        //ignore
     }
 
     public NamespaceContext getNamespaceContext() {
@@ -297,4 +304,73 @@
         return null;
     }
     
+    
+    
+    public class CorbaNamespaceContext implements NamespaceContext {
+
+        private Map<String, String> map;
+        private CorbaNamespaceContext parent;
+
+        public CorbaNamespaceContext() {
+            this.map = new HashMap<String, String>();
+        }
+
+        private CorbaNamespaceContext(Map<String, String> map, CorbaNamespaceContext p) {
+            this.map = map;
+            this.parent = p;
+        }
+        
+        public void push() {
+            parent = new CorbaNamespaceContext(map, parent);
+            map = new HashMap<String, String>();
+        }
+        public void pop() {
+            if (parent != null) {
+                map = parent.map;
+                parent = parent.parent;
+            }
+        }
+        
+        public void setPrefix(String pfx, String ns) {
+            map.put(pfx, ns);
+        }
+        public String getNamespaceURI(String prefix) {
+            String answer = (String) map.get(prefix);
+            if (answer == null && parent != null) {
+                return parent.getNamespaceURI(prefix);
+            }
+            return answer;
+        }
+
+        public String getPrefix(String namespaceURI) {
+            for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
+                Map.Entry entry = (Map.Entry) iter.next();
+                if (namespaceURI.equals(entry.getValue())) {
+                    return (String) entry.getKey();
+                }
+            }
+            if (parent != null) {
+                return parent.getPrefix(namespaceURI);
+            }
+            return null;
+        }
+
+        public Iterator getPrefixes(String namespaceURI) {
+            Set<String> set = new HashSet<String>();
+            for (Map.Entry<String, String> entry : map.entrySet()) {
+                if (namespaceURI.equals(entry.getValue())) {
+                    set.add(entry.getKey());
+                }
+            }
+            if (parent != null) {
+                Iterator iter = parent.getPrefixes(namespaceURI);
+                while (iter.hasNext()) {
+                    set.add((String)iter.next());
+                }
+            }
+            return set.iterator();
+        }
+    }
+
+    
 }

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/AbstractCorbaTypeListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/AbstractCorbaTypeListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/AbstractCorbaTypeListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/AbstractCorbaTypeListener.java Thu Jul 31 20:13:55 2008
@@ -19,17 +19,23 @@
 
 package org.apache.cxf.binding.corba.types;
 
+import javax.xml.namespace.NamespaceContext;
 import javax.xml.namespace.QName;
 
 public abstract class AbstractCorbaTypeListener implements CorbaTypeListener {
 
     protected QName currentElement;
-    protected final CorbaObjectHandler handler;
+    protected CorbaObjectHandler handler;
+    protected NamespaceContext ctx;
+    
 
     public AbstractCorbaTypeListener(CorbaObjectHandler h) {
         handler = h;
     }
 
+    public void setNamespaceContext(NamespaceContext n) {
+        ctx = n;
+    }
 
     public void processStartElement(QName name) {
         currentElement = name;

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaAnyListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaAnyListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaAnyListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaAnyListener.java Thu Jul 31 20:13:55 2008
@@ -19,9 +19,6 @@
 
 package org.apache.cxf.binding.corba.types;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import javax.xml.namespace.QName;
 
 import org.apache.cxf.binding.corba.CorbaTypeMap;
@@ -38,7 +35,6 @@
     private ServiceInfo serviceInfo;
     private CorbaTypeListener currentTypeListener;
     private QName containedType;
-    private Map<String, String> namespaceMap;
 
     public CorbaAnyListener(CorbaObjectHandler h,
                             CorbaTypeMap map,
@@ -48,8 +44,6 @@
         orb = orbRef;
         typeMap = map;
         serviceInfo = info;
-
-        namespaceMap = new HashMap<String, String>();
     }
 
     public void processStartElement(QName name) {
@@ -62,6 +56,7 @@
                                                                     orb,
                                                                     serviceInfo);
 
+            currentTypeListener.setNamespaceContext(ctx);
             CorbaAnyHandler anyHandler = (CorbaAnyHandler)handler;
             // We need an any during the write.  Since we don't have the orb in the writer, create
             // the any here and use it later.
@@ -92,6 +87,7 @@
                                                                                     typeMap,
                                                                                     orb,
                                                                                     serviceInfo);
+            primitiveListener.setNamespaceContext(ctx);
             primitiveListener.processCharacters(text);
 
             CorbaObjectHandler obj = primitiveListener.getCorbaObject();
@@ -111,7 +107,7 @@
             int index = value.lastIndexOf(':');
             if (index != -1) {
                 String pfx = value.substring(0, index);
-                String ns = namespaceMap.get(pfx);
+                String ns = ctx.getNamespaceURI(pfx);
                 containedType = new QName(ns, value.substring(index + 1), pfx);
             } else {
                 containedType = new QName(value);
@@ -119,9 +115,6 @@
         }
     }
 
-    public void processWriteNamespace(String prefix, String namespaceURI) {
-        namespaceMap.put(prefix, namespaceURI);
-    }
 
     private QName convertSchemaToIdlType(QName schemaType) {
         QName idlType = null;

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaArrayListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaArrayListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaArrayListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaArrayListener.java Thu Jul 31 20:13:55 2008
@@ -63,6 +63,7 @@
                                                   typeMap,
                                                   orb,
                                                   serviceInfo);
+            currentTypeListener.setNamespaceContext(ctx);
             value.addElement(currentTypeListener.getCorbaObject());
         } else {
             currentTypeListener.processStartElement(name);

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaExceptionListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaExceptionListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaExceptionListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaExceptionListener.java Thu Jul 31 20:13:55 2008
@@ -60,6 +60,7 @@
                                                   typeMap,
                                                   orb, 
                                                   sInfo);
+            currentTypeListener.setNamespaceContext(ctx);
             ((CorbaExceptionHandler)handler).addMember(currentTypeListener.getCorbaObject());
             memberCount++;
         } else {

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaObjectReferenceEventProducer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaObjectReferenceEventProducer.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaObjectReferenceEventProducer.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaObjectReferenceEventProducer.java Thu Jul 31 20:13:55 2008
@@ -92,7 +92,7 @@
                     eprInfo = getEprMetadataForTypeId(wsdlDef, typeId);
                 } else {
                     LOG.log(Level.SEVERE, "For binding with value \"" + INFER_FROM_TYPE_ID
-                                    + "\" the type_id of the object reference IOR must be set to it's most"
+                                    + "\" the type_id of the object reference IOR must be set to its most"
                                     + " derived type. It is currently null indicating CORBA:Object."
                                     + " Address Url=" + address); 
                 }

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaPrimitiveHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaPrimitiveHandler.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaPrimitiveHandler.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaPrimitiveHandler.java Thu Jul 31 20:13:55 2008
@@ -191,7 +191,7 @@
             obj = new Character(data.charAt(0));
             break;
         case TCKind._tk_octet:
-            obj = new Byte(data);
+            obj = new Short(data).byteValue();
             break;
         case TCKind._tk_short:
             obj = new Short(data);

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaSequenceListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaSequenceListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaSequenceListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaSequenceListener.java Thu Jul 31 20:13:55 2008
@@ -75,6 +75,7 @@
                                                   typeMap,
                                                   orb,
                                                   serviceInfo);
+            currentTypeListener.setNamespaceContext(ctx);
             value.addElement(currentTypeListener.getCorbaObject());
         } else {
             currentTypeListener.processStartElement(name);
@@ -100,6 +101,7 @@
                                                   typeMap,
                                                   orb,
                                                   serviceInfo);
+            primitiveListener.setNamespaceContext(ctx);
             value.addElement(primitiveListener.getCorbaObject());
             primitiveListener.processCharacters(text);
         } else {

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaStructListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaStructListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaStructListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaStructListener.java Thu Jul 31 20:13:55 2008
@@ -31,9 +31,9 @@
 
 public class CorbaStructListener extends AbstractCorbaTypeListener {
 
-    private final List<MemberType> structMembers;
     private final CorbaTypeMap typeMap;
     private final ORB orb;
+    private List<MemberType> structMembers;
     private int memberCount;
     private CorbaTypeListener currentTypeListener;
     private ServiceInfo serviceInfo;
@@ -71,6 +71,7 @@
                                                   typeMap,
                                                   orb,
                                                   serviceInfo);
+            currentTypeListener.setNamespaceContext(ctx);
             ((CorbaStructHandler)handler).addMember(currentTypeListener.getCorbaObject());
             memberCount++;
             if (anonType) {
@@ -96,6 +97,22 @@
     public void processWriteAttribute(String prefix, String namespaceURI, String localName, String value) {
         if (currentTypeListener != null) {
             currentTypeListener.processWriteAttribute(prefix, namespaceURI, localName, value);
+        } else {
+            if ("type".equals(localName)
+                && "http://www.w3.org/2001/XMLSchema-instance".equals(namespaceURI)) {
+                
+                String pfx = value.substring(0, value.indexOf(":"));
+                String ns = ctx.getNamespaceURI(pfx);
+                QName qn = new QName(ns, 
+                                     value.substring(value.indexOf(":") + 1));
+                CorbaTypeListener l = CorbaHandlerUtils.getTypeListener(qn,
+                                                  qn,
+                                                  typeMap,
+                                                  orb,
+                                                  serviceInfo);
+                this.handler = l.getCorbaObject();
+                structMembers = ((Struct) handler.getType()).getMember();
+            }
         }
     }
 

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaTypeListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaTypeListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaTypeListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaTypeListener.java Thu Jul 31 20:13:55 2008
@@ -19,10 +19,13 @@
 
 package org.apache.cxf.binding.corba.types;
 
+import javax.xml.namespace.NamespaceContext;
 import javax.xml.namespace.QName;
 
 public interface CorbaTypeListener {
 
+    void setNamespaceContext(NamespaceContext ctx);
+    
     void processStartElement(QName name);
     void processEndElement(QName name);
     void processCharacters(String text);

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaUnionListener.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaUnionListener.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaUnionListener.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/types/CorbaUnionListener.java Thu Jul 31 20:13:55 2008
@@ -78,6 +78,7 @@
                                                           typeMap,
                                                           orb,
                                                           serviceInfo);
+                    currentTypeListener.setNamespaceContext(ctx);
                     content = currentTypeListener.getCorbaObject();
                     ((CorbaUnionHandler)handler).setValue(branchName, content);
                     if (unionType.isSetNillable() && unionType.isNillable()) {
@@ -117,6 +118,7 @@
                                                   typeMap,
                                                   orb,
                                                   serviceInfo);
+            typeListener.setNamespaceContext(ctx);
             ((CorbaUnionHandler)handler).setValue("value", typeListener.getCorbaObject());
             typeListener.processCharacters(text);
         }

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaBindingHelper.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaBindingHelper.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaBindingHelper.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaBindingHelper.java Thu Jul 31 20:13:55 2008
@@ -21,10 +21,10 @@
 
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 
 import org.apache.cxf.binding.corba.CorbaBindingException;
@@ -34,15 +34,15 @@
 public final class CorbaBindingHelper {
 
     private static final Logger LOG = LogUtils.getL7dLogger(CorbaBindingHelper.class);
-    private static Map<String, ORB> orbList = new HashMap<String, ORB>();
-    private static Map<String, Integer> orbUseCount = new HashMap<String, Integer>();
+    private static Map<String, ORB> orbList = new ConcurrentHashMap<String, ORB>();
+    private static Map<String, Integer> orbUseCount = new ConcurrentHashMap<String, Integer>();
     private static ORB defaultORB;
     
     private CorbaBindingHelper() {
         //utility class
     }
     
-    public static ORB getDefaultORB(OrbConfig config) {        
+    public static synchronized ORB getDefaultORB(OrbConfig config) {        
         if (defaultORB == null) {
             Properties props = System.getProperties();
             if (config.getOrbClass() != null) {

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaUtils.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaUtils.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/CorbaUtils.java Thu Jul 31 20:13:55 2008
@@ -22,13 +22,16 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.lang.reflect.Method;
 import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Stack;
+import java.util.StringTokenizer;
 import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
@@ -36,6 +39,7 @@
 import org.apache.cxf.binding.corba.CorbaBindingException;
 import org.apache.cxf.binding.corba.CorbaStreamable;
 import org.apache.cxf.binding.corba.CorbaTypeMap;
+import org.apache.cxf.binding.corba.wsdl.AddressType;
 import org.apache.cxf.binding.corba.wsdl.Alias;
 import org.apache.cxf.binding.corba.wsdl.Anonarray;
 import org.apache.cxf.binding.corba.wsdl.Anonfixed;
@@ -73,6 +77,9 @@
 import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TypeCode;
 import org.omg.CORBA.UnionMember;
+import org.omg.CosNaming.NameComponent;
+import org.omg.CosNaming.NamingContext;
+import org.omg.CosNaming.NamingContextHelper;
 
 public final class CorbaUtils {
 
@@ -458,8 +465,105 @@
         return map;
     }
     
-    public static void exportObjectReferenceToFile(org.omg.CORBA.Object obj, ORB orb,
-                                                  URI iorFile) 
+    
+    
+    public static boolean isValidURL(String url) {
+        if ((url.startsWith("ior:")) || (url.startsWith("IOR:"))) {
+            return true;
+        } else if (url.startsWith("file:")) {
+            return true;
+        } else if (url.startsWith("corbaloc:")) {
+            return true;
+        } else if (url.startsWith("corbaname:")) {
+            return true;
+        }
+        return false;
+    }
+
+    public static String getUniquePOAName(QName serviceName, String portName, String poaName) {
+        //Create a unique name of the form
+        //"{namespace_uri}service_name#port_name#user_provided_name"
+        //The last part is only appended if it is non empty
+        //
+        String result = "{" + serviceName.getNamespaceURI() + "}"
+            + serviceName.getLocalPart() + "#" + portName;
+
+        if (poaName != null) {
+            result += "#" + poaName;
+        }
+
+        return result;
+    }
+    
+    public static boolean isIOR(String location) {
+        if ((location.startsWith("ior:")) || (location.startsWith("IOR:"))) {
+            return true;
+        }
+        return false;
+    }
+
+
+    public static String exportObjectReference(org.omg.CORBA.Object obj, ORB orb) {
+        String ior = orb.object_to_string(obj);
+        LAST_EXPORT_CACHE.set(new LastExport(ior, obj));
+        return ior;
+    }
+
+    public static void exportObjectReference(ORB orb,
+                                             org.omg.CORBA.Object ref,
+                                             String url,
+                                             AddressType address) 
+        throws URISyntaxException, IOException {
+        
+        if ((url.startsWith("ior:")) || (url.startsWith("IOR:"))) {
+            // make use of Thread cache of last exported IOR
+            String ior = exportObjectReference(ref, orb);
+            address.setLocation(ior);
+        } else if (url.startsWith("file:")) {
+            URI uri = new URI(url);
+            exportObjectReferenceToFile(orb, ref, uri);
+        } else if (url.startsWith("relfile:")) {
+            URI uri = new URI(url.substring(3));
+            exportObjectReferenceToFile(orb, ref, uri);
+        } else if (url.startsWith("corbaloc:")) {
+            exportObjectReferenceToCorbaloc(orb, ref, url);
+        } else if (url.startsWith("corbaname:")) {
+            int hashPos = url.lastIndexOf("#");
+        
+            String namingServiceLocation;
+            String path;
+
+            if (hashPos == -1) {
+                namingServiceLocation = "corbaloc:" + url.substring(10);
+                path = url;
+            } else {
+                namingServiceLocation = "corbaloc:" + url.substring(10, hashPos - 12);
+                path = url.substring(hashPos + 1);
+            }
+
+            int nameServiceObjectKeyPos = namingServiceLocation.indexOf("/NameService");
+
+            if (nameServiceObjectKeyPos == -1
+                || nameServiceObjectKeyPos != namingServiceLocation.length() - 12) {
+                namingServiceLocation += "/NameService";
+            }
+
+            exportObjectReferenceToNamingService(orb,
+                                                 namingServiceLocation,
+                                                 ref,
+                                                 path);
+        } else {
+            String ior = orb.object_to_string(ref);
+            address.setLocation(ior);
+            URI uri = new URI("endpoint.ior");
+            CorbaUtils.exportObjectReferenceToFile(orb, ref, uri);
+        }
+    }
+
+
+    public static void exportObjectReferenceToFile(ORB orb,
+                                                   org.omg.CORBA.Object obj,
+                                                   URI iorFile) 
         throws IOException {
         String ref = orb.object_to_string(obj);
         File f = null;
@@ -475,13 +579,109 @@
         file.close();
     }
 
+    private static void exportObjectReferenceToNamingService(NamingContext namingService,
+                                                             org.omg.CORBA.Object object,
+                                                             String path) {
+        NameComponent[] names = namingServiceStringToNameComponents(path);
 
-    public static String exportObjectReference(org.omg.CORBA.Object obj, ORB orb) {
-        String ior = orb.object_to_string(obj);
-        LAST_EXPORT_CACHE.set(new LastExport(ior, obj));
-        return ior;
+
+        // (re)bind the object into the Naming Service
+        //
+        try {
+            namingService.rebind(names, object);
+        } catch (Throwable t) {
+            throw new RuntimeException(t);
+        }
     }
 
+    private static NameComponent[] namingServiceStringToNameComponents(String str) {
+        if ("".equals(str)) {
+            return new NameComponent[0];
+        }
+
+        // Split the string into NameComponents, delimited by '/'
+        //
+        StringTokenizer components = new StringTokenizer(str, "/");
+        if (!components.hasMoreTokens()) {
+            return new NameComponent[0];
+        }
+
+        // Allocate space for the result
+        //
+        NameComponent[] result = new NameComponent[components.countTokens()];
+
+        if (components.countTokens() == 1) {
+            result[0] = new NameComponent(str, "");
+            return result;
+        }
+        
+        // Iterate over all the components, splitting each into
+        // its "id" and "kind" fields, and copying into "result".
+        //
+        int count = 0;
+        while (components.hasMoreTokens()) {
+            StringTokenizer idAndKind = new StringTokenizer(components.nextToken(), ".");
+            if (!idAndKind.hasMoreTokens()) {
+                return new NameComponent[0];
+            }
+            if (idAndKind.countTokens() > 2) {
+                return new NameComponent[0];
+            }
+            result[count] = new NameComponent();
+            result[count].id = idAndKind.nextToken().replaceAll("\\", "");
+            if (idAndKind.hasMoreTokens()) {
+                result[count].kind = idAndKind.nextToken().replaceAll("\\", "");
+            } else {
+                result[count].kind = "";
+            }
+            count++;
+        }
+
+        return result;
+    }
+
+
+    private static void exportObjectReferenceToNamingService(ORB orb,
+                                                             String namingServiceLocation,
+                                                             org.omg.CORBA.Object object,
+                                                             String path) {
+        org.omg.CORBA.Object obj = orb.string_to_object(namingServiceLocation);
+        NamingContext namingService = NamingContextHelper.narrow(obj);
+        if (namingService == null) {
+            throw new RuntimeException("NamingContext for " + namingServiceLocation + " not found");
+        }
+        exportObjectReferenceToNamingService(namingService,
+                                             object,
+                                             path);
+    }
+
+
+    private static void exportObjectReferenceToCorbaloc(ORB orb,
+                                                        org.omg.CORBA.Object object,
+                                                        String location) {
+        int keyIndex = location.indexOf('/');
+        String key = location.substring(keyIndex + 1);
+        try {
+            Class<?> bootMgrHelperClass = Class.forName("org.apache.yoko.orb.OB.BootManagerHelper");
+            Class<?> bootMgrClass = Class.forName("org.apache.yoko.orb.OB.BootManager");
+            Method narrowMethod =
+                bootMgrHelperClass.getMethod("narrow", org.omg.CORBA.Object.class);
+            java.lang.Object bootMgr = narrowMethod.invoke(null,
+                                                           orb.resolve_initial_references("BootManager"));
+            Method addBindingMethod = 
+                bootMgrClass.getMethod("add_binding", byte[].class, org.omg.CORBA.Object.class);
+            addBindingMethod.invoke(bootMgr, key.getBytes(), object);
+            LOG.info("Added key " + key + " to bootmanager");
+        } catch (ClassNotFoundException ex) {
+            //Not supported by the orb. skip it.
+        } catch (java.lang.reflect.InvocationTargetException ex) {
+            //Not supported by the orb. skip it.
+        } catch (java.lang.Exception ex) {
+            throw new CorbaBindingException(ex.getMessage(), ex);
+        }
+    }
+    
+
     public static org.omg.CORBA.Object importObjectReference(ORB orb,
                                                              String url) {
         org.omg.CORBA.Object result;

Modified: cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/OrbConfig.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/OrbConfig.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/OrbConfig.java (original)
+++ cxf/trunk/rt/bindings/corba/src/main/java/org/apache/cxf/binding/corba/utils/OrbConfig.java Thu Jul 31 20:13:55 2008
@@ -22,11 +22,14 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.omg.CORBA.Policy;
+
 public class OrbConfig {
 
     String orbClass;
     String orbSingletonClass;
     List<String> orbArgs = new ArrayList<String>();
+    List<Policy> policies = new ArrayList<Policy>();
     
     boolean persistentPoa;
     
@@ -64,5 +67,9 @@
     public boolean isPersistentPoa() {
         return persistentPoa;
     }
+    
+    public List<Policy> getExtraPolicies() {
+        return policies;
+    }
 
 }

Modified: cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServantTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServantTest.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServantTest.java (original)
+++ cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaDSIServantTest.java Thu Jul 31 20:13:55 2008
@@ -27,14 +27,15 @@
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactory;
+import org.apache.cxf.binding.corba.CorbaDestination;
+import org.apache.cxf.binding.corba.TestUtils;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.transport.MessageObserver; 
-import org.easymock.classextension.EasyMock;
-import org.easymock.classextension.IMocksControl;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
+import org.omg.CORBA.Context;
 import org.omg.CORBA.ORB;
 import org.omg.CORBA.ServerRequest;
 
@@ -98,26 +99,31 @@
         
     @Test
     public void testInvoke() throws Exception {
-        CorbaDSIServant dsiServant = new CorbaDSIServant();       
-        IMocksControl control = EasyMock.createNiceControl();
-        ServerRequest request = EasyMock.createMock(ServerRequest.class);
-        String opName = "greetMe";
-        EasyMock.expect(request.operation()).andReturn(opName);
+        
+        CorbaDestination dest = new TestUtils().getComplexTypesTestDestination();
+
+        
+        CorbaDSIServant dsiServant = new CorbaDSIServant();
+        dsiServant.init(orb, null, dest, null);
+        ServerRequest request = new ServerRequest() {
+            public String operation() {
+                return "greetMe";
+            }
+            public Context ctx() {
+                return null;
+            }
+            
+        };
+        
         MessageObserver incomingObserver = new TestObserver();               
         dsiServant.setObserver(incomingObserver);
         
         Map<String, QName> map = new HashMap<String, QName>(2);
-        // REVISIT: Something is not setup quite right with this test.  In 
-        // the DSI Servant, we don't get the expected request operation name
-        // that we set above.  Instead, we get a null value.  For now, just 
-        // add null to the operation map until we know how to fix the test.
+
         map.put("greetMe", new QName("greetMe"));
-        map.put(null, new QName("greetMe"));
         dsiServant.setOperationMapping(map);
         
-        control.replay();
         dsiServant.invoke(request);
-        control.verify();        
     }
         
     class TestObserver implements MessageObserver {

Modified: cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReaderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReaderTest.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReaderTest.java (original)
+++ cxf/trunk/rt/bindings/corba/src/test/java/org/apache/cxf/binding/corba/runtime/CorbaObjectReaderTest.java Thu Jul 31 20:13:55 2008
@@ -190,13 +190,13 @@
     @Test
     public void testReadULongLong() {
         OutputStream oStream = orb.create_output_stream();
-        oStream.write_ulonglong(-1000000000);
+        oStream.write_ulonglong(-1000000000L);
         
         InputStream iStream = oStream.create_input_stream();
         CorbaObjectReader reader = new CorbaObjectReader(iStream);
         
         BigInteger ulonglongValue = reader.readULongLong();
-        assertTrue(ulonglongValue.longValue() == -1000000000);
+        assertEquals(1, ulonglongValue.signum());
     }
     
     @Test

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient.java Thu Jul 31 20:13:55 2008
@@ -277,7 +277,7 @@
         if (!shouldRunTest("UnsignedInt")) {
             return;
         }
-        long valueSets[][] = {{11, 20}, {1, 0}, {0, ((long)Integer.MAX_VALUE) * 2 + 1}};
+        long valueSets[][] = {{0, ((long)Integer.MAX_VALUE) * 2 + 1}, {11, 20}, {1, 0}};
 
         for (int i = 0; i < valueSets.length; i++) {
             long x = valueSets[i][0];
@@ -294,7 +294,8 @@
                 ret = rpcClient.testUnsignedInt(x, y, z);
             }
             if (!perfTestOnly) {
-                assertEquals("testUnsignedInt(): Incorrect value for inout param", Long.valueOf(x), y.value);
+                assertEquals("testUnsignedInt(): Incorrect value for inout param",
+                             Long.valueOf(x), y.value);
                 assertEquals("testUnsignedInt(): Incorrect value for out param",
                              Long.valueOf(yOrig), z.value);
                 assertEquals("testUnsignedInt(): Incorrect return value", x, ret);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient3.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient3.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient3.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient3.java Thu Jul 31 20:13:55 2008
@@ -544,6 +544,10 @@
         assertNotNull(y.value);
         assertNotNull(z.value);
         assertNotNull(ret);
+        
+        assertTrue(y.value instanceof DerivedEmptyBaseEmptyAll);
+        assertTrue(z.value instanceof DerivedEmptyBaseEmptyAll);
+        assertTrue(ret instanceof DerivedEmptyBaseEmptyAll);
     }
 
     //org.apache.type_test.types1.DerivedEmptyBaseEmptyChoice
@@ -569,6 +573,10 @@
         assertNotNull(y.value);
         assertNotNull(z.value);
         assertNotNull(ret);
+        
+        assertTrue(y.value instanceof DerivedEmptyBaseEmptyChoice);
+        assertTrue(z.value instanceof DerivedEmptyBaseEmptyChoice);
+        assertTrue(ret instanceof DerivedEmptyBaseEmptyChoice);
     }
 
     //org.apache.type_test.types1.RestrictedChoiceBaseChoice

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient4.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient4.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient4.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/AbstractTypeTestClient4.java Thu Jul 31 20:13:55 2008
@@ -2168,5 +2168,9 @@
         assertNotNull("testInheritanceEmptyAllDerivedEmpty()", y.value);
         assertNotNull("testInheritanceEmptyAllDerivedEmpty()", z.value);
         assertNotNull("testInheritanceEmptyAllDerivedEmpty()", ret);
+        
+        assertTrue(y.value.getClass().getName(), y.value instanceof DerivedEmptyBaseEmptyAll);
+        assertTrue(z.value.getClass().getName(), z.value instanceof DerivedEmptyBaseEmptyAll);
+        assertTrue(ret.getClass().getName(), ret instanceof DerivedEmptyBaseEmptyAll);
     }
 }

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/corba/CORBADocLitClientTypeTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/corba/CORBADocLitClientTypeTest.java?rev=681597&r1=681596&r2=681597&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/corba/CORBADocLitClientTypeTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/type_test/corba/CORBADocLitClientTypeTest.java Thu Jul 31 20:13:55 2008
@@ -45,7 +45,7 @@
     private static final Set<String> NOT_RUN_TESTS = new HashSet<String>();
     static {
         String working[] = new String[] {
-            "InheritanceEmptyAllDerivedEmpty",
+            //"InheritanceEmptyAllDerivedEmpty",
             "DerivedEmptyBaseEmptyAll",
             "DerivedEmptyBaseEmptyChoice",
             "MultipleOccursSequenceInSequence",
@@ -68,7 +68,7 @@
             "Short",
             "UnsignedShort",
             "Int",
-            //"UnsignedInt",
+            "UnsignedInt",
             "Long",
             "UnsignedLong",
             "Float",
@@ -122,11 +122,11 @@
         initClient(AbstractTypeTestClient5.class, SERVICE_NAME, PORT_NAME, WSDL_PATH);
     }
     @AfterClass
-    public static void printNotRun() throws Exception {
+    public static void deleteRefFile() throws Exception {
         File file = new File("./TypeTest.ref");
         file.delete();
         //for (String s : NOT_RUN_TESTS) {
-            //System.out.println(s);
+        //    System.out.println(s);
         //}
     }
 
@@ -134,6 +134,7 @@
         if (!WORKING_TESTS.contains(name)) {
             NOT_RUN_TESTS.add(name);
             return false;
+            //return true;
         }
         return true;
     }