/**
* 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.types;
import javax.xml.namespace.QName;
import org.apache.yoko.wsdl.CorbaConstants;
import org.omg.CORBA.Any;
import org.omg.CORBA.ORB;
import org.omg.CORBA.TCKind;
import org.omg.CORBA.TypeCode;
import junit.framework.TestCase;
public class CorbaAnyHandlerTest extends TestCase {
private ORB orb;
public CorbaAnyHandlerTest(String arg0) {
super(arg0);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(CorbaAnyHandlerTest.class);
}
protected void setUp() throws Exception {
super.setUp();
java.util.Properties props = System.getProperties();
props.put("org.omg.CORBA.ORBClass", "org.apache.yoko.orb.CORBA.ORB");
props.put("org.omg.CORBA.ORBSingletonClass", "org.apache.yoko.orb.CORBA.ORBSingleton");
props.put("yoko.orb.id", "Yoko-Server-Binding");
orb = ORB.init(new String[0], props);
}
protected void tearDown() throws Exception {
if (orb != null) {
try {
orb.destroy();
} catch (Exception ex) {
// Do nothing. Throw an Exception?
}
}
}
public void testGetSetSchemaType() {
String testSchemaType = "xs:string";
QName anyName = new QName("TestAny");
QName anyIdlType = CorbaConstants.NT_CORBA_ANY;
TypeCode anyTC = orb.get_primitive_tc(TCKind.tk_any);
CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
anyHandler.setSchemaType(testSchemaType);
String result = anyHandler.getSchemaType();
assert(result.equals(testSchemaType));
}
public void testGetSetValue() {
QName anyName = new QName("TestAny");
QName anyIdlType = CorbaConstants.NT_CORBA_ANY;
TypeCode anyTC = orb.get_primitive_tc(TCKind.tk_any);
CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
Any any = orb.create_any();
String expectedSchemaType = null;
Any result = null;
String resultSchemaType = null;
boolean boolValue = false;
any.insert_boolean(boolValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:boolean";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_boolean);
boolean boolResult = result.extract_boolean();
assertTrue(boolResult == boolValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
char charValue = 'c';
any.insert_char(charValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:byte";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_char);
char charResult = result.extract_char();
assertTrue(charResult == charValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
char wcharValue = 'w';
any.insert_wchar(wcharValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:string";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_wchar);
char wcharResult = result.extract_wchar();
assertTrue(wcharResult == wcharValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
byte octetValue = (byte)8;
any.insert_octet(octetValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:unsignedByte";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_octet);
byte octetResult = result.extract_octet();
assertTrue(octetResult == octetValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
short shortValue = (short)-123;
any.insert_short(shortValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:short";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_short);
short shortResult = result.extract_short();
assertTrue(shortResult == shortValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
short ushortValue = (short)123;
any.insert_ushort(ushortValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:unsignedShort";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_ushort);
short ushortResult = result.extract_ushort();
assertTrue(ushortResult == ushortValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
int longValue = -12345;
any.insert_long(longValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:int";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_long);
int longResult = result.extract_long();
assertTrue(longResult == longValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
int ulongValue = 12345;
any.insert_ulong(ulongValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:unsignedInt";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_ulong);
int ulongResult = result.extract_ulong();
assertTrue(ulongResult == ulongValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
long longlongValue = -123456789;
any.insert_longlong(longlongValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:long";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_longlong);
long longlongResult = result.extract_longlong();
assertTrue(longlongResult == longlongValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
long ulonglongValue = 123456789;
any.insert_ulonglong(ulonglongValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:unsignedLong";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_ulonglong);
long ulonglongResult = result.extract_ulonglong();
assertTrue(ulonglongResult == ulonglongValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
double doubleValue = 1234.56;
any.insert_double(doubleValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:double";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_double);
double doubleResult = result.extract_double();
assertTrue(doubleResult == doubleValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
float floatValue = 123456.78f;
any.insert_float(floatValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:float";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_float);
float floatResult = result.extract_float();
assertTrue(floatResult == floatValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
String stringValue = "test string";
any.insert_string(stringValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:string";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_string);
String stringResult = result.extract_string();
assertTrue(stringResult == stringValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
String wstringValue = "test wstring";
any.insert_wstring(wstringValue);
anyHandler.setValue(any);
expectedSchemaType = "xs:string";
result = anyHandler.getValue();
assertTrue(result.type().kind().value() == TCKind._tk_wstring);
String wstringResult = result.extract_wstring();
assertTrue(wstringResult == wstringValue);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(expectedSchemaType));
}
public void testGetSetValueData() {
QName anyName = new QName("TestAny");
QName anyIdlType = CorbaConstants.NT_CORBA_ANY;
TypeCode anyTC = orb.get_primitive_tc(TCKind.tk_any);
CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
String value = null;
String resultValue = null;
String schemaType = null;
String resultSchemaType = null;
Any resultAny = null;
value = "false";
schemaType = "xs:boolean";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_boolean);
value = "7";
schemaType = "xs:byte";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_char);
value = "1234.56";
schemaType = "xs:double";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_double);
value = "987654.321";
schemaType = "xs:float";
anyHandler.setValueFromData(orb, value, schemaType);
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_float);
value = "12345";
schemaType = "xs:int";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_long);
value = "123456789";
schemaType = "xs:long";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_longlong);
value = "123";
schemaType = "xs:short";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_short);
value = "test string";
schemaType = "xs:string";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_string);
value = "9";
schemaType = "xs:unsignedByte";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_octet);
value = "654321";
schemaType = "xs:unsignedInt";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_ulong);
value = "987654321";
schemaType = "xs:unsignedLong";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_ulonglong);
value = "321";
schemaType = "xs:unsignedShort";
anyHandler.setValueFromData(orb, value, schemaType);
resultValue = anyHandler.getValueData();
resultSchemaType = anyHandler.getSchemaType();
assertTrue(resultValue.equals(value));
assertTrue(resultSchemaType.equals(schemaType));
resultAny = anyHandler.getValue();
assertTrue(resultAny.type().kind().value() == TCKind._tk_ushort);
}
}