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 2006/07/20 12:11:24 UTC

svn commit: r423862 - in /lenya/trunk/src: impl/java/org/apache/lenya/cms/metadata/ impl/java/org/apache/lenya/cms/publication/ impl/test/org/apache/lenya/cms/metadata/ impl/test/org/apache/lenya/cms/publication/ java/org/apache/lenya/cms/cocoon/compon...

Author: andreas
Date: Thu Jul 20 03:11:21 2006
New Revision: 423862

URL: http://svn.apache.org/viewvc?rev=423862&view=rev
Log:
Fixed some issues in new meta data handling, use owner.getMetaData(DublinCore.DC_NAMESPACE) instead of metaDataManager.getDublinCoreMetaData()

Modified:
    lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java
    lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java
    lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
    lenya/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java
    lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DublinCoreModule.java
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/Element.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataManager.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
    lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java
    lenya/trunk/src/java/org/apache/lenya/cms/publication/Resource.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java
    lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java
    lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaDataManager.java
    lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/migration/Migrate14.java
    lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/repo/adapter/RepoNode.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java Thu Jul 20 03:11:21 2006
@@ -47,7 +47,8 @@
         for (int i = 0; i < attributeConfigs.length; i++) {
             String name = attributeConfigs[i].getAttribute("name");
             boolean isMultiple = attributeConfigs[i].getAttributeAsBoolean("multiple", false);
-            this.elements.put(name, new ElementImpl(name, isMultiple));
+            boolean isEditable = attributeConfigs[i].getAttributeAsBoolean("editable", false);
+            this.elements.put(name, new ElementImpl(name, isMultiple, isEditable));
         }
 
     }
@@ -63,6 +64,10 @@
 
     public String getNamespaceUri() {
         return this.namespaceUri;
+    }
+
+    public boolean containsElement(String name) {
+        return this.elements.keySet().contains(name);
     }
 
 }

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/metadata/ElementImpl.java Thu Jul 20 03:11:21 2006
@@ -24,15 +24,18 @@
     private String name;
     private boolean multiple;
     private String description = "";
+    private boolean editable;
     
     /**
      * Ctor.
      * @param name The name.
      * @param isMultiple if the element can have multiple values.
+     * @param isEditable if the element can be edited.
      */
-    public ElementImpl(String name, boolean isMultiple) {
+    public ElementImpl(String name, boolean isMultiple, boolean isEditable) {
         this.name = name;
         this.multiple = isMultiple;
+        this.editable = isEditable;
     }
 
     /**
@@ -57,6 +60,10 @@
 
     public String getDescription() {
         return this.description;
+    }
+
+    public boolean isEditable() {
+        return this.editable;
     }
 
 }

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentImpl.java Thu Jul 20 03:11:21 2006
@@ -18,12 +18,10 @@
 package org.apache.lenya.cms.publication;
 
 import java.io.File;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.logger.Logger;
@@ -537,6 +535,10 @@
 
     public MetaData getMetaData(String namespaceUri) throws RepositoryException {
         return getRepositoryNode().getMetaData(namespaceUri);
+    }
+
+    public String[] getMetaDataNamespaceUris() throws RepositoryException {
+        return getRepositoryNode().getMetaDataNamespaceUris();
     }
 
 }

Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentManagerImpl.java Thu Jul 20 03:11:21 2006
@@ -30,10 +30,10 @@
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.metadata.LenyaMetaData;
-import org.apache.lenya.cms.metadata.MetaDataManager;
 import org.apache.lenya.cms.publication.util.DocumentSet;
 import org.apache.lenya.cms.publication.util.DocumentVisitor;
 import org.apache.lenya.cms.repository.Node;
+import org.apache.lenya.cms.repository.RepositoryException;
 import org.apache.lenya.cms.repository.RepositoryManager;
 import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.cms.site.SiteManager;
@@ -78,11 +78,15 @@
                 navigationTitle,
                 visibleInNav,
                 contentsURI);
-        MetaDataManager mgr = document.getMetaDataManager();
-        MetaDataManager srcMgr = sourceDocument.getMetaDataManager();
-        mgr.getLenyaMetaData().replaceBy(srcMgr.getLenyaMetaData());
-        mgr.getDublinCoreMetaData().replaceBy(srcMgr.getDublinCoreMetaData());
-        mgr.getCustomMetaData().replaceBy(srcMgr.getCustomMetaData());
+
+        try {
+            String[] uris = sourceDocument.getMetaDataNamespaceUris();
+            for (int i = 0; i < uris.length; i++) {
+                document.getMetaData(uris[i]).replaceBy(sourceDocument.getMetaData(uris[i]));
+            }
+        } catch (RepositoryException e) {
+            throw new PublicationException(e);
+        }
     }
 
     /**

Modified: lenya/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java (original)
+++ lenya/trunk/src/impl/test/org/apache/lenya/cms/metadata/MetaDataTest.java Thu Jul 20 03:11:21 2006
@@ -46,7 +46,7 @@
         }
         assertNotNull(e);
 
-        namespaceUri = DublinCoreImpl.DC_NAMESPACE;
+        namespaceUri = DublinCore.DC_NAMESPACE;
         MetaData dc = doc.getMetaData(namespaceUri);
         
         doc.getRepositoryNode().lock();

Modified: lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java (original)
+++ lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java Thu Jul 20 03:11:21 2006
@@ -53,20 +53,18 @@
         
         doc.getRepositoryNode().lock();
         
-        MetaData dcCore = doc.getMetaDataManager().getDublinCoreMetaData();
+        MetaData dcCore = doc.getMetaData(DublinCore.DC_NAMESPACE);
         String title = dcCore.getFirstValue(DublinCore.ELEMENT_TITLE);
         String subject = dcCore.getFirstValue(DublinCore.ELEMENT_SUBJECT);
         String creator = dcCore.getFirstValue(DublinCore.ELEMENT_CREATOR);
-        String dateIssued = dcCore.getFirstValue(DublinCore.TERM_ISSUED);
 
         dcCore.setValue(DublinCore.ELEMENT_CREATOR, CREATOR);
 
         Document doc2 = map.get(publication, AREA, DOCUMENT_ID, LANGUAGE);
 
-        MetaData dcCore2 = doc2.getMetaDataManager().getDublinCoreMetaData();
+        MetaData dcCore2 = doc2.getMetaData(DublinCore.DC_NAMESPACE);
         assertEquals(title, dcCore2.getFirstValue(DublinCore.ELEMENT_TITLE));
         assertEquals(subject, dcCore2.getFirstValue(DublinCore.ELEMENT_SUBJECT));
-        assertEquals(dateIssued, dcCore2.getFirstValue(DublinCore.TERM_ISSUED));
         assertFalse(creator.equals(dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR)));
         assertEquals(CREATOR, dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR));
         

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DocumentInfoModule.java Thu Jul 20 03:11:21 2006
@@ -39,6 +39,7 @@
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationUtil;
+import org.apache.lenya.cms.repository.RepositoryException;
 import org.apache.lenya.cms.repository.RepositoryUtil;
 import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.cms.site.SiteException;
@@ -206,8 +207,8 @@
         String mimeType = null;
         MetaData metaData = null;
         try {
-            metaData = document.getMetaDataManager().getDublinCoreMetaData();
-        } catch (DocumentException e) {
+            metaData = document.getMetaData(DublinCore.DC_NAMESPACE);
+        } catch (RepositoryException e) {
             throw new ConfigurationException("Obtaining custom meta data value failed ["
                     + document.getSourceURI() + "]: " + e.getMessage(), e);
         }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DublinCoreModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DublinCoreModule.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DublinCoreModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/DublinCoreModule.java Thu Jul 20 03:11:21 2006
@@ -26,6 +26,7 @@
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreImpl;
 import org.apache.lenya.cms.publication.Document;
 
@@ -48,8 +49,7 @@
             if (document == null) {
                 throw new ConfigurationException("There is no document for this page envelope!");
             }
-            MetaData dc = document.getMetaDataManager().getDublinCoreMetaData();
-
+            MetaData dc = document.getMetaData(DublinCore.DC_NAMESPACE);
             if (! dc.isValidAttribute(name)) {
                 throw new ConfigurationException("The attribute [" + name + "] is not supported!");
             }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/generation/LenyaMetaDataGenerator.java Thu Jul 20 03:11:21 2006
@@ -35,9 +35,9 @@
 import org.apache.excalibur.xml.dom.DOMParser;
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataManager;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentException;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.Publication;
@@ -197,13 +197,14 @@
         long lastModified = 0;
         try {
             MetaDataManager metaMgr = document.getMetaDataManager();
+            MetaData dcElements = document.getMetaData(DublinCore.DC_NAMESPACE);
             if (lastModified < metaMgr.getCustomMetaData().getLastModified())
                 lastModified = metaMgr.getCustomMetaData().getLastModified();
-            if (lastModified < metaMgr.getDublinCoreMetaData().getLastModified())
-                lastModified = metaMgr.getDublinCoreMetaData().getLastModified();
+            if (lastModified < dcElements.getLastModified())
+                lastModified = dcElements.getLastModified();
             if (lastModified < metaMgr.getLenyaMetaData().getLastModified())
                 lastModified = metaMgr.getLenyaMetaData().getLastModified();
-        } catch (DocumentException e) {
+        } catch (Exception e) {
             getLogger().error("Error determining last modification date", e);
             return null;
         }
@@ -308,9 +309,9 @@
             } else if ("internal".equals(type)) {
                 metaData = this.document.getMetaDataManager().getLenyaMetaData();
             } else if ("dc".equals(type)) {
-                metaData = this.document.getMetaDataManager().getDublinCoreMetaData();
+                metaData = this.document.getMetaData(DublinCore.DC_NAMESPACE);
             }
-        } catch (DocumentException e1) {
+        } catch (Exception e1) {
             throw new ProcessingException("Obtaining custom meta data value for ["
                     + document.getSourceURI() + "] failed: ", e1);
         }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/Element.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/Element.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/Element.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/Element.java Thu Jul 20 03:11:21 2006
@@ -35,5 +35,10 @@
      * @return the description of the element.
      */
     String getDescription();
+    
+    /**
+     * @return if the element value can be edited.
+     */
+    boolean isEditable();
 
 }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/ElementSet.java Thu Jul 20 03:11:21 2006
@@ -40,4 +40,11 @@
      */
     String getNamespaceUri();
     
+    /**
+     * Checks if an element with a certain name is contained.
+     * @param name The name.
+     * @return A boolean value.
+     */
+    boolean containsElement(String name);
+    
 }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataManager.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataManager.java Thu Jul 20 03:11:21 2006
@@ -53,7 +53,7 @@
      * @return the dublin core meta-data
      * @throws DocumentException if the meta-data could not be retrieved
      */
-    public MetaData getDublinCoreMetaData() throws DocumentException {
+    public MetaData getDublinCoreMetaData1() throws DocumentException {
         if (dublinCoreMetaData == null) {
             dublinCoreMetaData = new DublinCoreImpl(this.sourceUri, this.serviceManager, getLogger());
         }
@@ -120,7 +120,7 @@
      */
     public void setMetaData(Map dcMetaData, Map lenyaMetaData, Map customMetaData) throws DocumentException {
         if (dcMetaData != null)
-            setMetaData(getDublinCoreMetaData(), dcMetaData);
+            setMetaData(getDublinCoreMetaData1(), dcMetaData);
         if (lenyaMetaData != null)
             setMetaData(getLenyaMetaData(), lenyaMetaData);
         if (customMetaData != null)
@@ -143,8 +143,8 @@
      * @throws DocumentException if something goes wrong
      */
     public void replaceMetaData(MetaDataManager sourceManager) throws DocumentException {
-        MetaData source = sourceManager.getDublinCoreMetaData();
-        MetaData dest = this.getDublinCoreMetaData();
+        MetaData source = sourceManager.getDublinCoreMetaData1();
+        MetaData dest = this.getDublinCoreMetaData1();
         dest.replaceBy(source);
         source = sourceManager.getLenyaMetaData();
         dest = this.getLenyaMetaData();

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/MetaDataOwner.java Thu Jul 20 03:11:21 2006
@@ -40,4 +40,11 @@
      */
     MetaData getMetaData(String namespaceUri) throws RepositoryException;
     
+    /**
+     * Returns the URIs of the meta data currently supported by the owner.
+     * @return An array of strings.
+     * @throws RepositoryException if an error occurs.
+     */
+    String[] getMetaDataNamespaceUris() throws RepositoryException;
+    
 }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCore.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- 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 Thu Jul 20 03:11:21 2006
@@ -32,6 +32,16 @@
 public interface DublinCore extends MetaData {
 
     /**
+     * The dublin core elements namespace.
+     */
+    String DC_NAMESPACE = "http://purl.org/dc/elements/1.1/";
+    
+    /**
+     * The dublin core terms namespace. 
+     */
+    String DCTERMS_NAMESPACE = "http://purl.org/dc/terms/";
+    
+    /**
      * A name given to the resource. Typically, Title will be a name by which the resource is
      * formally known.
      */

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreHelper.java Thu Jul 20 03:11:21 2006
@@ -73,7 +73,7 @@
                     Document document = map.get(publication, area, documentId, languages[i]);
                     if (getLogger().isDebugEnabled())
                         getLogger().debug("document file : " + document.getSourceURI());
-                    MetaData dublincore = document.getMetaDataManager().getDublinCoreMetaData();
+                    MetaData dublincore = document.getMetaData(DublinCore.DC_NAMESPACE);
                     if (getLogger().isDebugEnabled())
                         getLogger().debug("dublincore title : "
                             + dublincore.getFirstValue(DublinCore.ELEMENT_TITLE));
@@ -82,7 +82,7 @@
                 }
             }
             if (languages.length < 1 || identifier == null) {
-                MetaData dublincore = baseDocument.getMetaDataManager().getDublinCoreMetaData();
+                MetaData dublincore = baseDocument.getMetaData(DublinCore.DC_NAMESPACE);
                 identifier = dublincore.getFirstValue(DublinCore.ELEMENT_IDENTIFIER);
             }
         } catch (final DocumentException e) {

Modified: lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/metadata/dublincore/DublinCoreImpl.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- 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 Thu Jul 20 03:11:21 2006
@@ -35,7 +35,6 @@
 
     private static final String LOCAL_META = "dc";
 
-    public static final String DC_NAMESPACE = "http://purl.org/dc/elements/1.1/";
     public static final String DC_PREFIX = "dc";
 
     /**
@@ -58,7 +57,6 @@
             DublinCore.ELEMENT_COVERAGE, 
             DublinCore.ELEMENT_RIGHTS };
 
-    public static final String DCTERMS_NAMESPACE = "http://purl.org/dc/terms/";
     public static final String DCTERMS_PREFIX = "dcterms";
 
     /**
@@ -112,7 +110,7 @@
      * @see org.apache.lenya.cms.metadata.MetaDataImpl#getNamespaces()
      */
     protected String[] getNamespaces() {
-        return new String[] { DC_NAMESPACE, DCTERMS_NAMESPACE };
+        return new String[] { DublinCore.DC_NAMESPACE, DublinCore.DCTERMS_NAMESPACE };
     }
 
     /**

Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/Resource.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/Resource.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/Resource.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/Resource.java Thu Jul 20 03:11:21 2006
@@ -259,7 +259,11 @@
     }
 
     public MetaData getMetaData(String namespaceUri) throws RepositoryException {
-        return null;
+        return getRepositoryNodes()[0].getMetaData(namespaceUri);
+    }
+
+    public String[] getMetaDataNamespaceUris() throws RepositoryException {
+        return getRepositoryNodes()[0].getMetaDataNamespaceUris();
     }
     
 }

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java Thu Jul 20 03:11:21 2006
@@ -20,6 +20,7 @@
 import java.util.Iterator;
 
 import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.site.usecases.SiteUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
@@ -61,11 +62,10 @@
         super.initParameters();
         showCustom = getParameterAsBoolean(SHOW_CUSTOM_PARAMETER, false);
         setParameter(SHOW_CUSTOM_PARAMETER, String.valueOf(showCustom));
-
+        
         // dc metadata
         try {
-            MetaData meta = getSourceDocument().getMetaDataManager()
-                    .getDublinCoreMetaData();
+            MetaData meta = getSourceDocument().getMetaData(DublinCore.DC_NAMESPACE);
 
             String[] keys = meta.getPossibleKeys();
             for (int i = 0; i < keys.length; i++) {
@@ -126,8 +126,7 @@
         super.doExecute();
 
         // dc metadata
-        MetaData meta = getSourceDocument().getMetaDataManager()
-                .getDublinCoreMetaData();
+        MetaData meta = getSourceDocument().getMetaData(DublinCore.DC_NAMESPACE);
 
         String[] keys = meta.getPossibleKeys();
         for (int i = 0; i < keys.length; i++) {

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Overview.java Thu Jul 20 03:11:21 2006
@@ -64,7 +64,7 @@
             Document doc = getSourceDocument();
 
             // read parameters from Dublin Core meta-data
-            MetaData dc = doc.getMetaDataManager().getDublinCoreMetaData();
+            MetaData dc = doc.getMetaData(DublinCore.DC_NAMESPACE);
             setParameter(DublinCore.ELEMENT_TITLE, dc.getFirstValue(DublinCore.ELEMENT_TITLE));
             setParameter(DublinCore.ELEMENT_DESCRIPTION,
                     dc.getFirstValue(DublinCore.ELEMENT_DESCRIPTION));

Modified: lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java (original)
+++ lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/LenyaRepository.java Thu Jul 20 03:11:21 2006
@@ -46,6 +46,7 @@
 import org.apache.jackrabbit.core.nodetype.PropDefImpl;
 import org.apache.jackrabbit.name.QName;
 import org.apache.lenya.cms.metadata.LenyaMetaData;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreImpl;
 
 /**
@@ -141,7 +142,7 @@
             List dcKeyList = DublinCoreImpl.getAttributeNames();
             String[] dcKeys = (String[]) dcKeyList.toArray(new String[dcKeyList.size()]);
             for (int i = 0; i < dcKeys.length; i++) {
-                key2namespace.put(dcKeys[i], DublinCoreImpl.DC_NAMESPACE);
+                key2namespace.put(dcKeys[i], DublinCore.DC_NAMESPACE);
             }
 
             NodeTypeDef def = new NodeTypeDef();

Modified: lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaDataManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaDataManager.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaDataManager.java (original)
+++ lenya/trunk/src/modules-optional/jcrsource/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaDataManager.java Thu Jul 20 03:11:21 2006
@@ -24,6 +24,7 @@
 import org.apache.lenya.cms.metadata.LenyaMetaData;
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataManager;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.metadata.dublincore.DublinCoreImpl;
 import org.apache.lenya.cms.publication.DocumentException;
 
@@ -55,7 +56,7 @@
 
     public MetaData getDublinCoreMetaData() throws DocumentException {
         if (this.dublinCore == null) {
-            this.dublinCore = new JCRMetaData(DublinCoreImpl.DC_NAMESPACE,
+            this.dublinCore = new JCRMetaData(DublinCore.DC_NAMESPACE,
                     getSourceURI(),
                     this.serviceManager,
                     getLogger());

Modified: lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/migration/Migrate14.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/migration/Migrate14.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/migration/Migrate14.java (original)
+++ lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/migration/Migrate14.java Thu Jul 20 03:11:21 2006
@@ -25,7 +25,7 @@
 import java.io.OutputStream;
 
 import org.apache.lenya.cms.metadata.LenyaMetaData;
-import org.apache.lenya.cms.metadata.dublincore.DublinCoreImpl;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.repo.Area;
 import org.apache.lenya.cms.repo.Asset;
 import org.apache.lenya.cms.repo.AssetType;
@@ -306,13 +306,13 @@
                     LenyaElements.ELEMENTS);
             importMetaData(trans,
                     xmlDoc,
-                    DublinCoreImpl.DC_NAMESPACE,
+                    DublinCore.DC_NAMESPACE,
                     "dc",
                     DublinCoreElements.ELEMENT_SET,
                     DublinCoreElements.getElements());
             importMetaData(trans,
                     xmlDoc,
-                    DublinCoreImpl.DCTERMS_NAMESPACE,
+                    DublinCore.DCTERMS_NAMESPACE,
                     "dc",
                     DublinCoreElements.ELEMENT_SET,
                     DublinCoreElements.getElements());

Modified: lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/repo/adapter/RepoNode.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/repo/adapter/RepoNode.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/repo/adapter/RepoNode.java (original)
+++ lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/repo/adapter/RepoNode.java Thu Jul 20 03:11:21 2006
@@ -198,4 +198,9 @@
         return null;
     }
 
+    public String[] getMetaDataNamespaceUris() throws RepositoryException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 }

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java Thu Jul 20 03:11:21 2006
@@ -29,14 +29,12 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
+import java.util.Set;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.commons.collections.set.CompositeSet.SetMutator;
 import org.apache.excalibur.source.ModifiableSource;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceNotFoundException;
@@ -45,9 +43,12 @@
 import org.apache.lenya.ac.Identity;
 import org.apache.lenya.ac.User;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
+import org.apache.lenya.cms.metadata.ElementSet;
+import org.apache.lenya.cms.metadata.LenyaMetaData;
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataManager;
 import org.apache.lenya.cms.metadata.MetaDataRegistry;
+import org.apache.lenya.cms.metadata.dublincore.DublinCore;
 import org.apache.lenya.cms.publication.DocumentException;
 import org.apache.lenya.cms.publication.PageEnvelope;
 import org.apache.lenya.cms.publication.Publication;
@@ -62,7 +63,6 @@
 import org.apache.lenya.xml.NamespaceHelper;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
 
 /**
  * A repository node.
@@ -696,25 +696,24 @@
     private Map namespace2metadata = new HashMap();
 
     public MetaData getMetaData(String namespaceUri) throws RepositoryException {
-        
+
         MetaDataRegistry registry = null;
         try {
-            Object obj = this.manager.lookup(MetaDataRegistry.ROLE);
             registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
             if (!registry.isRegistered(namespaceUri)) {
-                throw new RepositoryException("The namespace [" + namespaceUri + "] is not registered!");
+                throw new RepositoryException("The namespace [" + namespaceUri
+                        + "] is not registered!");
             }
         } catch (ServiceException e) {
             throw new RepositoryException(e);
         } catch (DocumentException e) {
             throw new RepositoryException(e);
-        }
-        finally {
+        } finally {
             if (registry != null) {
                 this.manager.release(registry);
             }
         }
-        
+
         MetaData meta = (MetaData) this.namespace2metadata.get(namespaceUri);
         if (meta == null) {
             meta = new SourceNodeMetaData(namespaceUri, this, this.manager);
@@ -754,19 +753,25 @@
         try {
             this.namespace2metamap = new HashMap();
             Document xml = SourceUtil.readDOM(getMetaSourceURI(), this.manager);
-            NamespaceHelper helper = new NamespaceHelper(META_DATA_NAMESPACE, "", xml);
-            Element[] setElements = helper.getChildren(xml.getDocumentElement(), ELEMENT_SET);
-            for (int setIndex = 0; setIndex < setElements.length; setIndex++) {
-                String namespace = setElements[setIndex].getAttribute(ATTRIBUTE_NAMESPACE);
-                Element[] elementElements = helper.getChildren(setElements[setIndex],
-                        ELEMENT_ELEMENT);
-                for (int elemIndex = 0; elemIndex < elementElements.length; elemIndex++) {
-                    String key = elementElements[elemIndex].getAttribute(ATTRIBUTE_KEY);
-                    Element[] valueElements = helper.getChildren(elementElements[elemIndex],
-                            ELEMENT_VALUE);
-                    for (int valueIndex = 0; valueIndex < valueElements.length; valueIndex++) {
-                        String value = DocumentHelper.getSimpleElementText(valueElements[valueIndex]);
-                        addValue(namespace, key, value);
+
+            if (!xml.getDocumentElement().getNamespaceURI().equals(META_DATA_NAMESPACE)) {
+                loadLegacyMetaData(xml);
+            } else {
+                NamespaceHelper helper = new NamespaceHelper(META_DATA_NAMESPACE, "", xml);
+                Element[] setElements = helper.getChildren(xml.getDocumentElement(), ELEMENT_SET);
+                for (int setIndex = 0; setIndex < setElements.length; setIndex++) {
+                    String namespace = setElements[setIndex].getAttribute(ATTRIBUTE_NAMESPACE);
+                    Element[] elementElements = helper.getChildren(setElements[setIndex],
+                            ELEMENT_ELEMENT);
+                    for (int elemIndex = 0; elemIndex < elementElements.length; elemIndex++) {
+                        String key = elementElements[elemIndex].getAttribute(ATTRIBUTE_KEY);
+                        Element[] valueElements = helper.getChildren(elementElements[elemIndex],
+                                ELEMENT_VALUE);
+                        for (int valueIndex = 0; valueIndex < valueElements.length; valueIndex++) {
+                            String value = DocumentHelper.getSimpleElementText(valueElements[valueIndex]);
+                            List values = getValueList(namespace, key);
+                            values.add(value);
+                        }
                     }
                 }
             }
@@ -775,6 +780,59 @@
         }
     }
 
+    protected void loadLegacyMetaData(Document xml) throws RepositoryException {
+        NamespaceHelper helper = new NamespaceHelper(PageEnvelope.NAMESPACE, "", xml);
+
+        Element metaElement = helper.getFirstChild(xml.getDocumentElement(), "meta");
+
+        Element internalElement = helper.getFirstChild(metaElement, "internal");
+
+        Element[] internalElements = helper.getChildren(internalElement);
+        for (int i = 0; i < internalElements.length; i++) {
+            String value = DocumentHelper.getSimpleElementText(internalElements[i]);
+            String key = internalElements[i].getLocalName();
+            List values = getValueList(LenyaMetaData.NAMESPACE, key);
+            values.add(value);
+        }
+
+        NamespaceHelper dcHelper = new NamespaceHelper(DublinCore.DC_NAMESPACE, "", xml);
+        Element dcElement = helper.getFirstChild(metaElement, "dc");
+
+        MetaDataRegistry registry = null;
+        try {
+            registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
+            ElementSet dcElementSet = registry.getElementSet(DublinCore.DC_NAMESPACE);
+            ElementSet dcTermSet = registry.getElementSet(DublinCore.DCTERMS_NAMESPACE);
+
+            Element[] dcElements = dcHelper.getChildren(dcElement);
+            for (int i = 0; i < dcElements.length; i++) {
+                String value = DocumentHelper.getSimpleElementText(dcElements[i]);
+
+                String key = dcElements[i].getLocalName();
+
+                if (dcElementSet.containsElement(key)) {
+                    List values = getValueList(DublinCore.DC_NAMESPACE, key);
+                    values.add(value);
+                } else if (dcTermSet.containsElement(key)) {
+                    List values = getValueList(DublinCore.DCTERMS_NAMESPACE, key);
+                    values.add(value);
+                } else {
+                    throw new RepositoryException("The dublin core key [" + key
+                            + "] is not supported.");
+                }
+            }
+        } catch (RepositoryException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new RepositoryException(e);
+        } finally {
+            if (registry != null) {
+                this.manager.release(registry);
+            }
+        }
+
+    }
+
     protected void saveMetaData() throws RepositoryException {
         try {
             NamespaceHelper helper = new NamespaceHelper(META_DATA_NAMESPACE, "", ELEMENT_METADATA);
@@ -793,13 +851,17 @@
 
                     Element elementElement = helper.createElement(ELEMENT_ELEMENT);
                     elementElement.setAttribute(ATTRIBUTE_KEY, key);
-                    setElement.appendChild(elementElement);
 
                     List values = (List) map.get(key);
                     for (Iterator valueIterator = values.iterator(); valueIterator.hasNext();) {
                         String value = (String) valueIterator.next();
-                        Element valueElement = helper.createElement(ELEMENT_VALUE, value);
-                        elementElement.appendChild(valueElement);
+                        if (!value.equals("")) {
+                            Element valueElement = helper.createElement(ELEMENT_VALUE, value);
+                            elementElement.appendChild(valueElement);
+                        }
+                    }
+                    if (elementElement.hasChildNodes()) {
+                        setElement.appendChild(elementElement);
                     }
                 }
             }
@@ -824,16 +886,25 @@
         return values;
     }
 
-    protected void addValue(String namespaceUri, String key, String value) throws RepositoryException {
+    protected void addValue(String namespaceUri, String key, String value)
+            throws RepositoryException {
         List values = getValueList(namespaceUri, key);
         values.add(value);
         saveMetaData();
     }
-    
+
     protected void removeAllValues(String namespaceUri, String key) throws RepositoryException {
         List values = getValueList(namespaceUri, key);
         values.clear();
         saveMetaData();
+    }
+
+    public String[] getMetaDataNamespaceUris() throws RepositoryException {
+        if (this.namespace2metamap == null) {
+            loadMetaData();
+        }
+        Set uris = this.namespace2metamap.keySet();
+        return (String[]) uris.toArray(new String[uris.size()]);
     }
 
 }

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java?rev=423862&r1=423861&r2=423862&view=diff
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeMetaData.java Thu Jul 20 03:11:21 2006
@@ -18,7 +18,6 @@
 
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.Map;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.service.ServiceException;
@@ -142,7 +141,12 @@
             for (int i = 0; i < elements.length; i++) {
                 String key = elements[i].getName();
                 String[] values = getValues(key);
-                map.put(key, Arrays.asList(values));
+                if (values.length == 1) {
+                    map.put(key, values[0]);
+                }
+                else if (values.length > 1) {
+                    map.put(key, Arrays.asList(values));
+                }
             }
         } catch (DocumentException e) {
             throw new RuntimeException(e);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org