/*
* 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.
*/
package org.jacorb.test.bugs.bugjac511;
import java.util.Properties;
import junit.framework.AssertionFailedError;
import org.jacorb.test.harness.CallbackTestCase;
import org.jacorb.test.harness.ClientServerSetup;
import org.jacorb.test.harness.TestUtils;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.omg.CORBA.UserException;
import org.omg.Messaging.ExceptionHolder;
import bugjac511a.bugjac511b.AMI_BugJac511ServerHandler;
import bugjac511a.bugjac511b.AMI_BugJac511ServerHandlerOperations;
import bugjac511a.bugjac511b.AMI_BugJac511ServerHandlerPOATie;
import bugjac511a.bugjac511b.BugJac511Server;
import bugjac511a.bugjac511b.BugJac511ServerHelper;
import bugjac511a.bugjac511b.TestException;
import bugjac511a.bugjac511b._BugJac511ServerStub;
/**
* @author Alphonse Bendt
*/
public class BugJac511Test extends CallbackTestCase
{
private class ReplyHandler
extends CallbackTestCase.ReplyHandler
implements AMI_BugJac511ServerHandlerOperations
{
public void request_sending_exception()
{
wrong_reply("request_sending_exception");
}
public void request_sending_exception_excep(ExceptionHolder excep_holder)
{
wrong_exception("request_sending_exception_excep", excep_holder);
}
}
private BugJac511Server server;
@Before
public void setUp() throws Exception
{
server = BugJac511ServerHelper.narrow(setup.getServerObject());
}
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
Properties props = new Properties();
setup = new ClientServerSetup(BugJac511ServerImpl.class.getName(), props, props);
}
@Test
public void testExceptionDuringAMIInvocation() throws Exception
{
ReplyHandler handler = new ReplyHandler()
{
public void request_sending_exception_excep(ExceptionHolder excep_holder)
{
try
{
excep_holder.raise_exception();
fail("should raise exception");
}
catch (TestException e)
{
pass();
}
catch(UserException e)
{
fail("unexpected exception: " + e);
}
}
};
AMI_BugJac511ServerHandler handlerRef = ref(handler);
((_BugJac511ServerStub)server).sendc_request_sending_exception(handlerRef);
handler.wait_for_reply(TestUtils.getMediumTimeout());
}
private AMI_BugJac511ServerHandler ref ( AMI_BugJac511ServerHandlerOperations handler )
{
AMI_BugJac511ServerHandlerPOATie tie =
new AMI_BugJac511ServerHandlerPOATie( handler )
{
public org.omg.CORBA.portable.OutputStream
_invoke( String method,
org.omg.CORBA.portable.InputStream _input,
org.omg.CORBA.portable.ResponseHandler handler )
throws org.omg.CORBA.SystemException
{
try
{
return super._invoke( method, _input, handler );
}
catch( AssertionFailedError e )
{
return null;
}
}
};
return tie._this( setup.getClientOrb() );
}
}