unico       2005/05/19 06:01:32

  Modified:    src/stores/org/apache/slide/store/impl/rdbms
                        CommonRDBMSAdapter.java PostgresRDBMSAdapter.java
                        DB2RDBMSAdapter.java StandardRDBMSAdapter.java
  Log:
  Repair removePermission delete statement. 
Apply patch by Johan Stuyts at Hippo for bug #34954
(silent failure of grantPermission)
  
  Revision  Changes    Path
  1.13      +16 -14    
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/CommonRDBMSAdapter.java
  
  Index: CommonRDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/CommonRDBMSAdapter.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- CommonRDBMSAdapter.java   18 May 2005 17:34:30 -0000      1.12
  +++ CommonRDBMSAdapter.java   19 May 2005 13:01:32 -0000      1.13
  @@ -5,7 +5,7 @@
    *
    * ====================================================================
    *
  - * Copyright 2004 The Apache Software Foundation 
  + * Copyright 2004-2005 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -32,7 +32,6 @@
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
  -import java.sql.Types;
   
   import org.apache.slide.common.Service;
   import org.apache.slide.common.ServiceAccessException;
  @@ -228,20 +227,23 @@
       public void revokePermission(Connection connection, Uri uri, 
NodePermission permission)
           throws ServiceAccessException {
           if (permission == null) return;
  +        StringBuffer sql = new StringBuffer("delete from PERMISSIONS where 
(OBJECT_ID, SUBJECT_ID, ACTION_ID) IN" +
  +                " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI ou, URI 
su, URI au WHERE ou.URI_STRING = ? and su.URI_STRING = ? and au.URI_STRING = 
?)");
           PreparedStatement statement = null;
           try {
  -            final NodeRevisionNumber revisionNumber = 
permission.getRevisionNumber();
  -            statement = connection.prepareStatement(
  -                    "delete from PERMISSIONS where (OBJECT_ID, SUBJECT_ID, 
ACTION_ID) IN" +
  -                    " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI ou, 
URI su, URI au " +
  -                    " WHERE ou.URI_STRING = ? and su.URI_STRING = ? and 
au.URI_STRING = ?)" +
  -                    " and VERSION_NO = ?");
  +            final NodeRevisionNumber revisionNumber;
  +            revisionNumber = permission.getRevisionNumber();
  +            // generate proper sql based on content of revision number
  +            if (revisionNumber != null) {
  +             sql.append(" and VERSION_NO = ?");
  +            } else {
  +             sql.append(" and VERSION_NO IS NULL");
  +            }
  +            statement = connection.prepareStatement(sql.toString());
               statement.setString(1, uri.toString());
               statement.setString(2, permission.getSubjectUri());
               statement.setString(3, permission.getActionUri());
  -            if (revisionNumber == null) {
  -                statement.setNull(4, Types.VARCHAR);
  -            } else {
  +            if (revisionNumber != null) {
                   statement.setString(4, revisionNumber.toString());
               }
               statement.executeUpdate();
  
  
  
  1.18      +5 -5      
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java
  
  Index: PostgresRDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- PostgresRDBMSAdapter.java 18 May 2005 17:34:30 -0000      1.17
  +++ PostgresRDBMSAdapter.java 19 May 2005 13:01:32 -0000      1.18
  @@ -5,7 +5,7 @@
    *
    * ====================================================================
    *
  - * Copyright 1999-2003 The Apache Software Foundation 
  + * Copyright 1999-2005 The Apache Software Foundation 
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  
  
  
  1.12      +5 -4      
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/DB2RDBMSAdapter.java
  
  Index: DB2RDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/DB2RDBMSAdapter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DB2RDBMSAdapter.java      18 May 2005 15:58:18 -0000      1.11
  +++ DB2RDBMSAdapter.java      19 May 2005 13:01:32 -0000      1.12
  @@ -259,6 +259,7 @@
                       + "," + permission.getActionUri()
                       + ")";
                       getLogger().log(msg,LOG_CHANNEL,Logger.ERROR);
  +                    throw new ServiceAccessException(service, msg);
                   }
               } finally {
                   close(statement);
  
  
  
  1.45      +18 -16    
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java
  
  Index: StandardRDBMSAdapter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/StandardRDBMSAdapter.java,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- StandardRDBMSAdapter.java 18 May 2005 17:34:30 -0000      1.44
  +++ StandardRDBMSAdapter.java 19 May 2005 13:01:32 -0000      1.45
  @@ -5,7 +5,7 @@
    *
    * ====================================================================
    *
  - * Copyright 1999-2003 The Apache Software Foundation 
  + * Copyright 1999-2005 The Apache Software Foundation 
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -33,7 +33,6 @@
   import java.sql.PreparedStatement;
   import java.sql.ResultSet;
   import java.sql.SQLException;
  -import java.sql.Types;
   import java.util.Date;
   import java.util.Enumeration;
   import java.util.Hashtable;
  @@ -586,6 +585,7 @@
                       + "," + permission.getActionUri() 
                       + ")"; 
                       getLogger().log(msg,LOG_CHANNEL,Logger.ERROR);
  +                    throw new ServiceAccessException(service, msg);
                   }
               } finally {
                   close(statement);
  @@ -598,21 +598,23 @@
       public void revokePermission(Connection connection, Uri uri, 
NodePermission permission)
           throws ServiceAccessException {
           if (permission == null) return;
  +        StringBuffer sql = new StringBuffer("delete from PERMISSIONS where 
(OBJECT_ID, SUBJECT_ID, ACTION_ID) IN" +
  +            " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI ou, URI su, 
URI au WHERE ou.URI_STRING = ? and su.URI_STRING = ? and au.URI_STRING = ?)");
           PreparedStatement statement = null;
           try {
  -            NodeRevisionNumber revisionNumber = 
permission.getRevisionNumber();
  -            statement =
  -                connection.prepareStatement(
  -                        "delete from PERMISSIONS where (OBJECT_ID, 
SUBJECT_ID, ACTION_ID) IN" +
  -                        " (SELECT ou.URI_ID, su.URI_ID, au.URI_ID FROM URI 
ou, URI su, URI au " +
  -                        " WHERE ou.URI_STRING = ? and su.URI_STRING = ? and 
au.URI_STRING = ?)" +
  -                        " and VERSION_NO = ?");
  +            final NodeRevisionNumber revisionNumber;
  +            revisionNumber = permission.getRevisionNumber();
  +            // generate proper sql based on content of revision number
  +            if (revisionNumber != null) {
  +                sql.append(" and VERSION_NO = ?");
  +            } else {
  +                sql.append(" and VERSION_NO IS NULL");
  +            }
  +            statement = connection.prepareStatement(sql.toString());
               statement.setString(1, uri.toString());
               statement.setString(2, permission.getSubjectUri());
               statement.setString(3, permission.getActionUri());
  -            if (revisionNumber == null) {
  -                statement.setNull(4, Types.VARCHAR);
  -            } else {
  +            if (revisionNumber != null) {
                   statement.setString(4, revisionNumber.toString());
               }
               statement.executeUpdate();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to