[prev in list] [next in list] [prev in thread] [next in thread] 

List:       slide-dev
Subject:    cvs commit: jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms RDBMSAdapter.java Stand
From:       ozeigermann () apache ! org
Date:       2003-11-26 14:54:51
[Download RAW message or body]

ozeigermann    2003/11/26 06:54:51

  Modified:    proposals/stores/org/apache/slide/store/impl/rdbms
                        RDBMSAdapter.java StandardRDBMSAdapter.java
                        AbstractRDBMSStore.java JDBCAwareInputStream.java
  Log:
  Fixed bug concerning statement / connection closed before stream was read in \
uncompressed mode.  Added connection to JDBCAwareInputStream that gets closed along \
with the statement and resultset, when stream is closed.  
  Revision  Changes    Path
  1.2       +4 -4      \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/RDBMSAdapter.java  
  Index: RDBMSAdapter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/RDBMSAdapter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RDBMSAdapter.java	14 Nov 2003 12:28:27 -0000	1.1
  +++ RDBMSAdapter.java	26 Nov 2003 14:54:51 -0000	1.2
  @@ -263,7 +263,7 @@
        * 
        */
       public NodeRevisionContent retrieveRevisionContent
  -        (Connection conn, Uri uri, NodeRevisionDescriptor revisionDescriptor)
  +        (Connection conn, Uri uri, NodeRevisionDescriptor revisionDescriptor, \
boolean temporaryConnection)  throws ServiceAccessException, \
RevisionNotFoundException;  
       
  
  
  
  1.8       +25 -9     \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java
  
  Index: StandardRDBMSAdapter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StandardRDBMSAdapter.java	25 Nov 2003 14:27:42 -0000	1.7
  +++ StandardRDBMSAdapter.java	26 Nov 2003 14:54:51 -0000	1.8
  @@ -95,6 +95,7 @@
    * @author <a href="mailto:akumar@metatomix.com">Ashok Kumar</a>
    * @author <a href="mailto:ozeigermann@c1-fse.de">Oliver Zeigermann</a>
    * @author <a href="mailto:dflorey@c1-fse.de">Daniel Florey</a>
  + * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe \
                Lombart</a>
    * @version $Revision$
    */
   
  @@ -106,7 +107,7 @@
   
       public StandardRDBMSAdapter(Service service, Logger logger) {
           super(service, logger);
  -        bcompress = true;
  +        bcompress = false;
       }
   
       public void setParameters(Hashtable parameters)
  @@ -733,7 +734,8 @@
       public NodeRevisionContent retrieveRevisionContent(
           Connection connection,
           Uri uri,
  -        NodeRevisionDescriptor revisionDescriptor)
  +        NodeRevisionDescriptor revisionDescriptor,
  +        boolean temporaryConnection)
           throws ServiceAccessException, RevisionNotFoundException {
           NodeRevisionContent result = null;
           try {
  @@ -760,10 +762,23 @@
                       ziputil.UnZip(is);
                       \
revisionDescriptor.setContentLength(ziputil.getContentLength());  is = \
ziputil.getInputStream();  +                    result.setContent(is);
  +                    if (temporaryConnection) {
  +                        // XXX is needed, as calling store does not know if \
connection should be closed now  +                        connection.close();
  +                    }
  +                } else {
  +                    if (temporaryConnection) {
  +                        result.setContent(new JDBCAwareInputStream(is, statement, \
res, connection));  +                    } else {
  +                        result.setContent(new JDBCAwareInputStream(is, statement, \
res, null));  +                    }
                   }
  -                result.setContent(new JDBCAwareInputStream(is, statement));
               } finally {
  -                close(statement, res);
  +                // do not close when not compressed, as stream needs to be read \
before  +                if (bcompress) {
  +                    close(statement, res);
  +                }
               }
           } catch (SQLException e) {
               getLogger().log(e, LOG_CHANNEL, Logger.ERROR);
  @@ -1157,6 +1172,7 @@
                           fos.write(buffer, 0, nChar);
                       } while (true);
                       fos.close();
  +                    is.close();
                       is = new FileInputStream(tempFile);
                       contentLength = tempFile.length();
                   } catch (IOException ex) {
  @@ -1282,7 +1298,7 @@
   
       // null means valid for all revisions
       protected String getRevisionNumberAsString(NodeRevisionNumber revisionNumber) \
                {
  -      return revisionNumber != null ? revisionNumber.toString() : null;
  +        return revisionNumber != null ? revisionNumber.toString() : null;
       }
   
       // needed as some DBs do not accecpt 'x = NULL', but rather need 'x IS NULL'
  
  
  
  1.3       +9 -6      \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/AbstractRDBMSStore.java
  
  Index: AbstractRDBMSStore.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/AbstractRDBMSStore.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractRDBMSStore.java	19 Nov 2003 12:01:46 -0000	1.2
  +++ AbstractRDBMSStore.java	26 Nov 2003 14:54:51 -0000	1.3
  @@ -817,10 +817,12 @@
               Connection connection = null;
               try {
                   connection = getNewConnection();
  -                return adapter.retrieveRevisionContent(connection, uri, \
revisionDescriptor);  +                return \
adapter.retrieveRevisionContent(connection, uri, revisionDescriptor, true);  } catch \
(SQLException e) {  throw new ServiceAccessException(this, e);
               } finally {
  +                // has to be done in adapter or upon closing of stream
  +                /*
                   if (connection != null) {
                       try {
                           // FIXME this really should not work, as we might have a \
stream not yet closed when compression if turned off  @@ -829,9 +831,10 @@
                           getLogger().log(e, LOG_CHANNEL, Logger.WARNING);
                       }
                   }
  +                */
               }
           } else {
  -            return adapter.retrieveRevisionContent(getCurrentConnection(), uri, \
revisionDescriptor);  +            return \
adapter.retrieveRevisionContent(getCurrentConnection(), uri, revisionDescriptor, \
false);  }
       }
   
  
  
  
  1.2       +36 -25    \
jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/JDBCAwareInputStream.java
  
  Index: JDBCAwareInputStream.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/proposals/stores/org/apache/slide/store/impl/rdbms/JDBCAwareInputStream.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JDBCAwareInputStream.java	14 Nov 2003 12:28:27 -0000	1.1
  +++ JDBCAwareInputStream.java	26 Nov 2003 14:54:51 -0000	1.2
  @@ -66,7 +66,9 @@
   import java.io.FilterInputStream;
   import java.io.IOException;
   import java.io.InputStream;
  +import java.sql.Connection;
   import java.sql.ResultSet;
  +import java.sql.SQLException;
   import java.sql.Statement;
   
   /**
  @@ -90,22 +92,24 @@
        * input stream is told to close itself.
        */
       private Statement stmt = null;
  +    private ResultSet rs = null;
  +    private Connection connection = null;
       
       
       // ----------------------------------------------------------- Constructors
       
       
       /**
  -     * Constructor.
  -     * 
  -     * @param in    the input stream used to answer all method calls
  -     * @param stmt  the JDBC statement that should be closed, along with its
  -     *              result set when the input stream is told to close itself
  +     * Creates an input stream that closes a statmenet, a resultset and a \
connection  +     * when the stream itself is closed.
  +     *  
        */
  -    public JDBCAwareInputStream(InputStream in, Statement stmt) {
  +    public JDBCAwareInputStream(InputStream in, Statement stmt, ResultSet rs, \
Connection connection) {  super(in);
           
           this.stmt = stmt;
  +        this.rs = rs;
  +        this.connection = connection;
       }
       
       
  @@ -113,28 +117,35 @@
       
       
       /**
  -     * Overridden to close the associated JDBC statement together with the 
  +     * Overridden to close the associated JDBC statement, result set and \
                connection together with the 
        * input stream.
        */
       public void close() throws IOException {
  -        // FIXED guarantee that underlying stream gets closed
           try {
  -            if (stmt != null) {
  -                stmt.close();
  -                ResultSet rs = stmt.getResultSet();
  -                if (rs != null) {
  -                    rs.close();
  -                }
  -                stmt = null;
  +            if (rs != null) {
  +                rs.close();
               }
  -        } catch (java.sql.SQLException sqle) {
  -            throw new IOException(sqle.getMessage());
  +        } catch (SQLException e) {
  +            throw new IOException(e.getMessage());
           } finally {
  -            super.close();
  +            try {
  +                if (stmt != null) {
  +                    stmt.close();
  +                }
  +            } catch (SQLException e) {
  +                throw new IOException(e.getMessage());
  +            } finally {
  +                try {
  +                    if (connection != null) {
  +                        connection.close();
  +                    }
  +                } catch (SQLException e) {
  +                    throw new IOException(e.getMessage());
  +                } finally {
  +                    super.close();
  +                }
  +            }
           }
  -
       }
  -    
  -    
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic