blob: a77a9dc200ae508f9e0b6e41d433d95ccadfbf9c [file] [log] [blame]
/*
* Copyright (c) 2018, 2020 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,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
package org.eclipse.persistence.testing.tests.nonJDBC;
// javase imports
import java.lang.reflect.Field;
import java.util.Properties;
// JUnit imports
import static org.junit.Assert.fail;
// EclipseLink imports
import org.eclipse.persistence.descriptors.RelationalDescriptor;
import org.eclipse.persistence.internal.descriptors.TransformerBasedFieldTransformation;
import org.eclipse.persistence.internal.sessions.factories.ObjectPersistenceWorkbenchXMLProject;
import org.eclipse.persistence.mappings.DirectToFieldMapping;
import org.eclipse.persistence.mappings.transformers.ConstantTransformer;
import org.eclipse.persistence.oxm.mappings.XMLTransformationMapping;
import org.eclipse.persistence.platform.database.oracle.Oracle10Platform;
import org.eclipse.persistence.platform.xml.XMLComparer;
import org.eclipse.persistence.platform.xml.XMLParser;
import org.eclipse.persistence.platform.xml.XMLPlatformFactory;
import org.eclipse.persistence.sessions.DatabaseLogin;
import org.eclipse.persistence.sessions.Project;
public class NonJDBCTestHelper {
public static XMLComparer comparer = new XMLComparer();
public static XMLParser xmlParser =
XMLPlatformFactory.getInstance().getXMLPlatform().newXMLParser();
public final static String TEST_DOT_PROPERTIES_KEY = "test.properties";
public final static String DATABASE_USERNAME_KEY = "db.user";
public final static String DATABASE_PASSWORD_KEY = "db.pwd";
public final static String DATABASE_URL_KEY = "db.url";
public final static String DATABASE_DRIVER_KEY = "db.driver";
public final static String CONSTANT_PROJECT_BUILD_VERSION =
"Eclipse Persistence Services - @VERSION@ (Build @BUILD_NUMBER@)";
public static Project buildTestProject(Properties p) {
String username = p.getProperty(DATABASE_USERNAME_KEY);
if (username == null) {
fail("error retrieving database username");
}
String password = p.getProperty(DATABASE_PASSWORD_KEY);
if (password == null) {
fail("error retrieving database password");
}
String url = p.getProperty(DATABASE_URL_KEY);
if (url == null) {
fail("error retrieving database url");
}
String driver = p.getProperty(DATABASE_DRIVER_KEY);
if (driver == null) {
fail("error retrieving database driver");
}
Project project = new Project();
project.setName("nonJDBCTestProject");
RelationalDescriptor emptyDescriptor = new RelationalDescriptor();
emptyDescriptor.setAlias("Empty");
emptyDescriptor.setJavaClass(Empty.class);
emptyDescriptor.addTableName("EMPTY");
emptyDescriptor.addPrimaryKeyFieldName("EMPTY.ID");
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setFieldName("EMPTY.ID");
emptyDescriptor.addMapping(idMapping);
project.addDescriptor(emptyDescriptor);
DatabaseLogin login = new DatabaseLogin();
login.setUserName(username);
login.setPassword(password);
login.setConnectionString(url);
login.setDriverClassName(driver);
login.setDatasourcePlatform(new Oracle10Platform());
login.useBatchWriting();
project.setDatasourceLogin(login);
return project;
}
public static ObjectPersistenceWorkbenchXMLProject buildWorkbenchXMLProject() {
ObjectPersistenceWorkbenchXMLProject workbenchXMLProject = null;
try {
workbenchXMLProject = new ObjectPersistenceWorkbenchXMLProject();
XMLTransformationMapping versionMapping =
(XMLTransformationMapping)workbenchXMLProject.getDescriptor(Project.class).
getMappings().firstElement();
TransformerBasedFieldTransformation versionTransformer =
(TransformerBasedFieldTransformation)versionMapping.getFieldTransformations().get(0);
Field transformerField =
TransformerBasedFieldTransformation.class.getDeclaredField("transformer");
transformerField.setAccessible(true);
ConstantTransformer constantTransformer =
(ConstantTransformer)transformerField.get(versionTransformer);
constantTransformer.setValue(CONSTANT_PROJECT_BUILD_VERSION);
}
catch (Exception e) {
e.printStackTrace();
}
return workbenchXMLProject;
}
}