use of org.eclipse.persistence.testing.models.jpa.advanced.VegetablePK in project eclipselink by eclipse-ee4j.
the class EntityManagerJUnitTestSuite method testCharFieldDefaultNullValue.
public void testCharFieldDefaultNullValue() {
EntityManager em = createEntityManager();
beginTransaction(em);
Vegetable vegetable;
Vegetable vegetable2;
VegetablePK pk = new VegetablePK("Eggplant", "Purple");
VegetablePK pk2 = new VegetablePK("Capsicum", "Green");
String[] tags = { "California", "DE" };
String[] tags2 = { "Florida", "FD" };
try {
// Usecase for char with value ' ' (space)
vegetable = new Vegetable();
vegetable.setId(pk);
vegetable.setCost(2.09);
vegetable.setTags(tags);
vegetable.setType(' ');
em.persist(vegetable);
// Usecase for char with value null
vegetable2 = new Vegetable();
vegetable2.setId(pk2);
vegetable2.setCost(1.35);
vegetable2.setTags(tags2);
em.persist(vegetable2);
commitTransaction(em);
} catch (RuntimeException e) {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
throw e;
} finally {
closeEntityManager(em);
}
em = createEntityManager();
em.clear();
clearCache();
beginTransaction(em);
try {
vegetable = em.find(Vegetable.class, pk);
vegetable2 = em.find(Vegetable.class, pk2);
commitTransaction(em);
assertNotNull(vegetable);
assertNotNull(vegetable2);
assertTrue(vegetable.getType() == '\u0000');
} catch (RuntimeException e) {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
throw e;
} finally {
closeEntityManager(em);
}
}
use of org.eclipse.persistence.testing.models.jpa.advanced.VegetablePK in project eclipselink by eclipse-ee4j.
the class AdvancedJunitTest method testSwitchBatchDuringSessionEvent.
public void testSwitchBatchDuringSessionEvent() {
// Test for bug#419326
EntityManager em = createEntityManager();
try {
beginTransaction(em);
Vegetable vegetable = em.find(Vegetable.class, new VegetablePK("Potato", "Yellow"));
if (null != vegetable) {
// cleanup old data
em.remove(vegetable);
em.flush();
commitTransaction(em);
}
} catch (RuntimeException e) {
throw e;
} finally {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
clearCache();
closeEntityManager(em);
}
em = createEntityManager();
DatabasePlatform platform = getServerSession().getPlatform();
boolean usesBatchWriting = platform.usesBatchWriting();
boolean usesJDBCBatchWriting = platform.usesJDBCBatchWriting();
boolean usesExternalConnectionPooling = getServerSession().getLogin().shouldUseExternalConnectionPooling();
boolean usesExternalTransactionController = getServerSession().getLogin().shouldUseExternalTransactionController();
final SessionEventAdapter listener = new PostAcquireExclusiveConnectionSqlExecutorListener();
Vegetable vegetable;
try {
// Simulate JDBC batching with external connection pooling
getServerSession().getLogin().useExternalConnectionPooling();
getServerSession().getLogin().useExternalTransactionController();
platform.setUsesBatchWriting(true);
platform.setUsesJDBCBatchWriting(true);
em.setProperty(EntityManagerProperties.EXCLUSIVE_CONNECTION_MODE, ExclusiveConnectionMode.Always);
getServerSession().getEventManager().addListener(listener);
beginTransaction(em);
em.setFlushMode(FlushModeType.COMMIT);
vegetable = em.find(Vegetable.class, new VegetablePK("Potato", "Yellow"));
if (vegetable == null) {
vegetable = new Vegetable();
}
vegetable.setId(new VegetablePK("Potato", "Yellow"));
vegetable.setCost(1.10);
em.persist(vegetable);
// Here the transaction will be lazily opened, old connection handles released and new
// connection obtained, triggering postAcquireExclusiveConnection event.
// The postAcquireExclusiveConnection() invokes a non-batchable statement, due to which
// current batch is cleared. This should not cause a duplicate execution of insert.
commitTransaction(em);
} catch (jakarta.persistence.RollbackException r) {
fail("RollbackException exception occurred : " + r.getMessage());
} finally {
// Cleanup and revert back to original conditions
getServerSession().getEventManager().removeListener(listener);
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
platform.setUsesBatchWriting(usesBatchWriting);
platform.setUsesJDBCBatchWriting(usesJDBCBatchWriting);
if (!usesExternalConnectionPooling) {
getServerSession().getLogin().dontUseExternalConnectionPooling();
}
if (!usesExternalTransactionController) {
getServerSession().getLogin().dontUseExternalTransactionController();
}
clearCache();
closeEntityManager(em);
}
}
use of org.eclipse.persistence.testing.models.jpa.advanced.VegetablePK in project eclipselink by eclipse-ee4j.
the class AdvancedJunitTest method testStringArrayField.
// GF1673, 2674 Java SE 6 classloading error for String[] field
public void testStringArrayField() {
EntityManager em = createEntityManager();
beginTransaction(em);
VegetablePK pk = new VegetablePK("Tomato", "Red");
String[] tags = { "California", "XE" };
try {
Vegetable vegetable = new Vegetable();
vegetable.setId(pk);
vegetable.setCost(2.09);
vegetable.setTags(tags);
em.persist(vegetable);
commitTransaction(em);
} catch (RuntimeException e) {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
throw e;
} finally {
closeEntityManager(em);
}
em = createEntityManager();
beginTransaction(em);
Vegetable vegetable;
try {
vegetable = em.find(Vegetable.class, pk);
commitTransaction(em);
assertNotNull(vegetable);
assertTrue(Arrays.equals(tags, vegetable.getTags()));
} catch (RuntimeException e) {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
throw e;
} finally {
closeEntityManager(em);
}
}
use of org.eclipse.persistence.testing.models.jpa.advanced.VegetablePK in project eclipselink by eclipse-ee4j.
the class EntityManagerJUnitTestSuite method testWeaving.
/**
* Test that all of the classes in the advanced model were weaved as expected.
*/
public void testWeaving() {
// Only test if weaving was on, test runs without weaving must set this system property.
if (isWeavingEnabled()) {
internalTestWeaving(new Employee(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), true);
internalTestWeaving(new FormerEmployment(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new Address(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new PhoneNumber(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new EmploymentPeriod(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
// field-locking
internalTestWeaving(new Buyer(), false, isWeavingForFetchGroupsEnabled(), false);
// field-locking
internalTestWeaving(new GoldBuyer(), false, isWeavingForFetchGroupsEnabled(), false);
// field-locking
internalTestWeaving(new PlatinumBuyer(), false, isWeavingForFetchGroupsEnabled(), false);
// eager 1-m
internalTestWeaving(new Department(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new Golfer(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new GolferPK(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new SmallProject(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new LargeProject(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new Man(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new Woman(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
// serialized
internalTestWeaving(new Vegetable(), false, isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new VegetablePK(), false, isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new WorldRank(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new Equipment(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new EquipmentCode(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
internalTestWeaving(new PartnerLink(), isWeavingForChangeTrackingEnabled(), isWeavingForFetchGroupsEnabled(), false);
}
}
use of org.eclipse.persistence.testing.models.jpa.advanced.VegetablePK in project eclipselink by eclipse-ee4j.
the class AdvancedJunitTest method testGF1818.
public void testGF1818() {
EntityManager em = createEntityManager();
beginTransaction(em);
try {
Vegetable vegetable = new Vegetable();
vegetable.setId(new VegetablePK("Carrot", "Orange"));
vegetable.setCost(2.09);
em.persist(vegetable);
commitTransaction(em);
} catch (Exception e) {
fail("An exception was caught: [" + e.getMessage() + "]");
}
closeEntityManager(em);
}
Aggregations