/*******************************************************************************
* Copyright (c) 1998, 2015 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.tools.workbench.test.scplugin.model.write;
import java.io.File;
import java.io.IOException;
import java.util.Vector;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.persistence.internal.sessions.factories.model.log.DefaultSessionLogConfig;
import org.eclipse.persistence.internal.sessions.factories.model.login.DatabaseLoginConfig;
import org.eclipse.persistence.internal.sessions.factories.model.login.EISLoginConfig;
import org.eclipse.persistence.internal.sessions.factories.model.property.PropertyConfig;
import org.eclipse.persistence.internal.sessions.factories.model.rcm.RemoteCommandManagerConfig;
import org.eclipse.persistence.internal.sessions.factories.model.session.DatabaseSessionConfig;
import org.eclipse.persistence.internal.sessions.factories.model.session.ServerSessionConfig;
import org.eclipse.persistence.internal.sessions.factories.model.session.SessionConfig;
import org.eclipse.persistence.internal.sessions.factories.model.transport.JMSTopicTransportManagerConfig;
import org.eclipse.persistence.internal.sessions.factories.model.transport.naming.JNDINamingServiceConfig;
import org.eclipse.persistence.tools.workbench.test.scplugin.adapter.TopLinkSessionsAdapter;
import org.eclipse.persistence.tools.workbench.test.utility.TestTools;
public class DatabaseSessionWriteTest extends TestCase {
private TopLinkSessionsAdapter topLinkSessions;
private SessionConfig session;
private String path;
public DatabaseSessionWriteTest( String name) {
super( name);
}
public void testBasicDatabaseSession() throws IOException {
String name = "BasicDatabaseSessionWriteTest";
session = new DatabaseSessionConfig();
populateBasicDatabaseSession(( DatabaseSessionConfig)session, name);
this.saveSession( session, name);
}
public void testDatabaseSessionWithLogin() throws IOException {
String name = "DatabaseSessionWithLoginWriteTest";
session = new DatabaseSessionConfig();
populateBasicDatabaseSession(( DatabaseSessionConfig)session, name);
this.saveSession( session, name);
}
public void testDatabaseSession() throws IOException {
String name = "DatabaseSessionWriteTest";
session = new DatabaseSessionConfig();
populateBasicDatabaseSession(( DatabaseSessionConfig)session, name);
this.saveSession( session, name);
}
public void testServerSessionConfigManager() {
session = new ServerSessionConfig();
}
/**
* BasicDatabaseSession without Event Listener Classes.
*/
protected void populateBasicDatabaseSession( DatabaseSessionConfig session, String name) {
session.setName( name);
Vector projects = new Vector();
projects.add( "myProject");
// @deprecated
// session.setProjectClass( projects);
}
protected void populateDatabaseSessionWithLogin( DatabaseSessionConfig session, String name) {
session.setName( name);
//Login
DatabaseLoginConfig loginConfig = new DatabaseLoginConfig();
loginConfig.setPlatformClass("org.eclipse.persistence.OraclePlatform");
session.setLoginConfig( loginConfig);
}
protected void populateEisServerSession( ServerSessionConfig session, String name) {
session.setName( name);
//Login
EISLoginConfig loginConfig = new EISLoginConfig();
loginConfig.setConnectionSpecClass("org.eclipse.persistence.eis.EISPlatform");
session.setLoginConfig( loginConfig);
// Remote command manager
RemoteCommandManagerConfig rcmConfig = new RemoteCommandManagerConfig();
rcmConfig.setChannel("new_channel");
// Transport Manager
JMSTopicTransportManagerConfig transportConfig = new JMSTopicTransportManagerConfig();
transportConfig.setOnConnectionError("KeepConnection");
transportConfig.setTopicHostURL("ormi://jms_topic_host");
transportConfig.setTopicConnectionFactoryName("test-topic-connection-factory-name");
transportConfig.setTopicName("test-topic-name");
// Naming
JNDINamingServiceConfig namingConfig = new JNDINamingServiceConfig();
namingConfig.setURL("new_jndi_url");
namingConfig.setUsername("guy");
namingConfig.setPassword("password");
namingConfig.setInitialContextFactoryName("new_initial_context_factory_name");
Vector props = new Vector();
PropertyConfig one = new PropertyConfig();
one.setName("name1");
one.setValue("value1");
props.add(one);
PropertyConfig two = new PropertyConfig();
two.setName("name2");
two.setValue("value2");
props.add(two);
namingConfig.setPropertyConfigs(props);
transportConfig.setJNDINamingServiceConfig(namingConfig);
rcmConfig.setTransportManagerConfig(transportConfig);
session.setRemoteCommandManagerConfig(rcmConfig);
// //Read Pool
// ReadConnectionPoolConfig readPoolConfig = new ReadConnectionPoolConfig();
// readPoolConfig.setName( "ReadConnectionPool");
// readPoolConfig.setExclusive( false);
// readPoolConfig.setNonJTSDatasource( "nonJTSDatasource");
// readPoolConfig.setNonJTSConnectionURL( "non_JTS_Connection");
//
// EISLoginConfig poolLoginConfig = new EISLoginConfig();
// poolLoginConfig.setConnectionFactoryURL(" login_Connection_Factory");
// readPoolConfig.setLoginConfig( poolLoginConfig);
//
// //Write Pool
// ConnectionPoolConfig writePoolConfig = new ConnectionPoolConfig();
// writePoolConfig.setName( "WriteConnectionPool");
// writePoolConfig.setLoginConfig( poolLoginConfig);
//
// //Pools
// PoolsConfig poolsConfig = new PoolsConfig();
// poolsConfig.setReadConnectionPoolConfig( readPoolConfig);
// Vector pools = new Vector();
// pools.add( writePoolConfig);
// poolsConfig.setConnectionPoolConfigs( pools);
//
// session.setPoolsConfig( poolsConfig);
}
protected void populateDatabaseSession( DatabaseSessionConfig dbSessionConfig, String name) {
dbSessionConfig.setName( name);
// Exception handler class
dbSessionConfig.setExceptionHandlerClass("handlerClass");
// External transaction controller
// dbSessionConfig.setExternalTransactionControllerClass("externalTransactionController");
// Log config
DefaultSessionLogConfig logConfig = new DefaultSessionLogConfig();
logConfig.setLogLevel("severe");
logConfig.setFilename("logfile");
dbSessionConfig.setLogConfig(logConfig);
// Login
DatabaseLoginConfig loginConfig = new DatabaseLoginConfig();
loginConfig.setBatchWriting(true);
loginConfig.setBindAllParameters(true);
loginConfig.setByteArrayBinding(false);
loginConfig.setCacheAllStatements(false);
loginConfig.setConnectionURL("jdbc:oracle:thin:@otl-ora8infmx73:1521:toplinkj");
loginConfig.setDriverClass("oracle.jdbc.driver.OracleDriver");
loginConfig.setExternalConnectionPooling(false);
loginConfig.setExternalTransactionController(false);
loginConfig.setForceFieldNamesToUppercase(false);
loginConfig.setJdbcBatchWriting(false);
loginConfig.setMaxBatchWritingSize(new Integer(5));
loginConfig.setNativeSequencing(false);
loginConfig.setNativeSQL(false);
loginConfig.setOptimizeDataConversion(true);
loginConfig.setPassword("password");
loginConfig.setPlatformClass("platform");
loginConfig.setSequenceCounterField("SEQ_COUNT");
loginConfig.setSequenceNameField("SEQ_NAME");
loginConfig.setSequencePreallocationSize(new Integer(99));
loginConfig.setSequenceTable("SEQUENCE");
loginConfig.setStreamsForBinding(false);
loginConfig.setStringBinding(false);
loginConfig.setTableQualifier("table:");
loginConfig.setTrimStrings(true);
loginConfig.setUsername("tljtest1");
dbSessionConfig.setLoginConfig(loginConfig);
// Name
dbSessionConfig.setName("EmployeeSession");
// Profiler
dbSessionConfig.setProfiler( "MyProfiler");
// Project class
Vector v = new Vector();
v.add("org.eclipse.persistence.demos.employee.relational.EmployeeProject");
// @deprecated
// dbSessionConfig.setProjectClass(v);
// Remote command manager
RemoteCommandManagerConfig rcmConfig = new RemoteCommandManagerConfig();
rcmConfig.setChannel("new_channel");
// Transport Manager
JMSTopicTransportManagerConfig transportConfig = new JMSTopicTransportManagerConfig();
transportConfig.setOnConnectionError("KeepConnection");
transportConfig.setTopicHostURL("ormi://jms_topic_host");
transportConfig.setTopicConnectionFactoryName("test-topic-connection-factory-name");
transportConfig.setTopicName("test-topic-name");
// Naming
JNDINamingServiceConfig namingConfig = new JNDINamingServiceConfig();
namingConfig.setURL("new_jndi_url");
namingConfig.setUsername("guy");
namingConfig.setPassword("password");
namingConfig.setInitialContextFactoryName("new_initial_context_factory_name");
Vector props = new Vector();
PropertyConfig one = new PropertyConfig();
one.setName("name1");
one.setValue("value1");
props.add(one);
PropertyConfig two = new PropertyConfig();
two.setName("name2");
two.setValue("value2");
props.add(two);
namingConfig.setPropertyConfigs(props);
transportConfig.setJNDINamingServiceConfig(namingConfig);
rcmConfig.setTransportManagerConfig(transportConfig);
dbSessionConfig.setRemoteCommandManagerConfig(rcmConfig);
// Session customizer
dbSessionConfig.setSessionCustomizerClass("sessionCustomizer");
}
protected File buildFile( String name) {
return new File( path + name + ".xml");
}
public static Test suite() {
return new TestSuite( DatabaseSessionWriteTest.class);
}
protected void setUp() throws Exception {
path = "/temp/";
topLinkSessions = new TopLinkSessionsAdapter( path, true);
}
protected void tearDown() throws Exception {
TestTools.clear(this);
super.tearDown();
}
protected void saveSession( SessionConfig session, String name) throws IOException {
topLinkSessions.addSessionConfig( session);
topLinkSessions.save( buildFile( name));
topLinkSessions.removeSessionConfig( session);
}
}