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 pn...@apache.org on 2002/05/14 13:35:38 UTC

cvs commit: jakarta-slide/src/share/org/apache/slide/content ContentImpl.java

pnever      02/05/14 04:35:38

  Modified:    src/share/org/apache/slide/content ContentImpl.java
  Log:
  Made use of the uriRedirector
  
  Revision  Changes    Path
  1.35      +68 -10    jakarta-slide/src/share/org/apache/slide/content/ContentImpl.java
  
  Index: ContentImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/ContentImpl.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- ContentImpl.java	25 Apr 2002 21:12:25 -0000	1.34
  +++ ContentImpl.java	14 May 2002 11:35:38 -0000	1.35
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/ContentImpl.java,v 1.34 2002/04/25 21:12:25 jericho Exp $
  - * $Revision: 1.34 $
  - * $Date: 2002/04/25 21:12:25 $
  + * $Header: /home/cvs/jakarta-slide/src/share/org/apache/slide/content/ContentImpl.java,v 1.35 2002/05/14 11:35:38 pnever Exp $
  + * $Revision: 1.35 $
  + * $Date: 2002/05/14 11:35:38 $
    *
    * ====================================================================
    *
  @@ -67,10 +67,13 @@
   import java.util.Date;
   import java.util.Vector;
   import java.util.Hashtable;
  +import java.lang.reflect.Method;
  +
   import org.apache.slide.common.*;
   import org.apache.slide.structure.*;
   import org.apache.slide.lock.*;
   import org.apache.slide.security.*;
  +import org.apache.slide.util.*;
   import org.apache.slide.authenticate.CredentialsToken;
   
   /**
  @@ -79,8 +82,8 @@
    * @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
    * @author <a href="mailto:cmlenz@apache.org">Christopher Lenz</a>
    * @author Jean-Philippe Courson
  - * @version $Revision: 1.34 $
  - * @version $Revision: 1.34 $
  + * @version $Revision: 1.35 $
  + * @version $Revision: 1.35 $
    */
   public final class ContentImpl implements Content {
       
  @@ -94,6 +97,7 @@
       protected static final int PRE_REMOVE = 3;
       protected static final int POST_REMOVE = 4;
       
  +    protected static Class uriRedirectorClass = Configuration.uriRedirectorClass();
       
       // ----------------------------------------------------------- Constructors
       
  @@ -160,11 +164,13 @@
        * @param strUri Uri
        * @return NodeRevisionDescriptors
        */
  -    public NodeRevisionDescriptors retrieve(SlideToken token,
  -                                            String strUri)
  +    public NodeRevisionDescriptors retrieve(SlideToken token, String strUri)
           throws ObjectNotFoundException, AccessDeniedException,
  -        LinkedObjectNotFoundException, ServiceAccessException,
  -        ObjectLockedException {
  +    LinkedObjectNotFoundException, ServiceAccessException, ObjectLockedException {
  +        
  +        String originalUri = strUri;
  +        strUri = redirectUri( Domain.accessNamespace(null, namespace.getName()), originalUri ); // security token null - is ignored anyway
  +        
           ObjectNode associatedObject = 
               structureHelper.retrieve(token, strUri, false);
           
  @@ -188,6 +194,8 @@
               objectUri.getStore()
                   .createRevisionDescriptors(objectUri, revisionDescriptors);
           }
  +        
  +        revisionDescriptors.setOriginalUri( originalUri );
           return revisionDescriptors;
       }
       
  @@ -283,13 +291,24 @@
           LinkedObjectNotFoundException, ServiceAccessException,
           RevisionDescriptorNotFoundException, ObjectLockedException {
           
  +        NodeRevisionDescriptor result;
           Uri objectUri = namespace.getUri(token, revisionDescriptors.getUri());
  +        NodeRevisionNumber latestNrn = redirectLatestRevisionNumber(
  +            Domain.accessNamespace(null, namespace.getName()), revisionDescriptors.getOriginalUri() );
           
           NodeRevisionDescriptors realRevisionDescriptors = objectUri.getStore()
               .retrieveRevisionDescriptors(objectUri);
           
  -        return retrieve(token, revisionDescriptors,
  +        if( latestNrn == null ) {
  +            result = retrieve( token, revisionDescriptors,
                           realRevisionDescriptors.getLatestRevision());
  +        }
  +        else {
  +            result = retrieve( token, revisionDescriptors,
  +                               latestNrn );
  +        }
  +        
  +        return result;
           
       }
       
  @@ -1320,6 +1339,45 @@
           }
       }
       
  +    /**
  +     *
  +     */
  +    protected String redirectUri( NamespaceAccessToken nsaToken, String uri ) {
  +        String result = uri;
  +        
  +        if( uriRedirectorClass != null ) {
  +            try {
  +                Method ru = uriRedirectorClass.getMethod(
  +                    "redirectUri", new Class[]{NamespaceAccessToken.class, String.class} );
  +                result = (String)ru.invoke( null, new Object[]{nsaToken, uri} ); // obj=null since method is static
  +            }
  +            catch( Exception x ) {
  +                Domain.warn( "Redirecting of URI "+uri+" failed: "+x.getMessage() );
  +            }
  +        }
  +        
  +        return result;
  +    }
  +    
  +    /**
  +     *
  +     */
  +    protected NodeRevisionNumber redirectLatestRevisionNumber( NamespaceAccessToken nsaToken, String uri ) {
  +        NodeRevisionNumber result = null;
  +        
  +        if( uriRedirectorClass != null ) {
  +            try {
  +                Method ru = uriRedirectorClass.getMethod(
  +                    "redirectLatestRevisionNumber", new Class[]{NamespaceAccessToken.class, String.class} );
  +                result = (NodeRevisionNumber)ru.invoke( null, new Object[]{nsaToken, uri} ); // obj=null since method is static
  +            }
  +            catch( Exception x ) {
  +                Domain.warn( "Redirecting of latest revision number for "+uri+" failed: "+x.getMessage() );
  +            }
  +        }
  +        
  +        return result;
  +    }
       
   }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>