use of java.util.ConcurrentModificationException in project tomee by apache.
the class OneToManyComplexPkTests method testIteratorConcurrentModification.
public void testIteratorConcurrentModification() throws Exception {
resetDB();
beginTransaction();
try {
final ArtistLocal artist = findArtist(new Integer(1));
final SongLocal song = findSong(new Integer(11));
final Set songs = artist.getComposed();
assertFalse(songs.isEmpty());
assertEquals(2, songs.size());
final Iterator iterator = songs.iterator();
songs.remove(song);
assertEquals(1, songs.size());
try {
iterator.next();
fail("expected iterator.next() to throw an ConcurrentModificationException");
} catch (final ConcurrentModificationException expected) {
}
} finally {
completeTransaction();
}
}
use of java.util.ConcurrentModificationException in project tomee by apache.
the class ManyToManyTests method testIteratorAndRemove.
public void testIteratorAndRemove() throws Exception {
resetDB();
beginTransaction();
final Set games;
try {
final PlatformLocal platform = findPlatform(new Integer(1));
final GameLocal game = findGame(new Integer(11));
games = platform.getGames();
assertFalse(games.isEmpty());
assertEquals(2, games.size());
final Iterator iterator = games.iterator();
assertTrue(games.contains(game));
platform.remove();
assertFalse(games.contains(game));
assertEquals(0, games.size());
try {
iterator.next();
fail("expected iterator.next() to throw an ConcurrentModificationException");
} catch (final ConcurrentModificationException expected) {
}
} finally {
completeTransaction();
}
}
use of java.util.ConcurrentModificationException in project tomee by apache.
the class ManyToManyTests method testModifyCmrCollectionInNewTx.
public void testModifyCmrCollectionInNewTx() throws Exception {
resetDB();
beginTransaction();
Set games;
GameLocal newGame;
try {
final PlatformLocal platform = findPlatform(new Integer(1));
newGame = createGame(new Integer(33));
games = platform.getGames();
} finally {
completeTransaction();
}
beginTransaction();
try {
// CMR collections should still be readable
assertFalse(games.isEmpty());
assertEquals(2, games.size());
for (final Iterator iter = games.iterator(); iter.hasNext(); ) {
final GameLocal game = (GameLocal) iter.next();
if (game.getId().equals(new Integer(11))) {
assertEquals("value11", game.getName());
} else if (game.getId().equals(new Integer(22))) {
assertEquals("value22", game.getName());
} else {
fail();
}
}
// But CMR collections should not be modifiable
try {
games.add(newGame);
fail("expected games.add(game) to throw an IllegalStateException");
} catch (final IllegalStateException expected) {
}
try {
games.addAll(Arrays.asList(newGame));
fail("expected games.addAll(Arrays.asList(game)) to throw an IllegalStateException");
} catch (final IllegalStateException expected) {
}
try {
games.remove(newGame);
fail("expected games.remove(game) to throw an IllegalStateException");
} catch (final IllegalStateException expected) {
}
try {
games.removeAll(Arrays.asList(newGame));
fail("expected games.removeAll(game) to throw an IllegalStateException");
} catch (final IllegalStateException expected) {
}
final Iterator iterator = games.iterator();
try {
iterator.remove();
fail("expected iterator.remove() to throw an ConcurrentModificationException");
} catch (final ConcurrentModificationException expected) {
}
} finally {
completeTransaction();
}
}
use of java.util.ConcurrentModificationException in project hive by apache.
the class MapJoinTableContainerSerDe method persist.
public void persist(ObjectOutputStream out, MapJoinPersistableTableContainer tableContainer) throws HiveException {
int numKeys = tableContainer.size();
try {
out.writeUTF(tableContainer.getClass().getName());
out.writeObject(tableContainer.getMetaData());
out.writeInt(numKeys);
for (Map.Entry<MapJoinKey, MapJoinRowContainer> entry : tableContainer.entrySet()) {
entry.getKey().write(keyContext, out);
entry.getValue().write(valueContext, out);
}
} catch (SerDeException e) {
String msg = "SerDe error while attempting to persist table container";
throw new HiveException(msg, e);
} catch (IOException e) {
String msg = "IO error while attempting to persist table container";
throw new HiveException(msg, e);
}
if (numKeys != tableContainer.size()) {
throw new ConcurrentModificationException("TableContainer was modified while persisting: " + tableContainer);
}
}
use of java.util.ConcurrentModificationException in project hive by apache.
the class MapJoinEagerRowContainer method write.
@Override
public void write(MapJoinObjectSerDeContext context, ObjectOutputStream out) throws IOException, SerDeException {
AbstractSerDe serde = context.getSerDe();
ObjectInspector valueObjectInspector = context.getStandardOI();
long numRows = rowCount();
long numRowsWritten = 0L;
out.writeLong(numRows);
for (List<Object> row = first(); row != null; row = next()) {
serde.serialize(row.toArray(), valueObjectInspector).write(out);
++numRowsWritten;
}
if (numRows != rowCount()) {
throw new ConcurrentModificationException("Values was modified while persisting");
}
if (numRowsWritten != numRows) {
throw new IllegalStateException("Expected to write " + numRows + " but wrote " + numRowsWritten);
}
}
Aggregations