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