Java tutorial
/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.data.jdbc; import static org.junit.Assert.*; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import org.geotools.data.jdbc.datasource.DataSourceFinder; import org.geotools.data.jdbc.datasource.UnWrapper; import org.junit.Before; import org.junit.Test; /** * Uses the known target org.apache.commons.dbcp.DelegatingStatement to test out GenericUnWrapper in * isolation. * * @author Jody Garnett (Boundless) */ public class GenericUnWrapperTest { GenericUnWrapper unwrapper = new GenericUnWrapper(); @Before public void reset() { // reset generic wrapper state GenericUnWrapper.CONNECTION_METHODS.remove(WrapperConnection.class); } @Test public void testUnwrapConnection() throws SQLException, NoSuchMethodException, SecurityException { Connection connection = new TestConnection(); Connection wrapper = new WrapperConnection(connection); assertTrue(wrapper.isWrapperFor(Connection.class)); Connection unwrap = wrapper.unwrap(Connection.class); assertSame(connection, unwrap); UnWrapper unwrapper = new GenericUnWrapper(); assertFalse(unwrapper.canUnwrap(wrapper)); try { assertNull(unwrapper.unwrap(wrapper)); fail("Cannot unwrap yet"); } catch (Exception expected) { } GenericUnWrapper.CONNECTION_METHODS.put(WrapperConnection.class, WrapperConnection.class.getMethod("getUnderlyingConnection", null)); assertTrue(unwrapper.canUnwrap(wrapper)); assertSame(connection, unwrapper.unwrap(wrapper)); } @Test public void testSPIRegistration() throws Exception { Connection connection = new TestConnection(); Connection wrapper = new WrapperConnection(connection); UnWrapper uw = DataSourceFinder.getUnWrapper(wrapper); if (uw != null) { assertTrue("picked up by jdbc4 extractor", uw instanceof SpringUnWrapper); } GenericUnWrapper.CONNECTION_METHODS.put(WrapperConnection.class, WrapperConnection.class.getMethod("getUnderlyingConnection", null)); uw = DataSourceFinder.getUnWrapper(wrapper); assertNotNull("registed and canUnwrap", uw); if (uw instanceof GenericUnWrapper) { assertSame("Generic unwrapper is working", connection, uw.unwrap(wrapper)); } } }