You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2005/11/18 18:03:33 UTC

svn commit: r345523 [2/2] - in /lenya/trunk/src: java/org/apache/lenya/cms/migration/ java/org/apache/lenya/cms/repo/ java/org/apache/lenya/cms/repo/impl/ modules/jcr/java/src/org/apache/lenya/cms/jcr/ modules/jcr/java/src/org/apache/lenya/cms/jcr/meta...

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteBuilder.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteBuilder.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteBuilder.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteBuilder.java Fri Nov 18 09:02:43 2005
@@ -23,36 +23,70 @@
 /**
  * JCR site builder.
  */
-public class JCRSiteBuilder implements NodeWrapperBuilder {
-    
-    private JCRArea area;
-    
+public class JCRSiteBuilder extends AbstractNodeWrapperBuilder {
+
+    /**
+     * Parameters.
+     */
+    public static class JCRSiteBuilderParameters implements BuilderParameters {
+
+        private JCRPublicationNode area;
+
+        /**
+         * Ctor.
+         * @param area The area.
+         */
+        public JCRSiteBuilderParameters(JCRPublicationNode area) {
+            this.area = area;
+        }
+
+        /**
+         * @return The area.
+         */
+        public JCRPublicationNode getArea() {
+            return this.area;
+        }
+    }
+
     /**
-     * Ctor.
      * @param area The area.
+     * @return A parameters object.
      */
-    public JCRSiteBuilder(JCRArea area) {
-        this.area = area;
+    public BuilderParameters createParameters(JCRPublicationNode area) {
+        return new JCRSiteBuilderParameters(area);
     }
 
     protected static final String NODE_NAME = "lenya:site";
+    protected static final String NODE_TYPE = "lnt:site";
 
-    public NodeWrapper buildNode(JCRSession session, boolean create) throws RepositoryException {
+    public NodeWrapper addNode(JCRSession session, BuilderParameters parameters) throws RepositoryException {
         try {
-            
-            Node pubNode = this.area.getPublicationNode().getNode();
+            JCRSiteBuilderParameters params = (JCRSiteBuilderParameters) parameters;
+            Node pubNode = params.getArea().getNode();
             JCRSite wrapper = null;
             Node siteNode = null;
             if (pubNode.hasNode(NODE_NAME)) {
-                siteNode = pubNode.getNode(NODE_NAME);
+                throw new RepositoryException("The node already exists!");
+            } else {
+                siteNode = pubNode.addNode(NODE_NAME, NODE_TYPE);
+                wrapper = new JCRSite(session, siteNode, params.getArea());
             }
-            else if (create) {
-                siteNode = pubNode.addNode(NODE_NAME);
-            }
-            if (siteNode != null) {
-                wrapper = new JCRSite(siteNode, area);
+            return wrapper;
+        } catch (Exception e) {
+            throw new RepositoryException(e);
+        }
+    }
+
+    public NodeWrapper getNodeInternal(JCRSession session, BuilderParameters parameters) throws RepositoryException {
+        try {
+            JCRSiteBuilderParameters params = (JCRSiteBuilderParameters) parameters;
+            Node pubNode = params.getArea().getNode();
+            JCRSite wrapper = null;
+            Node siteNode = null;
+            if (pubNode.hasNode(NODE_NAME)) {
+                siteNode = pubNode.getNode(NODE_NAME);
+                wrapper = new JCRSite(session, siteNode, params.getArea());
             }
-            
             return wrapper;
         } catch (Exception e) {
             throw new RepositoryException(e);

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNode.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNode.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNode.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNode.java Fri Nov 18 09:02:43 2005
@@ -35,13 +35,17 @@
 
     /**
      * Ctor.
+     * @param session The session.
      * @param node The JCR node.
      * @param site The site.
+     * @param parent The parent.
      */
-    public JCRSiteNode(Node node, JCRSite site) {
+    public JCRSiteNode(JCRSession session, Node node, JCRSite site, JCRSiteNode parent) {
         super(node);
         this.site = site;
-        this.childManager = new NodeWrapperManager(site.getArea().getPublication().getSession());
+        this.builder = new JCRSiteNodeBuilder(site);
+        this.childManager = new NodeWrapperManager(session, this.builder);
+        this.parent = parent;
     }
 
     public String getName() throws RepositoryException {
@@ -51,12 +55,13 @@
             throw new RepositoryException(e);
         }
     }
-    
+
     protected JCRSite getSite() {
         return this.site;
     }
 
     private NodeWrapperManager childManager;
+    private JCRSiteNodeBuilder builder;
 
     public SiteNode[] getChildren() throws RepositoryException {
         try {
@@ -73,8 +78,8 @@
     }
 
     public SiteNode getChild(String name) throws RepositoryException {
-        JCRSiteNodeBuilder builder = new JCRSiteNodeBuilder(getSite(), getNode(), name);
-        SiteNode child = (SiteNode) this.childManager.getNode(name, builder, false);
+        BuilderParameters params = builder.createParameters(getNode(), name, this);
+        SiteNode child = (SiteNode) this.childManager.getNode(name, params);
         if (child == null) {
             throw new RepositoryException("The node [" + getPath() + "/" + name
                     + "] does not exist!");
@@ -83,13 +88,37 @@
     }
 
     public SiteNode addChild(String name, ContentNode contentNode) throws RepositoryException {
-        JCRSiteNodeBuilder builder = new JCRSiteNodeBuilder(getSite(), getNode(), name);
-        return (SiteNode) this.childManager.getNode(name, builder, false);
+        BuilderParameters params = builder.createParameters(getNode(),
+                name,
+                (JCRContentNode) contentNode,
+                this);
+        return (SiteNode) this.childManager.addNode(name, params);
     }
 
     public String getPath() throws RepositoryException {
-        // TODO Auto-generated method stub
-        return "";
+        if (getParent() != null) {
+            return getParent().getPath() + "/" + getName();
+        } else {
+            return "/" + getName();
+        }
+    }
+
+    private SiteNode parent;
+
+    public SiteNode getParent() throws RepositoryException {
+        return this.parent;
+    }
+
+    public ContentNode getContentNode() throws RepositoryException {
+        try {
+            Node contentNodeNode = getNode().getProperty(JCRSiteNodeBuilder.CONTENT_NODE_PROPERTY)
+                    .getNode();
+            String id = contentNodeNode.getProperty(JCRContentNodeBuilder.ID_PROPERTY).getString();
+            JCRContent content = (JCRContent) getSite().getArea().getContent();
+            return content.getNode(id);
+        } catch (javax.jcr.RepositoryException e) {
+            throw new RepositoryException(e);
+        }
     }
 
 }

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNodeBuilder.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNodeBuilder.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNodeBuilder.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/JCRSiteNodeBuilder.java Fri Nov 18 09:02:43 2005
@@ -16,69 +16,187 @@
  */
 package org.apache.lenya.cms.jcr;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.jcr.Node;
+import javax.jcr.NodeIterator;
 
 import org.apache.lenya.cms.repo.RepositoryException;
 
 /**
  * JCR site node builder.
  */
-public class JCRSiteNodeBuilder implements NodeWrapperBuilder {
+public class JCRSiteNodeBuilder extends AbstractNodeWrapperBuilder implements
+        ResolvingNodeWrapperBuilder {
 
-    private Node parent;
-    private String name;
-    private JCRContentNode contentNode;
     private JCRSite site;
 
     /**
-     * Ctor.
-     * @param site The site.
-     * @param parent The parent JCR node.
-     * @param name The name.
-     * @param contentNode The referenced content node.
+     * @return The site.
      */
-    public JCRSiteNodeBuilder(JCRSite site, Node parent, String name, JCRContentNode contentNode) {
-        this(site, parent, name);
-        this.contentNode = contentNode;
+    public JCRSite getSite() {
+        return site;
     }
 
     /**
      * Ctor.
      * @param site The site.
-     * @param parent The parent JCR node.
-     * @param name The name.
      */
-    public JCRSiteNodeBuilder(JCRSite site, Node parent, String name) {
+    public JCRSiteNodeBuilder(JCRSite site) {
         this.site = site;
-        this.parent = parent;
-        this.name = name;
     }
 
-    protected static final String CONTENT_NODE_PROPERTY = "lenya:contentnode";
+    /**
+     * Parameters.
+     */
+    public static class JCRSiteNodeBuilderParameters implements BuilderParameters {
+
+        private Node parent;
+        private String name;
+        private JCRContentNode contentNode;
+        private JCRSiteNode parentSiteNode;
+
+        /**
+         * Ctor.
+         * @param parent The parent JCR node.
+         * @param name The name.
+         * @param contentNode The referenced content node.
+         * @param parentSiteNode The parent site node.
+         */
+        public JCRSiteNodeBuilderParameters(Node parent, String name, JCRContentNode contentNode,
+                JCRSiteNode parentSiteNode) {
+            this(parent, name, parentSiteNode);
+            this.contentNode = contentNode;
+        }
+
+        /**
+         * Ctor.
+         * @param parent The parent JCR node.
+         * @param name The name.
+         * @param parentSiteNode The parent site node.
+         */
+        public JCRSiteNodeBuilderParameters(Node parent, String name, JCRSiteNode parentSiteNode) {
+            this.parent = parent;
+            this.name = name;
+            this.parentSiteNode = parentSiteNode;
+        }
+
+        /**
+         * @return The content node.
+         */
+        public JCRContentNode getContentNode() {
+            return contentNode;
+        }
+
+        /**
+         * @return The name.
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * @return The parent.
+         */
+        public Node getParent() {
+            return parent;
+        }
+
+        /**
+         * @return The parent site node.
+         */
+        public JCRSiteNode getParentSiteNode() {
+            return this.parentSiteNode;
+        }
+    }
+
+    /**
+     * @param parent The parent.
+     * @param name The node name.
+     * @param contentNode The conent node to reference.
+     * @param parentSiteNode The parent site node.
+     * @return A parameters object.
+     */
+    public BuilderParameters createParameters(Node parent, String name, JCRContentNode contentNode,
+            JCRSiteNode parentSiteNode) {
+        return new JCRSiteNodeBuilderParameters(parent, name, contentNode, parentSiteNode);
+    }
+
+    /**
+     * @param parent The parent.
+     * @param name The node name.
+     * @param parentSiteNode The parent site node.
+     * @return A parameters object.
+     */
+    public BuilderParameters createParameters(Node parent, String name, JCRSiteNode parentSiteNode) {
+        return new JCRSiteNodeBuilderParameters(parent, name, parentSiteNode);
+    }
+
+    protected static final String CONTENT_NODE_PROPERTY = "lenya:contentNode";
+    protected static final String NODE_TYPE = "lnt:siteNode";
 
-    public NodeWrapper buildNode(JCRSession session, boolean create) throws RepositoryException {
+    public NodeWrapper addNode(JCRSession session, BuilderParameters parameters)
+            throws RepositoryException {
         try {
+            JCRSiteNodeBuilderParameters params = (JCRSiteNodeBuilderParameters) parameters;
             JCRSiteNode wrapper = null;
             Node siteNode = null;
-            if (parent.hasNode(this.name)) {
-                siteNode = parent.getNode(this.name);
-            } else if (create) {
+            if (params.getParent().hasNode(params.getName())) {
+                throw new RepositoryException("The node already exists!");
+            } else {
 
-                if (this.contentNode == null) {
+                if (params.getContentNode() == null) {
                     throw new RepositoryException("You must provide a content node when creating a new site node!");
                 }
 
-                siteNode = parent.addNode(this.name);
-                siteNode.setProperty(CONTENT_NODE_PROPERTY, this.contentNode.getNode());
-            }
-            if (siteNode != null) {
-                wrapper = new JCRSiteNode(siteNode, this.site);
+                siteNode = params.getParent().addNode(params.getName(), NODE_TYPE);
+                siteNode.setProperty(CONTENT_NODE_PROPERTY, params.getContentNode().getNode());
+                wrapper = new JCRSiteNode(session, siteNode, getSite(), params.getParentSiteNode());
             }
 
             return wrapper;
         } catch (RepositoryException e) {
             throw e;
         } catch (Exception e) {
+            throw new RepositoryException(e);
+        }
+    }
+
+    public NodeWrapper getNodeInternal(JCRSession session, BuilderParameters parameters)
+            throws RepositoryException {
+        try {
+            JCRSiteNodeBuilderParameters params = (JCRSiteNodeBuilderParameters) parameters;
+            JCRSiteNode wrapper = null;
+            Node siteNode = null;
+            if (params.getParent().hasNode(params.getName())) {
+                siteNode = params.getParent().getNode(params.getName());
+                wrapper = new JCRSiteNode(session, siteNode, getSite(), params.getParentSiteNode());
+            }
+            return wrapper;
+        } catch (javax.jcr.RepositoryException e) {
+            throw new RepositoryException(e);
+        }
+    }
+
+    public String[] getKeys(JCRSession session, Node parent) throws RepositoryException {
+        try {
+            NodeIterator i = parent.getNodes();
+            List keys = new ArrayList();
+            while (i.hasNext()) {
+                Node child = i.nextNode();
+                keys.add(getKey(child));
+            }
+            return (String[]) keys.toArray(new String[keys.size()]);
+        } catch (Exception e) {
+            throw new RepositoryException(e);
+        }
+    }
+
+    public String getKey(Node node) throws RepositoryException {
+        try {
+            return node.getName();
+        } catch (javax.jcr.RepositoryException e) {
             throw new RepositoryException(e);
         }
     }

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapper.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapper.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapper.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapper.java Fri Nov 18 09:02:43 2005
@@ -25,6 +25,7 @@
 
     /**
      * Ctor.
+     * @param node The node.
      */
     public NodeWrapper(Node node) {
         this.node = node;

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperBuilder.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperBuilder.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperBuilder.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperBuilder.java Fri Nov 18 09:02:43 2005
@@ -16,12 +16,38 @@
  */
 package org.apache.lenya.cms.jcr;
 
-import javax.jcr.Node;
-
 import org.apache.lenya.cms.repo.RepositoryException;
 
+/**
+ * Node wrapper builder.
+ */
 public interface NodeWrapperBuilder {
 
-    NodeWrapper buildNode(JCRSession session, boolean create) throws RepositoryException;
+    /**
+     * @param session The session.
+     * @param parameters The parameters.
+     * @return A node wrapper.
+     * @throws RepositoryException if the node does not exist.
+     */
+    NodeWrapper getNode(JCRSession session, BuilderParameters parameters)
+            throws RepositoryException;
+
+    /**
+     * @param session The session.
+     * @param parameters The parameters.
+     * @return A node wrapper.
+     * @throws RepositoryException if the node already exists.
+     */
+    NodeWrapper addNode(JCRSession session, BuilderParameters parameters)
+            throws RepositoryException;
+
+    /**
+     * @param session The session.
+     * @param parameters The parameters.
+     * @return A node wrapper.
+     * @throws RepositoryException if the node does not exist.
+     */
+    boolean existsNode(JCRSession session, BuilderParameters parameters)
+            throws RepositoryException;
 
 }

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperManager.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperManager.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperManager.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/NodeWrapperManager.java Fri Nov 18 09:02:43 2005
@@ -16,9 +16,16 @@
  */
 package org.apache.lenya.cms.jcr;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
+import javax.jcr.Node;
+
+import org.apache.lenya.cms.repo.RepositoryException;
+
 /**
  * A list of node wrappers.
  */
@@ -27,25 +34,79 @@
     /**
      * Ctor.
      * @param session The session.
+     * @param builder The builder.
      */
-    public NodeWrapperManager(JCRSession session) {
+    public NodeWrapperManager(JCRSession session, NodeWrapperBuilder builder) {
         this.session = session;
+        this.builder = builder;
     }
 
     private JCRSession session;
+    private NodeWrapperBuilder builder;
 
     private Map key2node = new HashMap();
 
-    protected NodeWrapper getNode(String key, NodeWrapperBuilder builder, boolean create)
+    protected NodeWrapper getNode(String key, BuilderParameters parameters)
+            throws org.apache.lenya.cms.repo.RepositoryException {
+
+        NodeWrapper wrapper = (NodeWrapper) this.key2node.get(key);
+        if (wrapper == null) {
+            wrapper = builder.getNode(this.session, parameters);
+            this.key2node.put(key, wrapper);
+        }
+
+        return wrapper;
+    }
+
+    protected NodeWrapper getNode(String key, BuilderParameters parameters, boolean create)
+            throws org.apache.lenya.cms.repo.RepositoryException {
+        
+        if (builder.existsNode(this.session, parameters)) {
+            return builder.getNode(this.session, parameters);
+        }
+        else if (create) {
+            return builder.addNode(this.session, parameters);
+        }
+        else {
+            throw new org.apache.lenya.cms.repo.RepositoryException("The node does not exist!");
+        }
+    }
+
+    protected NodeWrapper addNode(String key, BuilderParameters parameters)
             throws org.apache.lenya.cms.repo.RepositoryException {
 
         NodeWrapper wrapper = (NodeWrapper) this.key2node.get(key);
         if (wrapper == null) {
-            wrapper = builder.buildNode(this.session, create);
+            wrapper = builder.addNode(this.session, parameters);
             this.key2node.put(key, wrapper);
         }
 
         return wrapper;
     }
-    
+
+    private List keys;
+
+    protected String[] getKeys(Node reference) throws org.apache.lenya.cms.repo.RepositoryException {
+        loadKeys(reference);
+        return (String[]) this.keys.toArray(new String[this.keys.size()]);
+    }
+
+    protected void loadKeys(Node reference) throws RepositoryException {
+        if (this.keys == null) {
+            this.keys = new ArrayList();
+            if (!(this.builder instanceof ResolvingNodeWrapperBuilder)) {
+                throw new RuntimeException("The builder must be a ResolvingNodeWrapperBuilder.");
+            }
+            ResolvingNodeWrapperBuilder resolvingBuilder = (ResolvingNodeWrapperBuilder) builder;
+
+            String[] nodeKeys = resolvingBuilder.getKeys(session, reference);
+            this.keys.addAll(Arrays.asList(nodeKeys));
+        }
+    }
+
+    protected boolean contains(Node reference, String key) throws RepositoryException {
+        loadKeys(reference);
+        return this.keys.contains(key);
+    }
+
 }

Added: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/ResolvingNodeWrapperBuilder.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/ResolvingNodeWrapperBuilder.java?rev=345523&view=auto
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/ResolvingNodeWrapperBuilder.java (added)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/ResolvingNodeWrapperBuilder.java Fri Nov 18 09:02:43 2005
@@ -0,0 +1,43 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.lenya.cms.jcr;
+
+import javax.jcr.Node;
+
+import org.apache.lenya.cms.repo.RepositoryException;
+
+/**
+ * Resolving node wrapper builder.
+ */
+public interface ResolvingNodeWrapperBuilder extends NodeWrapperBuilder {
+
+    /**
+     * @param session The JCR session.
+     * @param reference The reference node.
+     * @return All existing node keys.
+     * @throws RepositoryException if an error occurs.
+     */
+    String[] getKeys(JCRSession session, Node reference) throws RepositoryException;
+    
+    /**
+     * @param node The node.
+     * @return The key for this node.
+     * @throws RepositoryException if an error occurs.
+     */
+    String getKey(Node node) throws RepositoryException;
+    
+}

Modified: lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java?rev=345523&r1=345522&r2=345523&view=diff
==============================================================================
--- lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java (original)
+++ lenya/trunk/src/modules/jcr/java/src/org/apache/lenya/cms/jcr/metadata/JCRMetaData.java Fri Nov 18 09:02:43 2005
@@ -16,15 +16,10 @@
  */
 package org.apache.lenya.cms.jcr.metadata;
 
-import java.io.OutputStream;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.Value;
 
 import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;

Added: lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java?rev=345523&view=auto
==============================================================================
--- lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java (added)
+++ lenya/trunk/src/modules/jcr/java/test/org/apache/lenya/cms/jcr/JCRRepositoryTest.java Fri Nov 18 09:02:43 2005
@@ -0,0 +1,120 @@
+/*
+ * Copyright  1999-2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.lenya.cms.jcr;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.cocoon.components.validation.Validator;
+import org.apache.lenya.cms.repo.Area;
+import org.apache.lenya.cms.repo.Content;
+import org.apache.lenya.cms.repo.ContentNode;
+import org.apache.lenya.cms.repo.DocumentType;
+import org.apache.lenya.cms.repo.Publication;
+import org.apache.lenya.cms.repo.Repository;
+import org.apache.lenya.cms.repo.RepositoryManager;
+import org.apache.lenya.cms.repo.Session;
+import org.apache.lenya.cms.repo.Site;
+import org.apache.lenya.cms.repo.SiteNode;
+import org.apache.lenya.cms.repo.impl.DocumentTypeImpl;
+import org.apache.lenya.cms.repo.impl.DocumentTypeRegistryImpl;
+import org.apache.lenya.xml.Schema;
+
+/**
+ * JCR repository test.
+ */
+public class JCRRepositoryTest extends TestCase {
+
+    /**
+     * Ctor.
+     */
+    public JCRRepositoryTest() {
+        setWebappDirectory(System.getProperty("test.repo.webappDirectory"));
+        setRepositoryFactory(System.getProperty("test.repo.repositoryFactory"));
+    }
+
+    private String webappDirectory;
+    private String repositoryFactory;
+
+    /**
+     * @param webappDirectory The web application directory.
+     */
+    public void setWebappDirectory(String webappDirectory) {
+        this.webappDirectory = webappDirectory;
+    }
+
+    /**
+     * @return The web application directory.
+     */
+    public String getWebappDirectory() {
+        return this.webappDirectory;
+    }
+
+    /**
+     * @return The repository factory classname.
+     */
+    public String getRepositoryFactory() {
+        return repositoryFactory;
+    }
+
+    /**
+     * @param repositoryFactory The repository factory classname.
+     */
+    public void setRepositoryFactory(String repositoryFactory) {
+        this.repositoryFactory = repositoryFactory;
+    }
+
+    /**
+     * Test.
+     * @throws Exception if an error occurs.
+     */
+    public void testRepository() throws Exception {
+        
+        System.out.println("Starting test");
+
+        Repository repo = RepositoryManager.getRepository(getWebappDirectory(),
+                getRepositoryFactory());
+        Session session = repo.createSession();
+        
+        File webappDir = new File(getWebappDirectory());
+        String path = "lenya/modules/xhtml/schemas/xhtml.rng".replace('/', File.separatorChar);
+        File schemaFile = new File(webappDir, path);
+        Schema schema = new Schema(Validator.GRAMMAR_RELAX_NG, schemaFile.toURI().toString());
+        DocumentType doctype = new DocumentTypeImpl("xhtml", schema, true, "application/xhtml+xml");
+        DocumentTypeRegistryImpl registry = (DocumentTypeRegistryImpl) repo.getDocumentTypeRegistry();
+        registry.register(doctype);
+
+        Publication pub = session.addPublication("test");
+        assertSame(pub, session.getPublication("test"));
+
+        assertFalse(pub.existsArea("authoring"));
+        Area area = pub.addArea("authoring");
+        
+        Content content = area.getContent();
+        Site site = area.getSite();
+        
+        ContentNode node1 = content.addNode("hello", doctype);
+        assertNotNull(node1);
+        ContentNode node2 = content.addNode("world", doctype);
+        assertNotNull(node2);
+        SiteNode parent = site.addChild("parent", node1);
+        SiteNode child = parent.addChild("child", node2);
+        assertSame(node2, child.getContentNode());
+    }
+
+}

Added: lenya/trunk/src/modules/jcr/targets/test-build.xml
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/modules/jcr/targets/test-build.xml?rev=345523&view=auto
==============================================================================
--- lenya/trunk/src/modules/jcr/targets/test-build.xml (added)
+++ lenya/trunk/src/modules/jcr/targets/test-build.xml Fri Nov 18 09:02:43 2005
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 1999-2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: test-build.xml 209293 2005-07-05 16:19:18Z andreas $ -->
+
+<project name="module-jcr-test">
+  
+  <target name="test">
+    <junit printsummary="yes" showoutput="true">
+      <classpath>
+        <fileset dir="${build.webapp}/WEB-INF/lib" includes="*.jar"/>
+        <path location="${build.webapp}/WEB-INF/classes"/>
+      </classpath>
+      <formatter type="plain"/>
+      <sysproperty key="test.repo.webappDirectory" value="${build.webapp}"/>
+      <sysproperty key="test.repo.repositoryFactory" value="${repository.factory}"/>
+      <test name="org.apache.lenya.cms.jcr.JCRRepositoryTest"/>
+    </junit>
+  </target>
+  
+</project>
+  
\ No newline at end of file



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