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