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>