package org.jacorb.test.notification.common;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 1999-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 org.jacorb.config.Configuration;
import org.jacorb.notification.MessageFactory;
import org.jacorb.notification.container.PicoContainerFactory;
import org.jacorb.notification.engine.TaskProcessor;
import org.jacorb.notification.filter.ETCLEvaluator;
import org.jacorb.notification.interfaces.Disposable;
import org.jacorb.notification.queue.EventQueueFactory;
import org.jacorb.notification.util.DisposableManager;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.rules.TestName;
import org.omg.CORBA.Any;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Repository;
import org.omg.CosNotification.Property;
import org.omg.CosNotification.PropertySeqHelper;
import org.omg.DynamicAny.DynAnyFactory;
import org.omg.PortableServer.POA;
import org.picocontainer.MutablePicoContainer;
import org.slf4j.Logger;
/**
* helper class for notification service unit tests.
*
* @author Alphonse Bendt
*/
public abstract class NotificationTestCase
{
@Rule
public TestName name = new TestName();
protected static NotificationTestCaseSetup setup;
protected Logger logger_;
private MutablePicoContainer container_;
private DisposableManager disposables_;
@BeforeClass
public static void beforeClassSetup() throws Exception
{
setup = new NotificationTestCaseSetup();
}
@AfterClass
public static void afterClassSetup() throws Exception
{
setup.tearDown();
}
@Before
public void NTCsetUp() throws Exception
{
disposables_ = new DisposableManager();
container_ = PicoContainerFactory.createChildContainer(setup.getPicoContainer());
logger_ = getConfiguration().getLogger(getClass().getName()
+ "." + name.getMethodName());
setUpTest();
}
protected void setUpTest() throws Exception
{
// empty to be overridden.
}
@After
public void NTCtearDown() throws Exception
{
setup.getPicoContainer().removeChildContainer(container_);
tearDownTest();
disposables_.dispose();
}
protected void tearDownTest() throws Exception
{
// empty to be overridden.
}
public MutablePicoContainer getPicoContainer()
{
return container_;
}
public ORB getClientORB()
{
return setup.getClientORB();
}
public ORB getORB()
{
return setup.getServerORB();
}
public POA getPOA()
{
return setup.getPOA();
}
public DynAnyFactory getDynAnyFactory() throws Exception
{
return (DynAnyFactory) getPicoContainer().getComponentInstanceOfType(DynAnyFactory.class);
}
public Configuration getConfiguration()
{
return (Configuration) getPicoContainer().getComponentInstanceOfType(Configuration.class);
}
public MessageFactory getMessageFactory()
{
return (MessageFactory) getPicoContainer().getComponentInstanceOfType(MessageFactory.class);
}
public ETCLEvaluator getEvaluator()
{
return (ETCLEvaluator) getPicoContainer().getComponentInstanceOfType(ETCLEvaluator.class);
}
public TaskProcessor getTaskProcessor()
{
return (TaskProcessor) getPicoContainer().getComponentInstanceOfType(TaskProcessor.class);
}
public EventQueueFactory getEventQueueFactory()
{
return (EventQueueFactory) getPicoContainer().getComponentInstanceOfType(EventQueueFactory.class);
}
public NotificationTestUtils getTestUtils()
{
return setup.getTestUtils();
}
protected void addDisposable(Disposable d)
{
disposables_.addDisposable(d);
}
public Any toAny(String s)
{
Any _any = getORB().create_any();
_any.insert_string(s);
return _any;
}
public Any toAny(int i)
{
Any _any = getORB().create_any();
_any.insert_long(i);
return _any;
}
public Any toAny(Property[] props) throws Exception
{
Any _any = getORB().create_any();
PropertySeqHelper.insert(_any, props);
return _any;
}
public Repository getRepository() throws Exception
{
return setup.getRepository();
}
}