You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2006/07/27 22:41:30 UTC
svn commit: r426230 - in /lenya/trunk/src:
impl/java/org/apache/lenya/cms/publication/
java/org/apache/lenya/cms/publication/
java/org/apache/lenya/cms/publication/util/ java/org/apache/lenya/cms/site/
java/org/apache/lenya/cms/site/simple/ java/org/ap...
Author: andreas
Date: Thu Jul 27 13:41:28 2006
New Revision: 426230
URL: http://svn.apache.org/viewvc?rev=426230&view=rev
Log:
Introducing DocumentLocator, starting to decouple document ID from path (towards UUIDs)
Added:
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java
lenya/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java
- copied, changed from r426061, lenya/trunk/src/java/org/apache/lenya/cms/site/Node.java
Removed:
lenya/trunk/src/java/org/apache/lenya/cms/site/Node.java
Modified:
lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java
lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java
lenya/trunk/src/java/org/apache/lenya/cms/site/NodeFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java
lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java
lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java
lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java
lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java
Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java Thu Jul 27 13:41:28 2006
@@ -25,6 +25,7 @@
import org.apache.lenya.cms.repository.RepositoryException;
import org.apache.lenya.cms.repository.RepositoryItem;
import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.cms.site.SiteUtil;
/**
* A DocumentIdentityMap avoids the multiple instanciation of a document object.
@@ -59,20 +60,20 @@
* Returns a document.
* @param publication The publication.
* @param area The area.
- * @param documentId The document ID.
+ * @param uuid The document UUID.
* @param language The language.
* @return A document.
* @throws DocumentBuildException if an error occurs.
*/
- public Document get(Publication publication, String area, String documentId, String language)
+ public Document get(Publication publication, String area, String uuid, String language)
throws DocumentBuildException {
if (getLogger().isDebugEnabled())
getLogger().debug("DocumentIdentityMap::get() called on publication ["
- + publication.getId() + "], area [" + area + "], documentId [" + documentId
+ + publication.getId() + "], area [" + area + "], UUID [" + uuid
+ "], language [" + language + "]");
- String key = getKey(publication, area, documentId, language);
+ String key = getKey(publication, area, uuid, language);
if (getLogger().isDebugEnabled())
getLogger().debug("DocumentIdentityMap::get() got key [" + key
@@ -109,7 +110,7 @@
*/
public Document getLanguageVersion(Document document, String language)
throws DocumentBuildException {
- return get(document.getPublication(), document.getArea(), document.getId(), language);
+ return get(document.getPublication(), document.getArea(), document.getUUID(), language);
}
/**
@@ -120,45 +121,7 @@
* @throws DocumentBuildException if an error occurs.
*/
public Document getAreaVersion(Document document, String area) throws DocumentBuildException {
- return get(document.getPublication(), area, document.getId(), document.getLanguage());
- }
-
- /**
- * Returns the parent of a document.
- * @param document A document.
- * @return A document or <code>null</code> if the document has no parent.
- * @throws DocumentBuildException if an error occurs.
- */
- public Document getParent(Document document) throws DocumentBuildException {
- Document parent = null;
- int lastSlashIndex = document.getId().lastIndexOf("/");
- if (lastSlashIndex > 0) {
- String parentId = document.getId().substring(0, lastSlashIndex);
- parent = get(document.getPublication(),
- document.getArea(),
- parentId,
- document.getLanguage());
- }
- return parent;
- }
-
- /**
- * Returns the parent of a document.
- * @param document A document.
- * @param defaultDocumentId The document ID to use if the document has no parent.
- * @return A document.
- * @throws DocumentBuildException if an error occurs.
- */
- public Document getParent(Document document, String defaultDocumentId)
- throws DocumentBuildException {
- Document parent = getParent(document);
- if (parent == null) {
- parent = get(document.getPublication(),
- document.getArea(),
- defaultDocumentId,
- document.getLanguage());
- }
- return parent;
+ return get(document.getPublication(), area, document.getUUID(), document.getLanguage());
}
/**
@@ -241,12 +204,12 @@
* Builds a document key.
* @param publication The publication.
* @param area The area.
- * @param documentId The document ID.
+ * @param uuid The document UUID.
* @param language The language.
* @return A key.
*/
- public String getKey(Publication publication, String area, String documentId, String language) {
- return publication.getId() + ":" + area + ":" + documentId + ":" + language;
+ public String getKey(Publication publication, String area, String uuid, String language) {
+ return publication.getId() + ":" + area + ":" + uuid + ":" + language;
}
/**
@@ -257,12 +220,15 @@
public String getKey(String webappUrl) {
ServiceSelector selector = null;
DocumentBuilder builder = null;
- DocumentIdentifier identifier;
try {
Publication publication = PublicationUtil.getPublicationFromUrl(this.manager, webappUrl);
selector = (ServiceSelector) this.manager.lookup(DocumentBuilder.ROLE + "Selector");
builder = (DocumentBuilder) selector.select(publication.getDocumentBuilderHint());
- identifier = builder.getIdentitfier(webappUrl);
+ DocumentLocator locator = builder.getLocator(webappUrl);
+
+ String area = locator.getArea();
+ String uuid = SiteUtil.getUUID(this.manager, publication, area, locator.getPath());
+ return getKey(publication, area, uuid, locator.getLanguage());
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
@@ -273,10 +239,6 @@
this.manager.release(selector);
}
}
- return getKey(identifier.getPublication(),
- identifier.getArea(),
- identifier.getId(),
- identifier.getLanguage());
}
/**
@@ -290,7 +252,7 @@
String[] snippets = key.split(":");
String publicationId = snippets[0];
String area = snippets[1];
- String documentId = snippets[2];
+ String uuid = snippets[2];
String language = snippets[3];
ServiceSelector selector = null;
@@ -304,7 +266,7 @@
builder = (DocumentBuilder) selector.select(publication.getDocumentBuilderHint());
DocumentIdentifier identifier = new DocumentIdentifier(publication,
area,
- documentId,
+ uuid,
language);
document = buildDocument(this, identifier, builder);
} catch (Exception e) {
@@ -343,7 +305,7 @@
protected DocumentImpl createDocument(DocumentFactory map, DocumentIdentifier identifier,
DocumentBuilder builder) throws DocumentBuildException {
DocumentImpl document = new DocumentImpl(this.manager, map, identifier, getLogger());
- final String canonicalUrl = builder.buildCanonicalUrl(identifier);
+ final String canonicalUrl = builder.buildCanonicalUrl(document.getLocator());
final String prefix = "/" + identifier.getPublication().getId() + "/"
+ identifier.getArea();
final String canonicalDocumentUrl = canonicalUrl.substring(prefix.length());
@@ -354,11 +316,22 @@
public Document get(DocumentIdentifier identifier) throws DocumentBuildException {
return get(identifier.getPublication(),
identifier.getArea(),
- identifier.getId(),
+ identifier.getUUID(),
identifier.getLanguage());
}
public String getItemType() {
return Document.TRANSACTIONABLE_TYPE;
+ }
+
+ public Document get(DocumentLocator locator) throws DocumentBuildException {
+ try {
+ Publication pub = PublicationUtil.getPublication(this.manager,
+ locator.getPublicationId());
+ String uuid = SiteUtil.getUUID(this.manager, pub, locator.getArea(), locator.getPath());
+ return get(pub, locator.getArea(), uuid, locator.getLanguage());
+ } catch (PublicationException e) {
+ throw new DocumentBuildException(e);
+ }
}
}
Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java Thu Jul 27 13:41:28 2006
@@ -35,7 +35,9 @@
import org.apache.lenya.cms.publication.util.DocumentVisitor;
import org.apache.lenya.cms.repository.Node;
import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteManager;
+import org.apache.lenya.cms.site.SiteUtil;
/**
* A typical CMS document.
@@ -98,15 +100,15 @@
ContainerUtil.enableLogging(this, _logger);
if (getLogger().isDebugEnabled()) {
getLogger().debug("DefaultDocument() creating new instance with id ["
- + identifier.getId() + "], language [" + identifier.getLanguage() + "]");
+ + identifier.getUUID() + "], language [" + identifier.getLanguage() + "]");
}
this.manager = manager;
this.identifier = identifier;
- if (identifier.getId() == null) {
+ if (identifier.getUUID() == null) {
throw new IllegalArgumentException("The document ID must not be null!");
}
- if (!identifier.getId().startsWith("/")) {
+ if (!identifier.getUUID().startsWith("/")) {
throw new IllegalArgumentException("The document ID must start with a slash!");
}
@@ -114,7 +116,7 @@
if (getLogger().isDebugEnabled()) {
getLogger().debug("DefaultDocument() done building instance with _id ["
- + identifier.getId() + "], _language [" + identifier.getLanguage() + "]");
+ + identifier.getUUID() + "], _language [" + identifier.getLanguage() + "]");
}
}
@@ -154,7 +156,7 @@
* @see org.apache.lenya.cms.publication.Document#getId()
*/
public String getId() {
- return this.identifier.getId();
+ return this.identifier.getUUID();
}
/**
@@ -275,36 +277,8 @@
/**
* @see org.apache.lenya.cms.publication.Document#getUUID()
*/
- public String getUUID() throws DocumentException {
- String uuid = null;
- String hint = getPublication().getSiteManagerHint();
- if (hint == null) {
- getLogger().error("SiteManagerHint is null!");
- } else {
- SiteManager siteManager = null;
- ServiceSelector selector = null;
- try {
- selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
- siteManager = (SiteManager) selector.select(hint);
- uuid = siteManager.getUUID(this);
- if (uuid == null) {
- uuid = getCanonicalDocumentURL();
- getLogger().warn("No UUID found for document [" + this
- + "]. Use canonical document URL: " + uuid);
- }
- return uuid;
- } catch (Exception e) {
- throw new DocumentException(e);
- } finally {
- if (selector != null) {
- if (siteManager != null) {
- selector.release(siteManager);
- }
- this.manager.release(selector);
- }
- }
- }
- return uuid;
+ public String getUUID() {
+ return getIdentifier().getUUID();
}
private String defaultSourceExtension = "xml";
@@ -598,4 +572,21 @@
}
}
+ private DocumentLocator locator;
+
+ public DocumentLocator getLocator() {
+ if (this.locator == null) {
+ String path;
+ try {
+ path = SiteUtil.getPath(this.manager, this);
+ } catch (SiteException e) {
+ throw new RuntimeException(e);
+ }
+ this.locator = DocumentLocator.getLocator(getPublication().getId(),
+ getArea(),
+ path,
+ getLanguage());
+ }
+ return this.locator;
+ }
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java Thu Jul 27 13:41:28 2006
@@ -115,37 +115,44 @@
/**
* Builds the canonical document URL.
- * @param identifier The identifier.
+ * @param locator The document.
* @return A string.
*/
- protected String buildCanonicalDocumentUrl(DocumentIdentifier identifier) {
+ protected String buildCanonicalDocumentUrl(DocumentLocator locator) {
String languageSuffix = "";
- String language = identifier.getLanguage();
- if (!language.equals(identifier.getPublication().getDefaultLanguage())) {
+ String language = locator.getLanguage();
+
+ Publication pub;
+ try {
+ pub = PublicationUtil.getPublication(this.manager, locator.getPublicationId());
+ } catch (PublicationException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (!language.equals(pub.getDefaultLanguage())) {
languageSuffix = "_" + language;
}
- String url = identifier.getId() + languageSuffix + ".html";
+ String url = locator.getPath() + languageSuffix + ".html";
return url;
}
/**
- * @see org.apache.lenya.cms.publication.DocumentBuilder#buildCanonicalUrl(org.apache.lenya.cms.publication.DocumentIdentifier)
+ * @see org.apache.lenya.cms.publication.DocumentBuilder#buildCanonicalUrl(
+ * org.apache.lenya.cms.publication.DocumentLocator)
*/
- public String buildCanonicalUrl(DocumentIdentifier identifier) {
-
- String documentUrl = buildCanonicalDocumentUrl(identifier);
- String url = "/" + identifier.getPublication().getId() + "/" + identifier.getArea()
- + documentUrl;
+ public String buildCanonicalUrl(DocumentLocator doc) {
+ String documentUrl = buildCanonicalDocumentUrl(doc);
+ String url = "/" + doc.getPublicationId() + "/" + doc.getArea() + documentUrl;
return url;
}
/**
- * @see org.apache.lenya.cms.publication.DocumentBuilder#getIdentitfier(java.lang.String)
+ * @see org.apache.lenya.cms.publication.DocumentBuilder#getLocator( java.lang.String)
*/
- public DocumentIdentifier getIdentitfier(String webappUrl) throws DocumentBuildException {
+ public DocumentLocator getLocator(String webappUrl) throws DocumentBuildException {
if (!isDocument(webappUrl)) {
throw new DocumentBuildException("The webapp URL [" + webappUrl
@@ -173,18 +180,13 @@
language = publication.getDefaultLanguage();
}
- String documentId = documentURL;
+ String path = documentURL;
- if (!documentId.startsWith("/")) {
- throw new DocumentBuildException("Document ID [" + documentId
- + "] does not start with '/'!");
+ if (!path.startsWith("/")) {
+ throw new DocumentBuildException("Path [" + path + "] does not start with '/'!");
}
- DocumentIdentifier identifier = new DocumentIdentifier(publication,
- info.getArea(),
- documentId,
- language);
- return identifier;
+ return DocumentLocator.getLocator(publication.getId(), info.getArea(), path, language);
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java Thu Jul 27 13:41:28 2006
@@ -145,9 +145,8 @@
/**
* Returns the UUID.
* @return A string.
- * @throws DocumentException if an error occurs.
*/
- String getUUID() throws DocumentException;
+ String getUUID();
/**
* Check if a document with the given document-id, language and in the given
@@ -243,4 +242,9 @@
* @return The document identifier for this document.
*/
DocumentIdentifier getIdentifier();
+
+ /**
+ * @return The locator for this document.
+ */
+ DocumentLocator getLocator();
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentBuilder.java Thu Jul 27 13:41:28 2006
@@ -30,12 +30,13 @@
String ROLE = DocumentBuilder.class.getName();
/**
- * Returns a document identifier for a web application URL.
+ * Returns a document for a web application URL.
+ * @param factory The factory.
* @param webappUrl The web application URL.
* @return A document identifier.
* @throws DocumentBuildException if an error occurs.
*/
- DocumentIdentifier getIdentitfier(String webappUrl) throws DocumentBuildException;
+ DocumentLocator getLocator(String webappUrl) throws DocumentBuildException;
/**
* Checks if an URL corresponds to a CMS document.
@@ -47,10 +48,10 @@
/**
* Builds an URL corresponding to a CMS document.
- * @param identifier The document identifier.
+ * @param locator The locator.
* @return a String The corresponding URL.
*/
- String buildCanonicalUrl(DocumentIdentifier identifier);
+ String buildCanonicalUrl(DocumentLocator locator);
/**
* Checks if a document name is valid.
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java Thu Jul 27 13:41:28 2006
@@ -38,12 +38,12 @@
* Returns a document.
* @param publication The publication.
* @param area The area.
- * @param documentId The document ID.
+ * @param uuid The document ID.
* @param language The language.
* @return A document.
* @throws DocumentBuildException if an error occurs.
*/
- Document get(Publication publication, String area, String documentId, String language)
+ Document get(Publication publication, String area, String uuid, String language)
throws DocumentBuildException;
/**
@@ -73,41 +73,17 @@
Document getAreaVersion(Document document, String area) throws DocumentBuildException;
/**
- * Returns the parent of a document.
- * @param document A document.
- * @return A document or <code>null</code> if the document has no parent.
- * @throws DocumentBuildException if an error occurs.
- */
- Document getParent(Document document) throws DocumentBuildException;
-
- /**
- * Returns the parent of a document.
- * @param document A document.
- * @param defaultDocumentId The document ID to use if the document has no parent.
- * @return A document.
- * @throws DocumentBuildException if an error occurs.
- */
- Document getParent(Document document, String defaultDocumentId) throws DocumentBuildException;
-
- /**
* Builds a document for the default language.
* @param publication The publication.
* @param area The area.
- * @param documentId The document ID.
+ * @param uuid The document UUID.
* @return A document.
* @throws DocumentBuildException if an error occurs.
*/
- Document get(Publication publication, String area, String documentId)
+ Document get(Publication publication, String area, String uuid)
throws DocumentBuildException;
/**
- * Checks if a string represents a valid document ID.
- * @param id The string.
- * @return A boolean value.
- */
- boolean isValidDocumentId(String id);
-
- /**
* Checks if a webapp URL represents a document.
* @param webappUrl A web application URL.
* @return A boolean value.
@@ -119,5 +95,12 @@
* @return The session.
*/
Session getSession();
+
+ /**
+ * @param locator The locator.
+ * @return A document.
+ * @throws DocumentBuildException if an error occurs.
+ */
+ Document get(DocumentLocator locator) throws DocumentBuildException;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentifier.java Thu Jul 27 13:41:28 2006
@@ -23,35 +23,36 @@
private Publication publication;
private String area;
- private String id;
private String language;
-
+ private String uuid;
+
/**
* Ctor.
* @param publication The publication.
* @param area The area.
* @param id The document ID.
* @param language The language.
+ * @param uuid The UUID.
*/
- public DocumentIdentifier(Publication publication, String area, String id, String language) {
+ public DocumentIdentifier(Publication publication, String area, String uuid, String language) {
this.publication = publication;
this.area = area;
- this.id = id;
this.language = language;
+ this.uuid = uuid;
}
-
+
/**
- * @return The area.
+ * @return The UUID.
*/
- public String getArea() {
- return area;
+ public String getUUID() {
+ return this.uuid;
}
/**
- * @return The document ID.
+ * @return The area.
*/
- public String getId() {
- return id;
+ public String getArea() {
+ return area;
}
/**
@@ -67,19 +68,19 @@
public Publication getPublication() {
return publication;
}
-
+
public boolean equals(Object obj) {
return (obj instanceof DocumentIdentifier) && obj.hashCode() == hashCode();
}
-
+
public int hashCode() {
return getKey().hashCode();
}
-
+
protected String getKey() {
- return this.publication.getId() + ":" + this.area + ":" + this.id + ":" + this.language;
+ return this.publication.getId() + ":" + this.area + ":" + this.uuid + ":" + this.language;
}
-
+
public String toString() {
return getKey();
}
Added: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java?rev=426230&view=auto
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentLocator.java Thu Jul 27 13:41:28 2006
@@ -0,0 +1,105 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.lenya.cms.publication;
+
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.apache.lenya.cms.site.SiteNode;
+
+public class DocumentLocator {
+
+ private static Map locators = new WeakHashMap();
+
+ public static DocumentLocator getLocator(String pubId, String area, String path, String language) {
+ String key = DocumentLocator.getKey(pubId, area, path, language);
+ DocumentLocator locator = null;
+ if (locators.containsKey(key)) {
+ locator = (DocumentLocator) locators.get(key);
+ } else {
+ locator = new DocumentLocator(pubId, area, path, language);
+ locators.put(key, locator);
+ }
+ return locator;
+ }
+
+ protected static final String getKey(String pubId, String area, String path, String language) {
+ return pubId + ":" + area + ":" + path + ":" + language;
+ }
+
+ private String pubId;
+ private String area;
+ private String path;
+ private String language;
+
+ protected DocumentLocator(String pubId, String area, String path, String language) {
+ this.path = path;
+ this.pubId = pubId;
+ this.area = area;
+ this.language = language;
+ }
+
+ public String getArea() {
+ return area;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public String getPublicationId() {
+ return pubId;
+ }
+
+ public DocumentLocator getPathVersion(String path) {
+ return DocumentLocator.getLocator(getPublicationId(), getArea(), path, getLanguage());
+ }
+
+ public DocumentLocator getDescendant(String relativePath) {
+ return getPathVersion(getPath() + "/" + relativePath);
+ }
+
+ public DocumentLocator getChild(String step) {
+ if (step.indexOf("/") > -1) {
+ throw new IllegalArgumentException("The step [" + step + "] must not contain a slash!");
+ }
+ return getDescendant(step);
+ }
+
+ public DocumentLocator getParent() {
+ int lastSlashIndex = getPath().lastIndexOf("/");
+ if (lastSlashIndex > 0) {
+ String parentPath = getPath().substring(0, lastSlashIndex);
+ return getPathVersion(parentPath);
+ } else {
+ return null;
+ }
+ }
+
+ public DocumentLocator getParent(String defaultPath) {
+ DocumentLocator parent = getParent();
+ if (parent != null) {
+ return parent;
+ } else {
+ return getPathVersion(defaultPath);
+ }
+ }
+}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/util/DocumentHelper.java Thu Jul 27 13:41:28 2006
@@ -31,6 +31,7 @@
import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
@@ -143,7 +144,8 @@
contextPath = request.getContextPath();
- Document parent = this.identityMap.getParent(document, "/index");
+ DocumentLocator parentLocator = document.getLocator().getParent("/index");
+ Document parent = this.identityMap.get(parentLocator);
parentUrl = parent.getCanonicalWebappURL();
} catch (final DocumentBuildException e) {
throw new ProcessingException(e);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/AbstractSiteManager.java Thu Jul 27 13:41:28 2006
@@ -81,7 +81,7 @@
* @throws SiteException when something went wrong.
*/
protected boolean isAntisymmetric(DocumentFactory map, NodeSet set) throws SiteException {
- Node[] resources = set.getNodes();
+ SiteNode[] resources = set.getNodes();
boolean isAntisymmetric = true;
for (int i = 0; i < resources.length; i++) {
for (int j = i + 1; j < resources.length; j++) {
@@ -104,7 +104,7 @@
* @throws SiteException when something went wrong.
*/
protected boolean isTransitive(DocumentFactory map, NodeSet set) throws SiteException {
- Node[] resources = set.getNodes();
+ SiteNode[] resources = set.getNodes();
boolean isTransitive = true;
for (int i = 0; i < resources.length; i++) {
for (int j = i + 1; j < resources.length; j++) {
@@ -129,7 +129,7 @@
* @throws SiteException
*/
protected boolean isIrreflexive(DocumentFactory map, NodeSet set) throws SiteException {
- Node[] resources = set.getNodes();
+ SiteNode[] resources = set.getNodes();
boolean isIrreflexive = true;
for (int i = 0; i < resources.length; i++) {
if (requires(map, resources[i], resources[i])) {
@@ -160,9 +160,9 @@
*/
public int compare(Object arg0, Object arg1) {
int result = 0;
- if (arg0 instanceof Node && arg1 instanceof Node) {
- Node doc1 = (Node) arg0;
- Node doc2 = (Node) arg1;
+ if (arg0 instanceof SiteNode && arg1 instanceof SiteNode) {
+ SiteNode doc1 = (SiteNode) arg0;
+ SiteNode doc2 = (SiteNode) arg1;
try {
if (AbstractSiteManager.this.requires(map, doc1, doc2)) {
@@ -203,8 +203,8 @@
if (arg0 instanceof Document && arg1 instanceof Document) {
Document doc1 = (Document) arg0;
Document doc2 = (Document) arg1;
- Node node1 = NodeFactory.getNode(doc1);
- Node node2 = NodeFactory.getNode(doc2);
+ SiteNode node1 = NodeFactory.getNode(doc1);
+ SiteNode node2 = NodeFactory.getNode(doc2);
try {
if (AbstractSiteManager.this.requires(map, node1, node2)) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/NodeFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/NodeFactory.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/NodeFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/NodeFactory.java Thu Jul 27 13:41:28 2006
@@ -26,19 +26,20 @@
private static Map nodes = new WeakHashMap();
- public static Node getNode(Publication pub, String area, String docId) {
- String key = Node.getKey(pub, area, docId);
- Node node = null;
+ public static SiteNode getNode(Publication pub, String area, String docId) {
+ String key = SiteNode.getKey(pub, area, docId);
+ SiteNode node = null;
if (nodes.containsKey(key)) {
- node = (Node) nodes.get(key);
+ node = (SiteNode) nodes.get(key);
}
else {
- node = new Node(pub, area, docId);
+ node = new SiteNode(pub, area, docId);
+ nodes.put(key, node);
}
return node;
}
- public static Node getNode(Document document) {
+ public static SiteNode getNode(Document document) {
return getNode(document.getPublication(), document.getArea(), document.getId());
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/NodeSet.java Thu Jul 27 13:41:28 2006
@@ -38,7 +38,7 @@
* Ctor.
* @param _nodes The initial nodes.
*/
- public NodeSet(Node[] _nodes) {
+ public NodeSet(SiteNode[] _nodes) {
for (int i = 0; i < _nodes.length; i++) {
add(_nodes[i]);
}
@@ -51,7 +51,7 @@
public NodeSet(DocumentSet documents) {
Document[] docs = documents.getDocuments();
for (int i = 0; i < docs.length; i++) {
- Node node = new Node(docs[i].getPublication(), docs[i].getArea(), docs[i].getId());
+ SiteNode node = new SiteNode(docs[i].getPublication(), docs[i].getArea(), docs[i].getId());
if (!contains(node)) {
add(node);
}
@@ -62,7 +62,7 @@
* @param node A node.
* @return If the node is contained.
*/
- public boolean contains(Node node) {
+ public boolean contains(SiteNode node) {
return getList().contains(node);
}
@@ -81,15 +81,15 @@
*
* @return An array of documents.
*/
- public Node[] getNodes() {
- return (Node[]) this.nodes.toArray(new Node[this.nodes.size()]);
+ public SiteNode[] getNodes() {
+ return (SiteNode[]) this.nodes.toArray(new SiteNode[this.nodes.size()]);
}
/**
* Adds a node to this set.
* @param node The node to add.
*/
- public void add(Node node) {
+ public void add(SiteNode node) {
assert node != null;
assert !this.nodes.contains(node);
this.nodes.add(node);
@@ -107,7 +107,7 @@
* Removes a node.
* @param resource The node.
*/
- public void remove(Node resource) {
+ public void remove(SiteNode resource) {
assert resource != null;
assert getList().contains(resource);
getList().remove(resource);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteManager.java Thu Jul 27 13:41:28 2006
@@ -57,7 +57,7 @@
* @return A boolean value.
* @throws SiteException if an error occurs.
*/
- boolean requires(DocumentFactory map, Node dependingResource, Node requiredResource)
+ boolean requires(DocumentFactory map, SiteNode dependingResource, SiteNode requiredResource)
throws SiteException;
/**
@@ -68,7 +68,7 @@
* @return An array of resources.
* @throws SiteException if an error occurs.
*/
- Node[] getRequiredResources(DocumentFactory map, Node resource) throws SiteException;
+ SiteNode[] getRequiredResources(DocumentFactory map, SiteNode resource) throws SiteException;
/**
* Returns the resources which require a certain resource.
@@ -78,7 +78,7 @@
* @return An array of resources.
* @throws SiteException if an error occurs.
*/
- Node[] getRequiringResources(DocumentFactory map, Node resource) throws SiteException;
+ SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource) throws SiteException;
/**
* Adds a document to the site structure.
@@ -98,13 +98,22 @@
boolean contains(Document resource) throws SiteException;
/**
- * Return the UUID of a certain resource in a certain area.
- *
- * @param resource The resource.
+ * Return the path of a certain resource in a certain area.
+ * @param area The area.
+ * @param uuid The uuid.
* @return A string.
- * @throws SiteException if an error occurs.
+ * @throws SiteException if the document is not referenced in the site structure.
+ */
+ String getPath(String area, String uuid) throws SiteException;
+
+ /**
+ * Return the UUID for a given path.
+ * @param area The area.
+ * @param path The path.
+ * @return The UUID.
+ * @throws SiteException if the path does not exist.
*/
- String getUUID(Document resource) throws SiteException;
+ String getUUID(String area, String path) throws SiteException;
/**
* Checks if the site structure contains any language version of a certain resource in a certain
Copied: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java (from r426061, lenya/trunk/src/java/org/apache/lenya/cms/site/Node.java)
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java?p2=lenya/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java&p1=lenya/trunk/src/java/org/apache/lenya/cms/site/Node.java&r1=426061&r2=426230&rev=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/Node.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteNode.java Thu Jul 27 13:41:28 2006
@@ -18,25 +18,25 @@
import org.apache.lenya.cms.publication.Publication;
-public final class Node {
+public final class SiteNode {
- private String documentId;
+ private String path;
private String area;
private Publication publication;
- protected Node(Publication publication, String area, String documentId) {
+ protected SiteNode(Publication publication, String area, String path) {
super();
this.publication = publication;
this.area = area;
- this.documentId = documentId;
+ this.path = path;
}
public String getArea() {
return area;
}
- public String getDocumentId() {
- return documentId;
+ public String getPath() {
+ return path;
}
public Publication getPublication() {
@@ -44,25 +44,25 @@
}
public boolean equals(Object obj) {
- if (obj == null || !(obj instanceof Node)) {
+ if (obj == null || !(obj instanceof SiteNode)) {
return false;
}
- String thisKey = getKey(getPublication(), getArea(), getDocumentId());
- Node node = (Node) obj;
- String nodeKey = getKey(node.getPublication(), node.getArea(), node.getDocumentId());
+ String thisKey = getKey(getPublication(), getArea(), getPath());
+ SiteNode node = (SiteNode) obj;
+ String nodeKey = getKey(node.getPublication(), node.getArea(), node.getPath());
return thisKey.equals(nodeKey);
}
public int hashCode() {
- return getKey(getPublication(), getArea(), getDocumentId()).hashCode();
+ return getKey(getPublication(), getArea(), getPath()).hashCode();
}
protected static String getKey(Publication pub, String area, String docId) {
return pub.getId() + ":" + area + ":" + docId;
}
- public Node getParent() {
- String id = getDocumentId().substring(1);
+ public SiteNode getParent() {
+ String id = getPath().substring(1);
String[] steps = id.split("/");
if (steps.length == 1) {
return null;
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java Thu Jul 27 13:41:28 2006
@@ -16,25 +16,19 @@
*/
package org.apache.lenya.cms.site;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.lenya.ac.User;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.Resource;
-import org.apache.lenya.cms.publication.ResourcesManager;
import org.apache.lenya.cms.publication.util.DocumentSet;
/**
@@ -116,10 +110,10 @@
.getSiteManagerHint());
DocumentFactory map = document.getIdentityMap();
- Node node = NodeFactory.getNode(document);
+ SiteNode node = NodeFactory.getNode(document);
set = getExistingDocuments(map, node);
- Node[] requiringNodes = siteManager.getRequiringResources(map, node);
+ SiteNode[] requiringNodes = siteManager.getRequiringResources(map, node);
for (int i = 0; i < requiringNodes.length; i++) {
set.addAll(getExistingDocuments(map, requiringNodes[i]));
}
@@ -144,10 +138,10 @@
* @throws DocumentBuildException if an error occurs.
* @throws DocumentException if an error occurs.
*/
- public static DocumentSet getExistingDocuments(DocumentFactory map, Node node)
+ public static DocumentSet getExistingDocuments(DocumentFactory map, SiteNode node)
throws DocumentBuildException, DocumentException {
DocumentSet set = new DocumentSet();
- Document document = map.get(node.getPublication(), node.getArea(), node.getDocumentId());
+ Document document = map.get(node.getPublication(), node.getArea(), node.getPath());
String[] languages = document.getLanguages();
for (int i = 0; i < languages.length; i++) {
Document version = document.getIdentityMap().getLanguageVersion(document, languages[i]);
@@ -469,5 +463,48 @@
throw new SiteException(e);
}
return (Document[]) documents.toArray(new Document[documents.size()]);
+ }
+
+ public static String getPath(ServiceManager manager, Document doc) throws SiteException {
+ SiteManager siteManager = null;
+ ServiceSelector selector = null;
+
+ try {
+ selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
+ String siteManagerHint = doc.getPublication().getSiteManagerHint();
+ siteManager = (SiteManager) selector.select(siteManagerHint);
+ return siteManager.getPath(doc.getArea(), doc.getId());
+ } catch (ServiceException e) {
+ throw new SiteException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ manager.release(siteManager);
+ }
+ }
+ }
+
+ public static String getUUID(ServiceManager manager, Publication pub, String area, String path)
+ throws SiteException {
+ SiteManager siteManager = null;
+ ServiceSelector selector = null;
+
+ try {
+ selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
+ String siteManagerHint = pub.getSiteManagerHint();
+ siteManager = (SiteManager) selector.select(siteManagerHint);
+ return siteManager.getUUID(area, path);
+ } catch (ServiceException e) {
+ throw new SiteException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ manager.release(siteManager);
+ }
+ }
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java Thu Jul 27 13:41:28 2006
@@ -25,7 +25,7 @@
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.repository.RepositoryItemFactory;
import org.apache.lenya.cms.site.AbstractSiteManager;
-import org.apache.lenya.cms.site.Node;
+import org.apache.lenya.cms.site.SiteNode;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteStructure;
@@ -48,28 +48,28 @@
/**
* @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node, org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode, org.apache.lenya.cms.site.SiteNode)
*/
- public boolean requires(DocumentFactory map, Node dependingResource, Node requiredResource)
+ public boolean requires(DocumentFactory map, SiteNode dependingResource, SiteNode requiredResource)
throws SiteException {
return false;
}
/**
* @see org.apache.lenya.cms.site.SiteManager#getRequiredResources(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode)
*/
- public Node[] getRequiredResources(DocumentFactory map, Node resource) throws SiteException {
- return new Node[0];
+ public SiteNode[] getRequiredResources(DocumentFactory map, SiteNode resource) throws SiteException {
+ return new SiteNode[0];
}
/**
* @see org.apache.lenya.cms.site.SiteManager#getRequiringResources(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode)
*/
- public Node[] getRequiringResources(DocumentFactory map, Node resource)
+ public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
throws SiteException {
- return new Node[0];
+ return new SiteNode[0];
}
/**
@@ -252,6 +252,16 @@
public boolean isVisibleInNav(Document document) throws SiteException {
return true;
+ }
+
+ public String getPath(String area, String uuid) throws SiteException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getUUID(String area, String path) throws SiteException {
+ // TODO Auto-generated method stub
+ return null;
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/topicmap/TopicMapSiteManager.java Thu Jul 27 13:41:28 2006
@@ -20,7 +20,7 @@
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.site.AbstractSiteManager;
-import org.apache.lenya.cms.site.Node;
+import org.apache.lenya.cms.site.SiteNode;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteStructure;
@@ -31,9 +31,9 @@
/**
* @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node, org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode, org.apache.lenya.cms.site.SiteNode)
*/
- public boolean requires(DocumentFactory map, Node dependingResource, Node requiredResource)
+ public boolean requires(DocumentFactory map, SiteNode dependingResource, SiteNode requiredResource)
throws SiteException {
// TODO Auto-generated method stub
return false;
@@ -41,18 +41,18 @@
/**
* @see org.apache.lenya.cms.site.SiteManager#getRequiredResources(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode)
*/
- public Node[] getRequiredResources(DocumentFactory map, Node resource) throws SiteException {
+ public SiteNode[] getRequiredResources(DocumentFactory map, SiteNode resource) throws SiteException {
// TODO Auto-generated method stub
return null;
}
/**
* @see org.apache.lenya.cms.site.SiteManager#getRequiringResources(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode)
*/
- public Node[] getRequiringResources(DocumentFactory map, Node resource)
+ public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
throws SiteException {
// TODO Auto-generated method stub
return null;
@@ -161,6 +161,16 @@
public boolean isVisibleInNav(Document document) throws SiteException {
return true;
+ }
+
+ public String getPath(String area, String uuid) throws SiteException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getUUID(String area, String path) throws SiteException {
+ // TODO Auto-generated method stub
+ return null;
}
}
Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeNodeID.java Thu Jul 27 13:41:28 2006
@@ -27,6 +27,7 @@
import org.apache.lenya.cms.publication.DocumentBuilder;
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.DocumentManager;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.util.DocumentSet;
@@ -150,7 +151,8 @@
protected Document getTargetDocument() throws DocumentBuildException {
DocumentFactory identityMap = getDocumentIdentityMap();
String nodeId = getParameterAsString(NODE_ID);
- Document parent = identityMap.getParent(getSourceDocument());
+ DocumentLocator parentLocator = getSourceDocument().getLocator().getParent();
+ Document parent = identityMap.get(parentLocator);
String parentId = "";
// if the document is at the top level, the parent is null
if (parent != null)
Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/LinkRewriterImpl.java Thu Jul 27 13:41:28 2006
@@ -27,13 +27,11 @@
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
import org.apache.lenya.cms.cocoon.source.SourceUtil;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentBuilder;
-import org.apache.lenya.cms.publication.DocumentIdentifier;
import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.ResourceType;
import org.apache.lenya.cms.site.SiteManager;
@@ -85,8 +83,6 @@
}
}
- Request request = ObjectModelHelper.getRequest(this.objectModel);
-
if (getLogger().isDebugEnabled()) {
getLogger().debug("Rewriting source: [" + originalTargetDocument + "]");
getLogger().debug("Rewriting target: [" + newTargetDocument + "]");
@@ -216,12 +212,10 @@
selector = (ServiceSelector) this.manager.lookup(DocumentBuilder.ROLE + "Selector");
builder = (DocumentBuilder) selector.select(originalTargetDocument.getPublication()
.getDocumentBuilderHint());
-
- DocumentIdentifier identifier = new DocumentIdentifier(newTargetDocument.getPublication(),
- newTargetDocument.getArea(),
- newTargetDocument.getId() + childString,
- targetDocument.getLanguage());
- String newTargetUrl = builder.buildCanonicalUrl(identifier);
+
+ DocumentLocator locator = newTargetDocument.getLocator();
+ DocumentLocator child = locator.getDescendant(childString);
+ String newTargetUrl = builder.buildCanonicalUrl(child);
return newTargetUrl;
} catch (ServiceException e) {
throw new RuntimeException(e);
Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/MoveSubsite.java Thu Jul 27 13:41:28 2006
@@ -31,7 +31,7 @@
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.util.DocumentHelper;
import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.site.Node;
+import org.apache.lenya.cms.site.SiteNode;
import org.apache.lenya.cms.site.NodeFactory;
import org.apache.lenya.cms.site.NodeSet;
import org.apache.lenya.cms.site.SiteException;
@@ -233,12 +233,12 @@
selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
siteManager = (SiteManager) selector.select(doc.getPublication().getSiteManagerHint());
- Node node = NodeFactory.getNode(doc);
- Node[] requiredNodes = siteManager.getRequiredResources(map, node);
+ SiteNode node = NodeFactory.getNode(doc);
+ SiteNode[] requiredNodes = siteManager.getRequiredResources(map, node);
for (int i = 0; i < requiredNodes.length; i++) {
Document targetDoc = map.get(getSourceDocument().getPublication(),
getTargetArea(),
- requiredNodes[i].getDocumentId(),
+ requiredNodes[i].getPath(),
doc.getLanguage());
if (!siteManager.containsInAnyLanguage(targetDoc)) {
docsToCopy.add(targetDoc);
@@ -276,13 +276,13 @@
NodeSet nodesToDelete = new NodeSet();
- Node sourceNode = NodeFactory.getNode(doc);
- Node[] requiredSourceNodes = siteManager.getRequiredResources(map, sourceNode);
+ SiteNode sourceNode = NodeFactory.getNode(doc);
+ SiteNode[] requiredSourceNodes = siteManager.getRequiredResources(map, sourceNode);
for (int i = 0; i < requiredSourceNodes.length; i++) {
- Node node = requiredSourceNodes[i];
+ SiteNode node = requiredSourceNodes[i];
boolean delete = true;
- Document requiredDoc = map.get(node.getPublication(), node.getArea(), node.getDocumentId());
+ Document requiredDoc = map.get(node.getPublication(), node.getArea(), node.getPath());
String[] languages = requiredDoc.getLanguages();
for (int l = 0; l < languages.length; l++) {
Document langVersion = map.getLanguageVersion(requiredDoc, languages[l]);
@@ -291,11 +291,11 @@
}
}
- Node[] requiringNodes = siteManager.getRequiringResources(map, node);
+ SiteNode[] requiringNodes = siteManager.getRequiringResources(map, node);
for (int j = 0; j < requiringNodes.length; j++) {
- Node n = requiringNodes[j];
- Document reqDoc = map.get(n.getPublication(), n.getArea(), n.getDocumentId());
+ SiteNode n = requiringNodes[j];
+ Document reqDoc = map.get(n.getPublication(), n.getArea(), n.getPath());
languages = reqDoc.getLanguages();
for (int l = 0; l < languages.length; l++) {
Document langVersion = map.getLanguageVersion(reqDoc, languages[l]);
@@ -309,10 +309,10 @@
}
}
- Node[] nodes = nodesToDelete.getNodes();
+ SiteNode[] nodes = nodesToDelete.getNodes();
for (int i = 0; i < nodes.length; i++) {
- Node n = nodes[i];
- Document d = map.get(n.getPublication(), n.getArea(), n.getDocumentId());
+ SiteNode n = nodes[i];
+ Document d = map.get(n.getPublication(), n.getArea(), n.getPath());
String[] languages = d.getLanguages();
for (int l = 0; l < languages.length; l++) {
Document langVersion = map.getLanguageVersion(d, languages[l]);
Modified: lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java (original)
+++ lenya/trunk/src/modules/sitetree/java/src/org/apache/lenya/cms/site/tree/TreeSiteManager.java Thu Jul 27 13:41:28 2006
@@ -30,7 +30,7 @@
import org.apache.lenya.cms.repository.RepositoryItemFactory;
import org.apache.lenya.cms.site.AbstractSiteManager;
import org.apache.lenya.cms.site.Label;
-import org.apache.lenya.cms.site.Node;
+import org.apache.lenya.cms.site.SiteNode;
import org.apache.lenya.cms.site.NodeFactory;
import org.apache.lenya.cms.site.NodeSet;
import org.apache.lenya.cms.site.SiteException;
@@ -86,9 +86,9 @@
* @return A list of resources.
* @throws SiteException if an error occurs.
*/
- protected List getAncestors(Node node) throws SiteException {
+ protected List getAncestors(SiteNode node) throws SiteException {
List ancestors = new ArrayList();
- Node parent;
+ SiteNode parent;
try {
parent = node.getParent();
if (parent != null) {
@@ -105,27 +105,27 @@
/**
* @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node, org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode, org.apache.lenya.cms.site.SiteNode)
*/
- public boolean requires(DocumentFactory map, Node dependingResource, Node requiredResource)
+ public boolean requires(DocumentFactory map, SiteNode dependingResource, SiteNode requiredResource)
throws SiteException {
return getAncestors(dependingResource).contains(requiredResource);
}
/**
* @see org.apache.lenya.cms.site.SiteManager#getRequiredResources(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode)
*/
- public Node[] getRequiredResources(DocumentFactory map, Node resource) throws SiteException {
+ public SiteNode[] getRequiredResources(DocumentFactory map, SiteNode resource) throws SiteException {
List ancestors = getAncestors(resource);
- return (Node[]) ancestors.toArray(new Node[ancestors.size()]);
+ return (SiteNode[]) ancestors.toArray(new SiteNode[ancestors.size()]);
}
/**
* @see org.apache.lenya.cms.site.SiteManager#getRequiringResources(org.apache.lenya.cms.publication.DocumentFactory,
- * org.apache.lenya.cms.site.Node)
+ * org.apache.lenya.cms.site.SiteNode)
*/
- public Node[] getRequiringResources(DocumentFactory map, Node resource)
+ public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
throws SiteException {
if (getLogger().isDebugEnabled()) {
@@ -137,7 +137,7 @@
String area = resource.getArea();
SiteTree tree = getTree(map, pub, area);
- SiteTreeNode node = tree.getNode(resource.getDocumentId());
+ SiteTreeNode node = tree.getNode(resource.getPath());
if (node != null) {
List preOrder = node.preOrder();
@@ -146,7 +146,7 @@
for (int i = 0; i < preOrder.size(); i++) {
SiteTreeNode descendant = (SiteTreeNode) preOrder.get(i);
- Node descendantNode = NodeFactory.getNode(pub, area, descendant.getAbsoluteId());
+ SiteNode descendantNode = NodeFactory.getNode(pub, area, descendant.getAbsoluteId());
nodes.add(descendantNode);
}
@@ -492,5 +492,13 @@
public boolean isVisibleInNav(Document document) throws SiteException {
SiteTree tree = getTree(document);
return tree.isVisibleInNav(document.getId());
+ }
+
+ public String getPath(String area, String uuid) throws SiteException {
+ return uuid;
+ }
+
+ public String getUUID(String area, String path) throws SiteException {
+ return path;
}
}
Modified: lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java (original)
+++ lenya/trunk/src/modules/webdav/java/src/org/apache/lenya/cms/usecases/webdav/Propfind.java Thu Jul 27 13:41:28 2006
@@ -25,7 +25,7 @@
import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentBuilder;
-import org.apache.lenya.cms.publication.DocumentIdentifier;
+import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
import org.apache.lenya.cms.publication.PublicationUtil;
@@ -127,8 +127,8 @@
// get assets if we are currently looking at a document
if (!request.equals("/" + _publication.getId() + "/authoring/")) {
String url = request.substring(0, request.length() - 1) + ".html";
- DocumentIdentifier identifier = docBuilder.getIdentitfier(url);
- Document currentDoc = getDocumentIdentityMap().get(identifier);
+ DocumentLocator locator = docBuilder.getLocator(url);
+ Document currentDoc = getDocumentIdentityMap().get(locator);
if (currentDoc.exists()) {
resourcesManager = (ResourcesManager) this.manager.lookup(ResourcesManager.ROLE);
Resource[] resources = resourcesManager.getResources(currentDoc);
Modified: lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java (original)
+++ lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java Thu Jul 27 13:41:28 2006
@@ -26,8 +26,8 @@
import org.apache.lenya.cms.publication.PublicationException;
import org.apache.lenya.cms.publication.util.DocumentSet;
import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.site.Node;
import org.apache.lenya.cms.site.NodeFactory;
+import org.apache.lenya.cms.site.SiteNode;
import org.apache.lenya.cms.site.SiteUtil;
import org.apache.lenya.cms.site.usecases.AssetUtil;
import org.apache.lenya.cms.usecase.DocumentUsecase;
@@ -76,7 +76,7 @@
DocumentFactory map = getSourceDocument().getIdentityMap();
Document liveDoc = map.getAreaVersion(getSourceDocument(), Publication.LIVE_AREA);
DocumentSet subSite = SiteUtil.getSubSite(this.manager, liveDoc);
- Node node = NodeFactory.getNode(liveDoc);
+ SiteNode node = NodeFactory.getNode(liveDoc);
subSite.removeAll(SiteUtil.getExistingDocuments(map, node));
if (!subSite.isEmpty()) {
Modified: lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java?rev=426230&r1=426229&r2=426230&view=diff
==============================================================================
--- lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java (original)
+++ lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java Thu Jul 27 13:41:28 2006
@@ -33,13 +33,14 @@
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.DocumentManager;
import org.apache.lenya.cms.publication.Proxy;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationException;
import org.apache.lenya.cms.publication.util.DocumentSet;
import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.cms.site.Node;
+import org.apache.lenya.cms.site.SiteNode;
import org.apache.lenya.cms.site.NodeFactory;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.site.SiteUtil;
@@ -160,8 +161,8 @@
selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
- Node liveNode = NodeFactory.getNode(liveDocument);
- Node[] requiredNodes = siteManager.getRequiredResources(map, liveNode);
+ SiteNode liveNode = NodeFactory.getNode(liveDocument);
+ SiteNode[] requiredNodes = siteManager.getRequiredResources(map, liveNode);
for (int i = 0; i < requiredNodes.length; i++) {
@@ -169,7 +170,7 @@
if (liveDocs.isEmpty()) {
Document authoringDoc = map.get(requiredNodes[i].getPublication(),
Publication.AUTHORING_AREA,
- requiredNodes[i].getDocumentId());
+ requiredNodes[i].getPath());
if (authoringDoc.exists()) {
missingDocuments.add(authoringDoc);
} else {
@@ -348,7 +349,8 @@
}
try {
- Document parent = document.getIdentityMap().getParent(document);
+ DocumentLocator parentLocator = document.getLocator().getParent();
+ Document parent = document.getIdentityMap().get(parentLocator);
boolean publish = true;
if (parent != null) {
Document liveParent = parent.getIdentityMap().getAreaVersion(parent,
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org