/**
*
* 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 test.rmi;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.HashMap;
import javax.rmi.PortableRemoteObject;
import javax.rmi.CORBA.Stub;
import javax.rmi.CORBA.Util;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.Servant;
import junit.framework.Assert;
public class ClientMain extends Assert {
public static class Test extends Assert {
private Sample sample;
public Test(Sample sample) {
this.sample = sample;
}
// Test invoking methods with primitive arguments
public void testPrimitive() throws RemoteException {
sample.setBoolean(true);
assertTrue(sample.getBoolean());
sample.setByte((byte)64);
assertEquals((byte)64, sample.getByte());
sample.setShort((short)128);
assertEquals((short)128, sample.getShort());
sample.setInt(256);
assertEquals(256, sample.getInt());
sample.setLong(512);
assertEquals(512, sample.getLong());
sample.setChar('a');
assertEquals('a', sample.getChar());
}
// Invoke method with String argument
public void testString() throws RemoteException {
sample.setString("hello");
assertEquals("hello", sample.getString());
}
public void testIntArray() throws RemoteException {
int[] intArray = new int[] {1, 2, 3};
sample.setIntArray(intArray);
int[] intArray2 = sample.getIntArray();
for(int i = 0; i < intArray.length; i++) {
assertEquals(intArray[i], intArray2[i]);
}
}
public void testBasicSerializable() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
}
public void testRemoteAttributeOnServer() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
ser.setRemote(sample);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
Sample sample2 = (Sample) PortableRemoteObject.narrow(ser2.getRemote(), Sample.class);
assertEquals(sample, sample2);
}
public void testRemoteAttributeOnClient() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
SampleRemote sampleRemote = new SampleRemoteImpl();
ser.setRemote(sampleRemote);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
SampleRemote sampleRemote2 =
(SampleRemote) PortableRemoteObject.narrow(ser2.getRemote(), SampleRemote.class);
sampleRemote.setInt(42);
assertEquals(42, sampleRemote2.getInt());
}
public void testComplexRemoteAttributeOnClient() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
SampleRemoteImpl sampleRemote = new SampleRemoteImpl();
ser.setSampleRemote(sampleRemote);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
SampleRemote sampleRemote2 = ser2.getSampleRemote();
sampleRemote.setInt(42);
assertEquals(42, sampleRemote2.getInt());
}
public void testComplexRemoteArgument() throws RemoteException {
SampleRemoteImpl sampleRemote = new SampleRemoteImpl();
sample.setSampleRemote(sampleRemote);
sample.getSampleRemote();
}
public void testSerializableAttribute() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
SampleSerializable attr = new SampleSerializable();
ser.setSerializable(attr);
attr.setInt(42);
sample.setSerializable(ser);
SampleSerializable serCopy = (SampleSerializable) sample.getSerializable();
SampleSerializable attrCopy = (SampleSerializable) serCopy.getSerializable();
assertEquals(attr.getInt(), attrCopy.getInt());
}
public void testSerializableSelfReference() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
ser.setSerializableObject(ser);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
assertTrue(ser2 == ser2.getSerializableObject());
}
public void testRemoteObjectAttribute() throws RemoteException {
SampleSerializable ser = new SampleSerializable();
SampleRemoteImpl sampleRemote = new SampleRemoteImpl();
ser.setRemoteObject(sampleRemote);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
SampleRemote sampleRemote2 =
(SampleRemote) PortableRemoteObject.narrow(ser2.getRemoteObject(), SampleRemote.class);
sampleRemote.setInt(42);
assertEquals(42, sampleRemote2.getInt());
}
public void testCorbaAttribute(SampleCorba corbaRef) throws RemoteException {
SampleSerializable ser = new SampleSerializable();
ser.setCorbaObj(corbaRef);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
SampleCorba corbaRef2 = SampleCorbaHelper.narrow(ser2.getCorbaObj());
corbaRef.i(42);
assertEquals(42, corbaRef2.i());
}
public void testComplexCorbaAttribute(SampleCorba corbaRef) throws RemoteException {
SampleSerializable ser = new SampleSerializable();
ser.setSampleCorba(corbaRef);
sample.setSerializable(ser);
SampleSerializable ser2 = (SampleSerializable) sample.getSerializable();
SampleCorba corbaRef2 = ser2.getSampleCorba();
}
public void testHashMap() throws RemoteException {
HashMap map = new HashMap();
String str = "hello";
map.put(new Integer(0), str);
map.put(new Integer(1), str);
Integer i = new Integer(2);
map.put(new Integer(3), i);
map.put(new Integer(4), i);
sample.setSerializable(map);
HashMap map2 = (HashMap) sample.getSerializable();
assertEquals(map, map2);
assertTrue(map2.get(new Integer(3)) == map2.get(new Integer(4)));
assertTrue(map2.get(new Integer(0)) == map2.get(new Integer(1)));
}
}
public static void main(String[] args) throws Exception {
// Initialize ORB
final org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(new String[0], null);
POA rootPoa = (POA) orb.resolve_initial_references("RootPOA");
rootPoa.the_POAManager().activate();
System.out.println("ORB: " + orb.getClass().getName());
// Bind a sample CORBA object
SampleCorba_impl sampleCorba = new SampleCorba_impl();
byte [] id = rootPoa.activate_object(sampleCorba);
org.omg.CORBA.Object sampleCorbaRef = rootPoa.create_reference_with_id(id, sampleCorba._all_interfaces(rootPoa, id)[0]);
// Get IOR to Sample on server
BufferedReader reader = new BufferedReader(new FileReader("Sample.ref"));
String ref = reader.readLine();
org.omg.CORBA.Object sampleRef = orb.string_to_object(ref);
Sample sample = (Sample) PortableRemoteObject.narrow(sampleRef, Sample.class);
// Run RMI tests
Test test = new Test(sample);
test.testPrimitive();
test.testString();
test.testIntArray();
test.testBasicSerializable();
test.testRemoteObjectAttribute();
test.testRemoteAttributeOnServer();
test.testRemoteAttributeOnClient();
test.testComplexRemoteAttributeOnClient();
test.testComplexRemoteArgument();
test.testSerializableAttribute();
test.testSerializableSelfReference();
test.testCorbaAttribute(SampleCorbaHelper.narrow(sampleCorbaRef));
test.testComplexCorbaAttribute(SampleCorbaHelper.narrow(sampleCorbaRef));
test.testHashMap();
//myORB.destroy();
}
}