@Test public void testLookupWithExpectedTypeAndNoMatch() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", new Object())); jof.setJndiName("foo"); jof.setExpectedType(String.class); try { jof.afterPropertiesSet(); fail("Should have thrown NamingException"); } catch (NamingException ex) { assertTrue(ex.getMessage().contains("java.lang.String")); } }
@Test public void testLookupWithSchemeNameAndResourceRefFalse() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("java:foo", o)); jof.setJndiName("java:foo"); jof.setResourceRef(false); jof.afterPropertiesSet(); assertTrue(jof.getObject() == o); }
@Test public void testLookupWithFullNameAndResourceRefFalse() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("java:comp/env/foo", o)); jof.setJndiName("java:comp/env/foo"); jof.setResourceRef(false); jof.afterPropertiesSet(); assertTrue(jof.getObject() == o); }
@Test public void testLookupWithArbitraryNameAndResourceRefFalse() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", o)); jof.setJndiName("foo"); jof.setResourceRef(false); jof.afterPropertiesSet(); assertTrue(jof.getObject() == o); }
@Test public void testLookupWithFullNameAndResourceRefTrue() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("java:comp/env/foo", o)); jof.setJndiName("java:comp/env/foo"); jof.setResourceRef(true); jof.afterPropertiesSet(); assertTrue(jof.getObject() == o); }
@Test public void testLookupWithShortNameAndResourceRefFalse() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("java:comp/env/foo", o)); jof.setJndiName("foo"); jof.setResourceRef(false); try { jof.afterPropertiesSet(); fail("Should have thrown NamingException"); } catch (NamingException ex) { // expected } }
@Test public void testLookupWithSchemeNameAndResourceRefTrue() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("java:foo", o)); jof.setJndiName("java:foo"); jof.setResourceRef(true); jof.afterPropertiesSet(); assertTrue(jof.getObject() == o); }
@Test public void testLookupWithShortNameAndResourceRefTrue() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); Object o = new Object(); jof.setJndiTemplate(new ExpectedLookupTemplate("java:comp/env/foo", o)); jof.setJndiName("foo"); jof.setResourceRef(true); jof.afterPropertiesSet(); assertTrue(jof.getObject() == o); }
@Test public void testLookupWithDefaultObjectAndExpectedTypeConversion() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", "")); jof.setJndiName("myFoo"); jof.setExpectedType(Integer.class); jof.setDefaultObject("5"); jof.afterPropertiesSet(); assertEquals(new Integer(5), jof.getObject()); }
@Test public void testLookupWithProxyInterfaceAndExpectedTypeAndNoMatch() { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); TestBean tb = new TestBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", tb)); jof.setJndiName("foo"); jof.setExpectedType(DerivedTestBean.class); jof.setProxyInterface(ITestBean.class); try { jof.afterPropertiesSet(); fail("Should have thrown NamingException"); } catch (NamingException ex) { assertTrue(ex.getMessage().contains("org.springframework.tests.sample.beans.DerivedTestBean")); } }
@Test public void testLookupWithDefaultObjectAndExpectedTypeConversionViaBeanFactory() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", "")); jof.setJndiName("myFoo"); jof.setExpectedType(Integer.class); jof.setDefaultObject("5"); jof.setBeanFactory(new DefaultListableBeanFactory()); jof.afterPropertiesSet(); assertEquals(new Integer(5), jof.getObject()); }
@Test public void testLookupWithExpectedTypeAndMatch() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); String s = ""; jof.setJndiTemplate(new ExpectedLookupTemplate("foo", s)); jof.setJndiName("foo"); jof.setExpectedType(String.class); jof.afterPropertiesSet(); assertTrue(jof.getObject() == s); }
@Test public void testLookupWithDefaultObjectAndExpectedType() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", "")); jof.setJndiName("myFoo"); jof.setExpectedType(String.class); jof.setDefaultObject("myString"); jof.afterPropertiesSet(); assertEquals("myString", jof.getObject()); }
@Test public void testLookupWithDefaultObjectAndExpectedTypeNoMatch() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", "")); jof.setJndiName("myFoo"); jof.setExpectedType(Boolean.class); jof.setDefaultObject("5"); try { jof.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException ex) { // expected } }
@Test public void testLookupWithDefaultObject() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", "")); jof.setJndiName("myFoo"); jof.setExpectedType(String.class); jof.setDefaultObject("myString"); jof.afterPropertiesSet(); assertEquals("myString", jof.getObject()); }
@Test public void testLookupWithExposeAccessContext() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); TestBean tb = new TestBean(); final Context mockCtx = mock(Context.class); given(mockCtx.lookup("foo")).willReturn(tb); jof.setJndiTemplate(new JndiTemplate() { @Override protected Context createInitialContext() { return mockCtx; } }); jof.setJndiName("foo"); jof.setProxyInterface(ITestBean.class); jof.setExposeAccessContext(true); jof.afterPropertiesSet(); assertTrue(jof.getObject() instanceof ITestBean); ITestBean proxy = (ITestBean) jof.getObject(); assertEquals(0, tb.getAge()); proxy.setAge(99); assertEquals(99, tb.getAge()); proxy.equals(proxy); proxy.hashCode(); proxy.toString(); verify(mockCtx, times(2)).close(); }
@Test public void testLookupWithProxyInterfaceAndDefaultObject() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); TestBean tb = new TestBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", tb)); jof.setJndiName("myFoo"); jof.setProxyInterface(ITestBean.class); jof.setDefaultObject(Boolean.TRUE); try { jof.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException ex) { // expected } }
@Test public void testLookupWithProxyInterface() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); TestBean tb = new TestBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", tb)); jof.setJndiName("foo"); jof.setProxyInterface(ITestBean.class); jof.afterPropertiesSet(); assertTrue(jof.getObject() instanceof ITestBean); ITestBean proxy = (ITestBean) jof.getObject(); assertEquals(0, tb.getAge()); proxy.setAge(99); assertEquals(99, tb.getAge()); }
@Test public void testLookupWithProxyInterfaceAndExpectedTypeAndMatch() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); TestBean tb = new TestBean(); jof.setJndiTemplate(new ExpectedLookupTemplate("foo", tb)); jof.setJndiName("foo"); jof.setExpectedType(TestBean.class); jof.setProxyInterface(ITestBean.class); jof.afterPropertiesSet(); assertTrue(jof.getObject() instanceof ITestBean); ITestBean proxy = (ITestBean) jof.getObject(); assertEquals(0, tb.getAge()); proxy.setAge(99); assertEquals(99, tb.getAge()); }
@Test public void testLookupWithProxyInterfaceWithNotCache() throws Exception { JndiObjectFactoryBean jof = new JndiObjectFactoryBean(); final TestBean tb = new TestBean(); jof.setJndiTemplate(new JndiTemplate() { @Override public Object lookup(String name) { if ("foo".equals(name)) { tb.setName("tb"); tb.setAge(tb.getAge() + 1); return tb; } return null; } }); jof.setJndiName("foo"); jof.setProxyInterface(ITestBean.class); jof.setCache(false); jof.afterPropertiesSet(); assertTrue(jof.getObject() instanceof ITestBean); ITestBean proxy = (ITestBean) jof.getObject(); assertEquals("tb", tb.getName()); assertEquals(1, tb.getAge()); proxy.returnsThis(); assertEquals(2, tb.getAge()); proxy.haveBirthday(); assertEquals(4, tb.getAge()); }