blob: 88948c7235715223bf389e9aad571b364f87543d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Oracle.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
* and the Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php.
* You may elect to redistribute this code under either of these licenses.
*
* Contributors:
* mkeith - Gemini JPA tests
******************************************************************************/
package org.eclipse.gemini.jpa.tests;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import model.weaved.WeavedEntity;
import org.junit.*;
/**
* Test class to test weaving of JPA provider
*
* @author mkeith
*/
public class TestWeaving extends JpaTest {
public static final String TEST_NAME = "TestWeaving";
public static final String PERSISTENCE_UNIT_UNDER_TEST = "Weaved";
public static EntityManagerFactory emf;
/* === Test Methods === */
@BeforeClass
public static void classSetUp() {
slog(TEST_NAME, "In setup");
emf = lookupEntityManagerFactory(TEST_NAME, PERSISTENCE_UNIT_UNDER_TEST);
slog(TEST_NAME, "Got EMF - " + emf);
}
@AfterClass
public static void classCleanUp() throws Exception {
if (emf != null) {
emf.close();
emf = null;
}
}
/* === Additional test methods === */
@Test
public void testWovenClass() {
log("testWovenClass");
WeavedEntity entity = new WeavedEntity();
boolean weaved = false;
Class<?>[] clsArray = entity.getClass().getInterfaces();
for ( Class<?> cls : clsArray) {
if (cls.toString().equals("org.eclipse.persistence.internal.weaving.PersistenceWeaved")) {
weaved = true;
break;
}
}
assert(weaved) ;
}
/* === Subclassed methods === */
// Dues to Lazy EMF creation, and the fact that we are never actually invoking
// methods on the EMF, the real underlying provider EMF is never really created
public boolean needsDsfService() { return false; }
public EntityManagerFactory getEmf() { return emf; }
public String getTestPersistenceUnitName() { return PERSISTENCE_UNIT_UNDER_TEST; }
public Object newObject() {
WeavedEntity a = new WeavedEntity();
a.setId(100);
return a;
}
public Object findObject() {
EntityManager em = getEmf().createEntityManager();
Object obj = em.find(WeavedEntity.class, 100);
em.close();
return obj;
}
public Object queryObjects() {
EntityManager em = getEmf().createEntityManager();
List<?> result = em.createQuery("SELECT a FROM WeavedEntity a").getResultList();
em.close();
return result;
}
}