juergen     01/02/26 04:52:00

  Modified:    src/share/org/apache/slide/macro MacroImpl.java
               src/share/org/apache/slide/common
                        NamespaceAccessTokenImpl.java
               src/share/org/apache/slide/security Security.java
                        SecurityImpl.java
  Log:
  in case of a non versioned resource (this is default) a delete removes all the 
entries in the child stores (e.g. lock, security, rd, rds)
  
  Revision  Changes    Path
  1.11      +49 -25    jakarta-slide/src/share/org/apache/slide/macro/MacroImpl.java
  
  Index: MacroImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/macro/MacroImpl.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- MacroImpl.java    2001/02/19 17:04:42     1.10
  +++ MacroImpl.java    2001/02/26 12:51:57     1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/macro/MacroImpl.java,v 1.10 
2001/02/19 17:04:42 juergen Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/02/19 17:04:42 $
  + * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/macro/MacroImpl.java,v 1.11 
2001/02/26 12:51:57 juergen Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/02/26 12:51:57 $
    *
    * ====================================================================
    *
  @@ -71,12 +71,13 @@
   import org.apache.slide.structure.*;
   import org.apache.slide.security.*;
   import org.apache.slide.content.*;
  +import org.apache.slide.lock.*;
   
   /**
    * Macro helper class.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
  - * @version $Revision: 1.10 $
  + * @version $Revision: 1.11 $
    */
   public final class MacroImpl implements Macro {
       
  @@ -94,12 +95,14 @@
        */
       public MacroImpl(Namespace namespace, NamespaceConfig namespaceConfig,
                        Security securityHelper, Content contentHelper,
  -                     Structure structureHelper) {
  -        this.namespace = namespace;
  +                     Structure structureHelper,
  +                     Lock lockHelper) {
  +        this.namespace       = namespace;
           this.namespaceConfig = namespaceConfig;
  -        this.securityHelper = securityHelper;
  -        this.contentHelper = contentHelper;
  +        this.securityHelper  = securityHelper;
  +        this.contentHelper   = contentHelper;
           this.structureHelper = structureHelper;
  +        this.lockHelper      = lockHelper;
       }
       
       
  @@ -136,6 +139,12 @@
       private Security securityHelper;
       
       
  +    /**
  +     * Lock helper.
  +     */
  +    private Lock lockHelper;
  +    
  +    
       // ---------------------------------------------------------- Macro Methods
       
       
  @@ -411,28 +420,43 @@
               if (currentObject.hasChildren()) {
                   Enumeration children = currentObject.enumerateChildren();
                   while (children.hasMoreElements()) {
  -                    deleteObject(token, (String) children.nextElement(),
  -                                 e);
  +                    deleteObject(token, (String) children.nextElement(), e);
                   }
               }
               
  -            // Removing object
  -            structureHelper.remove(token, currentObject);
  +            
  +            // Removing all revisions
  +            NodeRevisionDescriptors revisionDescriptors =
  +                contentHelper.retrieve(token, targetUri);
  +            
  +            // if the object is not revisioned remove it completely
  +            // from it's associated stores
  +            if (!revisionDescriptors.isVersioned()) {
  +                // remove the associated locks
  +                Enumeration locks = lockHelper.enumerateLocks(token, targetUri);
  +                while (locks.hasMoreElements()) {
  +                    lockHelper.unlock(token, (NodeLock) locks.nextElement());
  +                }
  +                // remove the associated security
  +                Enumeration permissions = 
securityHelper.enumeratePermissions(token, targetUri);
  +                while (permissions.hasMoreElements()) {
  +                    NodePermission permission = (NodePermission) 
permissions.nextElement();
  +                    securityHelper.revokePermission(token, permission);
  +                }
  +                // remove the NodeRevisionDescriptor and associated content
  +                if (revisionDescriptors.hasRevisions()) {
  +                    contentHelper.remove(token, targetUri,
  +                                         revisionDescriptors.getInitialRevision());
  +                }
  +
  +                // remove the NodeRevisionDescriptors object
  +                contentHelper.remove(token, revisionDescriptors);
  +          
  +            }
               
  -            // TODO : Remove permissions
  +            // Removing object.
  +            structureHelper.remove(token, currentObject);
               
  -            /*
  -              try {
  -              NodeProperties properties =
  -              structureHelper.retrieve(token, currentObject);
  -              structureHelper.remove(token, properties);
  -              structureHelper.remove(token, currentObject);
  -              } catch(StructureException ex) {
  -              // Perhaps there were no properties associated with
  -              // this object ...
  -              ex.printStackTrace();
  -              }
  -            */
               
           } catch (SlideException ex) {
               e.addException(ex);
  
  
  
  1.13      +6 -5      
jakarta-slide/src/share/org/apache/slide/common/NamespaceAccessTokenImpl.java
  
  Index: NamespaceAccessTokenImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/common/NamespaceAccessTokenImpl.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- NamespaceAccessTokenImpl.java     2001/02/26 12:49:20     1.12
  +++ NamespaceAccessTokenImpl.java     2001/02/26 12:51:58     1.13
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/common/NamespaceAccessTokenImpl.java,v
 1.12 2001/02/26 12:49:20 juergen Exp $
  - * $Revision: 1.12 $
  - * $Date: 2001/02/26 12:49:20 $
  + * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/common/NamespaceAccessTokenImpl.java,v
 1.13 2001/02/26 12:51:58 juergen Exp $
  + * $Revision: 1.13 $
  + * $Date: 2001/02/26 12:51:58 $
    *
    * ====================================================================
    *
  @@ -106,7 +106,7 @@
    * Namespace access token implementation.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
  - * @version $Revision: 1.12 $
  + * @version $Revision: 1.13 $
    */
   public final class NamespaceAccessTokenImpl implements NamespaceAccessToken {
       
  @@ -132,7 +132,7 @@
                               structureHelper, lockHelper);
           macroHelper =
               new MacroImpl(namespace, namespace.getConfig(), securityHelper,
  -                          contentHelper, structureHelper);
  +                          contentHelper, structureHelper, lockHelper);
       }
        
       
  @@ -460,4 +460,5 @@
       
       
   }
  +
   
  
  
  
  1.13      +17 -0     jakarta-slide/src/share/org/apache/slide/security/Security.java
  
  Index: Security.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/security/Security.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Security.java     2001/02/26 12:47:22     1.12
  +++ Security.java     2001/02/26 12:51:59     1.13
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/security/Security.java,v 1.12 
2001/02/26 12:47:22 juergen Exp $
  - * $Revision: 1.12 $
  - * $Date: 2001/02/26 12:47:22 $
  + * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/security/Security.java,v 1.13 
2001/02/26 12:51:59 juergen Exp $
  + * $Revision: 1.13 $
  + * $Date: 2001/02/26 12:51:59 $
    *
    * ====================================================================
    *
  @@ -73,7 +73,7 @@
    * Security helper.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
  - * @version $Revision: 1.12 $
  + * @version $Revision: 1.13 $
    */
   public interface Security {
       
  @@ -235,6 +235,23 @@
                             SubjectNode subject, ActionNode action)
           throws ServiceAccessException, ObjectNotFoundException,
           AccessDeniedException;
  +    
  +    
  +    /**
  +     * Revokes a permission.
  +     *
  +     * @param token Credentials token
  +     * @param permission Permission to be removed
  +     * @exception ServiceAccessException DataSource access error
  +     * @exception ObjectNotFoundException Specified object was not found
  +     * in the DataSource
  +     * @exception AccessDeniedException Insufficent credentials
  +     */
  +    public void revokePermission(SlideToken token, NodePermission permission)
  +        throws ServiceAccessException, ObjectNotFoundException,
  +        AccessDeniedException;
  +            
  +    
        
       
       /**
  
  
  
  1.20      +23 -0     
jakarta-slide/src/share/org/apache/slide/security/SecurityImpl.java
  
  Index: SecurityImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/security/SecurityImpl.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- SecurityImpl.java 2001/02/26 12:45:14     1.19
  +++ SecurityImpl.java 2001/02/26 12:52:00     1.20
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/security/SecurityImpl.java,v 1.19 
2001/02/26 12:45:14 juergen Exp $
  - * $Revision: 1.19 $
  - * $Date: 2001/02/26 12:45:14 $
  + * $Header: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/security/SecurityImpl.java,v 1.20 
2001/02/26 12:52:00 juergen Exp $
  + * $Revision: 1.20 $
  + * $Date: 2001/02/26 12:52:00 $
    *
    * ====================================================================
    *
  @@ -75,7 +75,7 @@
    * Security helper.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Remy Maucherat</a>
  - * @version $Revision: 1.19 $
  + * @version $Revision: 1.20 $
    */
   public final class SecurityImpl implements Security {
       
  @@ -292,6 +292,29 @@
           Uri objectUri = namespace.getUri(object.getUri());
           objectUri.getStore()
               .revokePermission(objectUri, permission);
  +    }
  +    
  +    
  +    
  +    /**
  +     * Revokes a permission.
  +     *
  +     * @param token Credentials token
  +     * @param permission Permission to be removed
  +     * @exception ServiceAccessException DataSource access error
  +     * @exception ObjectNotFoundException Specified object was not found
  +     * in the DataSource
  +     * @exception AccessDeniedException Insufficent credentials
  +     */
  +    public void revokePermission(SlideToken token, NodePermission permission)
  +        throws ServiceAccessException, ObjectNotFoundException,
  +        AccessDeniedException {
  +            
  +        Uri objectUri = namespace.getUri(permission.getObjectUri());
  +        ObjectNode object = objectUri.getStore().retrieveObject(objectUri);
  +            
  +        checkCredentials(token, object, 
namespaceConfig.getRevokePermissionAction());
  +        objectUri.getStore().revokePermission(objectUri, permission);
       }
       
       
  
  
  

Reply via email to