lenya/src/java/org/apache/lenya/cms/publication PageEnvelope.java,1.9,1.10
Christian Egli <[email protected]>
| Newsgroups | gmane.comp.cms.wyona.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /repository/lenya/src/java/org/apache/lenya/cms/publication
In directory erbium:/tmp/cvs-serv26449/src/java/org/apache/lenya/cms/publication
Modified Files:
PageEnvelope.java
Log Message:
Added code to return the document-id. The algorithm to calculate the
document-id is based on an assumption which doesn't necessarily hold
true under all circumstances. That's what the uriparametrizer was
meant to solve. This code should probably be used here. It just doen's
feel right to invoke another cocoon: request with every invocation of
PageEnvelope (and util.xsl).
Index: PageEnvelope.java
===================================================================
RCS file: /repository/lenya/src/java/org/apache/lenya/cms/publication/PageEnvelope.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** PageEnvelope.java 7 May 2003 17:18:59 -0000 1.9
--- PageEnvelope.java 8 May 2003 07:35:30 -0000 1.10
***************
*** 9,12 ****
--- 9,16 ----
import java.io.File;
import java.io.IOException;
+ import java.util.Arrays;
+ import java.util.List;
+ import java.util.Iterator;
+
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.Request;
***************
*** 28,37 ****
public static final String CONTEXT = "context-prefix";
public static final String AREA = "area";
public static final int AREA_POS = 3;
!
private Publication publication;
private RCEnvironment rcEnvironment;
private String context;
private String area;
/** Creates a new instance of PageEnvelope */
--- 32,45 ----
public static final String CONTEXT = "context-prefix";
public static final String AREA = "area";
+ public static final String DOCUMENT_ID = "document-id";
+
public static final int AREA_POS = 3;
! public static final int DOCUMENT_ID_POS = 4;
!
private Publication publication;
private RCEnvironment rcEnvironment;
private String context;
private String area;
+ private String documentId;
/** Creates a new instance of PageEnvelope */
***************
*** 64,68 ****
log.debug("requestURI: " + requestURI);
directories = requestURI.split("/");
! area = directories[AREA_POS];;
publication = new Publication(publicationId, path);
--- 72,97 ----
log.debug("requestURI: " + requestURI);
directories = requestURI.split("/");
! area = directories[AREA_POS];
!
! // the computation of the document id is based on the
! // assumption that and URI matches of the following pattern:
! // http:/<context-prefix>/<publication-id>/<area>/<document-id>.*
! // where document-id can be foo/bar/baz
! documentId = "";
! List documentIds = Arrays.asList(directories).subList(DOCUMENT_ID_POS, directories.length);
! // remove the suffix from the last element
! log.debug("documentIds: " + documentIds);
! String lastPartOfDocumentId = (String)documentIds.get(documentIds.size()-1);
! log.debug("lastPartOfDocumentId: " + lastPartOfDocumentId);
! int startOfSuffix = lastPartOfDocumentId.indexOf('.');
! log.debug("startOfSuffix: " + startOfSuffix);
! if (startOfSuffix >= 0) {
! documentIds.set(documentIds.size()-1, lastPartOfDocumentId.substring(0, startOfSuffix));
! log.debug("w/oSuffix: " + lastPartOfDocumentId.substring(0, startOfSuffix));
! }
! log.debug("documentIds: " + documentIds);
! for (Iterator i = documentIds.iterator(); i.hasNext();) {
! documentId += "/" + i.next();
! }
publication = new Publication(publicationId, path);
***************
*** 100,102 ****
--- 129,137 ----
}
+ /**
+ * Returns the document-id.
+ */
+ public String getDocumentId() {
+ return documentId;
+ }
}