You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by dm...@apache.org on 2007/03/05 19:45:03 UTC
svn commit: r514833 - in /incubator/yoko/trunk/bindings/src:
main/java/org/apache/yoko/bindings/corba/
test/java/org/apache/yoko/bindings/corba/
Author: dmiddlem
Date: Mon Mar 5 11:45:02 2007
New Revision: 514833
URL: http://svn.apache.org/viewvc?view=rev&rev=514833
Log:
Updates to WS-Addressing support for CORBA object references (YOKO-270)
Added:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java (with props)
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/CorbaDSIServant.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/CorbaServerConduit.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReaderTest.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectWriterTest.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java
incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/IdlToWsdlTypeTestServer.java
Added: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java?view=auto&rev=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java (added)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java Mon Mar 5 11:45:02 2007
@@ -0,0 +1,139 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.yoko.bindings.corba;
+
+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.logging.Logger;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.omg.CORBA.ORB;
+
+public class CorbaBindingHelper {
+
+ private static final Logger LOG = LogUtils.getL7dLogger(CorbaBindingHelper.class);
+ private static Map<String, ORB> orbList = new HashMap<String, ORB>();
+ private static ORB defaultORB;
+
+ public static ORB getDefaultORB(OrbConfig config) {
+
+ if (defaultORB == null) {
+ Properties props = System.getProperties();
+ props.put("org.omg.CORBA.ORBClass", config.getOrbClass());
+ props.put("org.omg.CORBA.ORBSingletonClass", config.getOrbSingletonClass());
+ props.put("yoko.orb.id", "Yoko-Binding");
+ List<String> orbArgs = config.getOrbArgs();
+ defaultORB = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
+ if (defaultORB == null) {
+ LOG.severe("Could not create instance of the ORB");
+ throw new CorbaBindingException("Could not create instance of the ORB");
+ }
+ }
+ return defaultORB;
+ }
+
+ public static ORB createAddressSpecificORB(String address, OrbConfig config) {
+ ORB orb = null;
+
+ URI addressURI = null;
+ try {
+ addressURI = new URI(address);
+ } catch (URISyntaxException ex) {
+ throw new CorbaBindingException("Unable to create ORB with address " + address);
+ }
+
+ Properties props = System.getProperties();
+ props.put("org.omg.CORBA.ORBClass", config.getOrbClass());
+ props.put("org.omg.CORBA.ORBSingletonClass", config.getOrbSingletonClass());
+ props.put("yoko.orb.id", "Yoko-Binding-" + address);
+ List<String> orbArgs = config.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 (scheme.equals("corbaloc")) {
+ String schemeSpecificPart = addressURI.getSchemeSpecificPart();
+ int keyIndex = schemeSpecificPart.indexOf('/');
+ String corbaAddr = schemeSpecificPart.substring(0, keyIndex);
+
+ 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);
+
+ props.put("yoko.orb.oa.endpoint", new String(protocol + " --host " + host + " --port " + port));
+
+ orb = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
+
+ orbList.put(getORBNameFromAddress(address), orb);
+ } else if (scheme.equals("file") || scheme.equals("relfile") || scheme.equals("IOR")) {
+ orb = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
+
+ orbList.put(getORBNameFromAddress(address), orb);
+ } else {
+ throw new CorbaBindingException("Unsupported address scheme type " + scheme);
+ }
+
+ return orb;
+ }
+
+ public static ORB getAddressSpecificORB(String address) {
+ return orbList.get(getORBNameFromAddress(address));
+ }
+
+ public static String getORBNameFromAddress(String address) {
+ String name = null;
+
+ URI addressURI = null;
+ try {
+ addressURI = new URI(address);
+ } catch (URISyntaxException ex) {
+ throw new CorbaBindingException("Unable to locate ORB with address " + address);
+ }
+
+ String scheme = addressURI.getScheme();
+ if (scheme.equals("corbaloc")) {
+ String schemeSpecificPart = addressURI.getSchemeSpecificPart();
+ int keyIndex = schemeSpecificPart.indexOf('/');
+ name = schemeSpecificPart.substring(0, keyIndex);
+ } else if (scheme.equals("IOR")) {
+ name = addressURI.toString();
+ } else if (scheme.equals("file") || scheme.equals("relfile")) {
+ name = addressURI.getPath();
+ if (name == null) {
+ name = addressURI.getSchemeSpecificPart();
+ }
+ } else {
+ throw new CorbaBindingException("Unsupported address scheme type " + scheme);
+ }
+
+ return name;
+ }
+}
Propchange: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingHelper.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=514833&r1=514832&r2=514833
==============================================================================
--- 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 Mon Mar 5 11:45:02 2007
@@ -77,18 +77,7 @@
endpointInfo = ei;
target = getTargetReference(ref);
orbConfig = config;
- // TODO: Set any additional properties needed to initialize the ORB before
- // we initialize it.
- java.util.Properties props = System.getProperties();
- props.put("org.omg.CORBA.ORBClass", orbConfig.getOrbClass());
- props.put("org.omg.CORBA.ORBSingletonClass", orbConfig.getOrbSingletonClass());
- props.put("yoko.orb.id", "Yoko-Client-Binding");
- List<String> orbArgs = orbConfig.getOrbArgs();
- orb = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
- if (orb == null) {
- LOG.severe("Could not create instance of the ORB");
- throw new CorbaBindingException("Could not create instance of the ORB");
- }
+ orb = CorbaBindingHelper.getDefaultORB(config);
}
public void send(Message message) throws IOException {
@@ -115,6 +104,7 @@
message.setContent(OutputStream.class,
new CorbaOutputStream(message));
} catch (java.lang.Exception ex) {
+ ex.printStackTrace();
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/CorbaDSIServant.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java?view=diff&rev=514833&r1=514832&r2=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java Mon Mar 5 11:45:02 2007
@@ -50,9 +50,9 @@
}
public void init(ORB theOrb,
- POA poa,
- CorbaDestination dest,
- MessageObserver observer) {
+ POA poa,
+ CorbaDestination dest,
+ MessageObserver observer) {
orb = theOrb;
servantPOA = poa;
destination = dest;
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=514833&r1=514832&r2=514833
==============================================================================
--- 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 Mon Mar 5 11:45:02 2007
@@ -20,7 +20,7 @@
package org.apache.yoko.bindings.corba;
import java.io.IOException;
-import java.util.List;
+//import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -102,64 +102,57 @@
}
public synchronized void setMessageObserver(MessageObserver observer) {
- String location = address.getLocation();
- LOG.info("Service address retrieved: " + location);
+ String location = null;
+ if (endpointInfo != null) {
+ location = endpointInfo.getAddress();
+ }
- // TODO: Get any configuration options for the ORB and set the appropriate properties.
- java.util.Properties props = System.getProperties();
- props.put("org.omg.CORBA.ORBClass", orbConfig.getOrbClass());
- props.put("org.omg.CORBA.ORBSingletonClass", orbConfig.getOrbSingletonClass());
- props.put("yoko.orb.id", "Yoko-Server-Binding");
-
- // If we have one of these two types of addresses, we should specify the address
- // and port information as properties to the ORB during initialization.
- if (location.startsWith("IOR:")) {
- // TODO: How to handle this? Can we obtain port/host information from the IOR
- // or do we just want to let the ORB pick the port and export the IOR to the
- // Logs?
- } else if (location.startsWith("corbaloc")) {
- int corbalocIndex = location.indexOf(":");
- int protocolIndex = location.indexOf(":", corbalocIndex + 1);
- String protocol = location.substring(corbalocIndex + 1, protocolIndex);
- int hostIndex = location.indexOf(":", protocolIndex + 1);
- String host = location.substring(protocolIndex + 1, hostIndex);
- // the port number should be followed by a '/' character
- int portIndex = location.indexOf("/", hostIndex + 1);
- String port = location.substring(hostIndex + 1, portIndex);
- if (protocol.length() == 0) {
- // This means no protocol was defined. Default to iiop
- protocol = "iiop";
- }
- props.put("yoko.orb.oa.endpoint", new String(protocol + " --host " + host + " --port " + port));
- LOG.info("Set server endpoint: " + protocol + " --host " + host + " --port " + port);
+ if (location == null) {
+ location = address.getLocation();
+ }
+ LOG.info("Service address retrieved: " + location);
+
+ orb = CorbaBindingHelper.getAddressSpecificORB(location);
+ if (orb == null) {
+ LOG.log(Level.INFO, "Creating ORB with address " + location);
+ orb = CorbaBindingHelper.createAddressSpecificORB(location, orbConfig);
}
- List<String> orbArgs = orbConfig.getOrbArgs();
- orb = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
activate(observer);
}
public void activate(MessageObserver observer) {
// Get the address that the DSI servant should be publishing
String location = address.getLocation();
-
+
org.omg.CORBA.Object obj = null;
try {
POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
POAManager poaManager = rootPOA.the_POAManager();
- Policy[] policies = new Policy[3];
- policies[0] = rootPOA
- .create_lifespan_policy(
- org.omg.PortableServer.LifespanPolicyValue.PERSISTENT);
- policies[1] = rootPOA
- .create_implicit_activation_policy(
- org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
- policies[2] = rootPOA
- .create_id_uniqueness_policy(
- org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+ POA bindingPOA = null;
+ try {
+ bindingPOA = rootPOA.find_POA("BindingPOA", true);
+ } 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[3];
+ policies[0] = rootPOA
+ .create_lifespan_policy(
+ org.omg.PortableServer.LifespanPolicyValue.PERSISTENT);
+ policies[1] = rootPOA
+ .create_implicit_activation_policy(
+ org.omg.PortableServer.ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION);
+ policies[2] = rootPOA
+ .create_id_uniqueness_policy(
+ org.omg.PortableServer.IdUniquenessPolicyValue.UNIQUE_ID);
+
+ bindingPOA = rootPOA.create_POA("BindingPOA", poaManager, policies);
+ }
+
+ if (bindingPOA == null) {
+ throw new CorbaBindingException("Unable to create Yoko Binding POA");
+ }
- POA bindingPOA = rootPOA.create_POA("BindingPOA", poaManager, policies);
- // CorbaDSIServant servant = new CorbaDSIServant(orb, bindingPOA, this, observer);
CorbaDSIServant servant = new CorbaDSIServant();
servant.init(orb, bindingPOA, this, observer);
byte[] objectId = bindingPOA.activate_object(servant);
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=514833&r1=514832&r2=514833
==============================================================================
--- 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 Mon Mar 5 11:45:02 2007
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.io.OutputStream;
-import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -44,9 +43,8 @@
import org.omg.CORBA.ORB;
import org.omg.CORBA.ServerRequest;
-
public class CorbaServerConduit implements Conduit {
- private static final Logger LOG = LogUtils.getL7dLogger(CorbaConduit.class);
+ private static final Logger LOG = LogUtils.getL7dLogger(CorbaServerConduit.class);
private EndpointInfo endpointInfo;
private EndpointReferenceType target;
@@ -56,19 +54,7 @@
public CorbaServerConduit(EndpointInfo ei, EndpointReferenceType ref, OrbConfig config) {
endpointInfo = ei;
target = getTargetReference(ref);
- // TODO: Set any additional properties needed to initialize the ORB before
- // we initialize it. We will get this information from the Celtix configuration
- // that is used with the current application.
- java.util.Properties props = System.getProperties();
- props.put("org.omg.CORBA.ORBClass", config.getOrbClass());
- props.put("org.omg.CORBA.ORBSingletonClass", config.getOrbSingletonClass());
- props.put("yoko.orb.id", "Yoko-Client-Binding");
- List<String> orbArgs = config.getOrbArgs();
- orb = ORB.init(orbArgs.toArray(new String[orbArgs.size()]), props);
- if (orb == null) {
- LOG.severe("Could not create instance of the ORB");
- throw new CorbaBindingException("Could not create instance of the ORB");
- }
+ orb = CorbaBindingHelper.getDefaultORB(config);
}
public void send(Message message) throws IOException {
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java?view=diff&rev=514833&r1=514832&r2=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java Mon Mar 5 11:45:02 2007
@@ -1316,6 +1316,12 @@
CorbaObjectReferenceHandler objRefHandler = (CorbaObjectReferenceHandler)obj;
org.omg.CORBA.Object corbaObject = objRefHandler.getReference();
+ // There is a situation where the ORB may not yet be initialized. If this is the case,
+ // a default ORB will do
+ if (orb == null) {
+ orb = CorbaBindingHelper.getDefaultORB(new OrbConfig());
+ }
+
// Register the servant if not already done.
String objAddress = orb.object_to_string(corbaObject);
org.omg.CORBA.Object servant = CorbaObjectReferenceHelper.getReferenceById(objAddress);
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReaderTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReaderTest.java?view=diff&rev=514833&r1=514832&r2=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReaderTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectReaderTest.java Mon Mar 5 11:45:02 2007
@@ -19,6 +19,7 @@
package org.apache.yoko.bindings.corba;
import java.math.BigInteger;
+import java.net.URL;
import java.util.List;
import javax.xml.namespace.QName;
@@ -44,6 +45,7 @@
import org.apache.yoko.bindings.corba.types.CorbaExceptionHandler;
import org.apache.yoko.bindings.corba.types.CorbaFixedHandler;
import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
+import org.apache.yoko.bindings.corba.types.CorbaObjectReferenceHandler;
import org.apache.yoko.bindings.corba.types.CorbaPrimitiveHandler;
import org.apache.yoko.bindings.corba.types.CorbaSequenceHandler;
import org.apache.yoko.bindings.corba.types.CorbaStructHandler;
@@ -505,5 +507,40 @@
reader.readFixed(obj);
assertTrue(obj.getValue().equals(new java.math.BigDecimal("12345.67")));
+ }
+
+ public void testReadObjectReference() {
+ Buffer buf = new Buffer();
+ OutputStream oStream = new OutputStream(buf);
+
+ URL refUrl = getClass().getResource("/references/account.ref");
+ System.out.println("DEBUG > Path = " + refUrl.getPath());
+ org.omg.CORBA.Object objRef = orb.string_to_object("file://" + refUrl.getPath());
+ assertNotNull(objRef);
+ oStream.write_Object(objRef);
+ // we need an ORBinstance to handle reading objects so use the Yoko input stream and
+ // ORB_impl
+ org.apache.yoko.orb.CORBA.InputStream iStream =
+ (org.apache.yoko.orb.CORBA.InputStream)oStream.create_input_stream();
+ org.apache.yoko.orb.OBCORBA.ORB_impl o = (org.apache.yoko.orb.OBCORBA.ORB_impl)orb;
+ iStream._OB_ORBInstance(o._OB_ORBInstance());
+
+ CorbaObjectReader reader = new CorbaObjectReader(iStream);
+
+ // create a test object
+ org.apache.schemas.yoko.bindings.corba.Object objectType =
+ new org.apache.schemas.yoko.bindings.corba.Object();
+ objectType.setRepositoryID("IDL:Account:1.0");
+ objectType.setBinding(new QName("AccountCORBABinding"));
+
+ QName objectName = new QName("TestObject");
+ QName objectIdlType = new QName("corbaatm:TestObject");
+ TypeCode objectTC = orb.create_interface_tc("IDL:Account:1.0", "TestObject");
+
+ CorbaObjectReferenceHandler obj = new CorbaObjectReferenceHandler(objectName, objectIdlType,
+ objectTC, objectType);
+
+ reader.readObjectReference(obj);
+ assertTrue(obj.getReference()._is_equivalent(objRef));
}
}
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectWriterTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectWriterTest.java?view=diff&rev=514833&r1=514832&r2=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectWriterTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaObjectWriterTest.java Mon Mar 5 11:45:02 2007
@@ -19,6 +19,8 @@
package org.apache.yoko.bindings.corba;
import java.math.BigInteger;
+import java.net.URL;
+
import javax.xml.namespace.QName;
import junit.framework.TestCase;
@@ -36,6 +38,7 @@
import org.apache.yoko.bindings.corba.types.CorbaArrayHandler;
import org.apache.yoko.bindings.corba.types.CorbaExceptionHandler;
+import org.apache.yoko.bindings.corba.types.CorbaObjectReferenceHandler;
import org.apache.yoko.bindings.corba.types.CorbaPrimitiveHandler;
import org.apache.yoko.bindings.corba.types.CorbaSequenceHandler;
import org.apache.yoko.bindings.corba.types.CorbaStructHandler;
@@ -439,5 +442,43 @@
assertTrue(readCode == code);
String readMessage = iStream.read_string();
assertTrue(readMessage.equals(message));
+ }
+
+ public void testWriteObject() {
+ URL refUrl = getClass().getResource("/references/account.ref");
+ org.omg.CORBA.Object objRef =
+ orb.string_to_object("file://" + refUrl.getPath());
+ assertNotNull(objRef);
+
+ // create a test object
+ org.apache.schemas.yoko.bindings.corba.Object objectType =
+ new org.apache.schemas.yoko.bindings.corba.Object();
+ objectType.setRepositoryID("IDL:Account:1.0");
+ objectType.setBinding(new QName("AccountCORBABinding"));
+
+ QName objectName = new QName("TestObject");
+ QName objectIdlType = new QName("corbaatm:TestObject");
+ TypeCode objectTC = orb.create_interface_tc("IDL:Account:1.0", "TestObject");
+
+ CorbaObjectReferenceHandler obj = new CorbaObjectReferenceHandler(objectName, objectIdlType,
+ objectTC, objectType);
+ obj.setReference(objRef);
+
+ Buffer buf = new Buffer();
+ OutputStream oStream = new OutputStream(buf);
+ CorbaObjectWriter writer = new CorbaObjectWriter(oStream);
+ writer.writeObjectReference(obj);
+
+ // we need an ORBinstance to handle reading objects so use the Yoko input stream and
+ // ORB_impl
+ org.apache.yoko.orb.CORBA.InputStream iStream =
+ (org.apache.yoko.orb.CORBA.InputStream)oStream.create_input_stream();
+ org.apache.yoko.orb.OBCORBA.ORB_impl o = (org.apache.yoko.orb.OBCORBA.ORB_impl)orb;
+ iStream._OB_ORBInstance(o._OB_ORBInstance());
+
+ //InputStream iStream = oStream.create_input_stream();
+
+ org.omg.CORBA.Object resultObj = iStream.read_Object();
+ assertTrue(resultObj._is_equivalent(obj.getReference()));
}
}
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java?view=diff&rev=514833&r1=514832&r2=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaStaxObjectTest.java Mon Mar 5 11:45:02 2007
@@ -116,7 +116,7 @@
}
public void tearDown() throws Exception {
- super.setUp();
+ super.tearDown();
if (orb != null) {
try {
orb.destroy();
Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/IdlToWsdlTypeTestServer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/IdlToWsdlTypeTestServer.java?view=diff&rev=514833&r1=514832&r2=514833
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/IdlToWsdlTypeTestServer.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/IdlToWsdlTypeTestServer.java Mon Mar 5 11:45:02 2007
@@ -36,7 +36,8 @@
public void _start() {
Object implementor = new IdlToWsdlTypeTestImpl();
- String address = "corbaloc::localhost:40012/type_test";
+ //String address = "corbaloc::localhost:40012/type_test";
+ String address = "corbaloc::localhost:40010/idltowsdl_type_test";
Endpoint.publish(address, implementor);
serverReady = true;
}