/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License, version 2 as published by the Free Software * Foundation. * * You should have received a copy of the GNU General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/gpl-2.0.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program 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 General Public License for more details. * * * Copyright 2005 - 2008 Pentaho Corporation. All rights reserved. * * @created Dec 4, 2008 * @author James Dixon */ package org.pentaho.test.platform.engine.core; import org.pentaho.platform.api.engine.IPentahoSession; import org.pentaho.platform.api.engine.ObjectFactoryException; import org.pentaho.platform.api.engine.IPentahoDefinableObjectFactory.Scope; import org.pentaho.platform.engine.core.system.StandaloneSession; import org.pentaho.platform.engine.core.system.objfac.StandaloneObjectFactory; import junit.framework.TestCase; public class StandaloneObjectFactoryTest extends TestCase { public void testNoCreator() { IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ StandaloneObjectFactory factory = new StandaloneObjectFactory(); try { factory.get( Object1.class , session1); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( ObjectFactoryException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } public void testBadScope() throws Exception { IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), null); Object obj = factory.get( Object1.class , session1); assertNull( "object should be null", obj ); //$NON-NLS-1$ } public void testImplementingClass() throws Exception { IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.GLOBAL); factory.defineObject( "bogus2", "bogus", Scope.GLOBAL); //$NON-NLS-1$ //$NON-NLS-2$ Object1 obj = factory.get(Object1.class, session1); assertNotNull( obj ); assertEquals( Object1.class.getName(), factory.getImplementingClass( Object1.class.getSimpleName() ).getName() ); assertNull( factory.getImplementingClass( "bogus" ) ); //$NON-NLS-1$ assertNull( factory.getImplementingClass( "bogus2" ) ); //$NON-NLS-1$ } public void testInit() throws Exception { IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.GLOBAL); assertTrue( "Object is not defined", factory.objectDefined( Object1.class.getSimpleName() ) ); //$NON-NLS-1$ Object1 obj1 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ factory.init(null, null); assertFalse( "Object is defined", factory.objectDefined( Object1.class.getSimpleName() ) ); //$NON-NLS-1$ assertNull( factory.getImplementingClass( Object1.class.getSimpleName() ) ); try { factory.get( Object1.class , session1); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( ObjectFactoryException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } public void testGlobalObject1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.GLOBAL); factory.defineObject( BadObjectRuntime.class.getSimpleName(), BadObjectRuntime.class.getName(), Scope.GLOBAL); factory.defineObject( BadObject.class.getSimpleName(), BadObject.class.getName(), Scope.GLOBAL); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ IPentahoSession session2 = new StandaloneSession( "test user 2" ); //$NON-NLS-1$ Object1 obj1 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object1 obj2 = factory.get( Object1.class, session2); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are not same", obj1 == obj2 ); //$NON-NLS-1$ try { factory.get(BadObjectRuntime.class, session1); assertFalse( true ); } catch (RuntimeException e) { assertTrue( true ); } try { factory.get(BadObject.class, session1); assertFalse( true ); } catch (ObjectFactoryException e) { assertTrue( true ); } } public void testGlobalObject2() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object2.class.getSimpleName(), Object2.class.getName(), Scope.GLOBAL ); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ IPentahoSession session2 = new StandaloneSession( "test user 2" ); //$NON-NLS-1$ Object2 obj1 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object2 obj2 = factory.get( Object2.class, session2); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are not same", obj1 == obj2 ); //$NON-NLS-1$ } public void testGlobalObject3() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object2.class.getSimpleName(), Object2.class.getName(), Scope.GLOBAL, getClass().getClassLoader() ); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ IPentahoSession session2 = new StandaloneSession( "test user 2" ); //$NON-NLS-1$ Object2 obj1 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object2 obj2 = factory.get( Object2.class, session2); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are not same", obj1 == obj2 ); //$NON-NLS-1$ } public void testGlobalObjectFail() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), "bogus", Scope.GLOBAL); //$NON-NLS-1$ IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ try { factory.get( Object1.class, session1); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( ObjectFactoryException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } public void testGlobalObjectFail2() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object2.class.getSimpleName(), Object2.class.getName(), Scope.GLOBAL, null ); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ try { factory.get( Object2.class, session1); assertTrue( "Exception expected", false ); //$NON-NLS-1$ } catch (NullPointerException e) { assertFalse( "Exception expected", false ); //$NON-NLS-1$ } } public void testSessionObject1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.SESSION); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ IPentahoSession session2 = new StandaloneSession( "test user 2" ); //$NON-NLS-1$ Object1 obj1 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object1 obj2 = factory.get( Object1.class, session2); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are same", obj1 != obj2 ); //$NON-NLS-1$ Object1 obj3 = factory.get( Object1.class, session1); assertTrue( "Objects are not same", obj1 == obj3 ); //$NON-NLS-1$ } public void testSessionObject2() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object2.class.getSimpleName(), Object2.class.getName(), Scope.SESSION); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ IPentahoSession session2 = new StandaloneSession( "test user 2" ); //$NON-NLS-1$ Object2 obj1 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object2 obj2 = factory.get( Object2.class, session2); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are same", obj1 != obj2 ); //$NON-NLS-1$ } public void testSessionObjectFail1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), "bogus", Scope.SESSION); //$NON-NLS-1$ IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ try { factory.get( Object1.class, session1); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( ObjectFactoryException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } public void testSessionObjectFail2() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.SESSION); try { factory.get( Object1.class, null); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( IllegalArgumentException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } public void testLocalObject1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.LOCAL); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ Object1 obj1 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object1 obj2 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are same", obj1 != obj2 ); //$NON-NLS-1$ Object1 obj3 = factory.get( Object1.class, session1); assertTrue( "Objects are same", obj1 != obj3 ); //$NON-NLS-1$ } public void testLocalObject2() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object2.class.getSimpleName(), Object2.class.getName(), Scope.LOCAL); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ Object2 obj1 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object2 obj2 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are same", obj1 != obj2 ); //$NON-NLS-1$ Object2 obj3 = factory.get( Object2.class, session1); assertTrue( "Objects are same", obj1 != obj3 ); //$NON-NLS-1$ } public void testLocalObjectFail1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), "bogus", Scope.LOCAL); //$NON-NLS-1$ IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ try { factory.get( Object1.class, session1); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( ObjectFactoryException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } public void testThreadObject1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), Object1.class.getName(), Scope.THREAD ); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ Object1 obj1 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object1 obj2 = factory.get( Object1.class, session1); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are not same", obj1 == obj2 ); //$NON-NLS-1$ Object1 obj3 = factory.get( Object1.class, session1); assertTrue( "Objects are not same", obj1 == obj3 ); //$NON-NLS-1$ } public void testThreadObject2() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object2.class.getSimpleName(), Object2.class.getName(), Scope.THREAD ); IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ Object2 obj1 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj1 ); //$NON-NLS-1$ Object2 obj2 = factory.get( Object2.class, session1); assertNotNull( "Object is null", obj2 ); //$NON-NLS-1$ assertTrue( "Objects are not same", obj1 == obj2 ); //$NON-NLS-1$ Object2 obj3 = factory.get( Object2.class, session1); assertTrue( "Objects are not same", obj1 == obj3 ); //$NON-NLS-1$ } public void testThreadObjectFail1() throws Exception { StandaloneObjectFactory factory = new StandaloneObjectFactory(); factory.defineObject( Object1.class.getSimpleName(), "bogus", Scope.THREAD ); //$NON-NLS-1$ IPentahoSession session1 = new StandaloneSession( "test user 1" ); //$NON-NLS-1$ try { factory.get( Object1.class, session1); assertFalse( "exception expected", true ); //$NON-NLS-1$ } catch ( ObjectFactoryException e ) { assertTrue( "exception expected", true ); //$NON-NLS-1$ } } }