split metadata module into api and impl
git-svn-id: https://svn.apache.org/repos/asf/lenya/trunk@1035058 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.lenya.core.metadata.api/pom.xml b/org.apache.lenya.core.metadata.api/pom.xml
new file mode 100644
index 0000000..e20ccde
--- /dev/null
+++ b/org.apache.lenya.core.metadata.api/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-parent</artifactId>
+ <version>2.2.0-SNAPSHOT</version>
+ <relativePath>../org.apache.lenya.parent/pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-metadata-api</artifactId>
+ <packaging>jar</packaging>
+ <name>Apache Lenya Metadata API</name>
+ <description>API for Lenya Metadata</description>
+
+ <dependencies>
+
+ <!-- TODO : see if all theses dependencies are required -->
+ <dependency>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-servlet-service-components</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-template-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-flowscript-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.4</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/org.apache.lenya.core.metadata.api/rcl.properties b/org.apache.lenya.core.metadata.api/rcl.properties
new file mode 100644
index 0000000..b2c6253
--- /dev/null
+++ b/org.apache.lenya.core.metadata.api/rcl.properties
@@ -0,0 +1,17 @@
+#
+# 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.
+#
+org.apache.lenya.lenya-CHANGE-ME.service%classes-dir=./target/classes
\ No newline at end of file
diff --git a/org.apache.lenya.core.metadata/pom.xml b/org.apache.lenya.core.metadata.impl/pom.xml
similarity index 77%
rename from org.apache.lenya.core.metadata/pom.xml
rename to org.apache.lenya.core.metadata.impl/pom.xml
index c8d5f43..f83a0ed 100644
--- a/org.apache.lenya.core.metadata/pom.xml
+++ b/org.apache.lenya.core.metadata.impl/pom.xml
@@ -11,9 +11,9 @@
<relativePath>../org.apache.lenya.parent/pom.xml</relativePath>
</parent>
<groupId>org.apache.lenya</groupId>
- <artifactId>lenya-core-metadata</artifactId>
+ <artifactId>lenya-core-metadata-impl</artifactId>
<packaging>jar</packaging>
- <name>Apache Lenya Core Metadata</name>
+ <name>Apache Lenya Core Metadata Implementation</name>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
@@ -23,6 +23,9 @@
<groupId>org.apache.avalon.framework</groupId>
<artifactId>avalon-framework-api</artifactId>
</dependency>
+
+ <!-- Lenya -->
+
<dependency>
<groupId>org.apache.lenya</groupId>
<artifactId>lenya-core-api</artifactId>
@@ -31,17 +34,13 @@
<groupId>org.apache.lenya</groupId>
<artifactId>lenya-core-usecase</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.lenya</groupId>
- <artifactId>lenya-core-workflow</artifactId>
- </dependency>
+<!-- <dependency>-->
+<!-- <groupId>org.apache.lenya</groupId>-->
+<!-- <artifactId>lenya-core-workflow</artifactId>-->
+<!-- </dependency>-->
<dependency>
<groupId>org.apache.lenya</groupId>
<artifactId>lenya-core-cocoon</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.lenya</groupId>
- <artifactId>lenya-core-publication</artifactId>
- </dependency>
</dependencies>
</project>
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/MetaDataModule.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/CacheableMetaData.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/Element.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/Element.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/Element.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/Element.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSet.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementSetWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/ElementWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaData.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaData.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaData.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaData.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataCache.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataException.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistry.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataRegistryWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/MetaDataWrapper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/cms/metadata/usecases/Metadata.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/ChangeMetaData.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/LenyaMetaDataGenerator.java
diff --git a/org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java b/org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java
rename to org.apache.lenya.core.metadata.impl/src/main/java/org/apache/lenya/modules/metadata/MetaDataTransformer.java
diff --git a/org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf b/org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf
rename to org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/avalon/lenya-core-lenyametadata-generator.xconf
diff --git a/org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml b/org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml
similarity index 100%
rename from org.apache.lenya.core.metadata/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml
rename to org.apache.lenya.core.metadata.impl/src/main/resources/META-INF/cocoon/spring/lenya-core-metadata-components.xml
diff --git a/org.apache.lenya.core.metadata/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java b/org.apache.lenya.core.metadata/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java
deleted file mode 100644
index 01da550..0000000
--- a/org.apache.lenya.core.metadata/src/test/java/org/apache/lenya/cms/metadata/MetaDataTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.lenya.cms.metadata;
-
-import java.util.Map;
-
-import org.apache.lenya.cms.AbstractAccessControlTest;
-import org.apache.lenya.cms.metadata.dublincore.DublinCore;
-import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.metadata.Element;
-
-/**
- * Meta data test.
- */
-public class MetaDataTest extends AbstractAccessControlTest {
-
- /**
- * Tests the meta data.
- * @throws Exception
- */
- public void testMetaData() throws Exception {
-
- Publication publication = getSession().getPublication("test");
- Document doc = publication.getArea("authoring").getSite().getNode("/index").getLink("en")
- .getDocument();
-
- String namespaceUri = "foobar";
- Exception e = null;
- try {
- doc.getMetaData(namespaceUri);
- } catch (Exception e1) {
- e = e1;
- }
- assertNotNull(e);
-
- namespaceUri = DublinCore.DC_NAMESPACE;
- MetaData dc = doc.getMetaData(namespaceUri);
-
- doc.lock();
-
- checkSetTitle(dc);
- checkRemoveAllValues(dc);
-
- }
-
- protected void checkSetTitle(MetaData dc) throws MetaDataException {
- Exception e = null;
- try {
- dc.setValue("foo", "bar");
- } catch (Exception e1) {
- e = e1;
- }
- assertNotNull(e);
- dc.setValue("title", "This is the title");
-
- e = null;
- // addValue() should throw an exception because a value is already set
- try {
- dc.addValue("title", "bar");
- } catch (Exception e1) {
- e = e1;
- }
- assertNotNull(e);
-
- }
-
- String NAMESPACE = "http://apache.org/lenya/test/metadata";
-
- protected void checkOnCopy(Publication pub) throws Exception {
- MetaDataRegistryWrapper registry = null;
- try {
- registry = (MetaDataRegistryWrapper) getManager().lookup(MetaDataRegistry.ROLE);
- org.apache.lenya.cms.repository.metadata.ElementSet set = new TestElementSet();
- registry.getRepositoryMetaDataRegistry().register(NAMESPACE, set);
- } finally {
- getManager().release(registry);
- }
-
- Document source = pub.getArea(Publication.AUTHORING_AREA).getDocument("/index", "en");
- Document target = pub.getArea(Publication.AUTHORING_AREA).getDocument("/index", "en");
-
- MetaData sourceMeta = source.getMetaData(NAMESPACE);
- sourceMeta.setValue("copy", "sourceCopy");
- sourceMeta.setValue("ignore", "sourceIgnore");
- sourceMeta.setValue("delete", "sourceDelete");
-
- MetaData targetMeta = target.getMetaData(NAMESPACE);
- targetMeta.setValue("ignore", "targetIgnore");
- targetMeta.setValue("delete", "targetDelete");
-
- targetMeta.replaceBy(sourceMeta);
-
- assertTrue(targetMeta.getValues("copy").length == 1);
- assertEquals(sourceMeta.getValues("copy"), targetMeta.getValues("copy"));
-
- assertTrue(targetMeta.getValues("ignore").length == 1);
- assertEquals(targetMeta.getFirstValue("ignore"), "targetIgnore");
-
- assertTrue(targetMeta.getValues("delete").length == 0);
- }
-
- protected void checkRemoveAllValues(MetaData dc) throws MetaDataException {
- dc.removeAllValues("title");
- assertTrue(dc.getValues("title").length == 0);
- }
-
- protected class TestElement implements org.apache.lenya.cms.repository.metadata.Element {
-
- private String name;
- private int actionOnCopy;
-
- protected TestElement(String name, int actionOnCopy) {
- this.name = name;
- this.actionOnCopy = actionOnCopy;
- }
-
- public int getActionOnCopy() {
- return actionOnCopy;
- }
-
- public String getDescription() {
- return "";
- }
-
- public String getName() {
- return name;
- }
-
- public boolean isEditable() {
- return false;
- }
-
- public boolean isMultiple() {
- return false;
- }
-
- public boolean isSearchable() {
- return false;
- }
-
- }
-
- protected class TestElementSet implements org.apache.lenya.cms.repository.metadata.ElementSet {
-
- private org.apache.lenya.cms.repository.metadata.Element[] elements = {
- new TestElement("copy", Element.ONCOPY_COPY),
- new TestElement("ignore", Element.ONCOPY_IGNORE),
- new TestElement("delete", Element.ONCOPY_DELETE) };
-
- private Map<String, org.apache.lenya.cms.repository.metadata.Element> name2element;
-
- protected TestElementSet() {
- for (int i = 0; i < elements.length; i++) {
- this.name2element.put(elements[i].getName(), elements[i]);
- }
- }
-
- public boolean containsElement(String name) {
- return true;
- }
-
- public org.apache.lenya.cms.repository.metadata.Element getElement(String name)
- throws org.apache.lenya.cms.repository.metadata.MetaDataException {
- return (org.apache.lenya.cms.repository.metadata.Element) this.name2element.get(name);
- }
-
- public org.apache.lenya.cms.repository.metadata.Element[] getElements() {
- return elements;
- }
-
- public String getNamespaceUri() {
- return NAMESPACE;
- }
-
- }
-
-}