You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by oz...@apache.org on 2004/06/24 15:18:54 UTC

cvs commit: jakarta-slide/src/share/org/apache/slide/security SecurityImpl.java

ozeigermann    2004/06/24 06:18:54

  Modified:    src/webdav/server/org/apache/slide/webdav/util
                        VersioningHelper.java AbstractWebdavHelper.java
                        PropertyHelper.java WebdavUtils.java
               src/webdav/server/org/apache/slide/webdav/method
                        UpdateMethod.java UnbindMethod.java
                        LabelMethod.java BindMethod.java RebindMethod.java
                        AbstractWebdavMethod.java MoveMethod.java
                        PropPatchMethod.java AclMethod.java PutMethod.java
                        PropFindMethod.java
               src/share/org/apache/slide/lock LockImpl.java
               src/share/org/apache/slide/structure StructureImpl.java
               src/conf/schema SQLServerSchema.sql
               webdavclient/clientlib/src/java/org/apache/util
                        XMLPrinter.java
               src/share/org/apache/slide/common SlideTokenWrapper.java
                        Namespace.java
               src/share/org/apache/slide/macro MacroImpl.java
               src/webdav/server/org/apache/slide/webdav WebdavServlet.java
               src/share/org/apache/slide/security SecurityImpl.java
  Log:
  Cleaned version that does not allow any reads outside of transactions.
  SlideTokenWrapper no longer supports setting enlistment in ctor to avoid
  unthoughtful use of it. Additionally, no helper mehotds exist any more that 
  allow for easy creation of read only tokens.
  Tag set before this commit: BEFORE_NO_READ_OUTSIDE_TX
  
  Have a look at 
  http://nagoya.apache.org/eyebrowse/ReadMsg?listName=slide-dev@jakarta.apache.org&msgNo=11805
  for more details for the motivation.
  
  Revision  Changes    Path
  1.103     +8 -10     jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/VersioningHelper.java
  
  Index: VersioningHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/VersioningHelper.java,v
  retrieving revision 1.102
  retrieving revision 1.103
  diff -u -r1.102 -r1.103
  --- VersioningHelper.java	18 Jun 2004 16:05:46 -0000	1.102
  +++ VersioningHelper.java	24 Jun 2004 13:18:52 -0000	1.103
  @@ -201,7 +201,7 @@
           else {
               SlideToken lightSToken = sToken;
               if (sToken.isForceStoreEnlistment() || sToken.isForceLock()) {
  -                lightSToken = new SlideTokenWrapper(sToken, false);
  +                lightSToken = new SlideTokenWrapper(sToken);
                   lightSToken.setForceLock(false);
               }
               return getLabeledResourceUri(nsaToken, lightSToken, content, resourcePath, label);
  @@ -793,7 +793,7 @@
               
               if (isAutoVersionCheckout && 
               		!(E_CHECKOUT_IGNORE_UNLOCK.equals(getAutoVersionElementName(rNrd)))) {
  -                NodeLock writeLock = getWriteLock(readonlySlideToken(), rNrds);
  +                NodeLock writeLock = getWriteLock(sToken, rNrds);
                   if (writeLock != null) {
                       NodeProperty p =
                           new NodeProperty(I_CHECKIN_LOCKTOKEN,
  @@ -950,8 +950,7 @@
        * @return     the ViolatedPrecondition (if any).
        */
       protected ViolatedPrecondition getCheckoutPreconditionViolation(NodeRevisionDescriptors cinNrds, NodeRevisionDescriptor cinNrd, boolean isForkOk) throws IllegalArgumentException, IOException, JDOMException, SlideException {
  -        // use a non-blocking slide token.
  -        SlideToken stok = readonlySlideToken();
  +        SlideToken stok = sToken;
           
           ViolatedPrecondition violatedPrecondition = null;
           
  @@ -1339,8 +1338,7 @@
        * @return     the ViolatedPrecondition (if any).
        */
       protected ViolatedPrecondition getCheckinPreconditionViolation(NodeProperty predSetProp, NodeRevisionDescriptors vhrNrds, boolean isForkOk, NodeRevisionDescriptor autoUpdNrd ) throws LinkedObjectNotFoundException, ServiceAccessException, ObjectLockedException, RevisionDescriptorNotFoundException, JDOMException, IllegalArgumentException, ObjectNotFoundException, AccessDeniedException, IOException, VetoException {
  -        // use a non-blocking slide token.
  -        SlideToken stok = readonlySlideToken();
  +        SlideToken stok = sToken;
           
           ViolatedPrecondition violatedPrecondition = null;
           
  @@ -1773,7 +1771,7 @@
        */
       public boolean isWriteLocked(SlideToken slideToken, NodeRevisionDescriptors revisionDescriptors)
           throws ServiceAccessException {
  -        return (getWriteLock(readonlySlideToken(), revisionDescriptors) != null);
  +        return (getWriteLock(slideToken, revisionDescriptors) != null);
       }
       
       /**
  
  
  
  1.11      +3 -10     jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/AbstractWebdavHelper.java
  
  Index: AbstractWebdavHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/AbstractWebdavHelper.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractWebdavHelper.java	11 Feb 2004 11:30:34 -0000	1.10
  +++ AbstractWebdavHelper.java	24 Jun 2004 13:18:52 -0000	1.11
  @@ -65,12 +65,5 @@
           this.nsaToken = nsaToken;
       }
   
  -    protected SlideToken readonlySlideToken() {
  -        SlideToken stok = sToken;
  -        if (stok.isForceStoreEnlistment()) {
  -            stok = new SlideTokenWrapper(sToken, false);
  -        }
  -        return stok;
  -    }
   }
   
  
  
  
  1.72      +9 -17     jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java
  
  Index: PropertyHelper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- PropertyHelper.java	18 Jun 2004 16:05:46 -0000	1.71
  +++ PropertyHelper.java	24 Jun 2004 13:18:52 -0000	1.72
  @@ -984,13 +984,9 @@
           
           ResourceKind resourceKind = AbstractResourceKind.determineResourceKind(nsaToken, revisionDescriptors, revisionDescriptor);
           if (resourceKind instanceof Version) {
  -            SlideToken sTokenNoEnlist = sToken;
  -            if (sToken.isForceStoreEnlistment()) {
  -                sTokenNoEnlist = new SlideTokenWrapper(sToken, false);
  -            }
               
               String resourcePath = VersioningHelper.getUri(nsaToken,
  -                                                          sTokenNoEnlist,
  +                                                          sToken,
                                                             nsaToken.getContentHelper(),
                                                             revisionDescriptors,
                                                             revisionDescriptor);
  @@ -1002,11 +998,11 @@
           // @FIXME Why is servletPath not required?
               SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
                                                                        basicSearch,
  -                                                                     sTokenNoEnlist,
  +                                                                     sToken,
                                                                        Integer.MAX_VALUE,
                                                                        slideContextPath);
               
  -            SearchQueryResult queryResult = searchHelper.search(sTokenNoEnlist, searchQuery);
  +            SearchQueryResult queryResult = searchHelper.search(sToken, searchQuery);
               Iterator queryResultIterator = queryResult.iterator();
               RequestedResource requestedResource = null;
               Element href = null;
  @@ -1230,20 +1226,16 @@
           
           ResourceKind resourceKind = AbstractResourceKind.determineResourceKind(nsaToken, revisionDescriptors, revisionDescriptor);
           if (resourceKind instanceof Workspace) {
  -            SlideToken sTokenNoEnlist = sToken;
  -            if (sToken.isForceStoreEnlistment()) {
  -                sTokenNoEnlist = new SlideTokenWrapper(sToken, false);
  -            }
               
               Element basicSearch = getWorkspaceCheckoutSetQueryElement(revisionDescriptors.getUri());
               String grammarNamespace = basicSearch.getNamespaceURI();
               Search searchHelper = nsaToken.getSearchHelper();
               SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
                                                                        basicSearch,
  -                                                                     sTokenNoEnlist,
  +                                                                     sToken,
                                                                        Integer.MAX_VALUE,
                                                                        slideContextPath);
  -            SearchQueryResult queryResult = searchHelper.search(sTokenNoEnlist, searchQuery);
  +            SearchQueryResult queryResult = searchHelper.search(sToken, searchQuery);
               Iterator queryResultIterator = queryResult.iterator();
               RequestedResource requestedResource = null;
               Element hrefElement = null;
  @@ -1322,7 +1314,7 @@
           XMLValue xmlValue = new XMLValue();
           Lock lock = nsaToken.getLockHelper();
           NodeLock objectLockToken = null;
  -        Enumeration lockTokens = lock.enumerateLocks(readonlySlideToken(), revisionDescriptors.getUri(), true);
  +        Enumeration lockTokens = lock.enumerateLocks(sToken, revisionDescriptors.getUri(), true);
           Set addedLockIDs = new HashSet();
           while (lockTokens.hasMoreElements()) {
               objectLockToken = (NodeLock) lockTokens.nextElement();
  
  
  
  1.20      +4 -8      jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/WebdavUtils.java
  
  Index: WebdavUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/WebdavUtils.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- WebdavUtils.java	14 Jun 2004 12:38:36 -0000	1.19
  +++ WebdavUtils.java	24 Jun 2004 13:18:52 -0000	1.20
  @@ -368,10 +368,6 @@
           (NamespaceAccessToken token, SlideToken slideToken,
            String path) {
           
  -        if (slideToken.isForceStoreEnlistment()) {
  -            slideToken = new SlideTokenWrapper(slideToken, false); // check only, no enlistment
  -        }
  -        
           // Added for DeltaV --start--
           if( Configuration.useVersionControl() ) {
               UriHandler uh = UriHandler.getUriHandler( path );
  
  
  
  1.29      +7 -9      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/UpdateMethod.java
  
  Index: UpdateMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/UpdateMethod.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- UpdateMethod.java	14 Jun 2004 12:38:36 -0000	1.28
  +++ UpdateMethod.java	24 Jun 2004 13:18:52 -0000	1.29
  @@ -484,15 +484,13 @@
        * @throws     SlideException
        */
       protected ViolatedPrecondition getPreconditionViolation(String updateSourcePath, String updateSourceLabel, String resourcePath) throws SlideException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
   
           ViolatedPrecondition violatedPrecondition = null;
   
           NodeRevisionDescriptors revisionDescriptors =
  -            content.retrieve(stoken, resourcePath);
  +            content.retrieve(slideToken, resourcePath);
           NodeRevisionDescriptor revisionDescriptor =
  -            content.retrieve(stoken, revisionDescriptors);
  +            content.retrieve(slideToken, revisionDescriptors);
           ResourceKind resourceKind = AbstractResourceKind.determineResourceKind(token,
                                                                                  revisionDescriptors,
                                                                                  revisionDescriptor);
  @@ -519,10 +517,10 @@
               vcrHistoryUri.equals(vrUriHandler.getAssociatedHistoryUri()) ) {
   
               NodeRevisionDescriptors vrDescriptors =
  -                content.retrieve(stoken, updateSourcePath);
  +                content.retrieve(slideToken, updateSourcePath);
               try {
                   NodeRevisionDescriptor vrDescriptor =
  -                    content.retrieve(stoken, vrDescriptors);
  +                    content.retrieve(slideToken, vrDescriptors);
                   isVersionOfVcrHistory = true;
               }
               catch (RevisionDescriptorNotFoundException e) {
  
  
  
  1.12      +4 -6      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/UnbindMethod.java
  
  Index: UnbindMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/UnbindMethod.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- UnbindMethod.java	24 Feb 2004 17:03:34 -0000	1.11
  +++ UnbindMethod.java	24 Jun 2004 13:18:52 -0000	1.12
  @@ -103,13 +103,11 @@
       }
       
       private void checkPreconditions() throws PreconditionViolationException, ServiceAccessException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
           
           resp.setStatus( WebdavStatus.SC_OK );
           
           try {
  -            collectionNode = structure.retrieve( stoken, collectionUri );
  +            collectionNode = structure.retrieve( slideToken, collectionUri );
           }
           catch( ServiceAccessException e ) {
               throw e;
  
  
  
  1.25      +8 -10     jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LabelMethod.java
  
  Index: LabelMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LabelMethod.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- LabelMethod.java	24 Feb 2004 17:03:33 -0000	1.24
  +++ LabelMethod.java	24 Jun 2004 13:18:52 -0000	1.25
  @@ -414,14 +414,12 @@
        * @throws     SlideException
        */
       protected ViolatedPrecondition getPreconditionViolation(String resourcePath) throws SlideException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
           
           ViolatedPrecondition violatedPrecondition = null;
           NodeRevisionDescriptors revisionDescriptors =
  -            content.retrieve( stoken, resourcePath);
  +            content.retrieve( slideToken, resourcePath);
           NodeRevisionDescriptor revisionDescriptor =
  -            content.retrieve( stoken, revisionDescriptors);
  +            content.retrieve( slideToken, revisionDescriptors);
           ResourceKind resourceKind = AbstractResourceKind.determineResourceKind(token, revisionDescriptors, revisionDescriptor);
           
           // check <DAV:must-be-checked-in>
  @@ -446,9 +444,9 @@
           try {
               String slideResourceUri = getResourceUri(resourcePath, labelHeader);
               revisionDescriptors =
  -                content.retrieve( stoken, slideResourceUri);
  +                content.retrieve( slideToken, slideResourceUri);
               revisionDescriptor =
  -                content.retrieve( stoken, revisionDescriptors);
  +                content.retrieve( slideToken, revisionDescriptors);
               resourceKind = AbstractResourceKind.determineResourceKind(token, revisionDescriptors, revisionDescriptor);
               if (resourceKind instanceof Version) {
                   
  
  
  
  1.15      +5 -8      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/BindMethod.java
  
  Index: BindMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/BindMethod.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- BindMethod.java	24 Feb 2004 17:03:33 -0000	1.14
  +++ BindMethod.java	24 Jun 2004 13:18:52 -0000	1.15
  @@ -111,11 +111,8 @@
       private void checkPreconditions() throws PreconditionViolationException, ServiceAccessException {
           resp.setStatus( WebdavStatus.SC_CREATED );
   
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -
           try {
  -            collectionNode = structure.retrieve( stoken, collectionUri );
  +            collectionNode = structure.retrieve( slideToken, collectionUri );
           }
           catch( ServiceAccessException e ) {
               throw e;
  @@ -123,7 +120,7 @@
           catch (SlideException e) {} // ignore silently
   
           try {
  -            sourceNode = structure.retrieve( stoken, sourceUri );
  +            sourceNode = structure.retrieve( slideToken, sourceUri );
           }
           catch( ServiceAccessException e ) {
               throw e;
  
  
  
  1.13      +6 -9      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/RebindMethod.java
  
  Index: RebindMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/RebindMethod.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- RebindMethod.java	24 Feb 2004 17:03:34 -0000	1.12
  +++ RebindMethod.java	24 Jun 2004 13:18:52 -0000	1.13
  @@ -111,9 +111,6 @@
       }
   
       private void checkPreconditions() throws PreconditionViolationException, ServiceAccessException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -        
           resp.setStatus( WebdavStatus.SC_CREATED );
           UriHandler sourceUh = UriHandler.getUriHandler(sourceUri);
           UriHandler sourceParentUh = sourceUh.getParentUriHandler();
  @@ -123,7 +120,7 @@
           }
   
           try {
  -            collectionNode = structure.retrieve( stoken, collectionUri );
  +            collectionNode = structure.retrieve( slideToken, collectionUri );
           }
           catch( ServiceAccessException e ) {
               throw e;
  @@ -131,7 +128,7 @@
           catch (SlideException e) {} // ignore silently
   
           try {
  -            sourceNode = structure.retrieve( stoken, sourceUri );
  +            sourceNode = structure.retrieve( slideToken, sourceUri );
           }
           catch( ServiceAccessException e ) {
               throw e;
  @@ -139,7 +136,7 @@
           catch (SlideException e) {} // ignore silently
   
           try {
  -            sourceParentNode = structure.retrieve( stoken, sourceParentUri );
  +            sourceParentNode = structure.retrieve( slideToken, sourceParentUri );
           }
           catch( ServiceAccessException e ) {
               throw e;
  
  
  
  1.32      +10 -29    jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AbstractWebdavMethod.java
  
  Index: AbstractWebdavMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AbstractWebdavMethod.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- AbstractWebdavMethod.java	23 Jun 2004 09:57:14 -0000	1.31
  +++ AbstractWebdavMethod.java	24 Jun 2004 13:18:52 -0000	1.32
  @@ -519,14 +519,11 @@
               return true;
           }
           
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -        
           NodeRevisionDescriptors lowerNrds = null;
           NodeRevisionDescriptor lowerNrd = null;
           try {
  -            lowerNrds = content.retrieve(stoken, lowerNode.getUri());
  -            lowerNrd = content.retrieve(stoken, lowerNrds);
  +            lowerNrds = content.retrieve(slideToken, lowerNode.getUri());
  +            lowerNrd = content.retrieve(slideToken, lowerNrds);
               
               NodeProperty psProp = lowerNrd.getProperty(P_PARENT_SET);
               XMLValue xv = new XMLValue( String.valueOf(psProp.getValue()) );
  @@ -535,7 +532,7 @@
                   // iterate over parent elements
                   Element pElm = (Element)i.next();
                   String hrPath = pElm.getChild( E_HREF, DNSP ).getText();
  -                ObjectNode hrNode = structure.retrieve( stoken, hrPath );
  +                ObjectNode hrNode = structure.retrieve( slideToken, hrPath );
                   return isDescendant( hrNode, upperNode );
               }
           } catch (ServiceAccessException e) {
  @@ -920,13 +917,10 @@
       }
       
       protected boolean exists( String uriStr ) throws SlideException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -        
           boolean destinationExists = true;
           
           try {
  -            content.retrieve(stoken, uriStr);
  +            content.retrieve(slideToken, uriStr);
           }
           catch (ObjectNotFoundException x) {
               destinationExists = false;
  @@ -936,13 +930,11 @@
       
       protected boolean isLocked( String uriStr ) throws ServiceAccessException {
           // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -        
           boolean isLocked = false;
           try {
  -            Enumeration locks = lock.enumerateLocks (stoken, uriStr, false);
  +            Enumeration locks = lock.enumerateLocks (slideToken, uriStr, false);
               while (locks.hasMoreElements()) {
  -                if (lock.isLocked(stoken,(NodeLock) locks.nextElement(),false)) {
  +                if (lock.isLocked(slideToken,(NodeLock) locks.nextElement(),false)) {
                       isLocked = true;
                   }
               }
  @@ -957,13 +949,10 @@
       }
       
       protected boolean isLockNull( String uriStr ) throws ServiceAccessException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -        
           boolean isLockNull = false;
           try {
               NodeRevisionDescriptor nrd =
  -                content.retrieve(stoken, content.retrieve(stoken, uriStr));
  +                content.retrieve(slideToken, content.retrieve(slideToken, uriStr));
               isLockNull = isLockNull( nrd );
           }
           catch (ServiceAccessException x) {
  @@ -1011,14 +1000,6 @@
               }
           }
           return false;
  -    }
  -    
  -    protected SlideToken readonlySlideToken() {
  -        SlideToken stoken = slideToken;
  -        if (stoken.isForceStoreEnlistment()) {
  -            stoken = new SlideTokenWrapper(slideToken, false);
  -        }
  -        return stoken;
       }
       
       /**
  
  
  
  1.69      +9 -16     jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/MoveMethod.java
  
  Index: MoveMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/MoveMethod.java,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- MoveMethod.java	24 Feb 2004 17:03:33 -0000	1.68
  +++ MoveMethod.java	24 Jun 2004 13:18:52 -0000	1.69
  @@ -297,8 +297,6 @@
        * @throws     SlideException
        */
       private ViolatedPrecondition getPreconditionViolation(String sourceUri, String destinationUri) throws SlideException {
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
   
           ViolatedPrecondition violatedPrecondition = null;
           if( Configuration.useVersionControl() ) {
  @@ -309,8 +307,8 @@
                   NodeRevisionDescriptors destinationRevisionDescriptors = null;
                   NodeRevisionDescriptor destinationRevisionDescriptor = null;
                   try {
  -                    destinationRevisionDescriptors = content.retrieve( stoken, destinationUri);
  -                    destinationRevisionDescriptor = content.retrieve( stoken, destinationRevisionDescriptors);
  +                    destinationRevisionDescriptors = content.retrieve( slideToken, destinationUri);
  +                    destinationRevisionDescriptor = content.retrieve( slideToken, destinationRevisionDescriptors);
                   }
                   catch( ObjectNotFoundException e ) {}; // can be ignored here!
   
  @@ -330,9 +328,9 @@
           if (isCollection(sourceUri)) {
               UriHandler destinationUriHandler = UriHandler.getUriHandler(destinationUri);
               ObjectNode destinationParentNode =
  -                structure.retrieve(stoken, destinationUriHandler.getParentUriHandler().toString());
  +                structure.retrieve(slideToken, destinationUriHandler.getParentUriHandler().toString());
               ObjectNode sourceNode =
  -                structure.retrieve(stoken, sourceUri);
  +                structure.retrieve(slideToken, sourceUri);
               if (isDescendant(destinationParentNode, sourceNode)) {
                   return new ViolatedPrecondition(C_CYCLE_ALLOWED, WebdavStatus.SC_FORBIDDEN);
               }
  @@ -472,18 +470,13 @@
               StringBuffer requestURIWithScope = new StringBuffer(req.getContextPath());
               requestURIWithScope.append(sourceUri);
               
  -            SlideToken slideTokenNoEnlist = slideToken;
  -            if (slideToken.isForceStoreEnlistment()) {
  -                slideTokenNoEnlist = new SlideTokenWrapper(slideToken, false);
  -            }
  -            
               SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
                                                                        basicSearch,
  -                                                                     slideTokenNoEnlist,
  +                                                                     slideToken,
                                                                        Integer.MAX_VALUE,
                                                                        requestURIWithScope.toString());
   
  -            SearchQueryResult queryResult = searchHelper.search(slideTokenNoEnlist, searchQuery);
  +            SearchQueryResult queryResult = searchHelper.search(slideToken, searchQuery);
   
               Iterator queryResultIterator = queryResult.iterator();
               RequestedResource requestedResource = null;
  
  
  
  1.81      +4 -7      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java
  
  Index: PropPatchMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropPatchMethod.java,v
  retrieving revision 1.80
  retrieving revision 1.81
  diff -u -r1.80 -r1.81
  --- PropPatchMethod.java	23 Jun 2004 13:17:15 -0000	1.80
  +++ PropPatchMethod.java	24 Jun 2004 13:18:52 -0000	1.81
  @@ -579,9 +579,6 @@
       private ViolatedPrecondition getPreconditionViolation(NodeRevisionDescriptors revisionDescriptors, NodeRevisionDescriptor revisionDescriptor, ResourceKind resourceKind)
           throws ServiceAccessException {
           
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -
           if( Configuration.useVersionControl() ) {
               
               if (resourceKind instanceof CheckedInVersionControlled) {
  @@ -601,7 +598,7 @@
                                                       WebdavStatus.SC_FORBIDDEN);
                   }
                   if (E_LOCKED_CHECKOUT.equals(autoVersion)) {
  -                    if ( !versioningHelper.isWriteLocked(stoken, revisionDescriptors) ) {
  +                    if ( !versioningHelper.isWriteLocked(slideToken, revisionDescriptors) ) {
                           return new ViolatedPrecondition(C_CANNOT_MODIFY_VERSION_CONTROLLED_PROPERTY,
                                                           WebdavStatus.SC_FORBIDDEN);
                       }
  
  
  
  1.40      +3 -6      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java
  
  Index: AclMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AclMethod.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- AclMethod.java	24 Feb 2004 17:03:33 -0000	1.39
  +++ AclMethod.java	24 Jun 2004 13:18:52 -0000	1.40
  @@ -225,9 +225,6 @@
        */
       private void checkPreconditions() throws PreconditionViolationException, ServiceAccessException {
           resp.setStatus( WebdavStatus.SC_OK );
  -        
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
       }
       
       /**
  
  
  
  1.77      +4 -7      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PutMethod.java
  
  Index: PutMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PutMethod.java,v
  retrieving revision 1.76
  retrieving revision 1.77
  diff -u -r1.76 -r1.77
  --- PutMethod.java	23 Jun 2004 13:19:59 -0000	1.76
  +++ PutMethod.java	24 Jun 2004 13:18:52 -0000	1.77
  @@ -436,9 +436,6 @@
       private ViolatedPrecondition getPreconditionViolation(NodeRevisionDescriptors revisionDescriptors, NodeRevisionDescriptor revisionDescriptor, ResourceKind resourceKind)
           throws ServiceAccessException {
           
  -        // use a non-blocking slide token.
  -        SlideToken stoken = readonlySlideToken();
  -        
           if( Configuration.useVersionControl() ) {
               
               if (resourceKind instanceof CheckedInVersionControlled) {
  @@ -457,7 +454,7 @@
                                                       WebdavStatus.SC_FORBIDDEN);
                   }
                   if ( E_LOCKED_CHECKOUT.equals(autoVersion) &&
  -                        ( !versioningHelper.isWriteLocked(stoken, revisionDescriptors) ) ) {
  +                        ( !versioningHelper.isWriteLocked(slideToken, revisionDescriptors) ) ) {
                       return new ViolatedPrecondition(C_CANNOT_MODIFY_VERSION_CONTROLLED_CONTENT,
                                                       WebdavStatus.SC_FORBIDDEN);
                   }
  
  
  
  1.102     +4 -4      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java
  
  Index: PropFindMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java,v
  retrieving revision 1.101
  retrieving revision 1.102
  diff -u -r1.101 -r1.102
  --- PropFindMethod.java	14 Jun 2004 12:38:35 -0000	1.101
  +++ PropFindMethod.java	24 Jun 2004 13:18:52 -0000	1.102
  @@ -396,7 +396,7 @@
       protected Element getPropertiesOfObject(String resourceUri)
           throws WebdavException {
           
  -        SlideToken lightSToken = new SlideTokenWrapper(slideToken, false);
  +        SlideToken lightSToken = new SlideTokenWrapper(slideToken);
           lightSToken.setForceLock(false);
           
           // evaluate "Label" header
  
  
  
  1.44      +8 -11     jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java
  
  Index: LockImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- LockImpl.java	5 Jun 2004 12:20:19 -0000	1.43
  +++ LockImpl.java	24 Jun 2004 13:18:53 -0000	1.44
  @@ -369,9 +369,6 @@
           if (!token.isForceLock()) {
               return;
           }
  -        if (!token.isForceStoreEnlistment()) {
  -            token = new SlideTokenWrapper(token, false);
  -        }
           
           if (Configuration.useIntegratedLocking()) {
               
  @@ -602,7 +599,7 @@
            boolean tryToLock, ObjectIsAlreadyLockedException nestedException)
           throws ServiceAccessException, ObjectNotFoundException {
           
  -        Uri objectUri = namespace.getUri(slideToken, token.getObjectUri(), false);
  +        Uri objectUri = namespace.getUri(slideToken, token.getObjectUri());
           ObjectNode initialObject = objectUri.getStore()
               .retrieveObject(objectUri);
           Enumeration scopes = objectUri.getScopes();
  @@ -616,7 +613,7 @@
           // First, we parse all the parents of the subject.
           while (!isLocked && scopes.hasMoreElements()) {
               String currentScope = (String) scopes.nextElement();
  -            Uri currentScopeUri = namespace.getUri(slideToken, currentScope, false);
  +            Uri currentScopeUri = namespace.getUri(slideToken, currentScope);
               Enumeration locks = currentScopeUri.getStore()
                   .enumerateLocks(currentScopeUri);
               
  @@ -643,7 +640,7 @@
               while (!isLocked && !childrenStack.empty()) {
                   ObjectNode currentObject = (ObjectNode) childrenStack.pop();
                   Uri currentObjectUri =
  -                    namespace.getUri(slideToken, currentObject.getUri(), false);
  +                    namespace.getUri(slideToken, currentObject.getUri());
                   // We test the compatibility of the child
                   Enumeration locks = currentObjectUri.getStore()
                       .enumerateLocks(currentObjectUri);
  @@ -667,7 +664,7 @@
                   Enumeration childrenUri = currentObject.enumerateChildren();
                   while (childrenUri.hasMoreElements()) {
                       String childUri = (String) childrenUri.nextElement();
  -                    Uri tempUri = namespace.getUri(slideToken, childUri, false);
  +                    Uri tempUri = namespace.getUri(slideToken, childUri);
                       ObjectNode child = tempUri.getStore()
                           .retrieveObject(tempUri);
                       childrenVector.addElement(child);
  
  
  
  1.47      +5 -9      jakarta-slide/src/share/org/apache/slide/structure/StructureImpl.java
  
  Index: StructureImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/structure/StructureImpl.java,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- StructureImpl.java	23 Jun 2004 09:57:15 -0000	1.46
  +++ StructureImpl.java	24 Jun 2004 13:18:53 -0000	1.47
  @@ -684,11 +684,7 @@
        */
       public List getParents(SlideToken token, ObjectNode object, boolean pathOnly, boolean storeOnly, boolean includeSelf) throws ServiceAccessException, ObjectNotFoundException, LinkedObjectNotFoundException, AccessDeniedException, VetoException {
           List result = new ArrayList();
  -        if (token.isForceStoreEnlistment()) {
  -            // get read-only token
  -            token = new SlideTokenWrapper(token, false);
  -        }
  -        
  +
           if (pathOnly) {
               String[] uriTokens = object.getPath().tokens();
               UriPath path = new UriPath("/");
  
  
  
  1.4       +292 -292  jakarta-slide/src/conf/schema/SQLServerSchema.sql
  
  Index: SQLServerSchema.sql
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/conf/schema/SQLServerSchema.sql,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SQLServerSchema.sql	27 May 2004 11:57:25 -0000	1.3
  +++ SQLServerSchema.sql	24 Jun 2004 13:18:53 -0000	1.4
  @@ -1,292 +1,292 @@
  -	/**********************************************************************/
  -	/******    DROP SLIDE TABLES                                     ******/
  -	/**********************************************************************/
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[OBJECT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[OBJECT]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BINDING]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[BINDING]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PARENT_BINDING]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[PARENT_BINDING]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[CHILDREN]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[CHILDREN]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LINKS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[LINKS]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LOCKS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[LOCKS]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_CONTENT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[VERSION_CONTENT]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PROPERTIES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[PROPERTIES]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PERMISSIONS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[PERMISSIONS]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_PREDS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[VERSION_PREDS]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_LABELS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[VERSION_LABELS]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_HISTORY]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[VERSION_HISTORY]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[VERSION]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BRANCH]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[BRANCH]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LABEL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[LABEL]
  -	GO
  -	
  -	IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[URI]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
  -	DROP TABLE [dbo].[URI]
  -	GO
  -	
  -	/**********************************************************************/
  -	/******    DROP EXISTING USER DEFINED DATA TYPES                 ******/
  -	/**********************************************************************/
  -	
  -	sp_droptype id_type
  -	GO
  -	
  -	sp_droptype uri_str_type
  -	GO
  -	
  -	sp_droptype revision_no_type
  -	GO
  -	
  -	sp_droptype hash_type
  -	GO
  -	
  -	sp_droptype literal_str_type
  -	GO
  -	
  -	sp_droptype value_str_type
  -	GO
  -	
  -	
  -	/**********************************************************************/
  -	/******    ADD USER DEFINED DATA TYPES                           ******/
  -	/**********************************************************************/
  -	
  -	sp_addtype id_type,           bigint
  -	GO
  -	
  -	sp_addtype uri_str_type,     "nvarchar(800)"
  -	GO
  -	
  -	sp_addtype revision_no_type, "nvarchar(20)"
  -	GO
  -	
  -	sp_addtype hash_type,         bigint
  -	GO
  -	
  -	sp_addtype literal_str_type, "nvarchar(3000)"
  -	GO
  -	
  -	sp_addtype value_str_type,   "nvarchar(255)"
  -	GO
  -	
  -	/**********************************************************************/
  -	/******    CREATE SLIDE TABLES                                   ******/
  -	/**********************************************************************/
  -	
  -	CREATE TABLE dbo.URI (
  -	    URI_ID          id_type               IDENTITY  UNIQUE  NOT NULL,
  -	    URI_STRING      uri_str_type          UNIQUE  NOT NULL,
  -	 --   UNIQUE NONCLUSTERED (URI_ID)
  -	)
  -	GO
  -	
  -	CREATE INDEX XUID
  -		ON URI(URI_ID) 
  -	GO
  -	
  -	CREATE INDEX XUSTRING
  -		ON URI(URI_STRING) 
  -	GO
  -	
  -	CREATE TABLE dbo.OBJECT (
  -	    URI_ID          id_type               PRIMARY KEY,
  -	    CLASS_NAME      nvarchar(255)          NOT NULL,
  -	    CONSTRAINT      FK_OBJECT_URI_ID
  -	       FOREIGN KEY (URI_ID)
  -	       REFERENCES   URI (URI_ID)
  -	)
  -	GO    
  -	
  -	CREATE TABLE dbo.BINDING (
  -	    URI_ID          id_type               NOT NULL
  -	        REFERENCES  URI (URI_ID),
  -	    NAME            uri_str_type          NOT NULL,
  -	    CHILD_UURI_ID    id_type              NOT NULL
  -	        REFERENCES  URI (URI_ID),
  -	    UNIQUE CLUSTERED (URI_ID, NAME, CHILD_UURI_ID)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.PARENT_BINDING (
  -	    URI_ID          id_type               NOT NULL
  -	        REFERENCES  URI (URI_ID),
  -	    NAME            uri_str_type          NOT NULL,
  -	    PARENT_UURI_ID    id_type             NOT NULL
  -	        REFERENCES  URI (URI_ID),
  -	    UNIQUE CLUSTERED (URI_ID, NAME, PARENT_UURI_ID)
  -	) 
  -	GO
  -	
  -	CREATE TABLE dbo.LINKS (
  -	    URI_ID          id_type               NOT NULL  FOREIGN KEY
  -	        REFERENCES  URI (URI_ID),
  -	    LINK_TO_ID      id_type               NOT NULL  FOREIGN KEY
  -	        REFERENCES  URI (URI_ID),
  -	    --UNIQUE CLUSTERED (URI_ID, LINK_TO_ID)
  -	)
  -	GO
  -	
  -	CREATE INDEX XURI_ID
  -		ON LINKS(URI_ID) 
  -	GO
  -	
  -	
  -	CREATE INDEX XLINK_TO_ID
  -		ON LINKS(LINK_TO_ID) 
  -	GO
  -	
  -	CREATE TABLE dbo.LOCKS (
  -	    LOCK_ID         id_type               PRIMARY KEY,
  -	    OBJECT_ID       id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   URI (URI_ID),
  -	    SUBJECT_ID      id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   URI (URI_ID),
  -	    TYPE_ID         id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   URI (URI_ID),
  -	    EXPIRATION_DATE numeric(14, 0)   	  NOT NULL,
  -	    IS_INHERITABLE  bit                   NOT NULL, 
  -	    IS_EXCLUSIVE    bit                   NOT NULL,
  -	    OWNER           nvarchar(255),
  -	    CONSTRAINT      FK_LOCKS_LOCK_ID
  -	       FOREIGN KEY (LOCK_ID)
  -	       REFERENCES   URI (URI_ID)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.BRANCH ( 
  -	    BRANCH_ID       id_type               IDENTITY  UNIQUE NOT NULL,
  -	    BRANCH_STRING   nvarchar(255)          UNIQUE NOT NULL,
  -	    UNIQUE NONCLUSTERED (BRANCH_ID)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.LABEL (
  -	    LABEL_ID        id_type               IDENTITY  UNIQUE NOT NULL,
  -	    LABEL_STRING    nvarchar(255)          NOT NULL,
  -	    UNIQUE NONCLUSTERED (LABEL_ID)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.VERSION (
  -	    URI_ID          id_type               PRIMARY KEY,
  -	    IS_VERSIONED    bit                   NOT NULL,    
  -	    CONSTRAINT      FK_VERSION_URI_ID
  -	       FOREIGN KEY (URI_ID)
  -	       REFERENCES   URI (URI_ID)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.VERSION_HISTORY (
  -	    VERSION_ID      id_type               IDENTITY  UNIQUE NOT NULL,
  -	    URI_ID          id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   VERSION (URI_ID),
  -	    BRANCH_ID       id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   BRANCH (BRANCH_ID),
  -	    REVISION_NO     nVARCHAR(20)	       	  NOT NULL,
  -	    --UNIQUE CLUSTERED (URI_ID, BRANCH_ID, REVISION_NO)
  -	)
  -	GO
  -	CREATE INDEX XVERSION_HISTORY1 
  -		ON VERSION_HISTORY(URI_ID, BRANCH_ID, REVISION_NO) 
  -	GO
  -	
  -	CREATE TABLE dbo.VERSION_PREDS (
  -	    VERSION_ID         id_type            NOT NULL  FOREIGN KEY 
  -	        REFERENCES  VERSION_HISTORY (VERSION_ID),
  -	    PREDECESSOR_ID     id_type            NOT NULL  FOREIGN KEY
  -	        REFERENCES  VERSION_HISTORY (VERSION_ID),
  -	    UNIQUE CLUSTERED (VERSION_ID, PREDECESSOR_ID)
  -	)
  -	GO
  -	CREATE INDEX XVERSION_PREDS1 
  -		ON VERSION_PREDS(VERSION_ID, PREDECESSOR_ID) 
  -	GO
  -	
  -	CREATE TABLE dbo.VERSION_LABELS (
  -	    VERSION_ID         id_type            NOT NULL  FOREIGN KEY
  -	        REFERENCES  VERSION_HISTORY (VERSION_ID),
  -	    LABEL_ID           id_type            NOT NULL  FOREIGN KEY
  -	        REFERENCES  LABEL (LABEL_ID), 
  -	    UNIQUE CLUSTERED (VERSION_ID, LABEL_ID)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.VERSION_CONTENT (
  -	    VERSION_ID         id_type            PRIMARY KEY,
  -	    CONTENT            image              NOT NULL,
  -	    CONSTRAINT FK_VC_VERSION_ID 
  -	        FOREIGN KEY (VERSION_ID)
  -	        REFERENCES  VERSION_HISTORY (VERSION_ID),
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.PROPERTIES (
  -	    VERSION_ID         id_type            NOT NULL  FOREIGN KEY
  -	        REFERENCES  VERSION_HISTORY (VERSION_ID),    
  -	    PROPERTY_NAMESPACE nvarchar(50)        NOT NULL, 
  -	    PROPERTY_NAME      nvarchar(50)        NOT NULL,        
  -	    PROPERTY_VALUE     ntext		       NOT NULL,
  -	    PROPERTY_TYPE      nvarchar(50)        NOT NULL, 
  -	    IS_PROTECTED       bit                NOT NULL,
  -	    UNIQUE CLUSTERED (VERSION_ID, PROPERTY_NAMESPACE, PROPERTY_NAME)
  -	)
  -	GO
  -	
  -	CREATE TABLE dbo.PERMISSIONS (
  -	    OBJECT_ID       id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   URI (URI_ID),
  -	    SUBJECT_ID      id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   URI (URI_ID),
  -	    ACTION_ID       id_type               NOT NULL  FOREIGN KEY
  -	       REFERENCES   URI (URI_ID),
  -	    VERSION_NO      nVARCHAR(20)           NULL,
  -	    IS_INHERITABLE  bit                   NOT NULL,
  -	    IS_NEGATIVE     bit                   NOT NULL,
  -	    -- Both order and sequence would be more suitable, but can not be used
  -	    SUCCESSION      int                   NOT NULL,
  -	    UNIQUE CLUSTERED (OBJECT_ID, SUBJECT_ID, ACTION_ID),
  -	    UNIQUE (OBJECT_ID, SUCCESSION)
  -	)
  -	GO
  \ No newline at end of file
  +/**********************************************************************/
  +/******    DROP SLIDE TABLES                                     ******/
  +/**********************************************************************/
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[OBJECT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[OBJECT]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BINDING]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[BINDING]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PARENT_BINDING]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[PARENT_BINDING]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[CHILDREN]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[CHILDREN]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LINKS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[LINKS]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LOCKS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[LOCKS]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_CONTENT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[VERSION_CONTENT]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PROPERTIES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[PROPERTIES]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[PERMISSIONS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[PERMISSIONS]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_PREDS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[VERSION_PREDS]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_LABELS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[VERSION_LABELS]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION_HISTORY]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[VERSION_HISTORY]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[VERSION]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[VERSION]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BRANCH]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[BRANCH]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[LABEL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[LABEL]
  +GO
  +
  +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[URI]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
  +DROP TABLE [dbo].[URI]
  +GO
  +
  +/**********************************************************************/
  +/******    DROP EXISTING USER DEFINED DATA TYPES                 ******/
  +/**********************************************************************/
  +
  +sp_droptype id_type
  +GO
  +
  +sp_droptype uri_str_type
  +GO
  +
  +sp_droptype revision_no_type
  +GO
  +
  +sp_droptype hash_type
  +GO
  +
  +sp_droptype literal_str_type
  +GO
  +
  +sp_droptype value_str_type
  +GO
  +
  +
  +/**********************************************************************/
  +/******    ADD USER DEFINED DATA TYPES                           ******/
  +/**********************************************************************/
  +
  +sp_addtype id_type,           bigint
  +GO
  +
  +sp_addtype uri_str_type,     "nvarchar(800)"
  +GO
  +
  +sp_addtype revision_no_type, "nvarchar(20)"
  +GO
  +
  +sp_addtype hash_type,         bigint
  +GO
  +
  +sp_addtype literal_str_type, "nvarchar(3000)"
  +GO
  +
  +sp_addtype value_str_type,   "nvarchar(255)"
  +GO
  +
  +/**********************************************************************/
  +/******    CREATE SLIDE TABLES                                   ******/
  +/**********************************************************************/
  +
  +CREATE TABLE dbo.URI (
  +    URI_ID          id_type               IDENTITY  UNIQUE  NOT NULL,
  +    URI_STRING      uri_str_type          UNIQUE  NOT NULL,
  + --   UNIQUE NONCLUSTERED (URI_ID)
  +)
  +GO
  +
  +CREATE INDEX XUID
  +	ON URI(URI_ID) 
  +GO
  +
  +CREATE INDEX XUSTRING
  +	ON URI(URI_STRING) 
  +GO
  +
  +CREATE TABLE dbo.OBJECT (
  +    URI_ID          id_type               PRIMARY KEY,
  +    CLASS_NAME      nvarchar(255)          NOT NULL,
  +    CONSTRAINT      FK_OBJECT_URI_ID
  +       FOREIGN KEY (URI_ID)
  +       REFERENCES   URI (URI_ID)
  +)
  +GO    
  +
  +CREATE TABLE dbo.BINDING (
  +    URI_ID          id_type               NOT NULL
  +        REFERENCES  URI (URI_ID),
  +    NAME            uri_str_type          NOT NULL,
  +    CHILD_UURI_ID    id_type              NOT NULL
  +        REFERENCES  URI (URI_ID),
  +    UNIQUE CLUSTERED (URI_ID, NAME, CHILD_UURI_ID)
  +)
  +GO
  +
  +CREATE TABLE dbo.PARENT_BINDING (
  +    URI_ID          id_type               NOT NULL
  +        REFERENCES  URI (URI_ID),
  +    NAME            uri_str_type          NOT NULL,
  +    PARENT_UURI_ID    id_type             NOT NULL
  +        REFERENCES  URI (URI_ID),
  +    UNIQUE CLUSTERED (URI_ID, NAME, PARENT_UURI_ID)
  +) 
  +GO
  +
  +CREATE TABLE dbo.LINKS (
  +    URI_ID          id_type               NOT NULL  FOREIGN KEY
  +        REFERENCES  URI (URI_ID),
  +    LINK_TO_ID      id_type               NOT NULL  FOREIGN KEY
  +        REFERENCES  URI (URI_ID),
  +    --UNIQUE CLUSTERED (URI_ID, LINK_TO_ID)
  +)
  +GO
  +
  +CREATE INDEX XURI_ID
  +	ON LINKS(URI_ID) 
  +GO
  +
  +
  +CREATE INDEX XLINK_TO_ID
  +	ON LINKS(LINK_TO_ID) 
  +GO
  +
  +CREATE TABLE dbo.LOCKS (
  +    LOCK_ID         id_type               PRIMARY KEY,
  +    OBJECT_ID       id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   URI (URI_ID),
  +    SUBJECT_ID      id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   URI (URI_ID),
  +    TYPE_ID         id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   URI (URI_ID),
  +    EXPIRATION_DATE numeric(14, 0)   	  NOT NULL,
  +    IS_INHERITABLE  bit                   NOT NULL, 
  +    IS_EXCLUSIVE    bit                   NOT NULL,
  +    OWNER           nvarchar(255),
  +    CONSTRAINT      FK_LOCKS_LOCK_ID
  +       FOREIGN KEY (LOCK_ID)
  +       REFERENCES   URI (URI_ID)
  +)
  +GO
  +
  +CREATE TABLE dbo.BRANCH ( 
  +    BRANCH_ID       id_type               IDENTITY  UNIQUE NOT NULL,
  +    BRANCH_STRING   nvarchar(255)          UNIQUE NOT NULL,
  +    UNIQUE NONCLUSTERED (BRANCH_ID)
  +)
  +GO
  +
  +CREATE TABLE dbo.LABEL (
  +    LABEL_ID        id_type               IDENTITY  UNIQUE NOT NULL,
  +    LABEL_STRING    nvarchar(255)          NOT NULL,
  +    UNIQUE NONCLUSTERED (LABEL_ID)
  +)
  +GO
  +
  +CREATE TABLE dbo.VERSION (
  +    URI_ID          id_type               PRIMARY KEY,
  +    IS_VERSIONED    bit                   NOT NULL,    
  +    CONSTRAINT      FK_VERSION_URI_ID
  +       FOREIGN KEY (URI_ID)
  +       REFERENCES   URI (URI_ID)
  +)
  +GO
  +
  +CREATE TABLE dbo.VERSION_HISTORY (
  +    VERSION_ID      id_type               IDENTITY  UNIQUE NOT NULL,
  +    URI_ID          id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   VERSION (URI_ID),
  +    BRANCH_ID       id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   BRANCH (BRANCH_ID),
  +    REVISION_NO     nVARCHAR(20)	       	  NOT NULL,
  +    --UNIQUE CLUSTERED (URI_ID, BRANCH_ID, REVISION_NO)
  +)
  +GO
  +CREATE INDEX XVERSION_HISTORY1 
  +	ON VERSION_HISTORY(URI_ID, BRANCH_ID, REVISION_NO) 
  +GO
  +
  +CREATE TABLE dbo.VERSION_PREDS (
  +    VERSION_ID         id_type            NOT NULL  FOREIGN KEY 
  +        REFERENCES  VERSION_HISTORY (VERSION_ID),
  +    PREDECESSOR_ID     id_type            NOT NULL  FOREIGN KEY
  +        REFERENCES  VERSION_HISTORY (VERSION_ID),
  +    UNIQUE CLUSTERED (VERSION_ID, PREDECESSOR_ID)
  +)
  +GO
  +CREATE INDEX XVERSION_PREDS1 
  +	ON VERSION_PREDS(VERSION_ID, PREDECESSOR_ID) 
  +GO
  +
  +CREATE TABLE dbo.VERSION_LABELS (
  +    VERSION_ID         id_type            NOT NULL  FOREIGN KEY
  +        REFERENCES  VERSION_HISTORY (VERSION_ID),
  +    LABEL_ID           id_type            NOT NULL  FOREIGN KEY
  +        REFERENCES  LABEL (LABEL_ID), 
  +    UNIQUE CLUSTERED (VERSION_ID, LABEL_ID)
  +)
  +GO
  +
  +CREATE TABLE dbo.VERSION_CONTENT (
  +    VERSION_ID         id_type            PRIMARY KEY,
  +    CONTENT            image              NOT NULL,
  +    CONSTRAINT FK_VC_VERSION_ID 
  +        FOREIGN KEY (VERSION_ID)
  +        REFERENCES  VERSION_HISTORY (VERSION_ID),
  +)
  +GO
  +
  +CREATE TABLE dbo.PROPERTIES (
  +    VERSION_ID         id_type            NOT NULL  FOREIGN KEY
  +        REFERENCES  VERSION_HISTORY (VERSION_ID),    
  +    PROPERTY_NAMESPACE nvarchar(50)        NOT NULL, 
  +    PROPERTY_NAME      nvarchar(50)        NOT NULL,        
  +    PROPERTY_VALUE     ntext		       NOT NULL,
  +    PROPERTY_TYPE      nvarchar(50)        NOT NULL, 
  +    IS_PROTECTED       bit                NOT NULL,
  +    UNIQUE CLUSTERED (VERSION_ID, PROPERTY_NAMESPACE, PROPERTY_NAME)
  +)
  +GO
  +
  +CREATE TABLE dbo.PERMISSIONS (
  +    OBJECT_ID       id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   URI (URI_ID),
  +    SUBJECT_ID      id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   URI (URI_ID),
  +    ACTION_ID       id_type               NOT NULL  FOREIGN KEY
  +       REFERENCES   URI (URI_ID),
  +    VERSION_NO      nVARCHAR(20)           NULL,
  +    IS_INHERITABLE  bit                   NOT NULL,
  +    IS_NEGATIVE     bit                   NOT NULL,
  +    -- Both order and sequence would be more suitable, but can not be used
  +    SUCCESSION      int                   NOT NULL,
  +    UNIQUE CLUSTERED (OBJECT_ID, SUBJECT_ID, ACTION_ID),
  +    UNIQUE (OBJECT_ID, SUCCESSION)
  +)
  +GO
  \ No newline at end of file
  
  
  
  1.7       +15 -10    jakarta-slide/webdavclient/clientlib/src/java/org/apache/util/XMLPrinter.java
  
  Index: XMLPrinter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/util/XMLPrinter.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XMLPrinter.java	24 Jun 2004 11:23:56 -0000	1.6
  +++ XMLPrinter.java	24 Jun 2004 13:18:53 -0000	1.7
  @@ -38,6 +38,8 @@
       // -------------------------------------------------------------- Constants
       
       
  +    
  +    
       /**
        * Opening tag.
        */
  @@ -168,8 +170,7 @@
       public void writeElement(String namespace, String name, int type) {
           writeElement(namespace, null, name, type);
       }
  -    
  -    
  +   
       /**
        * Write an element.
        * 
  @@ -180,6 +181,10 @@
        */
       public void writeElement(String namespace, String namespaceInfo, 
                                String name, int type) {
  +                                 
  +                                 
  +                                 
  +                                 
           if ((namespace != null) && (namespace.length() > 0)) {
               switch (type) {
               case OPENING:
  @@ -192,7 +197,7 @@
                   }
                   break;
               case CLOSING:
  -                buffer.append("</" + namespace + ":" + name + ">");
  +               buffer.append("</" + namespace + ":" + name + ">");
                   break;
               case NO_CONTENT:
               default:
  @@ -209,10 +214,10 @@
               switch (type) {
               case OPENING:
                   if ((namespaceInfo != null) && (namespaceInfo.length()>0)) {
  -                    buffer.append("<" + name + " xmlns=\"" + namespaceInfo 
  +                    buffer.append("<op3" + name + " xmlns=\"" + namespaceInfo 
                                     + "\">");
                   } else {
  -                    buffer.append("<" + name + ">");
  +                    buffer.append("<op4" + name + ">");
                   }
                   break;
               case CLOSING:
  @@ -221,10 +226,10 @@
               case NO_CONTENT:
               default:
                   if ((namespaceInfo != null) && (namespaceInfo.length()>0)) {
  -                    buffer.append("<" + name + " xmlns=\"" + namespaceInfo 
  +                    buffer.append("<nc3" + name + " xmlns=\"" + namespaceInfo 
                                     + "\"/>");
                   } else {
  -                    buffer.append("<" + name + "/>");
  +                    buffer.append("<nc4" + name + ">");
                   }
                   break;
               }
  
  
  
  1.13      +5 -7      jakarta-slide/src/share/org/apache/slide/common/SlideTokenWrapper.java
  
  Index: SlideTokenWrapper.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/common/SlideTokenWrapper.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- SlideTokenWrapper.java	24 Jun 2004 12:10:00 -0000	1.12
  +++ SlideTokenWrapper.java	24 Jun 2004 13:18:53 -0000	1.13
  @@ -48,12 +48,10 @@
       /**
        * Constructor.
        * @param token The token to wrap.
  -     * @param forceStoreEnlistment Is store enlistement required?
        */
  -    public SlideTokenWrapper(SlideToken token, boolean forceStoreEnlistment) {
  +    public SlideTokenWrapper(SlideToken token) {
           this.wrappedToken = token;
  -        // FIXME
  -        this.forceStoreEnlistment = true;// forceStoreEnlistment;
  +        this.forceStoreEnlistment = token.isForceStoreEnlistment();
           this.forceSecurity = token.isForceSecurity();
           this.forceLock = token.isForceLock();
           this.isExternalTransaction = token.isExternalTransaction();
  
  
  
  1.63      +7 -5      jakarta-slide/src/share/org/apache/slide/common/Namespace.java
  
  Index: Namespace.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/common/Namespace.java,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- Namespace.java	4 May 2004 12:06:27 -0000	1.62
  +++ Namespace.java	24 Jun 2004 13:18:53 -0000	1.63
  @@ -683,7 +683,9 @@
           // if a different forceEnlistment value want to be used
           // wrap the used token to reflect the different value
           if (token != null && token.isForceStoreEnlistment() != forcedEnlistment) {
  -            result.setToken(new SlideTokenWrapper(token, forcedEnlistment));
  +            SlideToken wToken = new SlideTokenWrapper(token);
  +            wToken.setForceStoreEnlistment(forcedEnlistment);
  +            result.setToken(wToken);
           }
           
           return result;
  
  
  
  1.40      +6 -5      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.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- MacroImpl.java	24 Feb 2004 16:47:08 -0000	1.39
  +++ MacroImpl.java	24 Jun 2004 13:18:53 -0000	1.40
  @@ -239,7 +239,8 @@
        */
       private void writeLock(SlideToken token, String uri, boolean recursive) throws SlideException {
           if (!token.isForceStoreEnlistment()) {
  -            token = new SlideTokenWrapper(token, true);
  +            token = new SlideTokenWrapper(token);
  +            token.setForceStoreEnlistment(true);
           }
           ObjectNode onode = structureHelper.retrieve(token, uri);
           if (onode != null && recursive) {
  
  
  
  1.59      +6 -6      jakarta-slide/src/webdav/server/org/apache/slide/webdav/WebdavServlet.java
  
  Index: WebdavServlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/WebdavServlet.java,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- WebdavServlet.java	23 Jun 2004 09:57:14 -0000	1.58
  +++ WebdavServlet.java	24 Jun 2004 13:18:53 -0000	1.59
  @@ -182,8 +182,8 @@
       }
       
       private boolean isCollection(HttpServletRequest req) {
  -        SlideToken slideToken = new SlideTokenWrapper(WebdavUtils.getSlideToken(req), false);
  -        // FIXME
  +        SlideToken slideToken = new SlideTokenWrapper(WebdavUtils.getSlideToken(req));
  +        // necessary as no transaction has been started, yet
           slideToken.setForceStoreEnlistment(false);
           slideToken.setForceSecurity(false);
           slideToken.setForceLock(false);
  
  
  
  1.49      +5 -12     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.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- SecurityImpl.java	5 Jun 2004 12:20:20 -0000	1.48
  +++ SecurityImpl.java	24 Jun 2004 13:18:53 -0000	1.49
  @@ -392,9 +392,6 @@
           if (!token.isForceSecurity()) {
               return;
           }
  -        else if (token.isForceStoreEnlistment()) {
  -            token = new SlideTokenWrapper(token, false);  // read only access
  -        }
           
           try {
               if (Configuration.useIntegratedSecurity()) {
  @@ -811,10 +808,6 @@
           throws ServiceAccessException, ObjectNotFoundException {
           
           List result = new ArrayList();
  -        if (token.isForceStoreEnlistment()) {
  -            // get read-only token
  -            token = new SlideTokenWrapper(token, false);
  -        }
           
           Uri uri;
           switch (aclInheritanceType) {
  @@ -832,7 +825,7 @@
                   uri = namespace.getUri(token, object.getUri());
                   Enumeration enum = uri.getScopes();
                   while (enum.hasMoreElements()) {
  -                    Uri element = namespace.getUri(token, (String)enum.nextElement(), false);
  +                    Uri element = namespace.getUri(token, (String)enum.nextElement());
                       ObjectNode objectNode = element.getStore().retrieveObject(element);
                       result.add(objectNode);
                   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org