Package org.geoserver.data.jdbc

Source Code of org.geoserver.data.jdbc.GenericUnWrapperTest

/* (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 ));
         }
    }

}
TOP

Related Classes of org.geoserver.data.jdbc.GenericUnWrapperTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.