dirkv       01/10/07 12:32:39

  Modified:    src/stores/slidestore/cloudscape
                        CloudscapeDescriptorsStore.java
  Log:
  FIX 3930: Mysql, Temporary row in permissions table not removed after initialization
  Because the quote around  "ACTION" the condition never met, so no
  row got deleted when revoke was called.
  put the specific code in CloudscapeDescriptorsStore
  
  Revision  Changes    Path
  1.2       +47 -4     
jakarta-slide/src/stores/slidestore/cloudscape/CloudscapeDescriptorsStore.java
  
  Index: CloudscapeDescriptorsStore.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/stores/slidestore/cloudscape/CloudscapeDescriptorsStore.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CloudscapeDescriptorsStore.java   2001/09/21 01:02:44     1.1
  +++ CloudscapeDescriptorsStore.java   2001/10/07 19:32:38     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/stores/slidestore/cloudscape/CloudscapeDescriptorsStore.java,v
 1.1 2001/09/21 01:02:44 dirkv Exp $
  - * $Revision: 1.1 $
  - * $Date: 2001/09/21 01:02:44 $
  + * $Header: 
/home/cvs/jakarta-slide/src/stores/slidestore/cloudscape/CloudscapeDescriptorsStore.java,v
 1.2 2001/10/07 19:32:38 dirkv Exp $
  + * $Revision: 1.2 $
  + * $Date: 2001/10/07 19:32:38 $
    *
    * ====================================================================
    *
  @@ -63,13 +63,18 @@
   
   package slidestore.cloudscape;
   
  +import java.sql.*;
  +import org.apache.slide.common.*;
  +import org.apache.slide.security.*;
  +import org.apache.slide.content.*;
  +import org.apache.slide.util.logger.Logger;
   import slidestore.reference.JDBCDescriptorsStore;
   
   /**
    * Cloudscape compliant store implementation.
    * 
    * @author Dirk Verbeeck
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public class CloudscapeDescriptorsStore extends JDBCDescriptorsStore {
       
  @@ -104,5 +109,43 @@
               "    type varchar(100), protected int)"};
   
           return statements;
  +    }
  +     
  +    /**
  +     * Revoke a permission.
  +      * This cloudscape version has quoted the action column because action in a 
reserved word.
  +     * 
  +     * @param permission Permission we want to create
  +     * @exception ServiceAccessException Error accessing the Service
  +     */
  +    public void revokePermission(Uri uri, NodePermission permission)
  +        throws ServiceAccessException {
  +        
  +        PreparedStatement statement = null;
  +        
  +        try {
  +            NodeRevisionNumber revisionNumber = permission.getRevisionNumber();
  +            if(revisionNumber != null) {
  +                statement = connection.prepareStatement
  +                    ("delete from permissions where object= ? and subject = ? and 
\"ACTION\" = ?  and revisionnumber = ? ");
  +                statement.setString(4, revisionNumber.toString());
  +            }
  +            else {
  +                statement = connection.prepareStatement
  +                    ("delete from permissions where object = ? and subject = ? and 
\"ACTION\" = ? and revisionnumber is NULL");
  +            }
  +
  +            statement.setString(1, permission.getObjectUri());
  +            statement.setString(2, permission.getSubjectUri());
  +            statement.setString(3, permission.getActionUri());
  +        
  +            statement.execute();
  +        } catch (SQLException e) {
  +            getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
  +            throw new ServiceAccessException(this, e);
  +        } finally {
  +            closeStatement(statement);
  +        }
  +        
       }
   }
  
  
  


Reply via email to