package org.jacorb.test.bugs.bugjac590; /* * JacORB - a free Java ORB * * Copyright (C) 1997-2014 Gerald Brose / The JacORB Team. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ import static org.junit.Assert.assertTrue; import org.jacorb.orb.dynany.DynUnion; import org.jacorb.test.harness.ClientServerSetup; import org.jacorb.test.harness.ClientServerTestCase; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.omg.DynamicAny.DynAnyFactory; import org.omg.DynamicAny.DynAnyFactoryHelper; /** * <code>BugJac590Test</code> verifies a null ptr with Unions and DynAny. * * @author <a href="mailto:Nick.Cross@prismtech.com">Nick Cross</a> * @version 1.0 */ public class BugJac590Test extends ClientServerTestCase { private BooleanUnionInt server = null; @Before public void setUp() throws Exception { server = BooleanUnionIntHelper.narrow (setup.getServerObject()); } @BeforeClass public static void beforeClassSetUp() throws Exception { setup = new ClientServerSetup("org.jacorb.test.bugs.bugjac590.BooleanUnionIntServerImpl" ); } /** * <code>testUnionHelper</code> checks that demarshalling with an enum * discriminator sets it correctly. * * @exception Exception if an error occurs */ @Test public void testUnionNullPtr () throws Exception { // obtain a reference to the DynAnyFactory org.omg.CORBA.Object genFactory = setup.getClientOrb ().resolve_initial_references("DynAnyFactory"); DynAnyFactory factory = DynAnyFactoryHelper.narrow(genFactory); org.jacorb.orb.dynany.DynEnum dynenum1 = (org.jacorb.orb.dynany.DynEnum) factory .create_dyn_any_from_type_code(MyEnumHelper.type()); dynenum1.set_as_ulong(MyEnum._A); DynUnion dynany2 = (DynUnion) factory.create_dyn_any_from_type_code(EnumUnionHelper.type()); dynany2.set_discriminator(dynenum1); assertTrue (dynany2.to_any () != null); org.omg.CORBA.Any aa = dynany2.to_any (); EnumUnion eu = EnumUnionHelper.extract (aa); server.e (eu); server.g (eu, new EnumUnionHolder (eu)); org.omg.CORBA.Request r = server._request("g"); r.set_return_type(setup.getClientOrb ().get_primitive_tc(org.omg.CORBA.TCKind.tk_void)); EnumUnionHelper.insert (r.add_in_arg() , eu); r.add_in_arg().insert_any(dynany2.to_any()); org.omg.CORBA.Any out_arg = r.add_out_arg(); out_arg.type(EnumUnionHelper.type()); r.invoke(); if (r.env().exception() != null) { throw r.env().exception(); } else { assertTrue (r.return_value () != null); } } }