bloritsch    01/07/19 12:08:55

  Modified:    src/org/apache/cocoon/acting
                        DatabaseAuthenticatorAction.java
  Log:
  Fix incorrect connection handling by DBauthenticatorAction
  
  Revision  Changes    Path
  1.5       +58 -40    
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java
  
  Index: DatabaseAuthenticatorAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DatabaseAuthenticatorAction.java  2001/07/11 08:47:50     1.4
  +++ DatabaseAuthenticatorAction.java  2001/07/19 19:08:55     1.5
  @@ -1,4 +1,4 @@
  -// $Id: DatabaseAuthenticatorAction.java,v 1.4 2001/07/11 08:47:50 haul Exp $
  +// $Id: DatabaseAuthenticatorAction.java,v 1.5 2001/07/19 19:08:55 bloritsch Exp $
   package org.apache.cocoon.acting;
   
   import java.sql.Connection;
  @@ -51,7 +51,7 @@
    * not verified.
    *
    * @author Martin Man <[EMAIL PROTECTED]>
  - * @version CVS $Revision: 1.4 $ $Date: 2001/07/11 08:47:50 $
  + * @version CVS $Revision: 1.5 $ $Date: 2001/07/19 19:08:55 $
    */
   public class DatabaseAuthenticatorAction extends AbstractDatabaseAction
   {
  @@ -62,19 +62,24 @@
               Parameters parameters) throws Exception {
           DataSourceComponent datasource = null;
           Connection conn = null;
  +        Statement st = null;
  +        ResultSet rs = null;
   
  -     // read global parameter settings
  -     boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
  -     if (this.settings.containsKey("reloadable"))
  -         reloadable = Boolean.getBoolean((String) this.settings.get("reloadable"));
  -     // read local settings
  +        // read global parameter settings
  +        boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
  +
  +        if (this.settings.containsKey("reloadable")) {
  +            reloadable = Boolean.getBoolean((String) 
this.settings.get("reloadable"));
  +        }
  +
  +        // read local settings
           try {
               Configuration conf = this.getConfiguration (
  -                    parameters.getParameter ("descriptor", (String) 
this.settings.get("descriptor")), 
  -                 parameters.getParameterAsBoolean("reloadable",reloadable));
  +                    parameters.getParameter ("descriptor", (String) 
this.settings.get("descriptor")),
  +            parameters.getParameterAsBoolean("reloadable",reloadable));
               boolean cs = true;
  -            String create_session = parameters.getParameter ("create-session", 
  -                                                          (String) 
this.settings.get("create-session"));
  +            String create_session = parameters.getParameter ("create-session",
  +                                 (String) this.settings.get("create-session"));
               if (create_session != null &&
                       ("no".equals (create_session.trim ()) || "false".equals 
(create_session.trim ()))) {
                   cs = false;
  @@ -90,44 +95,57 @@
                   return null;
               }
   
  -
               String query = this.getAuthQuery (conf, req);
               if (query == null) {
                   getLogger ().debug ("DBAUTH: have not got query");
                   return null;
               }
   
  -            try {
  -                getLogger ().debug ("DBAUTH: quuery is: " + query);
  -                Statement st = conn.createStatement ();
  -                ResultSet rs = st.executeQuery (query);
  -                if (rs.next ()) {
  -                    getLogger ().debug ("DBAUTH: authorized successfully");
  -                    Session session = null;
  -                    if (cs) {
  -                        session = req.getSession (false);
  -                        if (session != null)
  -                            session.invalidate ();
  -                        session = req.getSession (true);
  -                        if (session == null)
  -                            return null;
  -                        getLogger ().debug ("DBAUTH: session created");
  -                    } else {
  -                        getLogger ().debug ("DBAUTH: leaving session untouched");
  -                    }
  -                    HashMap actionMap = this.propagateParameters (conf, rs,
  -                            session);
  -                    rs.close ();
  -                    st.close ();
  -                    return Collections.unmodifiableMap (actionMap);
  +            getLogger ().debug ("DBAUTH: quuery is: " + query);
  +            Statement st = conn.createStatement ();
  +            ResultSet rs = st.executeQuery (query);
  +
  +            if (rs.next ()) {
  +                getLogger ().debug ("DBAUTH: authorized successfully");
  +                Session session = null;
  +
  +                if (cs) {
  +                    session = req.getSession (false);
  +                    if (session != null)
  +                        session.invalidate ();
  +                    session = req.getSession (true);
  +                    if (session == null)
  +                        return null;
  +                    getLogger ().debug ("DBAUTH: session created");
  +                } else {
  +                    getLogger ().debug ("DBAUTH: leaving session untouched");
                   }
  -                getLogger ().debug ("DBAUTH: no results for query");
  -            } catch (Exception e) {
  -                getLogger ().debug ("exception: ", e);
  -                return null;
  +
  +                HashMap actionMap = this.propagateParameters (conf, rs,
  +                        session);
  +
  +                conn.commit();
  +                return Collections.unmodifiableMap (actionMap);
               }
  +
  +            conn.rollback();
  +            getLogger ().debug ("DBAUTH: no results for query");
           } catch (Exception e) {
  +            if (conn != null) {
  +                try {
  +                    conn.rollback();
  +                } catch (Exception e) {/* ignore */}
  +            }
               getLogger().debug ("exception: ", e);
  +            return null;
  +        } finally {
  +            if (rs != null) rs.close();
  +            if (st != null) st.close();
  +            if (conn != null) {
  +                try {
  +                    conn.close();
  +                } catch (Exception e) {/* ignore */}
  +            }
           }
           return null;
       }
  @@ -231,5 +249,5 @@
       }
   }
   
  -// $Id: DatabaseAuthenticatorAction.java,v 1.4 2001/07/11 08:47:50 haul Exp $
  +// $Id: DatabaseAuthenticatorAction.java,v 1.5 2001/07/19 19:08:55 bloritsch Exp $
   // vim: set et ts=4 sw=4:
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to