package org.jacorb.test.orb.localinterceptors;
/*
* 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, 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Properties;
import org.jacorb.orb.portableInterceptor.ClientRequestInfoImpl;
import org.jacorb.test.harness.ORBTestCase;
import org.jacorb.test.orb.localinterceptors.LocalPITest.PIServerImpl;
import org.junit.Test;
import org.omg.CORBA.Policy;
import org.omg.PortableServer.ImplicitActivationPolicyValue;
import org.omg.PortableServer.POA;
/**
* Verifies that calling is_local works in portable interceptors.
*/
public class LocalPIIsLocalTest extends ORBTestCase
{
private static PIServer serverRef = null;
private static PIServer clientRef = null;
@Override
protected void patchORBProperties(Properties props) throws Exception
{
props.setProperty( "org.omg.PortableInterceptor.ORBInitializerClass."
+ LocalPIInitializer.class.getName(), "" );
}
private void init (String op)
{
try
{
Policy [] policies = new Policy [1];
policies[0] = rootPOA.create_implicit_activation_policy
(ImplicitActivationPolicyValue.IMPLICIT_ACTIVATION);
POA childPOA = rootPOA.create_POA ("childPOA",
rootPOA.the_POAManager (),
policies);
serverRef = ( new PIServerImpl (childPOA))._this (orb);
rootPOA.the_POAManager().activate();
clientRef = PIServerHelper.narrow (serverRef);
}
catch ( org.omg.CORBA.UserException ex )
{
fail( "exception during setup:" + ex.toString() );
}
}
@Test
public void testCompleteCall()
{
init ("sendMessage");
clientRef.sendMessage ("A Message from testCompleteCall()...");
orb.shutdown(false);
}
/**
* An ORB initializer class.
*/
public static class LocalPIInitializer
extends org.omg.CORBA.LocalObject
implements org.omg.PortableInterceptor.ORBInitializer
{
/**
* Called before init of the actual ORB.
*
* @param info The ORB init info.
*/
public void pre_init (org.omg.PortableInterceptor.ORBInitInfo info)
{
try
{
info.add_client_request_interceptor (new LocalClientInterceptorA());
}
catch ( org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName ex )
{
fail ("unexpected exception received: " + ex);
}
}
/**
* Called after init of the actual ORB.
*
* @param info The ORB init info.
*/
public void post_init (org.omg.PortableInterceptor.ORBInitInfo info)
{
}
}
static class LocalClientInterceptorA
extends org.omg.CORBA.LocalObject
implements org.omg.PortableInterceptor.ClientRequestInterceptor
{
public String name()
{
return "";
}
public void destroy()
{
}
public void send_request( org.omg.PortableInterceptor.ClientRequestInfo ri )
throws org.omg.PortableInterceptor.ForwardRequest
{
ClientRequestInfoImpl cr = (ClientRequestInfoImpl)ri;
assertTrue (((org.omg.CORBA.portable.ObjectImpl)cr.effective_target())._is_local());
}
public void send_poll( org.omg.PortableInterceptor.ClientRequestInfo ri )
{
}
public void receive_reply (org.omg.PortableInterceptor.ClientRequestInfo ri )
{
}
public void receive_other( org.omg.PortableInterceptor.ClientRequestInfo ri )
throws org.omg.PortableInterceptor.ForwardRequest
{
}
public void receive_exception( org.omg.PortableInterceptor.ClientRequestInfo ri )
throws org.omg.PortableInterceptor.ForwardRequest
{
}
}
}