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; } }