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 2005/04/08 23:45:57 UTC
svn commit: r160622 - in lenya/trunk/src: java/org/apache/lenya/cms/ant/
java/org/apache/lenya/cms/cocoon/source/
java/org/apache/lenya/cms/metadata/dublincore/
java/org/apache/lenya/cms/metadata/usecases/
java/org/apache/lenya/cms/publication/
java/org/apache/lenya/cms/publication/task/
java/org/apache/lenya/cms/repository/ java/org/apache/lenya/cms/site/
java/org/apache/lenya/cms/site/tree/ java/org/apache/lenya/cms/site/usecases/
java/org/apache/lenya/cms/workflow/ java/org/apache/lenya/transaction/
webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/
Author: andreas
Date: Fri Apr 8 14:45:52 2005
New Revision: 160622
URL: http://svn.apache.org/viewcvs?view=rev&rev=160622
Log:
Introduced interfaces Versionable, Lockable, and Identifiable. This makes it easier to add the appropriate functionality to a class. Furthermore, a bug re. recursive deactivation was fixed.
Added:
lenya/trunk/src/java/org/apache/lenya/transaction/Identifiable.java
lenya/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java
lenya/trunk/src/java/org/apache/lenya/transaction/Lockable.java
lenya/trunk/src/java/org/apache/lenya/transaction/Versionable.java
Removed:
lenya/trunk/src/java/org/apache/lenya/transaction/TransactionableFactory.java
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/ant/SetIdentifier.java
lenya/trunk/src/java/org/apache/lenya/cms/ant/WriteDCParametersTask.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java
lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java
lenya/trunk/src/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentityMap.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java
lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java
lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNode.java
lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNodeFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java
lenya/trunk/src/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTree.java
lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowManagerImpl.java
lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java
lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java
lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java
lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
Modified: lenya/trunk/src/java/org/apache/lenya/cms/ant/SetIdentifier.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ant/SetIdentifier.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ant/SetIdentifier.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ant/SetIdentifier.java Fri Apr 8 14:45:52 2005
@@ -82,7 +82,6 @@
public void writeDCIdentifier(Document document) throws DocumentException {
DublinCore dublincore = document.getDublinCore();
dublincore.setValue("identifier", this.documentid);
- dublincore.save();
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/ant/WriteDCParametersTask.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ant/WriteDCParametersTask.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ant/WriteDCParametersTask.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ant/WriteDCParametersTask.java Fri Apr 8 14:45:52 2005
@@ -241,7 +241,6 @@
dc.setValue(DublinCore.ELEMENT_SUBJECT, _subject);
dc.setValue(DublinCore.ELEMENT_PUBLISHER, _publisher);
dc.setValue(DublinCore.ELEMENT_RIGHTS, _rights);
- dc.save();
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/RepositorySource.java Fri Apr 8 14:45:52 2005
@@ -81,11 +81,11 @@
setScheme(scheme);
- if (map.getFactory(Node.TRANSACTIONABLE_TYPE) == null) {
- map.setFactory(Node.TRANSACTIONABLE_TYPE, new SourceNodeFactory(this.manager, logger));
+ if (map.getFactory(Node.IDENTIFIABLE_TYPE) == null) {
+ map.setFactory(Node.IDENTIFIABLE_TYPE, new SourceNodeFactory(this.manager, logger));
}
- this.node = (Node) map.get(Node.TRANSACTIONABLE_TYPE, uri);
+ this.node = (Node) map.get(Node.IDENTIFIABLE_TYPE, uri);
}
@@ -113,11 +113,10 @@
*/
public void delete() {
try {
- if (!this.node.isCheckedOut()) {
- throw new RuntimeException("Cannot delete source [" + getURI()
- + "]: not checked out!");
+ if (!this.node.isLocked()) {
+ throw new RuntimeException("Cannot delete source [" + getURI() + "]: not locked!");
} else {
- this.node.delete();
+ this.identityMap.getUnitOfWork().registerRemoved(this.node);
}
} catch (TransactionException e) {
throw new RuntimeException(e);
@@ -224,22 +223,16 @@
}
}
- /*
- * (non-Javadoc)
+ /**
* @see org.apache.lenya.cms.cocoon.source.TransactionableSource#checkout()
*/
public void checkout() throws TransactionException {
- // TODO Auto-generated method stub
-
}
- /*
- * (non-Javadoc)
+ /**
* @see org.apache.lenya.cms.cocoon.source.TransactionableSource#checkin()
*/
public void checkin() throws TransactionException {
- // TODO Auto-generated method stub
-
}
/**
@@ -278,11 +271,11 @@
}
return false;
}
-
+
public Document getDocument() {
return this.node.getDocument();
}
-
+
public void setDocument(Document document) {
this.node.setDocument(document);
try {
@@ -291,7 +284,7 @@
throw new RuntimeException(e);
}
}
-
+
public void registerDirty() throws TransactionException {
this.identityMap.getUnitOfWork().registerDirty(this.node);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java Fri Apr 8 14:45:52 2005
@@ -347,13 +347,6 @@
static final String TERM_VALID = "valid";
/**
- * Save the meta data.
- *
- * @throws DocumentException if the meta data could not be made persistent.
- */
- void save() throws DocumentException;
-
- /**
* Returns the values for a certain key.
* @param key The key.
* @return An array of strings.
Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java Fri Apr 8 14:45:52 2005
@@ -150,7 +150,7 @@
* Save the meta data.
* @throws DocumentException if the meta data could not be made persistent.
*/
- public void save() throws DocumentException {
+ protected void save() throws DocumentException {
try {
@@ -290,6 +290,7 @@
throw new DocumentException("The key [" + key
+ "] does not refer to a dublin core element or term!");
}
+ save();
}
/**
@@ -312,6 +313,7 @@
throw new DocumentException("The key [" + key
+ "] does not refer to a dublin core element or term!");
}
+ save();
}
/**
@@ -325,6 +327,7 @@
for (int i = 0; i < values.length; i++) {
addValue(key, values[i]);
}
+ save();
}
/**
@@ -356,6 +359,7 @@
throw new DocumentException("The key [" + key
+ "] does not refer to a dublin core element or term!");
}
+ save();
}
/**
@@ -374,6 +378,7 @@
throw new DocumentException("The key [" + key
+ "] does not refer to a dublin core element or term!");
}
+ save();
}
/**
@@ -392,6 +397,7 @@
removeAllValues(key);
addValues(key, other.getValues(key));
}
+ save();
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/metadata/usecases/Metadata.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/usecases/Metadata.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/usecases/Metadata.java Fri Apr 8 14:45:52 2005
@@ -110,7 +110,6 @@
this.dc.setValue(DublinCore.ELEMENT_SUBJECT, subject);
this.dc.setValue(DublinCore.ELEMENT_PUBLISHER, publisher);
this.dc.setValue(DublinCore.ELEMENT_RIGHTS, rights);
- this.dc.save();
//TODO set workflow situation to edit here.
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultDocument.java Fri Apr 8 14:45:52 2005
@@ -37,7 +37,6 @@
import org.apache.lenya.cms.workflow.History;
import org.apache.lenya.transaction.Lock;
import org.apache.lenya.transaction.TransactionException;
-import org.apache.lenya.transaction.Transactionable;
import org.apache.lenya.workflow.Situation;
import org.apache.lenya.workflow.Version;
import org.apache.lenya.workflow.Workflow;
@@ -46,7 +45,7 @@
/**
* A typical CMS document.
*/
-public class DefaultDocument extends AbstractLogEnabled implements Document, Transactionable {
+public class DefaultDocument extends AbstractLogEnabled implements Document {
private String id;
private DublinCore dublincore;
@@ -437,35 +436,26 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#save()
+ * @see org.apache.lenya.cms.publication.Document#delete()
*/
- public void save() throws TransactionException {
+ public void delete() throws DocumentException {
try {
- getDublinCore().save();
+ SourceUtil.delete(getSourceURI(), this.manager);
+ if (getArea().equals(Publication.AUTHORING_AREA)) {
+ SourceUtil.delete(getHistory().getSourceURI(), this.manager);
+ }
} catch (Exception e) {
- throw new TransactionException(e);
+ throw new DocumentException(e);
}
}
- /**
- * @see org.apache.lenya.transaction.Transactionable#delete()
- */
- public void delete() throws TransactionException {
- }
+ protected static final String IDENTIFIABLE_TYPE = "document";
/**
- * @see org.apache.lenya.transaction.Transactionable#create()
+ * @see org.apache.lenya.transaction.Identifiable#getIdentifiableType()
*/
- public void create() throws TransactionException {
- }
-
- protected static final String TRANSACTIONABLE_TYPE = "document";
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#getTransactionableType()
- */
- public String getTransactionableType() {
- return TRANSACTIONABLE_TYPE;
+ public String getIdentifiableType() {
+ return IDENTIFIABLE_TYPE;
}
/**
@@ -477,26 +467,7 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#checkin()
- */
- public void checkin() throws TransactionException {
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#checkout()
- */
- public void checkout() throws TransactionException {
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#isCheckedOut()
- */
- public boolean isCheckedOut() throws TransactionException {
- return false;
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#lock()
+ * @see org.apache.lenya.transaction.Lockable#lock()
*/
public void lock() throws TransactionException {
SourceUtil.lock(getSourceURI(), this.manager);
@@ -504,30 +475,23 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#getLock()
+ * @see org.apache.lenya.transaction.Lockable#getLock()
*/
public Lock getLock() {
return null;
}
/**
- * @see org.apache.lenya.transaction.Transactionable#unlock()
+ * @see org.apache.lenya.transaction.Lockable#unlock()
*/
public void unlock() throws TransactionException {
SourceUtil.unlock(getSourceURI(), this.manager);
}
/**
- * @see org.apache.lenya.transaction.Transactionable#isLocked()
+ * @see org.apache.lenya.transaction.Lockable#isLocked()
*/
public boolean isLocked() throws TransactionException {
- return false;
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#hasChanged()
- */
- public boolean hasChanged() throws TransactionException {
return false;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DefaultResourcesManager.java Fri Apr 8 14:45:52 2005
@@ -102,6 +102,7 @@
/**
* Create a new instance of Resources.
* @param _document the document for which the resources are managed
+ * @param manager The service manager.
*/
public DefaultResourcesManager(Document _document, ServiceManager manager) {
this.document = _document;
@@ -233,7 +234,6 @@
value = (String) entry.getValue();
dc.setValue(key, value);
}
- dc.save();
} catch (final Exception e) {
getLogger().error("Saving of [" + metaDataFile + "] �failed.");
throw new DocumentException(e);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/Document.java Fri Apr 8 14:45:52 2005
@@ -24,13 +24,14 @@
import org.apache.lenya.cms.metadata.dublincore.DublinCore;
import org.apache.lenya.cms.publication.util.DocumentVisitor;
-import org.apache.lenya.transaction.Transactionable;
+import org.apache.lenya.transaction.Identifiable;
+import org.apache.lenya.transaction.Lockable;
import org.apache.lenya.workflow.Workflowable;
/**
* A CMS document.
*/
-public interface Document extends Workflowable, Transactionable {
+public interface Document extends Workflowable, Identifiable, Lockable {
/**
* The document namespace URI.
@@ -188,5 +189,10 @@
* @throws PublicationException if an error occurs.
*/
void accept(DocumentVisitor visitor) throws PublicationException;
-
+
+ /**
+ * Deletes the document.
+ * @throws DocumentException if an error occurs.
+ */
+ void delete() throws DocumentException;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java Fri Apr 8 14:45:52 2005
@@ -24,14 +24,14 @@
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.SourceUtil;
+import org.apache.lenya.transaction.Identifiable;
import org.apache.lenya.transaction.IdentityMap;
-import org.apache.lenya.transaction.Transactionable;
-import org.apache.lenya.transaction.TransactionableFactory;
+import org.apache.lenya.transaction.IdentifiableFactory;
/**
* Document factory.
*/
-public class DocumentFactory extends AbstractLogEnabled implements TransactionableFactory {
+public class DocumentFactory extends AbstractLogEnabled implements IdentifiableFactory {
protected ServiceManager manager;
@@ -102,10 +102,10 @@
}
/**
- * @see org.apache.lenya.transaction.TransactionableFactory#build(org.apache.lenya.transaction.IdentityMap,
+ * @see org.apache.lenya.transaction.IdentifiableFactory#build(org.apache.lenya.transaction.IdentityMap,
* java.lang.String)
*/
- public Transactionable build(IdentityMap map, String key) throws Exception {
+ public Identifiable build(IdentityMap map, String key) throws Exception {
String[] snippets = key.split(":");
String publicationId = snippets[0];
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentityMap.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentityMap.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentityMap.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentIdentityMap.java Fri Apr 8 14:45:52 2005
@@ -26,7 +26,7 @@
import org.apache.lenya.cms.publication.DocumentBuilder;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.transaction.IdentityMapImpl;
-import org.apache.lenya.transaction.TransactionableFactory;
+import org.apache.lenya.transaction.IdentifiableFactory;
/**
* A DocumentIdentityMap avoids the multiple instanciation of a document object.
@@ -48,8 +48,8 @@
/**
* @see org.apache.lenya.transaction.IdentityMap#getFactory(java.lang.String)
*/
- public TransactionableFactory getFactory(String type) {
- TransactionableFactory factory = super.getFactory(type);
+ public IdentifiableFactory getFactory(String type) {
+ IdentifiableFactory factory = super.getFactory(type);
if (factory == null && type.equals(Document.TRANSACTIONABLE_TYPE)) {
factory = new DocumentFactory(this.manager);
ContainerUtil.enableLogging(factory, getLogger());
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java Fri Apr 8 14:45:52 2005
@@ -140,8 +140,7 @@
siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
siteManager.delete(document);
- UnitOfWork unit = document.getIdentityMap().getUnitOfWork();
- unit.registerRemoved(document);
+ document.delete();
} catch (Exception e) {
throw new PublicationException(e);
} finally {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/task/PublicationTask.java Fri Apr 8 14:45:52 2005
@@ -41,7 +41,7 @@
import org.apache.lenya.cms.task.Task;
import org.apache.lenya.cms.workflow.WorkflowManager;
import org.apache.lenya.cms.workflow.WorkflowResolver;
-import org.apache.lenya.transaction.TransactionableFactory;
+import org.apache.lenya.transaction.IdentifiableFactory;
import org.apache.lenya.workflow.Situation;
import org.apache.log4j.Logger;
@@ -240,17 +240,17 @@
protected SiteTree getSiteTree1(String area) {
try {
- TransactionableFactory factory = getIdentityMap()
- .getFactory(SiteTree.TRANSACTIONABLE_TYPE);
+ IdentifiableFactory factory = getIdentityMap()
+ .getFactory(SiteTree.IDENTIFIABLE_TYPE);
if (factory == null) {
factory = new SiteTreeFactory(getServiceManager());
ContainerUtil.enableLogging(factory, new ConsoleLogger());
- getIdentityMap().setFactory(SiteTree.TRANSACTIONABLE_TYPE, factory);
+ getIdentityMap().setFactory(SiteTree.IDENTIFIABLE_TYPE, factory);
}
String key = getPublication().getId() + ":" + area;
- return (SiteTree) getIdentityMap().get(SiteTree.TRANSACTIONABLE_TYPE, key);
+ return (SiteTree) getIdentityMap().get(SiteTree.IDENTIFIABLE_TYPE, key);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java Fri Apr 8 14:45:52 2005
@@ -1,8 +1,18 @@
/*
- * Created on 06.04.2005
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
*/
package org.apache.lenya.cms.repository;
@@ -11,19 +21,31 @@
import org.w3c.dom.Document;
/**
- * @author nobby
+ * Repository node.
*
- * TODO To change the template for this generated type comment go to
- * Window - Preferences - Java - Code Style - Code Templates
+ * @version $Id:$
*/
public interface Node extends Transactionable {
+ /**
+ * @return The DOM that holds the information.
+ */
Document getDocument();
+ /**
+ * @param document The DOM that holds the information.
+ */
void setDocument(Document document);
- String TRANSACTIONABLE_TYPE = "node";
+ /**
+ * The identifiable type.
+ */
+ String IDENTIFIABLE_TYPE = "node";
+ /**
+ * @return if the node exists.
+ * @throws TransactionException if an error occurs.
+ */
boolean exists() throws TransactionException;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNode.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNode.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNode.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNode.java Fri Apr 8 14:45:52 2005
@@ -1,8 +1,18 @@
/*
- * Created on 06.04.2005
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
*/
package org.apache.lenya.cms.repository;
@@ -136,9 +146,9 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#delete()
+ * @see org.apache.lenya.transaction.Transactionable#deleteTransactionable()
*/
- public void delete() throws TransactionException {
+ public void deleteTransactionable() throws TransactionException {
try {
if (!isCheckedOut()) {
throw new RuntimeException("Cannot delete source [" + this.sourceUri
@@ -210,9 +220,9 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#save()
+ * @see org.apache.lenya.transaction.Transactionable#saveTransactionable()
*/
- public void save() throws TransactionException {
+ public void saveTransactionable() throws TransactionException {
if (!isCheckedOut()) {
throw new TransactionException("Cannot save node [" + this.sourceUri
+ "]: not checked out!");
@@ -229,9 +239,9 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#create()
+ * @see org.apache.lenya.transaction.Transactionable#createTransactionable()
*/
- public void create() throws TransactionException {
+ public void createTransactionable() throws TransactionException {
}
/**
@@ -274,10 +284,10 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#getTransactionableType()
+ * @see org.apache.lenya.transaction.Identifiable#getIdentifiableType()
*/
- public String getTransactionableType() {
- return Node.TRANSACTIONABLE_TYPE;
+ public String getIdentifiableType() {
+ return Node.IDENTIFIABLE_TYPE;
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNodeFactory.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNodeFactory.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNodeFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/repository/SourceNodeFactory.java Fri Apr 8 14:45:52 2005
@@ -1,25 +1,34 @@
/*
- * Created on 06.04.2005
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
*/
package org.apache.lenya.cms.repository;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.lenya.transaction.Identifiable;
import org.apache.lenya.transaction.IdentityMap;
-import org.apache.lenya.transaction.Transactionable;
-import org.apache.lenya.transaction.TransactionableFactory;
+import org.apache.lenya.transaction.IdentifiableFactory;
/**
- * @author nobby
+ * Factory to create source nodes.
*
- * TODO To change the template for this generated type comment go to
- * Window - Preferences - Java - Code Style - Code Templates
+ * @version $Id:$
*/
-public class SourceNodeFactory extends AbstractLogEnabled implements TransactionableFactory {
+public class SourceNodeFactory extends AbstractLogEnabled implements IdentifiableFactory {
private ServiceManager manager;
@@ -34,9 +43,9 @@
}
/**
- * @see org.apache.lenya.transaction.TransactionableFactory#build(org.apache.lenya.transaction.IdentityMap, java.lang.String)
+ * @see org.apache.lenya.transaction.IdentifiableFactory#build(org.apache.lenya.transaction.IdentityMap, java.lang.String)
*/
- public Transactionable build(IdentityMap map, String key) throws Exception {
+ public Identifiable build(IdentityMap map, String key) throws Exception {
return new SourceNode(map, key, this.manager, getLogger());
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteStructure.java Fri Apr 8 14:45:52 2005
@@ -16,13 +16,14 @@
*/
package org.apache.lenya.cms.site;
-import org.apache.lenya.transaction.Transactionable;
+import org.apache.lenya.transaction.Identifiable;
+import org.apache.lenya.transaction.Lockable;
/**
* Object to hold a site structure information.
*
* @version $Id:$
*/
-public interface SiteStructure extends Transactionable {
+public interface SiteStructure extends Identifiable, Lockable {
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java Fri Apr 8 14:45:52 2005
@@ -31,7 +31,6 @@
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.site.Label;
import org.apache.lenya.cms.site.SiteException;
-import org.apache.lenya.transaction.IdentityMap;
import org.apache.lenya.transaction.Lock;
import org.apache.lenya.transaction.TransactionException;
import org.apache.lenya.xml.DocumentHelper;
@@ -64,20 +63,14 @@
// the area is only retained to provide some more info when raising an
// exception.
private String area = "";
- private IdentityMap identityMap;
- private Publication publication;
protected ServiceManager manager;
- protected void setup(IdentityMap map, Publication publication) {
- this.identityMap = map;
- this.publication = publication;
- }
-
/**
* Create a DefaultSiteTree
- * @param pubDir the publication directory
- * @param _area the area
- * @throws SiteException if an error occurs
+ * @param publication The publication.
+ * @param _area The area.
+ * @param manager The service manager.
+ * @throws SiteException if an error occurs.
*/
protected DefaultSiteTree(Publication publication, String _area, ServiceManager manager)
throws SiteException {
@@ -87,8 +80,6 @@
this.manager = manager;
}
- private long lastModified = 0;
-
protected Document load() throws SiteException {
try {
Document document = SourceUtil.readDOM(this.sourceUri, this.manager);
@@ -520,12 +511,6 @@
}
/**
- * @see org.apache.lenya.cms.site.tree.SiteTree#save()
- */
- public synchronized void save() throws TransactionException {
- }
-
- /**
* @see org.apache.lenya.cms.site.tree.SiteTree#setLabel(java.lang.String,
* org.apache.lenya.cms.site.Label)
*/
@@ -538,76 +523,44 @@
}
/**
- * @see org.apache.lenya.transaction.Transactionable#checkin()
- */
- public void checkin() throws TransactionException {
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#checkout()
- */
- public void checkout() throws TransactionException {
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#lock()
+ * @see org.apache.lenya.transaction.Lockable#lock()
*/
public void lock() throws TransactionException {
SourceUtil.lock(this.sourceUri, this.manager);
}
/**
- * @see org.apache.lenya.transaction.Transactionable#unlock()
+ * @see org.apache.lenya.transaction.Lockable#unlock()
*/
public void unlock() throws TransactionException {
SourceUtil.unlock(this.sourceUri, this.manager);
}
/**
- * @see org.apache.lenya.transaction.Transactionable#isLocked()
+ * @see org.apache.lenya.transaction.Lockable#isLocked()
*/
public boolean isLocked() throws TransactionException {
return false;
}
/**
- * @see org.apache.lenya.transaction.Transactionable#getTransactionableType()
+ * @see org.apache.lenya.transaction.Identifiable#getIdentifiableType()
*/
- public String getTransactionableType() {
- return SiteTree.TRANSACTIONABLE_TYPE;
+ public String getIdentifiableType() {
+ return SiteTree.IDENTIFIABLE_TYPE;
}
/**
- * @see org.apache.lenya.transaction.Transactionable#delete()
- */
- public void delete() throws TransactionException {
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#create()
- */
- public void create() throws TransactionException {
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#getLock()
+ * @see org.apache.lenya.transaction.Lockable#getLock()
*/
public Lock getLock() {
return null;
}
/**
- * @see org.apache.lenya.transaction.Transactionable#hasChanged()
- */
- public boolean hasChanged() throws TransactionException {
- return false;
- }
-
- /**
- * @see org.apache.lenya.transaction.Transactionable#isCheckedOut()
+ * @see org.apache.lenya.cms.site.tree.SiteTree#save()
*/
- public boolean isCheckedOut() throws TransactionException {
- return false;
+ public void save() throws TransactionException {
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTree.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTree.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTree.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTree.java Fri Apr 8 14:45:52 2005
@@ -20,6 +20,7 @@
import org.apache.lenya.cms.site.Label;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteStructure;
+import org.apache.lenya.transaction.TransactionException;
/**
* A sitetree.
@@ -29,9 +30,9 @@
public interface SiteTree extends SiteStructure {
/**
- * The type of sitetree transactionable objects.
+ * The type of sitetree identifiable objects.
*/
- String TRANSACTIONABLE_TYPE = "site";
+ String IDENTIFIABLE_TYPE = "site";
/**
* Add a node.
@@ -209,5 +210,10 @@
*/
void importSubtree(SiteTreeNode subtreeRoot, SiteTreeNode newParent, String newid,
String refDocumentId) throws SiteException;
+
+ /**
+ * @deprecated Superceded by transactions.
+ */
+ void save() throws TransactionException;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java Fri Apr 8 14:45:52 2005
@@ -26,16 +26,16 @@
import org.apache.excalibur.source.SourceUtil;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.PublicationFactory;
+import org.apache.lenya.transaction.Identifiable;
import org.apache.lenya.transaction.IdentityMap;
-import org.apache.lenya.transaction.Transactionable;
-import org.apache.lenya.transaction.TransactionableFactory;
+import org.apache.lenya.transaction.IdentifiableFactory;
/**
* Factory for sitetree objects.
*
* @version $Id:$
*/
-public class SiteTreeFactory extends AbstractLogEnabled implements TransactionableFactory {
+public class SiteTreeFactory extends AbstractLogEnabled implements IdentifiableFactory {
protected ServiceManager manager;
@@ -48,10 +48,10 @@
}
/**
- * @see org.apache.lenya.transaction.TransactionableFactory#build(org.apache.lenya.transaction.IdentityMap,
+ * @see org.apache.lenya.transaction.IdentifiableFactory#build(org.apache.lenya.transaction.IdentityMap,
* java.lang.String)
*/
- public Transactionable build(IdentityMap map, String key) throws Exception {
+ public Identifiable build(IdentityMap map, String key) throws Exception {
String[] snippets = key.split(":");
String publicationId = snippets[0];
String area = snippets[1];
@@ -69,7 +69,6 @@
.getAbsolutePath());
tree = new DefaultSiteTree(publication, area, this.manager);
- tree.setup(map, publication);
ContainerUtil.enableLogging(tree, getLogger());
} finally {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java Fri Apr 8 14:45:52 2005
@@ -33,8 +33,7 @@
import org.apache.lenya.cms.site.Label;
import org.apache.lenya.cms.site.SiteException;
import org.apache.lenya.cms.site.SiteStructure;
-import org.apache.lenya.transaction.TransactionException;
-import org.apache.lenya.transaction.TransactionableFactory;
+import org.apache.lenya.transaction.IdentifiableFactory;
/**
* A tree-based site manager.
@@ -64,13 +63,13 @@
String key = getKey(publication, area);
DefaultSiteTree sitetree;
- TransactionableFactory factory = map.getFactory(SiteTree.TRANSACTIONABLE_TYPE);
+ IdentifiableFactory factory = map.getFactory(SiteTree.IDENTIFIABLE_TYPE);
if (factory == null) {
factory = new SiteTreeFactory(this.manager);
ContainerUtil.enableLogging(factory, getLogger());
- map.setFactory(SiteTree.TRANSACTIONABLE_TYPE, factory);
+ map.setFactory(SiteTree.IDENTIFIABLE_TYPE, factory);
}
- sitetree = (DefaultSiteTree) map.get(SiteTree.TRANSACTIONABLE_TYPE, key);
+ sitetree = (DefaultSiteTree) map.get(SiteTree.IDENTIFIABLE_TYPE, key);
return sitetree;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Create.java Fri Apr 8 14:45:52 2005
@@ -172,7 +172,6 @@
dublinCore.setValue(DublinCore.ELEMENT_RIGHTS,
getParameterAsString(DublinCore.ELEMENT_RIGHTS));
dublinCore.setValue(DublinCore.ELEMENT_LANGUAGE, getParameterAsString(LANGUAGE));
- dublinCore.save();
}
/**
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Nudge.java Fri Apr 8 14:45:52 2005
@@ -113,7 +113,6 @@
} else if (direction.equals(DOWN)) {
tree.moveDown(getSourceDocument().getId());
}
- tree.save();
}
} catch (Exception e) {
throw new RuntimeException(e);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowManagerImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowManagerImpl.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowManagerImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowManagerImpl.java Fri Apr 8 14:45:52 2005
@@ -216,29 +216,17 @@
*/
public void deleteHistory(Document sourceDocument) throws WorkflowException {
WorkflowResolver resolver = null;
- SourceResolver sourceResolver = null;
- Source historySource = null;
try {
resolver = (WorkflowResolver) this.manager.lookup(WorkflowResolver.ROLE);
if (resolver.hasWorkflow(sourceDocument)) {
- sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
- String uri = ((DefaultDocument) sourceDocument).getHistory().getSourceURI();
- historySource = sourceResolver.resolveURI(uri);
- if (historySource.exists()) {
- ((ModifiableSource) historySource).delete();
- }
+ SourceUtil.delete(((DefaultDocument) sourceDocument).getHistory().getSourceURI(),
+ this.manager);
}
} catch (Exception e) {
throw new WorkflowException(e);
} finally {
if (resolver != null) {
this.manager.release(resolver);
- }
- if (sourceResolver != null) {
- if (historySource != null) {
- sourceResolver.release(historySource);
- }
- this.manager.release(sourceResolver);
}
}
}
Added: lenya/trunk/src/java/org/apache/lenya/transaction/Identifiable.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/Identifiable.java?view=auto&rev=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/Identifiable.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/Identifiable.java Fri Apr 8 14:45:52 2005
@@ -0,0 +1,22 @@
+/*
+ * Created on 08.04.2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.lenya.transaction;
+
+/**
+ * @author nobby
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public interface Identifiable {
+
+ /**
+ * @return The type of the identifiable.
+ */
+ String getIdentifiableType();
+
+}
Added: lenya/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java?view=auto&rev=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/IdentifiableFactory.java Fri Apr 8 14:45:52 2005
@@ -0,0 +1,35 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.lenya.transaction;
+
+/**
+ * Factory for transactionables.
+ *
+ * @version $Id:$
+ */
+public interface IdentifiableFactory {
+
+ /**
+ * Builds an identifiable.
+ * @param map The identity map.
+ * @param key The key.
+ * @return A transactionable.
+ * @throws Exception if an error occurs.
+ */
+ Identifiable build(IdentityMap map, String key) throws Exception;
+
+}
Modified: lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMap.java Fri Apr 8 14:45:52 2005
@@ -28,20 +28,20 @@
* @param key The key for the transactionable.
* @return A transcationable.
*/
- Transactionable get(String type, String key);
+ Identifiable get(String type, String key);
/**
* Sets the factory.
* @param type The transactionable type to use the factory for.
* @param factory The factory to use.
*/
- void setFactory(String type, TransactionableFactory factory);
+ void setFactory(String type, IdentifiableFactory factory);
/**
* @param type The type to return the factory for.
* @return The factory.
*/
- TransactionableFactory getFactory(String type);
+ IdentifiableFactory getFactory(String type);
/**
* Returns the unit of work. This maybe <code>null</code> if the identity map is not involved
@@ -58,6 +58,6 @@
/**
* @return All objects in this map.
*/
- Transactionable[] getObjects();
+ Identifiable[] getObjects();
}
Modified: lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/IdentityMapImpl.java Fri Apr 8 14:45:52 2005
@@ -36,39 +36,39 @@
/**
* @see org.apache.lenya.transaction.IdentityMap#get(java.lang.String, java.lang.String)
*/
- public Transactionable get(String type, String key) {
+ public Identifiable get(String type, String key) {
Map map = (Map) this.maps.get(type);
if (map == null) {
map = new HashMap();
this.maps.put(type, map);
}
- Transactionable transactionable = (Transactionable) map.get(key);
- if (transactionable == null) {
+ Identifiable object = (Identifiable) map.get(key);
+ if (object == null) {
try {
- transactionable = getFactory(type).build(this, key);
+ object = getFactory(type).build(this, key);
} catch (Exception e) {
throw new RuntimeException(e);
}
- map.put(key, transactionable);
+ map.put(key, object);
}
- return transactionable;
+ return object;
}
private Map factories = new HashMap();
/**
* @see org.apache.lenya.transaction.IdentityMap#setFactory(java.lang.String,
- * org.apache.lenya.transaction.TransactionableFactory)
+ * org.apache.lenya.transaction.IdentifiableFactory)
*/
- public void setFactory(String type, TransactionableFactory factory) {
+ public void setFactory(String type, IdentifiableFactory factory) {
this.factories.put(type, factory);
}
/**
* @see org.apache.lenya.transaction.IdentityMap#getFactory(java.lang.String)
*/
- public TransactionableFactory getFactory(String type) {
- return (TransactionableFactory) this.factories.get(type);
+ public IdentifiableFactory getFactory(String type) {
+ return (IdentifiableFactory) this.factories.get(type);
}
private UnitOfWork unitOfWork;
@@ -90,7 +90,7 @@
/**
* @see org.apache.lenya.transaction.IdentityMap#getObjects()
*/
- public Transactionable[] getObjects() {
+ public Identifiable[] getObjects() {
Set objects = new HashSet();
for (Iterator i = this.maps.values().iterator(); i.hasNext(); ) {
Map map = (Map) i.next();
@@ -98,7 +98,7 @@
objects.add(j.next());
}
}
- return (Transactionable[]) objects.toArray(new Transactionable[objects.size()]);
+ return (Identifiable[]) objects.toArray(new Identifiable[objects.size()]);
}
}
Added: lenya/trunk/src/java/org/apache/lenya/transaction/Lockable.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/Lockable.java?view=auto&rev=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/Lockable.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/Lockable.java Fri Apr 8 14:45:52 2005
@@ -0,0 +1,49 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.lenya.transaction;
+
+/**
+ * Object that can be locked.
+ *
+ * @version $Id:$
+ */
+public interface Lockable {
+
+ /**
+ * Locks this object.
+ * @throws TransactionException if an error occurs.
+ */
+ void lock() throws TransactionException;
+
+ /**
+ * Unlocks this object.
+ * @throws TransactionException if an error occurs.
+ */
+ void unlock() throws TransactionException;
+
+ /**
+ * @return if this object is locked.
+ * @throws TransactionException if an error occurs.
+ */
+ boolean isLocked() throws TransactionException;
+
+ /**
+ * @return The lock which is held by this object.
+ */
+ Lock getLock();
+
+}
\ No newline at end of file
Modified: lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/Transactionable.java Fri Apr 8 14:45:52 2005
@@ -21,77 +21,24 @@
*
* @version $Id:$
*/
-public interface Transactionable {
+public interface Transactionable extends Identifiable, Versionable {
/**
* Saves the object.
* @throws TransactionException if an error occurs.
*/
- void save() throws TransactionException;
+ void saveTransactionable() throws TransactionException;
/**
* Deletes the object.
* @throws TransactionException if an error occurs.
*/
- void delete() throws TransactionException;
+ void deleteTransactionable() throws TransactionException;
/**
* Creates the object.
* @throws TransactionException if an error occurs.
*/
- void create() throws TransactionException;
-
- /**
- * Checks the object in.
- * @throws TransactionException if an error occurs.
- */
- void checkin() throws TransactionException;
-
- /**
- * Checks the object out.
- * @throws TransactionException if an error occurs.
- */
- void checkout() throws TransactionException;
-
- /**
- * @return if the object is checked out.
- * @throws TransactionException if an error occurs.
- */
- boolean isCheckedOut() throws TransactionException;
-
- /**
- * Locks this object.
- * @throws TransactionException if an error occurs.
- */
- void lock() throws TransactionException;
-
- /**
- * @return The lock which is held by this object.
- */
- Lock getLock();
-
- /**
- * Unlocks this object.
- * @throws TransactionException if an error occurs.
- */
- void unlock() throws TransactionException;
-
- /**
- * @return if this object is locked.
- * @throws TransactionException if an error occurs.
- */
- boolean isLocked() throws TransactionException;
-
- /**
- * @return The type of the transactionable.
- */
- String getTransactionableType();
-
- /**
- * Checks if the transactionable has been changed since it has been locked.
- * @return A boolean value.
- * @throws TransactionException if an error occurs.
- */
- boolean hasChanged() throws TransactionException;
+ void createTransactionable() throws TransactionException;
}
Modified: lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/UnitOfWorkImpl.java Fri Apr 8 14:45:52 2005
@@ -116,19 +116,19 @@
for (Iterator i = this.newObjects.iterator(); i.hasNext();) {
Transactionable t = (Transactionable) i.next();
- t.create();
- t.save();
+ t.createTransactionable();
+ t.saveTransactionable();
}
for (Iterator i = this.modifiedObjects.iterator(); i.hasNext();) {
Transactionable t = (Transactionable) i.next();
if (getLogger().isDebugEnabled()) {
getLogger().debug("save [" + t + "]");
}
- t.save();
+ t.saveTransactionable();
}
for (Iterator i = this.removedObjects.iterator(); i.hasNext();) {
Transactionable t = (Transactionable) i.next();
- t.delete();
+ t.deleteTransactionable();
}
for (Iterator i = involvedObjects.iterator(); i.hasNext();) {
@@ -139,14 +139,14 @@
}
if (getIdentityMap() != null) {
- Transactionable[] objects = getIdentityMap().getObjects();
+ Identifiable[] objects = getIdentityMap().getObjects();
for (int i = 0; i < objects.length; i++) {
- if (objects[i].isLocked()) {
- objects[i].unlock();
+ if (objects[i] instanceof Transactionable
+ && ((Transactionable) objects[i]).isLocked()) {
+ ((Transactionable) objects[i]).unlock();
}
}
}
-
}
private Identity identity;
Added: lenya/trunk/src/java/org/apache/lenya/transaction/Versionable.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/transaction/Versionable.java?view=auto&rev=160622
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/transaction/Versionable.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/transaction/Versionable.java Fri Apr 8 14:45:52 2005
@@ -0,0 +1,51 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.lenya.transaction;
+
+/**
+ * A versionable object.
+ *
+ * @version $Id:$
+ */
+public interface Versionable extends Lockable {
+
+ /**
+ * Checks the object in.
+ * @throws TransactionException if an error occurs.
+ */
+ void checkin() throws TransactionException;
+
+ /**
+ * Checks the object out.
+ * @throws TransactionException if an error occurs.
+ */
+ void checkout() throws TransactionException;
+
+ /**
+ * @return if the object is checked out.
+ * @throws TransactionException if an error occurs.
+ */
+ boolean isCheckedOut() throws TransactionException;
+
+ /**
+ * Checks if the object has been changed since it has been locked.
+ * @return A boolean value.
+ * @throws TransactionException if an error occurs.
+ */
+ boolean hasChanged() throws TransactionException;
+
+}
\ No newline at end of file
Modified: lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java?view=diff&r1=160621&r2=160622
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/java/src/org/apache/lenya/defaultpub/cms/usecases/Deactivate.java Fri Apr 8 14:45:52 2005
@@ -27,6 +27,7 @@
import org.apache.lenya.cms.publication.util.DocumentVisitor;
import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.usecase.DocumentUsecase;
+import org.apache.lenya.cms.usecase.UsecaseException;
import org.apache.lenya.cms.workflow.WorkflowManager;
import org.apache.lenya.workflow.WorkflowException;
@@ -45,7 +46,7 @@
*/
protected void doCheckPreconditions() throws Exception {
super.doCheckPreconditions();
-
+
if (getErrorMessages().isEmpty()) {
if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
@@ -73,7 +74,8 @@
// get involved objects to lock them
Document doc = getSourceDocument();
try {
- Document liveVersion = doc.getIdentityMap().getAreaVersion(doc, Publication.LIVE_AREA);
+ Document liveVersion = doc.getIdentityMap().getAreaVersion(doc,
+ Publication.LIVE_AREA);
getInvolvedDocuments(liveVersion);
} catch (DocumentBuildException e) {
throw new RuntimeException(e);
@@ -82,6 +84,41 @@
}
/**
+ * @see org.apache.lenya.cms.usecase.Usecase#lockInvolvedObjects()
+ */
+ public void lockInvolvedObjects() throws UsecaseException {
+ super.lockInvolvedObjects();
+
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ Document doc = getSourceDocument();
+ Document liveVersion = doc.getIdentityMap().getAreaVersion(doc, Publication.LIVE_AREA);
+ DocumentSet set = getInvolvedDocuments(liveVersion);
+ Document[] documents = set.getDocuments();
+ for (int i = 0; i < documents.length; i++) {
+ documents[i].lock();
+ }
+
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
+ siteManager = (SiteManager) selector.select(doc.getPublication().getSiteManagerHint());
+ siteManager.getSiteStructure(doc.getIdentityMap(),
+ doc.getPublication(),
+ Publication.LIVE_AREA).lock();
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
+ }
+ }
+
+ /**
* @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
*/
protected void doExecute() throws Exception {
@@ -228,10 +265,8 @@
for (int i = 0; i < languages.length; i++) {
Document version = document.getIdentityMap().getLanguageVersion(document,
languages[i]);
- if (version.exists()) {
- if (wfManager.canInvoke(getSourceDocument(), getEvent())) {
- deactivate(version);
- }
+ if (version.exists() && wfManager.canInvoke(version, getEvent())) {
+ deactivate(version);
}
}
} catch (ServiceException e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org