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/05/05 14:07:30 UTC

cvs commit: jakarta-slide/src/share/org/apache/slide/store ExtendedStore.java

ozeigermann    2004/05/05 05:07:30

  Modified:    src/webdav/server/org/apache/slide/webdav/util
                        UriHandler.java
               src/share/org/apache/slide/store ExtendedStore.java
  Log:
  Reverted fix for bug #26913 in expectation of something cleaner
  
  Revision  Changes    Path
  1.30      +39 -49    jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/UriHandler.java
  
  Index: UriHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/UriHandler.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- UriHandler.java	1 Apr 2004 15:37:18 -0000	1.29
  +++ UriHandler.java	5 May 2004 12:07:30 -0000	1.30
  @@ -42,15 +42,13 @@
   import org.apache.slide.lock.ObjectLockedException;
   import org.apache.slide.security.AccessDeniedException;
   import org.apache.slide.event.VetoException;
  - 
  +
   
       /**
    * Helper class for the handling of URIs
        */
   public class UriHandler implements DeltavConstants, AclConstants, DaslConstants {
           
  -    private final static Object HISTORY_LOCK = new Object();
  -        
       /**
        * Factory method.
        */
  @@ -107,54 +105,46 @@
           Content content = nsaToken.getContentHelper();
           String hpath = hpathHandler.toString();
           
  -        // XXX guarantees that reading and writing of history counting property
  -        // is atomic. This is necessary as part of the fix to the problem described in
  -        // bug #26913. While the history counter is incremented no other tx can be allowed
  -        // to access the counter, that's why a write lock that is valid until commit is needed.
  -        // As this requires locking going through to the store and must thus tunnel caching
  -        // the other part of the fix is a HACK in ExtendedStore
  -        synchronized (HISTORY_LOCK) {
  -            NodeRevisionDescriptors hpathNrds =
  -                content.retrieve( sToken, hpath );
  -            
  -            NodeRevisionDescriptor hpathNrd =
  -                content.retrieve( sToken, hpathNrds );
  -            
  -            NodeProperty nextHnProp = hpathNrd.getProperty(I_NEXT_HISTORY_NAME,
  -                                                           NamespaceCache.SLIDE_URI);
  -            if (nextHnProp == null) {
  -                // convert to slide namespace if this property is still
  -                // in DAV: namespace
  -                nextHnProp = hpathNrd.getProperty( I_NEXT_HISTORY_NAME );
  -                if (nextHnProp != null) {
  -                    hpathNrd.removeProperty(nextHnProp);
  -                    nextHnProp = new NodeProperty(I_NEXT_HISTORY_NAME,
  -                                                  nextHnProp.getValue(),
  -                                                  NamespaceCache.SLIDE_URI);
  -                    nextHnProp.setKind( NodeProperty.Kind.PROTECTED );
  -                    hpathNrd.setProperty( nextHnProp );
  -                }
  -            }
  -            if( nextHnProp == null || nextHnProp.getValue() == null ) {
  -                nextHnProp =
  -                    new NodeProperty(I_NEXT_HISTORY_NAME,
  -                                     I_INITIAL_HISTORY_NAME,
  -                                     NamespaceCache.SLIDE_URI);
  +        NodeRevisionDescriptors hpathNrds =
  +            content.retrieve( sToken, hpath );
  +        
  +        NodeRevisionDescriptor hpathNrd =
  +            content.retrieve( sToken, hpathNrds );
  +        
  +        NodeProperty nextHnProp = hpathNrd.getProperty(I_NEXT_HISTORY_NAME,
  +                                                       NamespaceCache.SLIDE_URI);
  +        if (nextHnProp == null) {
  +            // convert to slide namespace if this property is still
  +            // in DAV: namespace
  +            nextHnProp = hpathNrd.getProperty( I_NEXT_HISTORY_NAME );
  +            if (nextHnProp != null) {
  +                hpathNrd.removeProperty(nextHnProp);
  +                nextHnProp = new NodeProperty(I_NEXT_HISTORY_NAME,
  +                                              nextHnProp.getValue(),
  +                                              NamespaceCache.SLIDE_URI);
                   nextHnProp.setKind( NodeProperty.Kind.PROTECTED );
                   hpathNrd.setProperty( nextHnProp );
               }
  -            
  -            String nextHnStr = (String)nextHnProp.getValue();
  -            result = new UriHandler( hpath+"/"+nextHnStr );
  -            
  -            long nextHnLong = Long.parseLong( nextHnStr );
  -            nextHnProp = new NodeProperty(I_NEXT_HISTORY_NAME,
  -                                          String.valueOf(nextHnLong + 1),
  -                                          NamespaceCache.SLIDE_URI );
  +        }
  +        if( nextHnProp == null || nextHnProp.getValue() == null ) {
  +            nextHnProp =
  +                new NodeProperty(I_NEXT_HISTORY_NAME,
  +                                 I_INITIAL_HISTORY_NAME,
  +                                 NamespaceCache.SLIDE_URI);
  +            nextHnProp.setKind( NodeProperty.Kind.PROTECTED );
               hpathNrd.setProperty( nextHnProp );
  -            
  -            content.store( sToken, hpath, hpathNrd, null ); //revisionContent = null
           }
  +        
  +        String nextHnStr = (String)nextHnProp.getValue();
  +        result = new UriHandler( hpath+"/"+nextHnStr );
  +        
  +        long nextHnLong = Long.parseLong( nextHnStr );
  +        nextHnProp = new NodeProperty(I_NEXT_HISTORY_NAME,
  +                                      String.valueOf(nextHnLong + 1),
  +                                      NamespaceCache.SLIDE_URI );
  +        hpathNrd.setProperty( nextHnProp );
  +        
  +        content.store( sToken, hpath, hpathNrd, null ); //revisionContent = null
                         
           return result;
       }
  
  
  
  1.9       +4 -12     jakarta-slide/src/share/org/apache/slide/store/ExtendedStore.java
  
  Index: ExtendedStore.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/store/ExtendedStore.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ExtendedStore.java	30 Mar 2004 13:55:45 -0000	1.8
  +++ ExtendedStore.java	5 May 2004 12:07:30 -0000	1.9
  @@ -346,7 +346,7 @@
   
       public NodeRevisionContent retrieveRevisionContent(Uri uri, NodeRevisionDescriptor revisionDescriptor)
           throws ServiceAccessException, RevisionNotFoundException {
  -        if (contentStore.cacheResults() && contentCache != null && !omitCachingBecauseOfEvilHistoryHack(uri)) {
  +        if (contentStore.cacheResults() && contentCache != null) {
               if (isForceStoreEnlistment(uri)) {
                   enlist(this);
               }
  @@ -447,7 +447,7 @@
       //
   
       public ObjectNode retrieveObject(Uri uri) throws ServiceAccessException, ObjectNotFoundException {
  -        if (nodeStore.cacheResults() && !omitCachingBecauseOfEvilHistoryHack(uri)) {
  +        if (nodeStore.cacheResults()) {
               if (isForceStoreEnlistment(uri)) {
                   enlist(this);
               }
  @@ -689,7 +689,7 @@
       
       public NodeRevisionDescriptors retrieveRevisionDescriptors(Uri uri)
           throws ServiceAccessException, RevisionDescriptorNotFoundException {
  -        if (revisionDescriptorsStore.cacheResults() && !omitCachingBecauseOfEvilHistoryHack(uri)) {
  +        if (revisionDescriptorsStore.cacheResults()) {
               if (isForceStoreEnlistment(uri)) {
                   enlist(this);
               }
  @@ -754,7 +754,7 @@
   
       public NodeRevisionDescriptor retrieveRevisionDescriptor(Uri uri, NodeRevisionNumber revisionNumber)
           throws ServiceAccessException, RevisionDescriptorNotFoundException {
  -        if (revisionDescriptorStore.cacheResults() && !omitCachingBecauseOfEvilHistoryHack(uri)) {
  +        if (revisionDescriptorStore.cacheResults()) {
               if (isForceStoreEnlistment(uri)) {
                   enlist(this);
               }
  @@ -988,14 +988,6 @@
           getLogger().log(re, LOG_CHANNEL, Logger.CRITICAL);
           setRollbackOnly();
           throw re;
  -    }
  -
  -    // XXX HACK checks if the requested uri is the history folder. In this
  -    // case caching must be disabled to pass any lock operations to the physical store. 
  -    // This is needed as part of the fix to the problem described in
  -    // bug #26913
  -    protected boolean omitCachingBecauseOfEvilHistoryHack(Uri uri) {
  -        return ("/history".equals(uri.toString()));
       }
   
       protected class TxCacheWrapper implements ObjectCache {
  
  
  

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