/**
* 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.cxf.binding.corba.types;
import javax.xml.namespace.QName;
import org.apache.cxf.binding.corba.wsdl.CorbaConstants;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.omg.CORBA.ORB;
import org.omg.CORBA.TCKind;
public class CorbaPrimitiveHandlerTest extends Assert {
private ORB orb;
@Before
public void setUp() throws Exception {
java.util.Properties props = System.getProperties();
props.put("yoko.orb.id", "CXF-CORBA-Server-Binding");
orb = ORB.init(new String[0], props);
}
@After
public void tearDown() throws Exception {
if (orb != null) {
try {
orb.destroy();
} catch (Exception ex) {
// Do nothing. Throw an Exception?
}
}
}
@Test
public void testCreateCorbaBoolean() {
Boolean val = Boolean.FALSE;
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("boolean"),
CorbaConstants.NT_CORBA_BOOLEAN,
orb.get_primitive_tc(TCKind.tk_boolean),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Boolean);
Boolean boolResult = (Boolean)resultObj;
assertTrue(boolResult.booleanValue() == val.booleanValue());
}
@Test
public void testCreateCorbaChararacter() {
Character val = new Character('c');
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("char"),
CorbaConstants.NT_CORBA_CHAR,
orb.get_primitive_tc(TCKind.tk_char),
null);
assertNotNull(obj);
//CXF corba maps the XML char type to a Byte so we need to provide the string data as a Byte value
Byte byteValue = new Byte((byte)val.charValue());
obj.setValueFromData(byteValue.toString());
String result = obj.getDataFromValue();
Byte byteResult = new Byte(result);
assertTrue(byteResult.byteValue() == byteValue.byteValue());
// However, internally, we also hold the data as a character to make it easier to marshal the data
// for CORBA.
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Character);
Character charResult = (Character)resultObj;
assertTrue(charResult.charValue() == val.charValue());
}
@Test
public void testCreateCorbaWChararacter() {
Character val = new Character('w');
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("wchar"),
CorbaConstants.NT_CORBA_WCHAR,
orb.get_primitive_tc(TCKind.tk_wchar),
null);
assertNotNull(obj);
obj.setValueFromData("w");
String result = obj.getDataFromValue();
assertTrue(val.charValue() == result.charAt(0));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Character);
Character charResult = (Character)resultObj;
assertTrue(charResult.charValue() == val.charValue());
}
@Test
public void testCreateCorbaOctet() {
Byte val = new Byte((byte)100);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("octet"),
CorbaConstants.NT_CORBA_OCTET,
orb.get_primitive_tc(TCKind.tk_octet),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Byte);
Byte byteResult = (Byte)resultObj;
assertTrue(byteResult.byteValue() == val.byteValue());
}
@Test
public void testCreateCorbaShort() {
Short val = new Short((short)1234);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("short"),
CorbaConstants.NT_CORBA_SHORT,
orb.get_primitive_tc(TCKind.tk_short),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Short);
Short shortResult = (Short)resultObj;
assertTrue(shortResult.shortValue() == val.shortValue());
}
@Test
public void testCreateCorbaUShort() {
Short val = new Short((short)4321);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("ushort"),
CorbaConstants.NT_CORBA_USHORT,
orb.get_primitive_tc(TCKind.tk_ushort),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Short);
Short shortResult = (Short)resultObj;
assertTrue(shortResult.shortValue() == val.shortValue());
}
@Test
public void testCreateCorbaLong() {
Integer val = new Integer(123456);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("long"),
CorbaConstants.NT_CORBA_LONG,
orb.get_primitive_tc(TCKind.tk_long),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Integer);
Integer longResult = (Integer)resultObj;
assertTrue(longResult.intValue() == val.intValue());
}
@Test
public void testCreateCorbaULong() {
Integer val = new Integer(654321);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("ulong"),
CorbaConstants.NT_CORBA_ULONG,
orb.get_primitive_tc(TCKind.tk_ulong),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Integer);
Integer ulongResult = (Integer)resultObj;
assertTrue(ulongResult.intValue() == val.intValue());
}
@Test
public void testCreateCorbaLongLong() {
Long val = new Long(123456789);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("longlong"),
CorbaConstants.NT_CORBA_LONGLONG,
orb.get_primitive_tc(TCKind.tk_longlong),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Long);
Long longlongResult = (Long)resultObj;
assertTrue(longlongResult.longValue() == val.longValue());
}
@Test
public void testCreateCorbaULongLong() {
Long val = new Long(987654321);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("ulonglong"),
CorbaConstants.NT_CORBA_ULONGLONG,
orb.get_primitive_tc(TCKind.tk_ulonglong),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Long);
Long longlongResult = (Long)resultObj;
assertTrue(longlongResult.longValue() == val.longValue());
}
@Test
public void testCreateCorbaFloat() {
Float val = new Float(1234.56);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("float"),
CorbaConstants.NT_CORBA_FLOAT,
orb.get_primitive_tc(TCKind.tk_float),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Float);
Float floatResult = (Float)resultObj;
assertTrue(floatResult.floatValue() == val.floatValue());
}
@Test
public void testCreateCorbaDouble() {
Double val = new Double(123456.789);
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("double"),
CorbaConstants.NT_CORBA_DOUBLE,
orb.get_primitive_tc(TCKind.tk_double),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.toString().equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof Double);
Double doubleResult = (Double)resultObj;
assertTrue(doubleResult.doubleValue() == val.doubleValue());
}
@Test
public void testCreateCorbaString() {
String val = "Test String";
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("string"),
CorbaConstants.NT_CORBA_STRING,
orb.get_primitive_tc(TCKind.tk_string),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof String);
String stringResult = (String)resultObj;
assertTrue(stringResult.equals(val));
}
@Test
public void testCreateCorbaWString() {
String val = "Test Wide String";
CorbaPrimitiveHandler obj =
new CorbaPrimitiveHandler(new QName("wstring"),
CorbaConstants.NT_CORBA_WSTRING,
orb.get_primitive_tc(TCKind.tk_wstring),
null);
assertNotNull(obj);
obj.setValueFromData(val.toString());
String result = obj.getDataFromValue();
assertTrue(val.equals(result));
obj.setValue(val);
Object resultObj = obj.getValue();
assertNotNull(resultObj);
assertTrue(resultObj instanceof String);
String stringResult = (String)resultObj;
assertTrue(stringResult.equals(val));
}
}