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;
-        }
-
-    }
-
-}