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);
+ }
+
+ }
+
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.