/*******************************************************************************
* Copyright (c) 2014, 2015 IBM Corporation 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:
* 08/18/2014-2.5 Jody Grassel (IBM Corporation)
* - 440802: xml-mapping-metadata-complete does not exclude @Entity annotated entities
******************************************************************************/
package org.eclipse.persistence.testing.tests.jpa.xml.xmlmetadatacomplete;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.eclipse.persistence.sessions.DatabaseSession;
import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
import org.eclipse.persistence.testing.models.jpa.xml.xmlmetadatacomplete.AnnotationOnlyEntity;
import org.eclipse.persistence.testing.models.jpa.xml.xmlmetadatacomplete.XLMMappingMetadataCompleteTableManager;
import org.eclipse.persistence.testing.models.jpa.xml.xmlmetadatacomplete.XMLOnlyEntity;
import org.eclipse.persistence.testing.tests.jpa.xml.relationships.EntityMappingsRelationshipsJUnitTestCase;
import junit.framework.*;
public class XMLMappingMetadataCompleteJunitTestCase extends JUnitTestCase {
private final static String puName = "ecl-xml-mapping-metadata-complete";
public XMLMappingMetadataCompleteJunitTestCase() {
super();
}
public XMLMappingMetadataCompleteJunitTestCase(String name) {
super(name);
}
public static Test suite() {
TestSuite suite = new TestSuite("XML Mapping Metadata Complete");
suite.addTest(new XMLMappingMetadataCompleteJunitTestCase("testSetup"));
suite.addTest(new XMLMappingMetadataCompleteJunitTestCase("testEntityByAnnotationOnlyIsIgnored"));
suite.addTest(new XMLMappingMetadataCompleteJunitTestCase("testEntityByXML"));
return suite;
}
/**
* The setup is done as a test, both to record its failure, and to allow execution in the server.
*/
public void testSetup() {
DatabaseSession session = JUnitTestCase.getServerSession();
new XLMMappingMetadataCompleteTableManager().replaceTables(session);
clearCache();
}
public void testEntityByAnnotationOnlyIsIgnored() {
EntityManager em = createEntityManager(puName);
try {
beginTransaction(em);
AnnotationOnlyEntity anoOnlyEnt = new AnnotationOnlyEntity();
anoOnlyEnt.setId(1);
anoOnlyEnt.setStrData("Some String");
try {
em.persist(anoOnlyEnt);
fail("AnnotationOnlyEntity should not be a valid entity type.");
} catch (Throwable t) {
// Expected
}
} finally {
if (em != null) {
if (isTransactionActive(em)) {
rollbackTransaction(em);;
}
em.close();
}
}
}
public void testEntityByXML() {
EntityManager em = createEntityManager(puName);
try {
beginTransaction(em);
XMLOnlyEntity xmlOnlyEnt = new XMLOnlyEntity();
xmlOnlyEnt.setId(1);
xmlOnlyEnt.setStrData("Some String");
// Expecting this to persist successfully
em.persist(xmlOnlyEnt);
commitTransaction(em);
em.clear();
this.clearCache();
XMLOnlyEntity xmlOnlyEnt_find = em.find(XMLOnlyEntity.class, 1);
assertNotNull(xmlOnlyEnt_find);
assertNotSame(xmlOnlyEnt, xmlOnlyEnt_find);
} finally {
if (em != null) {
if (isTransactionActive(em)) {
rollbackTransaction(em);;
}
em.close();
}
}
}
}