summaryrefslogtreecommitdiff
path: root/java/demo/Database/library/BookQueryResultI.java
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2011-05-16 22:50:46 +0200
committerJose <jose@zeroc.com>2011-05-16 22:50:46 +0200
commit4a6b4173dbb9003c27cf85cdc9f34a1f61e42281 (patch)
tree8166e75fdf7d839e06e38f7fe04c4740b0cc8cac /java/demo/Database/library/BookQueryResultI.java
parentReworked Windows README.txt (diff)
downloadice-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.java41
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;
}