use of org.apache.openejb.test.entity.cmr.onetomany.SongLocal in project tomee by apache.
the class OneToManyComplexPkTests method test08_ASetBExistingANewB.
public void test08_ASetBExistingANewB() throws Exception {
resetDB();
beginTransaction();
try {
final ArtistLocal artist = findArtist(1);
final SongLocal song = createSong(33);
final Set<SongLocal> songSets = artist.getPerformed();
songSets.add(song);
} finally {
completeTransaction();
}
assertLinked(1, 11, 22, 33);
}
use of org.apache.openejb.test.entity.cmr.onetomany.SongLocal in project tomee by apache.
the class OneToManyComplexPkTests method test04_ASetBNewAB.
public void test04_ASetBNewAB() throws Exception {
resetDB();
beginTransaction();
try {
final ArtistLocal artist = findArtist(2);
final SongLocal song = findSong(22);
final Set<SongLocal> songSets = new HashSet<SongLocal>();
songSets.add(song);
artist.setPerformed(songSets);
} finally {
completeTransaction();
}
assertLinked(2, 22);
}
use of org.apache.openejb.test.entity.cmr.onetomany.SongLocal in project tomee by apache.
the class OneToManyComplexPkTests method resetDB.
private void resetDB() throws Exception {
final Connection connection = ds.getConnection();
Statement statement = null;
try {
statement = connection.createStatement();
try {
statement.execute("DELETE FROM ComplexArtist");
} catch (final SQLException ignored) {
}
try {
statement.execute("DELETE FROM ComplexSong");
} catch (final SQLException ignored) {
}
} finally {
close(statement);
close(connection);
}
final ArtistLocal artist1 = createArtist(1);
createArtist(2);
final SongLocal song1 = createSong(11);
final SongLocal song2 = createSong(22);
song1.setPerformer(artist1);
song2.setPerformer(artist1);
song1.setComposer(artist1);
song2.setComposer(artist1);
}
use of org.apache.openejb.test.entity.cmr.onetomany.SongLocal in project tomee by apache.
the class OneToManyComplexPkTests method test03_BSetADropExisting.
public void test03_BSetADropExisting() throws Exception {
resetDB();
beginTransaction();
try {
SongLocal song = findSong(11);
song.setPerformer(null);
song = findSong(22);
song.setPerformer(null);
} finally {
completeTransaction();
}
assertUnlinked(1);
}
use of org.apache.openejb.test.entity.cmr.onetomany.SongLocal in project tomee by apache.
the class OneToManyTests method testModifyCmrCollectionOusideTx.
public void testModifyCmrCollectionOusideTx() throws Exception {
resetDB();
beginTransaction();
Set songs;
SongLocal newSong;
try {
final ArtistLocal artist = findArtist(new Integer(1));
newSong = createSong(new Integer(33));
songs = artist.getComposed();
} finally {
completeTransaction();
}
// CMR collections should still be readable
assertFalse(songs.isEmpty());
assertEquals(2, songs.size());
for (final Iterator iter = songs.iterator(); iter.hasNext(); ) {
final SongLocal song = (SongLocal) iter.next();
if (song.getId().equals(new Integer(11))) {
assertEquals("value11", song.getName());
} else if (song.getId().equals(new Integer(22))) {
assertEquals("value22", song.getName());
} else {
fail();
}
}
// But CMR collections should not be modifiable
try {
songs.add(newSong);
fail("expected songs.add(newSong) to throw an IllegalStateException");
} catch (final IllegalStateException ignored) {
}
try {
songs.addAll(Arrays.asList(newSong));
fail("expected songs.addAll(Arrays.asList(newSong)) to throw an IllegalStateException");
} catch (final IllegalStateException ignored) {
}
try {
songs.remove(newSong);
fail("expected songs.remove(newSong) to throw an IllegalStateException");
} catch (final IllegalStateException ignored) {
}
try {
songs.removeAll(Arrays.asList(newSong));
fail("expected songs.removeAll(Arrays.asList(newSong)) to throw an IllegalStateException");
} catch (final IllegalStateException ignored) {
}
final Iterator iterator = songs.iterator();
try {
iterator.remove();
fail("expected iterator.remove() to throw an ConcurrentModificationException");
} catch (final ConcurrentModificationException ignored) {
}
}
Aggregations