blob: 2a97c5572af44f9a512c2cb2789957748ea38e4b [file] [log] [blame]
/*
* Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
import javax.sql.PooledConnection;
import java.sql.Connection;
import javax.sql.DataSource;
import org.apache.derby.jdbc.EmbeddedDataSource;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* Enables Authentication for Embedded Derby Mode.
* Enables Authentication of certain users for use in the JDBC devtests.
*
* @author shalini
*/
public class SetDerbyAuthentication {
private static String DATABASES_HOME = "/tmp/jdbc_devtests/databases";
private static String RECONFIG_DB_NAME = DATABASES_HOME + "/reconfig-db";
private static String SAMPLE_DB_NAME = DATABASES_HOME + "/sample-db";
private static String SUN_APPSERV_SAMPLES_DB = DATABASES_HOME + "/sun-appserv-samples";
public static void main(String[] args) {
setCommonDBAuthentication();
setReconfigDBAuthentication();
createReconfigTables();
}
private static void setCommonDBAuthentication() {
Statement stmt = null;
Connection con = null;
ResultSet rs = null;
try {
DataSource ds = initializeDataSource();
con = (Connection) ds.getConnection();
stmt = con.createStatement();
//Execute CallableStatement to enable authentication
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.connection.requireAuthentication', 'true')");
rs = stmt.executeQuery(
"VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY(" +
"'derby.connection.requireAuthentication')");
rs.next();
System.out.println("Authentication set to " + rs.getString(1));
//Setting Usernames and passwords
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.dbuser', 'dbpassword')");
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.DBUSER', 'DBPASSWORD')");
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.APP', 'APP')");
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.DERBYUSER', 'DERBYPASSWORD')");
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
}
} catch(Exception e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static void setReconfigDBAuthentication() {
Statement stmt = null;
Connection con = null;
ResultSet rs = null;
try {
DataSource ds = initializeReconfigDataSource();
con = (Connection) ds.getConnection();
stmt = con.createStatement();
//Execute CallableStatement to enable authentication
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.connection.requireAuthentication', 'true')");
rs = stmt.executeQuery(
"VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY(" +
"'derby.connection.requireAuthentication')");
rs.next();
System.out.println("Authentication set to " + rs.getString(1));
//Setting Usernames and passwords
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.ruser', 'rpassword')");
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.RUSER', 'RPASSWORD')");
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
}
} catch(Exception e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static void setSampleDBAuthentication() {
Statement stmt = null;
Connection con = null;
ResultSet rs = null;
try {
DataSource ds = initializeSampleDataSource();
con = (Connection) ds.getConnection();
stmt = con.createStatement();
//Execute CallableStatement to enable authentication
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.connection.requireAuthentication', 'true')");
rs = stmt.executeQuery(
"VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY(" +
"'derby.connection.requireAuthentication')");
rs.next();
System.out.println("Authentication set to " + rs.getString(1));
//Setting Usernames and passwords
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.APP', 'APP')");
stmt.executeUpdate("CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(" +
"'derby.user.app', 'app')");
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
}
} catch(Exception e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private static void createReconfigTables() {
Statement stmt = null;
Statement stmt1= null;
String reconfigTable = "reconfigTestTable";
String commonTable = "sampleTable";
String columnName = "ID";
Connection con = null;
Connection con1 = null;
try {
DataSource ds = initializeReconfigDataSource();
DataSource ds1 = initializeSampleDataSource();
con = (Connection) ds.getConnection();
con1 = (Connection) ds1.getConnection();
stmt = con.createStatement();
stmt1 = con1.createStatement();
String query = "create table " + reconfigTable + "(" + columnName + " char(50))";
stmt.executeUpdate(query);
query = "create table " + commonTable + "(" + columnName + " char(50))";
stmt1.executeUpdate(query);
System.out.println("Created tables : reconfigTestTable and sampleTable");
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if(stmt1 != null) {
stmt1.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (con != null) {
con.close();
}
if(con1 != null) {
con1.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* Sets the EmbeddedDataSource properties corresponding to the pool configuration
* created for running the JDBC reconfig devtests.
*/
private static org.apache.derby.jdbc.EmbeddedDataSource initializeReconfigDataSource() {
EmbeddedDataSource ds = new EmbeddedDataSource();
ds.setUser("ruser");
ds.setPassword("rpassword");
ds.setDatabaseName(RECONFIG_DB_NAME);
ds.setConnectionAttributes("create=true");
return ds;
}
/**
* Sets the EmbeddedDataSource properties corresponding to the pool configuration
* created for running the JDBC reconfig devtests.
*/
private static org.apache.derby.jdbc.EmbeddedDataSource initializeSampleDataSource() {
EmbeddedDataSource ds = new EmbeddedDataSource();
ds.setUser("APP");
ds.setPassword("APP");
ds.setDatabaseName(SAMPLE_DB_NAME);
ds.setConnectionAttributes("create=true");
return ds;
}
/**
* Sets the EmbeddedDataSource properties corresponding to the pool configuration
* created for running the JDBC devtests.
*/
private static org.apache.derby.jdbc.EmbeddedDataSource initializeDataSource() {
EmbeddedDataSource ds = new EmbeddedDataSource();
ds.setUser("APP");
ds.setPassword("APP");
ds.setDatabaseName(SUN_APPSERV_SAMPLES_DB);
ds.setConnectionAttributes("create=true");
return ds;
}
}