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 2009/02/10 02:35:07 UTC
svn commit: r742811 [1/3] - in /lenya/trunk:
org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/
org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/
org.apache.lenya.core.api/src/main/ja...
Author: andreas
Date: Tue Feb 10 01:34:58 2009
New Revision: 742811
URL: http://svn.apache.org/viewvc?rev=742811&view=rev
Log:
Move repository classes out of the core API.
Added:
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/observation/
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/observation/DocumentEvent.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/HistoryWrapper.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/IdentityWrapper.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RevisionWrapper.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/cocoon/
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/Observeable.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/Element.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/ElementSet.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaData.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataException.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataOwner.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistry.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Identity.java
Removed:
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/DocumentEvent.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
Modified:
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
lenya/trunk/org.apache.lenya.core.impl/pom.xml
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/DocumentImpl.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java
lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/cms/publication/DublinCoreTest.java
lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/cms/rc/RCMLTest.java
lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/transaction/MockTransactionable.java
lenya/trunk/org.apache.lenya.core.impl/src/test/java/org/apache/lenya/transaction/TransactionTest.java
lenya/trunk/org.apache.lenya.core.repository/pom.xml
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/ObservationRegistry.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEvent.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCEnvironment.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCML.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/ContentHolder.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Node.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryException.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManager.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentityMapImpl.java
lenya/trunk/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/DiscoverCheckoutAction.java Tue Feb 10 01:34:58 2009
@@ -24,7 +24,7 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
+import org.apache.lenya.cms.publication.Document;
/**
@@ -41,11 +41,11 @@
super.act(redirector, resolver, objectModel, src, parameters);
HashMap actionMap = new HashMap();
- Node node = getNode();
-
- if (node.isCheckedOut()) {
- actionMap.put("filename", node.getSourceURI());
- actionMap.put("user", node.getCheckoutUserId());
+
+ Document document = getDocument();
+ if (document.isCheckedOut()) {
+ actionMap.put("filename", document.getSourceURI());
+ actionMap.put("user", document.getCheckoutUserId());
return actionMap;
}
return null;
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckinAction.java Tue Feb 10 01:34:58 2009
@@ -30,11 +30,8 @@
import org.apache.cocoon.environment.SourceResolver;
import org.apache.lenya.ac.Identity;
import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.Repository;
import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
import org.apache.lenya.util.ServletHelper;
/**
@@ -63,7 +60,7 @@
String url = ServletHelper.getWebappURI(request);
if (session.getUriHandler().isDocument(url)) {
Document document = session.getUriHandler().getDocument(url);
- if (document.isCheckedOutBySession(session)) {
+ if (document.isCheckedOutBySession(session.getId(), session.getIdentity().getUser().getId())) {
document.checkin();
}
}
@@ -75,7 +72,7 @@
getLogger().error("Could not check in node: ", e);
Map actionMap = new HashMap();
actionMap.put("exception", "genericException");
- actionMap.put("filename", getNode().getSourceURI());
+ actionMap.put("filename", getDocument().getSourceURI());
actionMap.put("message", e.getMessage());
return actionMap;
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutAction.java Tue Feb 10 01:34:58 2009
@@ -26,9 +26,9 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
-import org.apache.commons.lang.Validate;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.RepositoryException;
+import org.apache.lenya.cms.publication.Session;
/**
* Action doing reserved checkout
@@ -43,24 +43,25 @@
super.act(redirector, resolver, objectModel, src, parameters);
HashMap actionMap = new HashMap();
+ Document doc = getDocument();
//check out
try {
- Node node = getNode();
String username = getUsername();
- assert node != null;
+ assert doc != null;
assert username != null;
- if (!node.isCheckedOutBySession(node.getRepositorySession())) {
- node.checkout();
+ Session session = doc.getSession();
+ if (!doc.isCheckedOutBySession(session.getId(), session.getIdentity().getUser().getId())) {
+ doc.checkout();
}
} catch (RepositoryException e) {
actionMap.put("exception", "genericException");
- actionMap.put("filename", getNode().getSourceURI());
+ actionMap.put("filename", doc.getSourceURI());
actionMap.put("message", "" + e.getMessage());
- getLogger().error("The node " + getNode().getSourceURI() + " couldn't be checked out: ", e);
+ getLogger().error("The document " + doc.getSourceURI() + " couldn't be checked out: ", e);
return actionMap;
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/ReservedCheckoutTestAction.java Tue Feb 10 01:34:58 2009
@@ -26,46 +26,49 @@
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryException;
-
+import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.RepositoryException;
/**
- * An action that tests if a document is already checked out by a given user.
- * If it isn't, a check out will be tried.
+ * An action that tests if a document is already checked out by a given user. If it isn't, a check
+ * out will be tried.
*/
public class ReservedCheckoutTestAction extends RevisionControllerAction {
/**
- * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
- */
- public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
- Parameters parameters) throws Exception {
+ * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
+ * org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String,
+ * org.apache.avalon.framework.parameters.Parameters)
+ */
+ public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String src,
+ Parameters parameters) throws Exception {
super.act(redirector, resolver, objectModel, src, parameters);
HashMap actionMap = new HashMap();
+ Document doc = getDocument();
try {
- Node node = getNode();
- if (!node.isCheckedOut() || !node.getCheckoutUserId().equals(getUsername())) {
- //check out
- getNode().checkout();
- }
- } catch (RepositoryException e) {
- actionMap.put("exception", "RepositoryException");
- actionMap.put("filename", getNode().getSourceURI());
-
- return actionMap;
- } catch (Exception e) {
- actionMap.put("exception", "genericException");
- actionMap.put("filename", getNode().getSourceURI());
- actionMap.put("message", e.getMessage());
- getLogger().error(".act(): The node " + getNode().getSourceURI() + " couldn't be checked out: ", e);
+ if (!doc.isCheckedOut() || !doc.getCheckoutUserId().equals(getUsername())) {
+ // check out
+ doc.checkout();
+ }
+ } catch (RepositoryException e) {
+ actionMap.put("exception", "RepositoryException");
+ actionMap.put("filename", doc.getSourceURI());
+
+ return actionMap;
+ } catch (Exception e) {
+ actionMap.put("exception", "genericException");
+ actionMap.put("filename", doc.getSourceURI());
+ actionMap.put("message", e.getMessage());
+ getLogger().error(
+ ".act(): The document " + doc.getSourceURI() + " couldn't be checked out: ",
+ e);
- return actionMap;
- }
+ return actionMap;
+ }
return null;
}
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/acting/RevisionControllerAction.java Tue Feb 10 01:34:58 2009
@@ -18,7 +18,6 @@
package org.apache.lenya.cms.cocoon.acting;
-import java.io.File;
import java.util.Map;
import javax.servlet.http.HttpSession;
@@ -38,8 +37,6 @@
import org.apache.lenya.cms.publication.Repository;
import org.apache.lenya.cms.publication.Session;
import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.rc.RCEnvironment;
-import org.apache.lenya.cms.repository.Node;
import org.apache.lenya.util.ServletHelper;
/**
@@ -49,11 +46,9 @@
*/
public class RevisionControllerAction extends ServiceableAction {
- private String rcmlDirectory = null;
- private String backupDirectory = null;
private String username = null;
- private Node node = null;
private Repository repository;
+ private Document document;
/**
* @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector,
@@ -77,25 +72,16 @@
String id = new URLInformation(ServletHelper.getWebappURI(request)).getPublicationId();
Publication publication = repoSession.getPublication(id);
- Document document = null;
+ Document doc = null;
try {
envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(objectModel, publication);
- document = envelope.getDocument();
+ doc = envelope.getDocument();
} catch (Exception e) {
getLogger().error("Resolving page envelope failed: ", e);
throw e;
}
- // get Parameters for RC
- String publicationPath = publication.getDirectory().getCanonicalPath();
- RCEnvironment rcEnvironment = RCEnvironment.getInstance(publication.getServletContext()
- .getCanonicalPath(), getLogger());
- this.rcmlDirectory = rcEnvironment.getRCMLDirectory();
- this.rcmlDirectory = publicationPath + File.separator + this.rcmlDirectory;
- this.backupDirectory = rcEnvironment.getBackupDirectory();
- this.backupDirectory = publicationPath + File.separator + this.backupDirectory;
-
// Get session
HttpSession session = request.getSession(false);
@@ -112,11 +98,11 @@
// cannot be get from
// the page-envelope
- String path = document.getPath();
+ String path = doc.getPath();
int bx = path.lastIndexOf("-bxe");
if (bx > 0) {
- String language = document.getLanguage();
+ String language = doc.getLanguage();
int l = path.length();
int bxLength = "-bxe".length();
@@ -133,11 +119,10 @@
}
}
- Document srcDoc = document.area().getSite().getNode(path).getLink(language).getDocument();
- this.node = srcDoc.getRepositoryNode();
+ this.document = doc.area().getSite().getNode(path).getLink(language).getDocument();
} else {
- this.node = document.getRepositoryNode();
+ this.document = doc;
}
this.username = null;
@@ -160,8 +145,8 @@
* Get the node.
* @return the node
*/
- protected Node getNode() {
- return this.node;
+ protected Document getDocument() {
+ return this.document;
}
/**
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java Tue Feb 10 01:34:58 2009
@@ -20,6 +20,7 @@
package org.apache.lenya.cms.cocoon.components.modules.input;
+import java.net.MalformedURLException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
@@ -32,7 +33,6 @@
import org.apache.cocoon.environment.Request;
import org.apache.commons.lang.StringUtils;
import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.Publication;
@@ -161,7 +161,7 @@
DocumentLocator loc;
try {
loc = pub.getDocumentBuilder().getLocator(pub.getSession(), url);
- } catch (DocumentBuildException e) {
+ } catch (MalformedURLException e) {
throw new SiteException(e);
}
path = loc.getPath();
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelper.java Tue Feb 10 01:34:58 2009
@@ -22,12 +22,10 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon;
-import org.apache.cocoon.environment.Request;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeException;
import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.rc.FileReservedCheckInException;
import org.apache.lenya.workflow.WorkflowException;
/**
@@ -35,7 +33,7 @@
* @version $Id$
*/
public interface FlowHelper {
-
+
/**
* The Avalon Role.
*/
@@ -79,9 +77,9 @@
DocumentHelper getDocumentHelper(FOM_Cocoon cocoon);
/**
- * Resolves the request parameter value for a specific name. The parameter
- * names are encoded as <code>{name}:{value}.{axis}</code>. This is a
- * workaround for the <input type="image"/> bug in Internet Explorer.
+ * Resolves the request parameter value for a specific name. The parameter names are encoded as
+ * <code>{name}:{value}.{axis}</code>. This is a workaround for the <input type="image"/>
+ * bug in Internet Explorer.
* @param cocoon The FOM_Cocoon object.
* @param parameterName The request parameter name.
* @return A string.
@@ -89,8 +87,7 @@
String getImageParameterValue(FOM_Cocoon cocoon, String parameterName);
/**
- * Trigger a workflow event for the document associated with the current
- * PageEnvelope.
+ * Trigger a workflow event for the document associated with the current PageEnvelope.
* @param cocoon The Cocoon Flow Object Model
* @param event The name of the workflow event to trigger.
* @throws WorkflowException If an workflow error occurs
@@ -104,9 +101,7 @@
* Checkis in the current document from the PageEnvelope context.
* @param cocoon The Cocoon Flow Object Model
* @param backup Wether a new revision should be created.
- * @throws FileReservedCheckInException
* @throws Exception
*/
- void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws FileReservedCheckInException,
- Exception;
+ void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws Exception;
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/flow/FlowHelperImpl.java Tue Feb 10 01:34:58 2009
@@ -39,8 +39,6 @@
import org.apache.lenya.cms.publication.Session;
import org.apache.lenya.cms.publication.URLInformation;
import org.apache.lenya.cms.publication.util.DocumentHelper;
-import org.apache.lenya.cms.rc.FileReservedCheckInException;
-import org.apache.lenya.cms.repository.Node;
import org.apache.lenya.cms.workflow.WorkflowUtil;
import org.apache.lenya.util.ServletHelper;
import org.apache.lenya.workflow.WorkflowException;
@@ -50,7 +48,7 @@
* This way, not the initial, but the current FOM_Cocoon object is used by the methods.
*/
public class FlowHelperImpl extends AbstractLogEnabled implements FlowHelper {
-
+
private Repository repository;
private DocumentFactoryBuilder documentFactoryBuilder;
@@ -149,18 +147,16 @@
public void triggerWorkflow(FOM_Cocoon cocoon, String event) throws WorkflowException,
PageEnvelopeException, AccessControlException {
Document document = getPageEnvelope(cocoon).getDocument();
- WorkflowUtil.invoke(getLogger(), document, event);
+ WorkflowUtil.invoke(document, event);
}
/**
* @see org.apache.lenya.cms.cocoon.flow.FlowHelper#reservedCheckIn(org.apache.cocoon.components.flow.javascript.fom.FOM_Cocoon,
* boolean)
*/
- public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup)
- throws FileReservedCheckInException, Exception {
+ public void reservedCheckIn(FOM_Cocoon cocoon, boolean backup) throws Exception {
final PageEnvelope pageEnvelope = getPageEnvelope(cocoon);
- Node node = pageEnvelope.getDocument().getRepositoryNode();
- node.checkin();
+ pageEnvelope.getDocument().checkin();
}
}
\ No newline at end of file
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSource.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.cocoon.source;
+
+import org.apache.excalibur.source.ModifiableSource;
+import org.apache.lenya.cms.publication.Document;
+
+public interface DocumentSource extends ModifiableSource {
+
+ Document getDocument();
+
+}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/cocoon/source/SourceUtil.java Tue Feb 10 01:34:58 2009
@@ -38,7 +38,7 @@
import org.apache.excalibur.source.SourceException;
import org.apache.excalibur.source.SourceNotFoundException;
import org.apache.excalibur.source.SourceResolver;
-import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.publication.RepositoryException;
import org.apache.lenya.xml.DocumentHelper;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
@@ -524,13 +524,13 @@
public static void checkout(String sourceUri, ServiceManager manager)
throws RepositoryException, ServiceException, MalformedURLException, IOException {
SourceResolver resolver = null;
- RepositorySource source = null;
+ DocumentSource source = null;
try {
resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- source = (RepositorySource) resolver.resolveURI(sourceUri);
+ source = (DocumentSource) resolver.resolveURI(sourceUri);
- source.getNode().checkout();
+ source.getDocument().checkout();
} finally {
if (resolver != null) {
@@ -554,13 +554,13 @@
public static void checkin(String sourceUri, ServiceManager manager)
throws RepositoryException, ServiceException, MalformedURLException, IOException {
SourceResolver resolver = null;
- RepositorySource source = null;
+ DocumentSource source = null;
try {
resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- source = (RepositorySource) resolver.resolveURI(sourceUri);
+ source = (DocumentSource) resolver.resolveURI(sourceUri);
- source.getNode().checkin();
+ source.getDocument().checkin();
} finally {
if (resolver != null) {
@@ -580,16 +580,14 @@
*/
public static void lock(String sourceUri, ServiceManager manager) throws RepositoryException {
SourceResolver resolver = null;
- RepositorySource source = null;
+ DocumentSource source = null;
try {
resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- source = (RepositorySource) resolver.resolveURI(sourceUri);
+ source = (DocumentSource) resolver.resolveURI(sourceUri);
- source.getNode().lock();
+ source.getDocument().lock();
- } catch (RepositoryException e) {
- throw e;
} catch (Exception e) {
throw new RepositoryException(e);
} finally {
@@ -610,16 +608,14 @@
*/
public static void unlock(String sourceUri, ServiceManager manager) throws RepositoryException {
SourceResolver resolver = null;
- RepositorySource source = null;
+ DocumentSource source = null;
try {
resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- source = (RepositorySource) resolver.resolveURI(sourceUri);
+ source = (DocumentSource) resolver.resolveURI(sourceUri);
- source.getNode().unlock();
+ source.getDocument().unlock();
- } catch (RepositoryException e) {
- throw e;
} catch (Exception e) {
throw new RepositoryException(e);
} finally {
@@ -639,12 +635,12 @@
*/
public static void registerDirty(String sourceUri, ServiceManager manager) {
SourceResolver resolver = null;
- RepositorySource source = null;
+ DocumentSource source = null;
try {
resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
- source = (RepositorySource) resolver.resolveURI(sourceUri);
- source.getNode().registerDirty();
+ source = (DocumentSource) resolver.resolveURI(sourceUri);
+ source.getDocument().registerDirty();
} catch (Exception e) {
throw new RuntimeException(e);
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentBuilder.java Tue Feb 10 01:34:58 2009
@@ -18,6 +18,8 @@
package org.apache.lenya.cms.publication;
+import java.net.MalformedURLException;
+
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.avalon.framework.service.Serviceable;
import org.apache.avalon.framework.thread.ThreadSafe;
@@ -97,7 +99,7 @@
return suffix;
}
- public boolean isDocument(Session session, String url) throws DocumentBuildException {
+ public boolean isDocument(Session session, String url) {
try {
DocumentLocator locator = getLocatorWithoutCheck(session, url);
if (locator != null) {
@@ -112,7 +114,7 @@
}
}
} catch (Exception e) {
- throw new DocumentBuildException(e);
+ throw new RuntimeException(e);
}
return false;
@@ -145,12 +147,11 @@
return url;
}
- public DocumentLocator getLocator(Session session, String webappUrl)
- throws DocumentBuildException {
+ public DocumentLocator getLocator(Session session, String webappUrl) throws MalformedURLException {
DocumentLocator locator = getLocatorWithoutCheck(session, webappUrl);
if (locator == null) {
- throw new DocumentBuildException("The webapp URL [" + webappUrl
+ throw new ResourceNotFoundException("The webapp URL [" + webappUrl
+ "] does not refer to a document!");
}
return locator;
@@ -163,10 +164,9 @@
* @param webappUrl The webapp URL.
* @return A document locator or <code>null</code> if the URL doesn't
* refer to a locator.
- * @throws DocumentBuildException if an error occurs.
+ * @throws MalformedURLException if the URL is not a webapp URL.
*/
- protected DocumentLocator getLocatorWithoutCheck(Session session, String webappUrl)
- throws DocumentBuildException {
+ protected DocumentLocator getLocatorWithoutCheck(Session session, String webappUrl) throws MalformedURLException {
if (!webappUrl.startsWith("/")) {
return null;
@@ -192,7 +192,7 @@
String path = documentURL;
if (!path.startsWith("/")) {
- throw new DocumentBuildException("Path [" + path + "] does not start with '/'!");
+ throw new MalformedURLException("Path [" + path + "] does not start with '/'!");
}
return DocumentLocator.getLocator(publication.getId(), info.getArea(), path, language);
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DefaultDocumentIdToPathMapper.java Tue Feb 10 01:34:58 2009
@@ -83,11 +83,11 @@
* @param area The area.
* @param file The file representing the document.
* @return A string.
- * @throws DocumentDoesNotExistException when the document referenced by the file does not
+ * @throws ResourceNotFoundException when the document referenced by the file does not
* exist.
*/
public String getDocumentId(Publication publication, String area, File file)
- throws DocumentDoesNotExistException {
+ throws ResourceNotFoundException {
String fileName = file.getAbsolutePath();
String contentDirName = publication.getContentDirectory(area).getAbsolutePath();
@@ -101,7 +101,7 @@
return relativeFileName.replace(File.separatorChar, '/');
}
// Document does not seem to exist
- throw new DocumentDoesNotExistException("No document associated with file" + fileName);
+ throw new ResourceNotFoundException("No document associated with file" + fileName);
}
/**
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Document.java Tue Feb 10 01:34:58 2009
@@ -25,16 +25,13 @@
import org.apache.lenya.cms.metadata.MetaDataOwner;
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.repository.RepositoryItem;
import org.apache.lenya.cms.site.Link;
/**
* A CMS document.
* @version $Id$
*/
-public interface Document extends MetaDataOwner, RepositoryItem {
+public interface Document extends Node, MetaDataOwner {
/**
* The document namespace URI.
@@ -141,8 +138,6 @@
* area actually exists.
*
* @return true if the document exists, false otherwise
- *
- * @throws DocumentException if an error occurs
*/
boolean exists();
@@ -151,8 +146,6 @@
* independently of the given language.
*
* @return true if a document with the given document-uuid and area exists, false otherwise
- *
- * @throws DocumentException if an error occurs
*/
boolean existsInAnyLanguage();
@@ -183,11 +176,6 @@
void delete() throws DocumentException;
/**
- * @return The repository node that represents this document.
- */
- Node getRepositoryNode();
-
- /**
* @return The resource type of this document (formerly known as doctype)
* @throws DocumentException if the resource type has not been set.
*/
@@ -211,7 +199,6 @@
/**
* Sets the mime type of this document.
* @param mimeType The mime type.
- * @throws DocumentException if an error occurs.
*/
void setMimeType(String mimeType);
@@ -312,13 +299,17 @@
InputStream getInputStream();
/**
+ * @param i The revision number.
+ * @return A revision.
+ * @throws RepositoryException if the revision doesn't exist.
+ */
+ Document getRevision(int i) throws RepositoryException;
+
+ /**
* @return The revision number of this document.
*/
int getRevisionNumber();
+
+ History getHistory();
- boolean isCheckedOutBySession(Session session) throws RepositoryException;
-
- void checkin() throws RepositoryException;
-
- Session getSession();
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/DocumentBuilder.java Tue Feb 10 01:34:58 2009
@@ -20,6 +20,8 @@
package org.apache.lenya.cms.publication;
+import java.net.MalformedURLException;
+
/**
* A document builder builds a document from a URL.
*/
@@ -35,9 +37,9 @@
* @param factory The factory.
* @param webappUrl The web application URL.
* @return A document identifier.
- * @throws DocumentBuildException if an error occurs.
+ * @throws MalformedURLException if the URL is not a webapp URL.
*/
- DocumentLocator getLocator(Session session, String webappUrl) throws DocumentBuildException;
+ DocumentLocator getLocator(Session session, String webappUrl) throws MalformedURLException;
/**
* Checks if an URL corresponds to a CMS document.
@@ -46,7 +48,7 @@
* @return A boolean value.
* @throws DocumentBuildException when something went wrong.
*/
- boolean isDocument(Session session, String url) throws DocumentBuildException;
+ boolean isDocument(Session session, String url);
/**
* Builds an URL corresponding to a CMS document.
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/History.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+/**
+ * The revision history of a document.
+ */
+public interface History {
+
+ /**
+ * @return The available revision numbers in descending order (starting with the newest one).
+ */
+ int[] getRevisionNumbers();
+
+ /**
+ * @return The latest revision.
+ * @throws RuntimeException if the node has no revisions yet.
+ */
+ Revision getLatestRevision();
+
+ /**
+ * @param number A revision number.
+ * @return A revision.
+ * @throws RepositoryException if no revision with this number exists.
+ */
+ Revision getRevision(int number) throws RepositoryException;
+
+}
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/LockException.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,5 @@
+package org.apache.lenya.cms.publication;
+
+public class LockException extends RepositoryException {
+
+}
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Node.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+/**
+ * Common interface for documents and site structures. This is a hack, we should try to find a
+ * better approach.
+ */
+public interface Node {
+
+ boolean isCheckedOutBySession(String sessionId, String userId) throws RepositoryException;
+
+ void checkin() throws RepositoryException;
+
+ Session getSession();
+
+ boolean isCheckedOut() throws RepositoryException;
+
+ String getCheckoutUserId() throws RepositoryException;
+
+ void checkout() throws RepositoryException;
+
+ void lock() throws LockException, RepositoryException;
+
+ void unlock() throws RepositoryException;
+
+ void registerDirty() throws RepositoryException;
+
+ boolean isLocked() throws RepositoryException;
+
+ void forceCheckIn() throws RepositoryException;
+
+ void rollback(int revision) throws RepositoryException;
+
+ void checkout(boolean checkoutRestrictedToSession) throws RepositoryException;
+
+ String getSourceURI();
+}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PageEnvelope.java Tue Feb 10 01:34:58 2009
@@ -25,7 +25,6 @@
import org.apache.cocoon.environment.Request;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.lenya.cms.rc.RCEnvironment;
/**
* A page envelope carries a set of information that are needed during the presentation of a
@@ -251,17 +250,6 @@
}
/**
- * Returns the rcEnvironment.
- *
- * @return a <code>RCEnvironment</code> value
- * @deprecated We should detach the RC environment from the page envelope.
- */
- public RCEnvironment getRCEnvironment() {
- return RCEnvironment.getInstance(getPublication().getServletContext().getAbsolutePath(),
- logger);
- }
-
- /**
* Returns the context, e.g. "/lenya".
* @return a <code>String</code> value
*/
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PathToDocumentIdMapper.java Tue Feb 10 01:34:58 2009
@@ -36,7 +36,7 @@
* @throws DocumentDoesNotExistException if there is no document associated with this file.
*/
String getDocumentId(Publication publication, String area, File file)
- throws DocumentDoesNotExistException;
+ throws ResourceNotFoundException;
/**
* Returns the language for a given file
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/PublicationException.java Tue Feb 10 01:34:58 2009
@@ -20,8 +20,6 @@
package org.apache.lenya.cms.publication;
-import org.apache.lenya.cms.repository.RepositoryException;
-
/**
* Publication Exception
*/
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/RepositoryException.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+public class RepositoryException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public RepositoryException() {
+ super();
+ }
+
+ public RepositoryException(String arg0, Throwable arg1) {
+ super(arg0, arg1);
+ }
+
+ public RepositoryException(String arg0) {
+ super(arg0);
+ }
+
+ public RepositoryException(Throwable arg0) {
+ super(arg0);
+ }
+
+}
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Revision.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,20 @@
+package org.apache.lenya.cms.publication;
+
+public interface Revision {
+
+ /**
+ * @return The revision number.
+ */
+ int getNumber();
+
+ /**
+ * @return The time when this revision was created.
+ */
+ long getTime();
+
+ /**
+ * @return The ID of the user who created this revision.
+ */
+ String getUserId();
+
+}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/Session.java Tue Feb 10 01:34:58 2009
@@ -18,8 +18,6 @@
package org.apache.lenya.cms.publication;
import org.apache.lenya.ac.Identity;
-import org.apache.lenya.cms.repository.RepositoryException;
-import org.apache.lenya.transaction.ConcurrentModificationException;
public interface Session {
@@ -38,7 +36,7 @@
Identity getIdentity();
- void commit() throws RepositoryException, ConcurrentModificationException;
+ void commit() throws RepositoryException;
void rollback() throws RepositoryException;
@@ -46,4 +44,8 @@
UriHandler getUriHandler();
+ void enqueueEvent(Document document, Object descriptor);
+
+ String getId();
+
}
Added: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java (added)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/TransactionLock.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+/**
+ * Global transaction lock.
+ */
+public class TransactionLock {
+
+ /**
+ * The global transaction lock.
+ */
+ public static final Object LOCK = TransactionLock.class;
+
+}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteStructure.java Tue Feb 10 01:34:58 2009
@@ -18,21 +18,15 @@
package org.apache.lenya.cms.site;
import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.Node;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.repository.RepositoryItem;
/**
* Object to hold a site structure information.
*
* @version $Id$
*/
-public interface SiteStructure extends RepositoryItem {
-
- /**
- * @return The repository node the site structure is stored in.
- */
- Node getRepositoryNode();
+public interface SiteStructure extends Node {
/**
* @return The publication.
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java Tue Feb 10 01:34:58 2009
@@ -29,14 +29,12 @@
import org.apache.cocoon.util.AbstractLogEnabled;
import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.lenya.ac.Identity;
import org.apache.lenya.ac.User;
import org.apache.lenya.cms.metadata.MetaData;
-import org.apache.lenya.cms.observation.RepositoryEvent;
-import org.apache.lenya.cms.observation.RepositoryEventFactory;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.ResourceType;
-import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.Workflowable;
@@ -47,6 +45,8 @@
* @version $Id: DocumentWorkflowable.java 416648 2006-06-23 09:15:28Z andreas $
*/
class DocumentWorkflowable extends AbstractLogEnabled implements Workflowable {
+
+ private static final Log logger = LogFactory.getLog(DocumentWorkflowable.class);
/**
* Ctor.
@@ -54,21 +54,11 @@
* @param document The document.
* @param logger The logger.
*/
- public DocumentWorkflowable(Document document, Log logger) {
- if (session.getIdentity() == null) {
+ public DocumentWorkflowable(Document document) {
+ if (document.getSession().getIdentity() == null) {
throw new IllegalArgumentException("The session must have an identity.");
}
this.document = document;
- this.session = session;
- }
-
- private Session session;
-
- /**
- * @return The repository session.
- */
- public Session getSession() {
- return session;
}
private Document document;
@@ -99,6 +89,10 @@
protected static final String METADATA_NAMESPACE = "http://apache.org/lenya/metadata/workflow/1.0";
protected static final String METADATA_VERSION = "workflowVersion";
+
+ protected int getLatestRevision(int[] revisions) {
+ return revisions[revisions.length - 1];
+ }
/**
* @see org.apache.lenya.workflow.Workflowable#getVersions()
@@ -107,11 +101,10 @@
try {
MetaData meta = this.document.getMetaData(METADATA_NAMESPACE);
- org.apache.lenya.cms.repository.History history = this.document.getRepositoryNode()
- .getHistory();
- boolean checkedIn = history.getRevisionNumbers().length > 0;
+ int[] revisions = getDocument().getHistory().getRevisionNumbers();
+ boolean checkedIn = revisions.length > 0;
if (this.versions == null
- || (checkedIn && history.getLatestRevision().getNumber() > this.revision)) {
+ || (checkedIn && getLatestRevision(revisions) > this.revision)) {
String[] versionStrings = meta.getValues(METADATA_VERSION);
this.versions = new Version[versionStrings.length];
@@ -135,7 +128,7 @@
}
if (checkedIn) {
- this.revision = history.getLatestRevision().getNumber();
+ this.revision = getLatestRevision(revisions);
}
}
} catch (Exception e) {
@@ -173,9 +166,7 @@
addToMetaData(string);
WorkflowEventDescriptor descriptor = new WorkflowEventDescriptor(version);
- RepositoryEvent event = RepositoryEventFactory.createEvent(getDocument(),
- getLogger(), descriptor);
- getDocument().getRepositoryNode().getRepositorySession().enqueueEvent(event);
+ getDocument().getSession().enqueueEvent(getDocument(), descriptor);
}
protected void addToMetaData(String versionString) {
@@ -198,7 +189,7 @@
StringBuffer stringBuf = new StringBuffer("event:").append(version.getEvent());
stringBuf.append(" state:").append(version.getState());
- Identity identity = getSession().getIdentity();
+ Identity identity = getDocument().getSession().getIdentity();
User user = identity.getUser();
if (user != null) {
stringBuf.append(" user:").append(identity.getUser().getId());
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java Tue Feb 10 01:34:58 2009
@@ -83,7 +83,7 @@
accessController = acResolver.resolveAccessController(url);
PolicyManager policyManager = accessController.getPolicyManager();
- Identity identity = workflowable.getSession().getIdentity();
+ Identity identity = workflowable.getDocument().getSession().getIdentity();
if (identity == null) {
throw new IllegalArgumentException("The session of the workflowable "
+ workflowable + " has no identity.");
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java Tue Feb 10 01:34:58 2009
@@ -18,10 +18,9 @@
package org.apache.lenya.cms.workflow;
import org.apache.cocoon.spring.configurator.WebAppContextUtils;
-import org.apache.commons.logging.Log;
import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.Session;
import org.apache.lenya.cms.publication.util.DocumentSet;
-import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.workflow.Workflow;
import org.apache.lenya.workflow.WorkflowException;
import org.apache.lenya.workflow.WorkflowManager;
@@ -37,21 +36,18 @@
/**
* Invokes a workflow event on a document. This is the same as
* <code>invoke(Document, String, true)</code>.
- * @param logger The logger.
* @param document The document.
* @param event The name of the event.
* @throws WorkflowException if the event could not be invoked in the current situation.
*/
- public static void invoke(Log logger, Document document, String event) throws WorkflowException {
+ public static void invoke(Document document, String event) throws WorkflowException {
WorkflowManager wfManager = getWorkflowManager();
- Workflowable workflowable = getWorkflowable(logger, document);
+ Workflowable workflowable = getWorkflowable(document);
wfManager.invoke(workflowable, event);
-
}
/**
* Invokes a workflow event on a document.
- * @param logger The logger.
* @param document The document.
* @param event The name of the event.
* @param force If this is set to <code>true</code>, the execution is forced, which means an
@@ -59,16 +55,15 @@
* set to <code>false</code>, non-supporting documents are ignored.
* @throws WorkflowException if the event could not be invoked in the current situation.
*/
- public static void invoke(Log logger, Document document, String event, boolean force)
+ public static void invoke(Document document, String event, boolean force)
throws WorkflowException {
WorkflowManager wfManager = getWorkflowManager();
- Workflowable workflowable = getWorkflowable(logger, document);
+ Workflowable workflowable = getWorkflowable(document);
wfManager.invoke(workflowable, event, force);
}
/**
* Invokes a workflow event on a document set.
- * @param logger The logger.
* @param documentSet The document.
* @param event The event.
* @param force If this is set to <code>true</code>, the execution is forced, which means an
@@ -77,12 +72,12 @@
* @throws WorkflowException if <code>force</code> is set to <code>true</code> and a document
* does not support the workflow event.
*/
- public static void invoke(Log logger, DocumentSet documentSet, String event, boolean force)
+ public static void invoke(DocumentSet documentSet, String event, boolean force)
throws WorkflowException {
WorkflowManager wfManager = getWorkflowManager();
Document[] documents = documentSet.getDocuments();
for (int i = 0; i < documents.length; i++) {
- Workflowable workflowable = new DocumentWorkflowable(documents[i], logger);
+ Workflowable workflowable = new DocumentWorkflowable(documents[i]);
wfManager.invoke(workflowable, event, force);
}
}
@@ -94,35 +89,33 @@
/**
* Checks if an event can be invoked on a document.
- * @param logger The logger.
* @param document The document.
* @param event The event.
* @return A boolean value.
* @throws WorkflowException
*/
- public static boolean canInvoke(Log logger, Document document, String event)
+ public static boolean canInvoke(Document document, String event)
throws WorkflowException {
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ Workflowable workflowable = new DocumentWorkflowable(document);
return getWorkflowManager().canInvoke(workflowable, event);
}
/**
* Checks if an event can be invoked on all documents in a set.
* @param session The repository session.
- * @param logger The logger.
* @param documents The documents.
* @param event The event.
* @return if an error occurs.
* @throws WorkflowException
*/
- public static boolean canInvoke(Session session, Log logger, DocumentSet documents, String event)
+ public static boolean canInvoke(Session session, DocumentSet documents, String event)
throws WorkflowException {
WorkflowManager wfManager = getWorkflowManager();
boolean canInvoke = true;
Document[] documentArray = documents.getDocuments();
for (int i = 0; i < documentArray.length; i++) {
- Workflowable workflowable = new DocumentWorkflowable(documentArray[i], logger);
+ Workflowable workflowable = new DocumentWorkflowable(documentArray[i]);
canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
}
return canInvoke;
@@ -135,8 +128,8 @@
* @return A boolean value.
* @throws WorkflowException if an error occurs.
*/
- public static boolean hasWorkflow(Log logger, Document document) throws WorkflowException {
- Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ public static boolean hasWorkflow(Document document) throws WorkflowException {
+ Workflowable workflowable = new DocumentWorkflowable(document);
return getWorkflowManager().hasWorkflow(workflowable);
}
@@ -147,10 +140,10 @@
* @return A workflow schema.
* @throws WorkflowException if an error occurs.
*/
- public static Workflow getWorkflowSchema(Log logger, Document document)
+ public static Workflow getWorkflowSchema(Document document)
throws WorkflowException {
WorkflowManager wfManager = getWorkflowManager();
- Workflowable workflowable = getWorkflowable(logger, document);
+ Workflowable workflowable = getWorkflowable(document);
if (wfManager.hasWorkflow(workflowable)) {
return wfManager.getWorkflowSchema(workflowable);
} else {
@@ -164,8 +157,8 @@
* @param document The document.
* @return A workflowable.
*/
- public static Workflowable getWorkflowable(Log logger, Document document) {
- return new DocumentWorkflowable(document, logger);
+ public static Workflowable getWorkflowable(Document document) {
+ return new DocumentWorkflowable(document);
}
}
\ No newline at end of file
Modified: lenya/trunk/org.apache.lenya.core.impl/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/pom.xml?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.core.impl/pom.xml Tue Feb 10 01:34:58 2009
@@ -35,16 +35,24 @@
<dependencies>
<dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.avalon.framework</groupId>
<artifactId>avalon-framework-api</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-core</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.lenya</groupId>
<artifactId>lenya-core-api</artifactId>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-repository</artifactId>
</dependency>
<!-- Tests -->
Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.metadata;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.lenya.cms.repository.metadata.ElementSet;
+import org.apache.lenya.cms.repository.metadata.MetaDataException;
+
+public class ElementSetWrapper implements org.apache.lenya.cms.metadata.ElementSet {
+
+ private org.apache.lenya.cms.repository.metadata.ElementSet delegate;
+ private Map<String, ElementWrapper> elements = new HashMap<String, ElementWrapper>();
+
+ public ElementSetWrapper(ElementSet delegate) {
+ super();
+ this.delegate = delegate;
+ }
+
+ public boolean containsElement(String name) {
+ return this.delegate.containsElement(name);
+ }
+
+ public Element getElement(String name) throws org.apache.lenya.cms.metadata.MetaDataException {
+ ElementWrapper wrapper = this.elements.get(name);
+ if (wrapper == null) {
+ try {
+ wrapper = new ElementWrapper(this.delegate.getElement(name));
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+ this.elements.put(name, wrapper);
+ }
+ return wrapper;
+ }
+
+ public Element[] getElements() {
+ org.apache.lenya.cms.repository.metadata.Element[] elements = this.delegate.getElements();
+ Element[] wrappers = new Element[elements.length];
+ for (int i = 0; i < elements.length; i++) {
+ try {
+ wrappers[i] = getElement(elements[i].getName());
+ } catch (org.apache.lenya.cms.metadata.MetaDataException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return wrappers;
+ }
+
+ public String getNamespaceUri() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.metadata;
+
+import org.apache.lenya.cms.repository.metadata.Element;
+
+public class ElementWrapper implements org.apache.lenya.cms.metadata.Element {
+
+ private org.apache.lenya.cms.repository.metadata.Element delegate;
+
+ public ElementWrapper(Element delegate) {
+ this.delegate = delegate;
+ }
+
+ public int getActionOnCopy() {
+ return this.delegate.getActionOnCopy();
+ }
+
+ public String getDescription() {
+ return this.delegate.getDescription();
+ }
+
+ public String getName() {
+ return this.delegate.getName();
+ }
+
+ public boolean isEditable() {
+ return this.delegate.isEditable();
+ }
+
+ public boolean isMultiple() {
+ return this.delegate.isMultiple();
+ }
+
+ public boolean isSearchable() {
+ return this.delegate.isSearchable();
+ }
+
+}
Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java?rev=742811&r1=742810&r2=742811&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java Tue Feb 10 01:34:58 2009
@@ -19,6 +19,9 @@
import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.excalibur.store.impl.MRUMemoryStore;
+import org.apache.lenya.cms.metadata.CacheableMetaData;
+import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.metadata.MetaDataException;
/**
* Cache for meta data.
Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java?rev=742811&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java Tue Feb 10 01:34:58 2009
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.metadata;
+
+import org.apache.lenya.cms.repository.metadata.MetaDataException;
+
+public class MetaDataWrapper implements MetaData {
+
+ private org.apache.lenya.cms.repository.metadata.MetaData delegate;
+
+ public MetaDataWrapper(org.apache.lenya.cms.repository.metadata.MetaData delegate) {
+ this.delegate = delegate;
+ }
+
+ protected org.apache.lenya.cms.repository.metadata.MetaData getDelegate() {
+ return this.delegate;
+ }
+
+ public void addValue(String key, String value)
+ throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ this.delegate.addValue(key, value);
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+ }
+
+ public void forcedReplaceBy(MetaData other)
+ throws org.apache.lenya.cms.metadata.MetaDataException {
+ MetaDataWrapper wrapper = (MetaDataWrapper) other;
+ try {
+ this.delegate.forcedReplaceBy(wrapper.getDelegate());
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+ }
+
+ public String[] getAvailableKeys() {
+ return this.delegate.getAvailableKeys();
+ }
+
+ private ElementSet elements;
+
+ public ElementSet getElementSet() {
+ if (this.elements == null) {
+ this.elements = new ElementSetWrapper(this.delegate.getElementSet());
+ }
+ return this.elements;
+ }
+
+ public String getFirstValue(String key) throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ return this.delegate.getFirstValue(key);
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+ }
+
+ public long getLastModified() throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ return this.delegate.getLastModified();
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+ }
+
+ public String[] getPossibleKeys() {
+ return this.delegate.getPossibleKeys();
+ }
+
+ public String[] getValues(String key) throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ return this.delegate.getValues(key);
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+ }
+
+ public boolean isValidAttribute(String key) {
+ return this.delegate.isValidAttribute(key);
+ }
+
+ public void removeAllValues(String key) throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ this.delegate.removeAllValues(key);
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+
+ }
+
+ public void replaceBy(MetaData other) throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ MetaDataWrapper wrapper = (MetaDataWrapper) other;
+ this.delegate.replaceBy(wrapper.getDelegate());
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+
+ }
+
+ public void setValue(String key, String value)
+ throws org.apache.lenya.cms.metadata.MetaDataException {
+ try {
+ this.delegate.setValue(key, value);
+ } catch (MetaDataException e) {
+ throw new org.apache.lenya.cms.metadata.MetaDataException(e);
+ }
+
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org