diff options
author | Jose <jose@zeroc.com> | 2011-05-16 22:50:46 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2011-05-16 22:50:46 +0200 |
commit | 4a6b4173dbb9003c27cf85cdc9f34a1f61e42281 (patch) | |
tree | 8166e75fdf7d839e06e38f7fe04c4740b0cc8cac /java/demo/Database/library/BookQueryResultI.java | |
parent | Reworked Windows README.txt (diff) | |
download | ice-4a6b4173dbb9003c27cf85cdc9f34a1f61e42281.tar.bz2 ice-4a6b4173dbb9003c27cf85cdc9f34a1f61e42281.tar.xz ice-4a6b4173dbb9003c27cf85cdc9f34a1f61e42281.zip |
4941 Library demo concurrency issues
Diffstat (limited to 'java/demo/Database/library/BookQueryResultI.java')
-rw-r--r-- | java/demo/Database/library/BookQueryResultI.java | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/java/demo/Database/library/BookQueryResultI.java b/java/demo/Database/library/BookQueryResultI.java index 5e8c96c084a..f5854678dfb 100644 --- a/java/demo/Database/library/BookQueryResultI.java +++ b/java/demo/Database/library/BookQueryResultI.java @@ -11,12 +11,17 @@ import Demo.*; class BookQueryResultI extends _BookQueryResultDisp { - // The query result owns the SQLRequestContext object until - // destroyed. - BookQueryResultI(SQLRequestContext context, java.sql.ResultSet rs) + BookQueryResultI(SQLRequestContext context, java.sql.ResultSet rs, Ice.ObjectAdapter adapter) throws java.sql.SQLException { - _context = context; - _rs = rs; + _books = new java.util.Stack<BookDescription>(); + for(int i = 0; i < MAX_BOOK_QUERY_RESULT; ++i) + { + _books.add(BookI.extractDescription(context, rs, adapter)); + if(!rs.next()) + { + break; + } + } } synchronized public java.util.List<BookDescription> @@ -32,25 +37,13 @@ class BookQueryResultI extends _BookQueryResultDisp { return l; } - boolean next = true; - try - { - for(int i = 0; i < n && next; ++i) - { - l.add(BookI.extractDescription(_context, _rs, current.adapter)); - next = _rs.next(); - } - } - catch(java.sql.SQLException e) + + for(int i = 0; i < n && _books.size() > 0; ++i) { - // Log the error, and raise an UnknownException. - _context.error("BookQueryResultI", e); - Ice.UnknownException ex = new Ice.UnknownException(); - ex.initCause(e); - throw ex; + l.add(_books.pop()); } - if(!next) + if(_books.size() <= 0) { try { @@ -74,7 +67,6 @@ class BookQueryResultI extends _BookQueryResultDisp throw new Ice.ObjectNotExistException(); } _destroyed = true; - _context.destroy(false); current.adapter.remove(current.id); } @@ -86,12 +78,11 @@ class BookQueryResultI extends _BookQueryResultDisp if(!_destroyed) { _destroyed = true; - _context.destroy(false); } } - private SQLRequestContext _context; - private java.sql.ResultSet _rs; + private java.util.Stack<BookDescription> _books; private boolean _destroyed = false; + private static final int MAX_BOOK_QUERY_RESULT = 1000; } |