unico       2005/06/04 06:21:33

  Modified:    src/stores/org/apache/slide/store/impl/rdbms
                        PostgresRDBMSAdapter.java
  Log:
  fix bug 34343 thanks to Martin Kal�n
  
  Revision  Changes    Path
  1.19      +20 -25    
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.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- PostgresRDBMSAdapter.java 19 May 2005 13:01:32 -0000      1.18
  +++ PostgresRDBMSAdapter.java 4 Jun 2005 13:21:33 -0000       1.19
  @@ -27,7 +27,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;
  @@ -233,33 +232,29 @@
                }
        }
   
  -     public void revokePermission(
  -             Connection connection,
  -             Uri uri,
  -             NodePermission permission)
  -             throws ServiceAccessException {
  +    public void revokePermission(Connection connection, Uri uri, 
NodePermission permission)
  +    throws ServiceAccessException {
           if (permission == null) return;
  +        final 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 = ?");
  -                     statement.setString(1, uri.toString());
  -                     statement.setString(2, permission.getSubjectUri());
  -                     statement.setString(3, permission.getActionUri());
  -            if (revisionNumber == null) {
  -                statement.setNull(4, Types.VARCHAR);
  +            final NodeRevisionNumber 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.setString(1, uri.toString());
  +            statement.setString(2, permission.getSubjectUri());
  +            statement.setString(3, permission.getActionUri());
  +            if (revisionNumber != null) {
                   statement.setString(4, revisionNumber.toString());
               }
  -                     statement.executeUpdate();
  +            statement.executeUpdate();
                } catch (SQLException e) {
  -                     getLogger().log(e, LOG_CHANNEL, Logger.ERROR);
  -                     throw new ServiceAccessException(service, e);
  +            throw createException(e, uri.toString());
                } finally {
                        close(statement);
                }
  
  
  

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

Reply via email to