/******************************************************************************* | |
* Copyright (c) 1998, 2013 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 v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.framework; | |
import java.util.*; | |
import org.eclipse.persistence.config.PersistenceUnitProperties; | |
import org.eclipse.persistence.exceptions.*; | |
import org.eclipse.persistence.logging.AbstractSessionLog; | |
import org.eclipse.persistence.platform.database.TimesTenPlatform; | |
import org.eclipse.persistence.sessions.DatabaseLogin; | |
import org.eclipse.persistence.sessions.DatabaseSession; | |
import org.eclipse.persistence.platform.database.DatabasePlatform; | |
import org.eclipse.persistence.sessions.Project; | |
import org.eclipse.persistence.sessions.Session; | |
import org.eclipse.persistence.testing.framework.junit.JUnitTestCaseHelper; | |
import org.eclipse.persistence.tools.schemaframework.*; | |
/** | |
* Used in a test model to configure the database and session. | |
* This class also store every database login that we use. | |
*/ | |
public class TestSystem { | |
protected DatabaseLogin login; | |
public Project project; | |
public Map<String, String> properties; | |
/** | |
* Add all of the descriptors. | |
*/ | |
public void addDescriptors(DatabaseSession session) { | |
session.addDescriptors(buildDescriptors()); | |
} | |
/** | |
* Return all descriptor for the system. | |
* This can be used so that subclasses do not have to add descriptors themselves. | |
*/ | |
public Vector buildDescriptors() { | |
return new Vector(); | |
} | |
/** | |
* Return all tables for the system. | |
* This can be used so that subclasses do not have to create the tables themselves. | |
*/ | |
public Vector buildTables() { | |
return new Vector(); | |
} | |
/** | |
* Define the table creation pattern. | |
*/ | |
public void createTables() throws Exception { | |
DatabaseSession session; | |
session = login(); | |
try { | |
createTables(session); | |
} finally { | |
session.logout(); | |
} | |
} | |
/** | |
* Default method to create/recreate the database. | |
* First drop constraints ignoring errors if tables did not exist. | |
* Second recreate the tables. | |
* Then add the constraints back. | |
*/ | |
public void createTables(DatabaseSession session) throws Exception { | |
Vector tables = buildTables(); | |
SchemaManager schemaManager = new SchemaManager(session); | |
for (Enumeration dropForeignKeyEnum = tables.elements(); | |
dropForeignKeyEnum.hasMoreElements();) { | |
TableDefinition table = (TableDefinition)dropForeignKeyEnum.nextElement(); | |
try { | |
schemaManager.dropConstraints(table); | |
} catch (DatabaseException exception) { | |
// Ignore | |
} | |
} | |
for (Enumeration replaceEnum = tables.elements(); replaceEnum.hasMoreElements();) { | |
TableDefinition table = (TableDefinition)replaceEnum.nextElement(); | |
schemaManager.replaceObject(table); | |
} | |
for (Enumeration createForeignKeyEnum = tables.elements(); | |
createForeignKeyEnum.hasMoreElements();) { | |
TableDefinition table = (TableDefinition)createForeignKeyEnum.nextElement(); | |
schemaManager.createConstraints(table); | |
} | |
} | |
/** | |
* Return the default database login to be used. | |
*/ | |
public DatabaseLogin getLogin() { | |
if (login == null) { | |
loadLoginFromProperties(); | |
} | |
return login; | |
} | |
/** | |
* Load the default login from the test.properties file. | |
* This file must be on the classpath, or system property set. | |
*/ | |
public void loadLoginFromProperties() { | |
this.properties = JUnitTestCaseHelper.getDatabaseProperties(); | |
login = new DatabaseLogin(); | |
login.setDriverClassName(this.properties.get(PersistenceUnitProperties.JDBC_DRIVER)); | |
login.setConnectionString(this.properties.get(PersistenceUnitProperties.JDBC_URL)); | |
login.setUserName(this.properties.get(PersistenceUnitProperties.JDBC_USER)); | |
// This avoids encrypting the password, as some tests require it non-encrypted. | |
login.setEncryptedPassword(this.properties.get(PersistenceUnitProperties.JDBC_PASSWORD)); | |
String platform = this.properties.get("eclipselink.target-database"); | |
if (platform != null) { | |
login.setPlatformClassName(platform); | |
} | |
} | |
/** | |
* Return a connected session using the default login. | |
*/ | |
public DatabaseSession login() { | |
DatabaseSession session; | |
session = new Project(getLogin()).createDatabaseSession(); | |
addDescriptors(session); | |
session.setLogLevel(AbstractSessionLog.translateStringToLoggingLevel(properties.get(PersistenceUnitProperties.LOGGING_LEVEL))); | |
session.login(); | |
return session; | |
} | |
/** | |
* Define the database population pattern. | |
*/ | |
public void populate() throws Exception { | |
DatabaseSession session; | |
session = login(); | |
try { | |
populate(session); | |
} finally { | |
session.logout(); | |
} | |
} | |
/** | |
* Abstract method for database population. | |
*/ | |
public void populate(DatabaseSession session) throws Exception { | |
// Nothing by default. | |
} | |
/** | |
* Used for configuration during testing. | |
*/ | |
public void run(Session session) throws Exception { | |
// Use old API to be able to run on 9.0.4 for perf testing. | |
session.getIdentityMapAccessor().initializeIdentityMaps(); | |
this.addDescriptors((DatabaseSession)session); | |
if (session.getDatasourceLogin().getDatasourcePlatform().isTimesTen()) { | |
((TimesTenPlatform)session.getDatasourceLogin().getDatasourcePlatform()).setSupportsForeignKeyConstraints(false); | |
} | |
this.createTables((DatabaseSession)session); | |
this.populate((DatabaseSession)session); | |
// Use old API to be able to run on 9.0.4 for perf testing. | |
session.getIdentityMapAccessor().initializeIdentityMaps(); | |
} | |
/** | |
* Set the default database login to be used. | |
*/ | |
public void setLogin(DatabaseLogin login) { | |
this.login = login; | |
} | |
/** | |
* You must have MS Access installed an the MS ODBC setup to a local database. | |
*/ | |
public void useAccessJDBCODBC() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useAccess(); | |
login.setODBCDataSourceName("MSACCESS"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Attunity Connect driver loaded. | |
*/ | |
public void useAttunityConnect() { | |
DatabaseLogin login = new DatabaseLogin(new org.eclipse.persistence.platform.database.AttunityPlatform()); | |
login.setDatabaseURL("mercury2;deftdpname=oracle"); | |
login.setDriverClassName("com.attunity.jdbc.NvDriver"); | |
login.setDriverURLHeader("jdbc:attconnect://"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Derby driver loaded. | |
*/ | |
public void useDerby() { | |
DatabaseLogin login = new DatabaseLogin(new org.eclipse.persistence.platform.database.DerbyPlatform()); | |
login.setDriverClassName("org.apache.derby.jdbc.EmbeddedDriver"); | |
login.setDriverURLHeader("jdbc:derby:"); | |
login.setDatabaseURL("test;create=true"); | |
setLogin(login); | |
} | |
/** | |
* You must have the H2 driver loaded. | |
*/ | |
public void useH2() { | |
DatabaseLogin login = new DatabaseLogin(new org.eclipse.persistence.platform.database.H2Platform()); | |
login.setDriverClassName("org.h2.Driver"); | |
login.setDriverURLHeader("jdbc:h2:"); | |
login.setDatabaseURL("test"); | |
login.setUserName("sa"); | |
login.setPassword(""); | |
setLogin(login); | |
} | |
/** | |
* You must have the Postgres driver loaded. | |
*/ | |
public void usePostgres() { | |
DatabaseLogin login = new DatabaseLogin(new org.eclipse.persistence.platform.database.PostgreSQLPlatform()); | |
login.setDriverClassName("org.postgresql.Driver"); | |
login.setDriverURLHeader("jdbc:postgresql:"); | |
login.setDatabaseURL("//ottvm048.ca.oracle.com/toplink"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Universal drivers and license files loaded. | |
*/ | |
public void useDB2UniversalDriver() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useDB2(); | |
login.setDriverClassName("com.ibm.db2.jcc.DB2Driver"); | |
login.setDriverURLHeader("jdbc:db2://"); | |
login.setDatabaseURL("ottvm046.ca.oracle.com:50000/TOPLINK2"); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have the DataDirect drivers and oc4j.jar loaded. | |
*/ | |
public void useDB2DataDirect() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useDB2(); | |
login.setDriverClassName("com.oracle.ias.jdbc.db2.DB2Driver"); | |
login.setDriverURLHeader("jdbc:oracle:db2://"); | |
login.setDatabaseURL("tlsvrdb7.ca.oracle.com:50001;DatabaseName=TOPLINK"); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have DB2 client installed and the IBM JDBC driver loaded. | |
*/ | |
public void useDB2App() { | |
DatabaseLogin login = new DatabaseLogin(); | |
//login.useDB2JDBCDriver(); | |
login.useDB2(); | |
login.setDriverClassName("COM.ibm.db2.jdbc.app.DB2Driver"); | |
login.setDriverURLHeader("jdbc:db2:"); | |
login.useStreamsForBinding(); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.setDatabaseURL("TOPLINK"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the IBM JDBC driver loaded. | |
*/ | |
public void useDB2Net() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useDB2(); | |
login.setDriverClassName("COM.ibm.db2.jdbc.net.DB2Driver"); | |
login.setDriverURLHeader("jdbc:db2:"); | |
login.useStreamsForBinding(); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.setDatabaseURL("tlsvrdb7.ca.oracle.com:TOPLINK"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the MySQL Connector/J JDBC driver loaded. | |
* @param userName java.lang.String | |
* Creation date: (03/17/05 4:50:00 PM) | |
* Creator: Edwin Tang | |
*/ | |
public void useMySQL(String userName) { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useMySQL(); | |
login.setDriverClassName("com.mysql.jdbc.Driver"); | |
login.setDriverURLHeader("jdbc:mysql:"); | |
login.useStreamsForBinding(); | |
login.setUserName(userName); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.setDatabaseURL("//ottvm044.ca.oracle.com:3306/"+userName); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the HSQL driver loaded. You must have the HSQL server running. | |
*/ | |
public void useHSQL() { | |
DatabaseLogin login = new DatabaseLogin(new org.eclipse.persistence.platform.database.HSQLPlatform()); | |
login.useHSQLDriver(); | |
login.setDatabaseURL("file:test"); | |
login.setUserName("sa"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Informix thin driver loaded. | |
*/ | |
public void useInformixJDBC20() { | |
DatabaseLogin login = new DatabaseLogin(new org.eclipse.persistence.platform.database.InformixPlatform()); | |
login.useInformix(); | |
login.useByteArrayBinding(); | |
login.setDriverClassName("com.informix.jdbc.IfxDriver"); | |
login.setDriverURLHeader("jdbc:informix-sqli://"); | |
login.setDatabaseURL("mercury2:1526/toplinkj:INFORMIXSERVER=toplinkj"); | |
login.setUserName("informix"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("informix"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Informix drivers loaded. | |
*/ | |
public void useInformix11() { | |
DatabaseLogin dbLogin = new DatabaseLogin(new org.eclipse.persistence.platform.database.InformixPlatform()); | |
dbLogin.useInformix(); | |
dbLogin.setDriverClassName("com.informix.jdbc.IfxDriver"); | |
dbLogin.setDriverURLHeader("jdbc:informix-sqli://"); | |
dbLogin.setDatabaseURL("tlsvrdb6.ca.oracle.com:9088/toplink:INFORMIXSERVER=informix"); | |
dbLogin.setUserName("informix"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
dbLogin.setEncryptedPassword("password"); | |
setLogin(dbLogin); | |
} | |
/** | |
* This is a generic configuration, would should test this occationally to test generic drivers. | |
* A "JDBC" ODBC entry must be setup, however table creation will fail for most databases, I think | |
* if it is setup to DB2 table creation will pass. | |
*/ | |
public void useJDBCODBC() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.setODBCDataSourceName("JDBC"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Oracle client installed and the Oracle JDBC driver loaded. | |
*/ | |
public void useOracleOCI() { | |
DatabaseLogin login = new DatabaseLogin(OracleDBPlatformHelper.getInstance().getOracle9Platform()); | |
login.useOracleJDBCDriver(); | |
login.setDatabaseURL("toplink"); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have the MS JDBC driver for SQL Server loaded. | |
*/ | |
public void useSQLServerMSJDBC() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useSQLServer(); | |
login.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); | |
login.setDriverURLHeader("jdbc:sqlserver://"); | |
login.setDatabaseURL("ottvm041"); | |
login.setUserName("dev1"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the SQL Server and the Weblogic drivers installed. | |
*/ | |
public void useSQLServerWeblogicDBLib() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useWebLogicSQLServerDBLibDriver(); | |
login.setDatabaseURL("ottvm041"); | |
login.setUserName("dev1"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the DataDirect drivers and oc4j.jar loaded.. | |
*/ | |
public void useSQLServerDataDirect() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useSQLServer(); | |
login.setDriverClassName("com.oracle.ias.jdbc.sqlserver.SQLServerDriver"); | |
login.setDriverURLHeader("jdbc:oracle:sqlserver://"); | |
login.setDatabaseURL("localhost\\\\ottvm041"); | |
login.setUserName("dev1"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the Sybase JConnect thin driver loaded. | |
*/ | |
public void useSybaseJConnect() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useSybase(); | |
login.setDriverClassName("com.sybase.jdbc3.jdbc.SybDriver"); | |
login.setDriverURLHeader("jdbc:sybase:Tds:"); | |
login.setDatabaseURL("ottvm031.ca.oracle.com:5000/qa2"); | |
login.setUserName("qa2"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have the DataDirect drivers and oc4j.jar loaded. | |
*/ | |
public void useSybaseDataDirect() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useSybase(); | |
login.setDriverClassName("com.oracle.ias.jdbc.sybase.SybaseDriver"); | |
login.setDriverURLHeader("jdbc:oracle:sybase://"); | |
login.setDatabaseURL("ottvm031.ca.oracle.com:5000/qa2"); | |
login.setUserName("qa2"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Oracle thin driver loaded. | |
* @param userName java.lang.String | |
* Creation date: (12/7/00 4:03:00 PM) | |
* Creator: Edwin Tang | |
*/ | |
public void useOracleThin(String databaseURL, String userName, String password) { | |
DatabasePlatform platform = null; | |
try{ | |
Class platformClass = Class.forName("org.eclipse.persistence.platform.database.oracle.Oracle9Platform"); | |
platform = (DatabasePlatform)platformClass.newInstance(); | |
} catch (Exception e){ | |
platform = new org.eclipse.persistence.platform.database.OraclePlatform(); | |
} | |
DatabaseLogin login = new DatabaseLogin(platform); | |
login.useOracleThinJDBCDriver(); | |
login.setDatabaseURL(databaseURL); | |
login.setUserName(userName); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword(password); | |
setLogin(login); | |
} | |
/** | |
* You must have the Oracle 8 thin driver loaded. | |
* @param userName java.lang.String | |
* Creation date: (12/7/00 4:03:00 PM) | |
* Creator: Praba Vijayaratnam | |
*/ | |
public void useOracle8Thin(String databaseURL, String userName, String password) { | |
DatabasePlatform platform = null; | |
try{ | |
Class platformClass = Class.forName("org.eclipse.persistence.platform.database.oracle.Oracle8Platform"); | |
platform = (DatabasePlatform)platformClass.newInstance(); | |
} catch (Exception e){ | |
platform = new org.eclipse.persistence.platform.database.OraclePlatform(); | |
} | |
DatabaseLogin login = new DatabaseLogin(platform); | |
login.useOracleThinJDBCDriver(); | |
login.setDatabaseURL(databaseURL); | |
login.setUserName(userName); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword(password); | |
setLogin(login); | |
} | |
/** | |
* You must have DB2 installed with the IBM DB2 ODBC driver setup as "DB2". | |
*/ | |
public void useDB2JDBCODBC() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useDB2(); | |
login.setODBCDataSourceName("DB2"); | |
login.setUserName(""); | |
login.setTableQualifier(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have DB2 installed with a TopLink database created and the IBM JDBC driver loaded. | |
*/ | |
public void useDB2JDBC() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useDB2JDBCDriver(); | |
login.useByteArrayBinding(); | |
login.useStreamsForBinding(); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.setDatabaseURL("TOPLINK"); | |
setLogin(login); | |
} | |
/** | |
* You must have the SQL Server and the Weblogic drivers installed. | |
*/ | |
public void useSQLServerWeblogicThin() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useSQLServer(); | |
login.useWebLogicSQLServerDriver(); | |
login.setODBCDataSourceName("localhost"); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the Sybase JConnect thin driver loaded. | |
*/ | |
public void useSybaseJConnect50() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.setDriverClassName(""); | |
login.setDatabaseURL("tlsvrdb1.ca.oracle.com:5000/COREDEV1"); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have the Sybase client installed and the Weblogic JDBC driver loaded. | |
*/ | |
public void useSybaseWeblogicDBLib() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useWebLogicSybaseDBLibDriver(); | |
login.setDatabaseURL(""); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
/** | |
* You must have the SQL Server and the i-net jdbc driver for java 2 installed. This will run on TM2. | |
*/ | |
public void useSQLServerThin() { | |
DatabaseLogin login = new DatabaseLogin(); | |
login.useSQLServer(); | |
login.useINetSQLServerDriver(); | |
login.setODBCDataSourceName("localhost"); | |
login.setUserName(""); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the TimesTen JDBC driver loaded. | |
* @param userName java.lang.String | |
* Creation date: (11/10/05 4:55:00 PM) | |
* Creator: Edwin Tang | |
*/ | |
public void useTimesTen(String userName) { | |
DatabaseLogin login = new DatabaseLogin(); | |
try { | |
login.usePlatform((org.eclipse.persistence.internal.databaseaccess.DatabasePlatform)Class.forName("org.eclipse.persistence.platform.database.TimesTenPlatform").newInstance()); | |
} catch (Exception e) {} | |
login.setDriverClassName("com.timesten.jdbc.TimesTenDriver"); | |
login.setDriverURLHeader("jdbc:timesten:client:"); | |
login.useStreamsForBinding(); | |
login.setUserName(userName); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
login.setDatabaseURL(userName); | |
login.useByteArrayBinding(); | |
setLogin(login); | |
} | |
/** | |
* You must have the Symfoware JDBC driver loaded. | |
*/ | |
public void useSymfowareRDB2_TCP() { | |
DatabaseLogin login = new DatabaseLogin(); | |
try { | |
login.usePlatform((org.eclipse.persistence.internal.databaseaccess.DatabasePlatform)Class.forName("org.eclipse.persistence.platform.database.SymfowarePlatform").newInstance()); | |
} catch (Exception e) { | |
e.printStackTrace(); | |
} | |
login.setDriverClassName("com.fujitsu.symfoware.jdbc.SYMDriver"); | |
login.setDriverURLHeader("jdbc:symford:"); | |
// codeselect setting reduces garbled characters when DB and client's | |
// character encoding settings do not match | |
login.setDatabaseURL("TESTDB"); | |
//set the encrypted password will enable toplink to use the plain text password as is | |
login.setEncryptedPassword("password"); | |
setLogin(login); | |
} | |
} |