blob: 46553119451b5f66b86d3a28353cebfec7197e89 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle. 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:
* dclarke - Dynamic Persistence INCUBATION - Enhancement 200045
* http://wiki.eclipse.org/EclipseLink/Development/JPA/Dynamic
*
* This code is being developed under INCUBATION and is not currently included
* in the automated EclipseLink build. The API in this code may change, or
* may never be included in the product. Please provide feedback through mailing
* lists or the bug database.
******************************************************************************/
package tests;
import static example.PersistenceHelper.EMPLOYEE_XML_PU;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.xml.bind.JAXBException;
import org.eclipse.persistence.dynamic.DynamicClassLoader;
import org.eclipse.persistence.dynamic.DynamicEntity;
import org.eclipse.persistence.dynamic.DynamicType;
import org.eclipse.persistence.dynamic.ReflectiveDynamicClassLoader;
import org.eclipse.persistence.jpa.dynamic.JPADynamicHelper;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import example.PersistenceHelper;
import example.Queries;
import example.Samples;
import example.Transactions;
public class TestDynamicUsingXML {
private static EntityManagerFactory emf;
@Test
public void queries() throws JAXBException {
EntityManager em = emf.createEntityManager();
// Lookup types
JPADynamicHelper helper = new JPADynamicHelper(emf);
DynamicType empType = helper.getType("Employee");
// Run Queries
Queries queries = new Queries();
int minEmpId = queries.minimumEmployeeId(em);
queries.findEmployee(em, empType, minEmpId);
queries.findEmployeesUsingGenderIn(em);
em.close();
}
@Test
public void transactions() throws JAXBException {
EntityManager em = emf.createEntityManager();
Transactions txn = new Transactions();
txn.createUsingPersist(em);
em.close();
}
@Test
public void validation() {
EntityManager em = emf.createEntityManager();
// Lookup types
JPADynamicHelper helper = new JPADynamicHelper(emf);
DynamicType empType = helper.getType("Employee");
// Run Queries
Queries queries = new Queries();
int minEmpId = queries.minimumEmployeeId(em);
DynamicEntity emp = queries.findEmployee(em, empType, minEmpId);
em.getTransaction().begin();
emp.set("firstName", null);
emp.set("lastName", null);
emp.set("gender", null);
try {
em.flush();
} catch (ConstraintViolationException e) {
System.out.println("ConstraintException: " + e.getMessage());
for (ConstraintViolation<?> cv : e.getConstraintViolations()) {
System.out.println("\t>> " + cv.getPropertyPath() + "::" + cv.getMessage());
}
return;
}
Assert.fail("ConstraintViolationException not thrown");
}
@BeforeClass
public static void setup() throws JAXBException {
// Create an entity manager factory with a dynamic class loader.
DynamicClassLoader dcl = new ReflectiveDynamicClassLoader(Thread.currentThread().getContextClassLoader());
emf = PersistenceHelper.createEntityManagerFactory(dcl, EMPLOYEE_XML_PU, true);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
new Samples(emf).persistAll(em);
em.getTransaction().commit();
em.clear();
}
@AfterClass
public static void close() {
emf.close();
}
}