-rename core.repository in core.repository.impl
git-svn-id: https://svn.apache.org/repos/asf/lenya/trunk@1034452 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.lenya.core.repository/pom.xml b/org.apache.lenya.core.repository.impl/pom.xml
similarity index 87%
rename from org.apache.lenya.core.repository/pom.xml
rename to org.apache.lenya.core.repository.impl/pom.xml
index 57a1562..702a9ce 100644
--- a/org.apache.lenya.core.repository/pom.xml
+++ b/org.apache.lenya.core.repository.impl/pom.xml
@@ -11,7 +11,7 @@
<relativePath>../org.apache.lenya.parent/pom.xml</relativePath>
</parent>
<groupId>org.apache.lenya</groupId>
- <artifactId>lenya-core-repository</artifactId>
+ <artifactId>lenya-core-repository-impl</artifactId>
<packaging>jar</packaging>
<name>Apache Lenya Core Repository API</name>
<dependencies>
@@ -23,6 +23,10 @@
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-util</artifactId>
+ </dependency>
<!-- TODO: remove dependencies on Avalon and Excalibur -->
<dependency>
<groupId>org.apache.avalon.framework</groupId>
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/ObservationException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/ObservationException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/ObservationException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/ObservationException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/ObservationRegistry.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/ObservationRegistry.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/ObservationRegistry.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/ObservationRegistry.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEvent.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryEvent.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEvent.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryEvent.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEventDescriptor.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryEventDescriptor.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryEventDescriptor.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryEventDescriptor.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryListener.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryListener.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/observation/RepositoryListener.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/observation/RepositoryListener.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/CheckInEntry.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/CheckInEntry.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/CheckInEntry.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/CheckInEntry.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/CheckOutEntry.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/CheckOutEntry.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/CheckOutEntry.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/CheckOutEntry.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckInException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/FileReservedCheckOutException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCEnvironment.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RCEnvironment.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCEnvironment.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RCEnvironment.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCML.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RCML.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCML.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RCML.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCMLEntry.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RCMLEntry.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RCMLEntry.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RCMLEntry.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RevisionControlException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RevisionControlException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/rc/RevisionControlException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/rc/RevisionControlException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/ContentHolder.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/ContentHolder.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/ContentHolder.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/ContentHolder.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/History.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/History.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/History.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/History.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/LenyaUUIDGenerator.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/LenyaUUIDGenerator.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/LenyaUUIDGenerator.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/LenyaUUIDGenerator.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Node.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Node.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Node.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Node.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/NodeFactory.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/NodeFactory.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/NodeFactory.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/NodeFactory.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Persistable.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Persistable.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Persistable.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Persistable.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItem.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryItem.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItem.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryItem.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactory.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryItemFactoryWrapper.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManager.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryManager.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManager.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryManager.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/RepositoryManagerImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Revision.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Revision.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Revision.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Revision.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Session.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/Session.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/Session.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SessionHolder.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SessionImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SharedItemStore.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SharedItemStore.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SharedItemStore.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SharedItemStore.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/SharedItemStoreImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/UUIDGenerator.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/UUIDGenerator.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/UUIDGenerator.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/UUIDGenerator.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/Element.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/Element.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/Element.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/Element.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/ElementSet.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/ElementSet.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/ElementSet.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/ElementSet.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaData.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaData.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaData.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaData.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataOwner.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataOwner.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataOwner.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataOwner.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistry.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistry.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistry.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/MetaDataRegistry.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ConfigurableElementSet.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ConfigurableElementSet.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ConfigurableElementSet.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ConfigurableElementSet.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ElementImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ElementImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ElementImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/impl/ElementImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/impl/MetaDataRegistryImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/impl/MetaDataRegistryImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/cms/repository/metadata/impl/MetaDataRegistryImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/cms/repository/metadata/impl/MetaDataRegistryImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/ConcurrentModificationException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/ConcurrentModificationException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/ConcurrentModificationException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/ConcurrentModificationException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentifiableFactory.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/IdentifiableFactory.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentifiableFactory.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/IdentifiableFactory.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Identity.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Identity.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Identity.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Identity.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentityMap.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/IdentityMap.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentityMap.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/IdentityMap.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentityMapImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/IdentityMapImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/IdentityMapImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/IdentityMapImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Lock.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Lock.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Lock.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Lock.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/LockException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/LockException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/LockException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/LockException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Lockable.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Lockable.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Lockable.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Lockable.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/TransactionException.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/TransactionException.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/TransactionException.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/TransactionException.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/TransactionLock.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/TransactionLock.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/TransactionLock.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/TransactionLock.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Transactionable.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Transactionable.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Transactionable.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Transactionable.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/UnitOfWork.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/UnitOfWork.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/UnitOfWork.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/UnitOfWork.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/UnitOfWorkImpl.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/UnitOfWorkImpl.java
diff --git a/org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Versionable.java b/org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Versionable.java
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/java/org/apache/lenya/transaction/Versionable.java
rename to org.apache.lenya.core.repository.impl/src/main/java/org/apache/lenya/transaction/Versionable.java
diff --git a/org.apache.lenya.core.repository/src/main/resources/META-INF/cocoon/spring/lenya-core-repository-components.xml b/org.apache.lenya.core.repository.impl/src/main/resources/META-INF/cocoon/spring/lenya-core-repository-components.xml
similarity index 100%
rename from org.apache.lenya.core.repository/src/main/resources/META-INF/cocoon/spring/lenya-core-repository-components.xml
rename to org.apache.lenya.core.repository.impl/src/main/resources/META-INF/cocoon/spring/lenya-core-repository-components.xml
diff --git a/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockFactory.java b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockFactory.java
new file mode 100644
index 0000000..715f20f
--- /dev/null
+++ b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockFactory.java
@@ -0,0 +1,36 @@
+/*
+ * 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.transaction;
+
+public class MockFactory implements IdentifiableFactory {
+
+ private UnitOfWork unit;
+
+ public MockFactory(UnitOfWork unit) {
+ this.unit = unit;
+ }
+
+ public Object build(IdentityMap map, String key) throws Exception {
+ return new MockTransactionable(key, this.unit);
+ }
+
+ public String getType() {
+ return "mock";
+ }
+
+}
diff --git a/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockRevisionController.java b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockRevisionController.java
new file mode 100644
index 0000000..c398922
--- /dev/null
+++ b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockRevisionController.java
@@ -0,0 +1,73 @@
+/*
+ * 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.transaction;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MockRevisionController {
+
+ private static Map histories = new HashMap();
+
+ public static History getHistory(MockTransactionable transactionable) {
+ History history = (History) histories.get(transactionable.getId());
+ if (history == null) {
+ history = new History();
+ histories.put(transactionable.getId(), history);
+ }
+ return history;
+ }
+
+ public static class History {
+
+ public History() {
+ }
+
+ private int version = 0;
+ private boolean checkedOut = false;
+ private String checkOutUser = null;
+
+ public void newVersion() {
+ this.version++;
+ }
+
+ public int getLatestVersion() {
+ return this.version;
+ }
+
+ public boolean isCheckedOut() {
+ return this.checkedOut;
+ }
+
+ public void checkOut(String user) {
+ this.checkedOut = true;
+ this.checkOutUser = user;
+ }
+
+ public void checkIn() {
+ this.checkedOut = false;
+ this.checkOutUser = null;
+ }
+
+ public String getCheckOutUser() {
+ return this.checkOutUser;
+ }
+
+ }
+
+}
diff --git a/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockTransactionable.java b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockTransactionable.java
new file mode 100644
index 0000000..e901dd3
--- /dev/null
+++ b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockTransactionable.java
@@ -0,0 +1,113 @@
+/*
+ * 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.transaction;
+
+import org.apache.lenya.cms.publication.IdentityWrapper;
+import org.apache.lenya.cms.repository.RepositoryException;
+
+public class MockTransactionable implements Transactionable {
+
+ private String id;
+
+ public MockTransactionable(String id, UnitOfWork unit) {
+ this.id = id;
+ this.unit = unit;
+ }
+
+ public void write() {
+ MockRevisionController.getHistory(this).newVersion();
+ }
+
+ public void changed() {
+ }
+
+ public void createTransactionable() throws TransactionException {
+ }
+
+ public void deleteTransactionable() throws TransactionException {
+ }
+
+ public void removed() {
+ }
+
+ public void saveTransactionable() throws TransactionException {
+ }
+
+ public void checkin() throws TransactionException {
+ MockRevisionController.getHistory(this).checkIn();
+ }
+
+ public void checkout() throws TransactionException {
+ MockRevisionController.getHistory(this).checkOut(getUserId());
+ }
+
+ public boolean hasChanged() throws TransactionException {
+ try {
+ int currentVersion = getLatestVersion();
+ int lockVersion = getLock().getVersion();
+ return currentVersion > lockVersion;
+ } catch (Exception e) {
+ throw new RepositoryException(e);
+ }
+ }
+
+ protected int getLatestVersion() {
+ int currentVersion = MockRevisionController.getHistory(this).getLatestVersion();
+ return currentVersion;
+ }
+
+ public boolean isCheckedOut() throws TransactionException {
+ return MockRevisionController.getHistory(this).isCheckedOut();
+ }
+
+ public boolean isCheckedOutBySession() throws TransactionException {
+ String user = MockRevisionController.getHistory(this).getCheckOutUser();
+ return user != null && user.equals(getUserId());
+ }
+
+ private String getUserId() {
+ IdentityWrapper wrapper = (IdentityWrapper) ((UnitOfWorkImpl) this.unit).getIdentity();
+ return wrapper.getIdentity().getUser().getId();
+ }
+
+ private Lock lock;
+
+ public Lock getLock() {
+ return this.lock;
+ }
+
+ public boolean isLocked() throws TransactionException {
+ return this.lock != null;
+ }
+
+ private UnitOfWork unit;
+
+ public void lock() throws TransactionException {
+ this.lock = unit.createLock(this, getLatestVersion());
+ }
+
+ public void unlock() throws TransactionException {
+ this.lock = null;
+ unit.removeLock(this);
+ }
+
+ public String getId() {
+ return this.id;
+ }
+
+}
diff --git a/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockUser.java b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockUser.java
new file mode 100644
index 0000000..f60cd9a
--- /dev/null
+++ b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/MockUser.java
@@ -0,0 +1,169 @@
+/*
+ * 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.transaction;
+
+import java.io.File;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.Accreditable;
+import org.apache.lenya.ac.AccreditableManager;
+import org.apache.lenya.ac.Group;
+import org.apache.lenya.ac.ItemManager;
+import org.apache.lenya.ac.User;
+
+public class MockUser implements User {
+
+ private String id;
+
+ public MockUser(String id) {
+ this.id = id;
+ }
+
+ public boolean authenticate(String password) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void delete() throws AccessControlException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String getDefaultDocumentLocale() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getDefaultMenuLocale() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getEmail() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void save() throws AccessControlException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setDefaultDocumentLocale(String documentLocale) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setDefaultMenuLocale(String menuLocale) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setEmail(String email) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setPassword(String plainTextPassword) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Accreditable[] getAccreditables() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void configure(Configuration configuration) throws ConfigurationException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String getDescription() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getId() {
+ return this.id;
+ }
+
+ public String getName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void setConfigurationDirectory(File configurationDirectory) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setDescription(String description) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setName(String name) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void enableLogging(Logger arg0) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addedToGroup(Group group) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Group[] getGroups() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void removeFromAllGroups() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removedFromGroup(Group group) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public AccreditableManager getAccreditableManager() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ItemManager getItemManager() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean canChangePassword() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+}
diff --git a/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/TransactionTest.java b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/TransactionTest.java
new file mode 100644
index 0000000..16c03fd
--- /dev/null
+++ b/org.apache.lenya.core.repository.impl/src/test/java/org/apache/lenya/transaction/TransactionTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.transaction;
+
+import org.apache.cocoon.core.container.ContainerTestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.lenya.ac.Identity;
+import org.apache.lenya.cms.publication.IdentityWrapper;
+
+public class TransactionTest extends ContainerTestCase {
+
+ private Log logger = LogFactory.getLog(TransactionTest.class);
+
+ public void testTransaction() throws TransactionException {
+
+ Identity lenya = new Identity(logger);
+ lenya.addIdentifiable(new MockUser("lenya"));
+
+ Identity alice = new Identity(logger);
+ alice.addIdentifiable(new MockUser("alice"));
+
+ IdentityMap lenyaMap = new IdentityMapImpl();
+ UnitOfWork lenyaUnit = new UnitOfWorkImpl(lenyaMap, new IdentityWrapper(lenya));
+ IdentifiableFactory lenyaFactory = new MockFactory(lenyaUnit);
+
+ IdentityMap aliceMap = new IdentityMapImpl();
+ UnitOfWork aliceUnit = new UnitOfWorkImpl(aliceMap, new IdentityWrapper(alice));
+ IdentifiableFactory aliceFactory = new MockFactory(aliceUnit);
+
+ MockTransactionable lenyaT1 = (MockTransactionable) lenyaMap.get(lenyaFactory, "t1");
+ MockTransactionable aliceT1 = (MockTransactionable) aliceMap.get(aliceFactory, "t1");
+
+ checkDoubleLock(lenyaT1);
+ checkLockAndModify(lenyaUnit, lenyaT1, aliceT1);
+
+ }
+
+ protected void checkDoubleLock(MockTransactionable t) throws TransactionException {
+ t.lock();
+ try {
+ t.lock();
+ assertTrue("No exception thrown!", false);
+ } catch (LockException ignore) {
+ }
+ t.unlock();
+ }
+
+ protected void checkLockAndModify(UnitOfWork lenyaUnit, MockTransactionable lenyaT1,
+ MockTransactionable aliceT1) throws TransactionException {
+ lenyaT1.lock();
+ aliceT1.write();
+ try {
+ lenyaUnit.commit();
+ assertTrue("No exception thrown!", false);
+ } catch (ConcurrentModificationException ignore) {
+ }
+ lenyaT1.unlock();
+ }
+
+}