1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.sql.tests.java.sql; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.sql.Connection; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.sql.Driver; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.sql.DriverManager; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.sql.DriverPropertyInfo; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.sql.SQLException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Basic JDBC driver implementation to help with tests 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class TestHelper_Driver4 implements Driver { 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int majorVersion = 1; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int minorVersion = 0; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String baseURL; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] dataSources = { "data1", "data2", "data3" }; 388d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Driver theDriver = new TestHelper_Driver4(); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DriverManager.registerDriver(theDriver); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SQLException e) { 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Failed to register driver!"); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end static block initializer 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected TestHelper_Driver4() { 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes baseURL = "jdbc:mikes4"; 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end constructor TestHelper_Driver4() 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean acceptsURL(String url) throws SQLException { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Check on the supplied String... 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (url == null) { 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Everything's fine if the quoted url starts with the base url for this 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // driver 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (url.startsWith(baseURL)) { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return true; 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end method acceptsURL 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static String validuser = "theuser"; 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static String validpassword = "thepassword"; 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static String userProperty = "user"; 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static String passwordProperty = "password"; 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Connection connect(String url, Properties info) throws SQLException { 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Does the URL have the right form? 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.acceptsURL(url)) { 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The datasource name is the remainder of the url after the ":" 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String datasource = url.substring(baseURL.length() + 1); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (String element : dataSources) { 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (datasource.equals(element)) { 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /* 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Check for user and password, except for datasource = 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * data1 which is set up not to require a user/password 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * combination 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (datasource.equals("data1")) { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // do nothing... 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (info == null) { 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SQLException("Properties bundle is null"); 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String user = (String) info.get(userProperty); 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String password = (String) info.get(passwordProperty); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (user == null || password == null) { 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SQLException( 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Userid and/or password not supplied"); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!user.equals(validuser) 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes || !password.equals(validpassword)) { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new SQLException( 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Userid and/or password not valid"); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end if 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end if 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // It all checks out - so return a connection 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Connection connection = new TestHelper_Connection1(); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return connection; 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end if 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end for 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end if 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return null; 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end method connect(String, Properties) 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int getMajorVersion() { 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return majorVersion; 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end method getMajorVersion() 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int getMinorVersion() { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return minorVersion; 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } // end method getMinorVersion() 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws SQLException { 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes DriverPropertyInfo[] theInfos = { 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new DriverPropertyInfo(userProperty, "*"), 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new DriverPropertyInfo(passwordProperty, "*"), }; 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return theInfos; 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean jdbcCompliant() { 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Basic version here returns false 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 134