/** * Construct an instance with a {@link DefaultSessionFactoryLocator} using the * supplied factories and default key. * @param factories the factories. * @param defaultFactory the default to use if the lookup fails. */ public DelegatingSessionFactory(Map<Object, SessionFactory<F>> factories, SessionFactory<F> defaultFactory) { this(new DefaultSessionFactoryLocator<F>(factories, defaultFactory)); }
@Test public void testDelegates() { assertEquals(foo.mockSession, this.dsf.getSession("foo")); assertEquals(bar.mockSession, this.dsf.getSession("bar")); assertEquals(bar.mockSession, this.dsf.getSession("junk")); assertEquals(bar.mockSession, this.dsf.getSession()); this.dsf.setThreadKey("foo"); assertEquals(foo.mockSession, this.dsf.getSession("foo")); this.dsf.clearThreadKey(); TestSessionFactory factory = new TestSessionFactory(); this.sessionFactoryLocator.addSessionFactory("baz", factory); this.dsf.setThreadKey("baz"); assertEquals(factory.mockSession, this.dsf.getSession("baz")); this.dsf.clearThreadKey(); assertSame(factory, sessionFactoryLocator.removeSessionFactory("baz")); }
@Bean public SessionFactoryLocator<String> sessionFactoryLocator() { Map<Object, SessionFactory<String>> factories = new HashMap<>(); factories.put("foo", foo()); TestSessionFactory bar = bar(); factories.put("bar", bar); return new DefaultSessionFactoryLocator<>(factories, bar); }
@Bean public SessionFactoryLocator<FTPFile> factoryLocator() { return new DefaultSessionFactoryLocator<>(new SessionFactoryMapBuilder<FTPFile>() .put("one", factory1()) .put("two", factory2()) .put("three", factory3()) .get()); }