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