001 package org.jpu.patterns.serviceLocator.onePerContext.test; 002 003 import java.util.Iterator; 004 import java.util.Set; 005 006 import org.apache.commons.logging.Log; 007 import org.apache.commons.logging.LogFactory; 008 import org.jpu.patterns.serviceLocator.ISLSBLocator; 009 import org.jpu.patterns.serviceLocator.Locator; 010 import org.jpu.patterns.serviceLocator.ServiceLocatorException; 011 import org.jpu.patterns.serviceLocator.ServiceLocatorOptions; 012 import org.jpu.patterns.serviceLocator.onePerContext.SLSBLocator; 013 import org.jpu.patterns.singleton.onePerContext.OnePerContextManager; 014 015 public class opctest { 016 public static class MyCtx { 017 public MyCtx(String name) { 018 _name = name; 019 } 020 public String toString() { 021 return _name; 022 } 023 private String _name = null; 024 } 025 026 public static class BogusLookupStrategy extends Locator.DefaultLookupStrategy { 027 public BogusLookupStrategy(Locator loc) { 028 super(loc); 029 } 030 public Object lookup(String namingIdentifier, ServiceLocatorOptions options) throws ServiceLocatorException { 031 _log.info( "Doing bogus lookup for SLSB '" + namingIdentifier + "'" ); 032 return new BogusHome(); 033 } 034 } 035 036 public static class BogusHome { 037 public Object create() throws javax.ejb.CreateException, java.rmi.RemoteException { 038 return new Object(); 039 } 040 } 041 042 private static final MyCtx MOE = new MyCtx("moe"); 043 private static final MyCtx LARRY = new MyCtx("larry"); 044 private static final MyCtx CURLEY = new MyCtx("curley"); 045 046 public static void main(String[] argv) throws Throwable { 047 Class.forName( "org.jpu.patterns.serviceLocator.onePerContext.SLSBLocator" ); 048 Class.forName( "org.jpu.patterns.serviceLocator.onePerContext.HomeLocator" ); 049 Class.forName( "org.jpu.patterns.serviceLocator.onePerContext.UserTransactionLocator" ); 050 Class.forName( "org.jpu.patterns.serviceLocator.onePerContext.DataSourceLocator" ); 051 052 Set mgrs = OnePerContextManager.getManagers(); 053 Iterator it = mgrs.iterator(); 054 while ( it.hasNext() ) { 055 OnePerContextManager mgr = (OnePerContextManager)it.next(); 056 OnePerContextManager.IInitializer myinit = new OnePerContextManager.IInitializer() { 057 public void initialize(OnePerContextManager mgr, Object ctx, Object opc) { 058 _log.info( "Initializing opc of type " + opc.getClass().getName() + " for context '" + ctx + "'" ); 059 SLSBLocator loc = (SLSBLocator)opc; 060 loc.setLookupStrategy( new BogusLookupStrategy(loc) ); 061 } 062 }; 063 mgr.addInitializer(0, myinit); 064 } 065 066 ISLSBLocator moe = SLSBLocator.getInstance( MOE ); 067 ISLSBLocator larry = SLSBLocator.getInstance( LARRY ); 068 ISLSBLocator curley = SLSBLocator.getInstance( CURLEY ); 069 070 Object bogus1 = moe.getSLSB( "bogusJNDI1" ); 071 Object bogus2 = larry.getSLSB( "bogusJNDI2" ); 072 } 073 private static Log _log = LogFactory.getLog(opctest.class); 074 } 075 076