You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/08/17 09:10:52 UTC

svn commit: r986208 - in /incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src: main/java/org/apache/clerezza/platform/content/ main/java/org/apache/clerezza/platform/content/oldhierarchy/ test/java...

Author: reto
Date: Tue Aug 17 07:10:51 2010
New Revision: 986208

URL: http://svn.apache.org/viewvc?rev=986208&view=rev
Log:
CLEREZZA-270: prepared to merge down trunk

Added:
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/CollectionsCreatorTest.java
      - copied, changed from r985375, incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/HierarchyTest.java
Removed:
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/oldhierarchy/
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/HierarchyTest.java
Modified:
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
    incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java

Modified: incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java?rev=986208&r1=986207&r2=986208&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java Tue Aug 17 07:10:51 2010
@@ -24,11 +24,7 @@ import java.util.Iterator;
 
 import java.util.Set;
 import javax.ws.rs.core.MediaType;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyService;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeAlreadyExistsException;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.oldhierarchy.UnknownRootExcetpion;
+import org.apache.clerezza.platform.content.collections.CollectionCreator;
 
 import org.apache.clerezza.rdf.core.LiteralFactory;
 import org.apache.clerezza.rdf.core.MGraph;
@@ -64,29 +60,16 @@ public abstract class AbstractDiscobitsH
 	 */
 	protected abstract Set<MetaDataGenerator> getMetaDataGenerators();
 
-	/**
-	 * Returns the hierarchy service used to manage hierachy in the content
-	 * graph
-	 * @return the hierarchy service
-	 */
-	protected abstract HierarchyService getHierarchyService();
 	
 	@Override
 	public void put(UriRef infoDiscoBitUri, MediaType mediaType,
 			byte[] data) {
 
 		GraphNode infoDiscoBitNode;
-		try {
-			HierarchyService hierarchyService = getHierarchyService();
-			if (hierarchyService == null) {
-				infoDiscoBitNode = new GraphNode(infoDiscoBitUri, getMGraph());
-			} else {
-				infoDiscoBitNode = hierarchyService.createNonCollectionNode(infoDiscoBitUri);
-			}
-			
-		} catch (NodeAlreadyExistsException ex) {
-			infoDiscoBitNode = new GraphNode(infoDiscoBitUri, getMGraph());
-		}
+		final MGraph mGraph = getMGraph();
+		infoDiscoBitNode = new GraphNode(infoDiscoBitUri, mGraph);
+		CollectionCreator collectionCreator = new CollectionCreator(mGraph);
+		collectionCreator.createContainingCollections(infoDiscoBitUri);
 		infoDiscoBitNode.addProperty(RDF.type, DISCOBITS.InfoDiscoBit);
 		TypedLiteral dataLiteral = LiteralFactory.getInstance().createTypedLiteral(data);
 		infoDiscoBitNode.deleteProperties(DISCOBITS.infoBit);
@@ -129,20 +112,7 @@ public abstract class AbstractDiscobitsH
 				return;
 			}			
 		}
-		GraphNode graphNode;
-		try {
-			HierarchyService hierarchyService = getHierarchyService();
-			if (hierarchyService == null) {
-				graphNode = new GraphNode(node, mGraph);
-			} else {
-				graphNode = hierarchyService.getHierarchyNode((UriRef) node);
-				((HierarchyNode) graphNode).delete();
-			}
-		} catch (NodeDoesNotExistException ex) {
-			graphNode = new GraphNode(node, mGraph);
-		} catch (UnknownRootExcetpion ex) {
-			graphNode = new GraphNode(node, mGraph);
-		}
+		GraphNode graphNode = new GraphNode(node, mGraph);
 		graphNode.deleteNodeContext();
 	}
 

Modified: incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java?rev=986208&r1=986207&r2=986208&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java Tue Aug 17 07:10:51 2010
@@ -18,7 +18,6 @@ package org.apache.clerezza.platform.con
 import java.net.URL;
 import java.util.Map;
 import javax.ws.rs.GET;
-import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -29,10 +28,6 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
-import org.apache.clerezza.platform.content.oldhierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.oldhierarchy.UnknownRootExcetpion;
 import org.apache.clerezza.platform.content.webdav.COPY;
 import org.apache.clerezza.platform.content.webdav.LOCK;
 import org.apache.clerezza.platform.content.webdav.UNLOCK;
@@ -104,40 +99,28 @@ public class CollectionTypeHandler exten
 		graphNode.addProperty(RDF.type, PLATFORM.HeadedPage);
 
 		UriRef collectionUri = new UriRef(uriInfo.getAbsolutePath().toString());
-		CollectionNode collection = null;
-		try {
-			collection = hierarchyService.getCollectionNode(collectionUri);
-		} catch (NodeDoesNotExistException ex) {
-			throw new WebApplicationException(ex);
-		} catch (UnknownRootExcetpion ex) {
-			throw new WebApplicationException(ex);
-		}
-		CollectionNode parent = collection.getParent();
-		if (parent != null){
-			graphNode.addProperty(HIERARCHY.parent, parent.getNode());
-		}
 		return graphNode;
 	}
 
 	@Override
-	Map<UriRef, PropertyMap> getPropNames(HierarchyNode node, String depthHeader) {
-		return WebDavUtils.getCollectionProps(null, null, null, (CollectionNode) node,
+	Map<UriRef, PropertyMap> getPropNames(GraphNode node, String depthHeader) {
+		return WebDavUtils.getCollectionProps(null, null, null, node,
 							depthHeader, false /* doesNotIncludeValues */);
 	}
 
 	@Override
-	Map<UriRef, PropertyMap> getPropsByName(Node requestNode, HierarchyNode node,
+	Map<UriRef, PropertyMap> getPropsByName(Node requestNode, GraphNode node,
 			String depthHeader) {
 		Map<UriRef, PropertyMap> result;
 		NodeList children = requestNode.getChildNodes();
-		result = WebDavUtils.getPropsByName(children, (CollectionNode) node, depthHeader,
+		result = WebDavUtils.getPropsByName(children, node, depthHeader,
 				true /* includeValues */);
 		return result;
 	}
 
 	@Override
-	Map<UriRef, PropertyMap> getAllProps(HierarchyNode node, String depthHeader) {
-		return WebDavUtils.getCollectionProps(null, null, null, (CollectionNode) node,
+	Map<UriRef, PropertyMap> getAllProps(GraphNode node, String depthHeader) {
+		return WebDavUtils.getCollectionProps(null, null, null, node,
 							depthHeader, true /* includeValues */);
 	}
 

Modified: incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java?rev=986208&r1=986207&r2=986208&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java Tue Aug 17 07:10:51 2010
@@ -30,6 +30,7 @@ import java.util.List;
 import java.util.Map;
 
 import java.util.Set;
+import java.util.concurrent.locks.Lock;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
@@ -48,14 +49,7 @@ import javax.xml.transform.TransformerFa
 import javax.xml.transform.dom.DOMSource;
 import org.apache.clerezza.jaxrs.utils.RedirectUtil;
 import org.apache.clerezza.platform.content.WebDavUtils.PropertyMap;
-import org.apache.clerezza.platform.content.oldhierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyService;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyUtils;
-import org.apache.clerezza.platform.content.oldhierarchy.IllegalMoveException;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeAlreadyExistsException;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.oldhierarchy.UnknownRootExcetpion;
+import org.apache.clerezza.platform.content.collections.CollectionCreator;
 import org.apache.clerezza.platform.content.webdav.MKCOL;
 import org.apache.clerezza.platform.content.webdav.MOVE;
 import org.apache.clerezza.platform.content.webdav.PROPFIND;
@@ -74,7 +68,12 @@ import org.apache.clerezza.platform.grap
 import org.apache.clerezza.platform.typehandlerspace.OPTIONS;
 import org.apache.clerezza.platform.typehandlerspace.SupportedTypes;
 import org.apache.clerezza.rdf.core.MGraph;
+import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
+import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import org.apache.clerezza.rdf.ontologies.HIERARCHY;
+import org.apache.clerezza.rdf.ontologies.RDF;
 import org.apache.clerezza.rdf.utils.GraphNode;
 import org.apache.clerezza.web.fileserver.util.MediaTypeGuesser;
 import org.w3c.dom.Document;
@@ -108,9 +107,6 @@ public class DiscobitsTypeHandler extend
 
 	@Reference
 	protected ContentGraphProvider cgProvider;
-
-	@Reference
-	protected HierarchyService hierarchyService;
 	
 	private static final Logger logger = LoggerFactory.getLogger(DiscobitsTypeHandler.class);
 
@@ -181,17 +177,19 @@ public class DiscobitsTypeHandler extend
 	 */
 	@MKCOL
 	public Object mkcol(@Context UriInfo uriInfo) {
-		UriRef nodeUri = new UriRef(uriInfo.getAbsolutePath().toString());
-		nodeUri = HierarchyUtils.makeCollectionUriRef(nodeUri);
-		try {
-			hierarchyService.createCollectionNode(nodeUri);
-		} catch (NodeAlreadyExistsException e) {
-			logger.debug("Collection \""
-					+ nodeUri.getUnicodeString() + "\" already exists.");
+		String uriString = uriInfo.getAbsolutePath().toString();
+		if (uriString.charAt(uriString.length()-1) != '/') {
+			uriString += '/';
+		}
+		UriRef nodeUri = new UriRef(uriString);
+		final MGraph mGraph = cgProvider.getContentGraph();
+		Triple typeTriple = new TripleImpl(nodeUri, RDF.type, HIERARCHY.Collection);
+		if (mGraph.contains(typeTriple)) {
 			return Response.status(405) // Method Not Allowed
 					.entity("Collection \"" + nodeUri.getUnicodeString()
 					+ "\" already exists.").build();
 		}
+		new CollectionCreator(mGraph).createContainingCollections(nodeUri);
 		return Response.created(uriInfo.getAbsolutePath()).build();
 	}
 
@@ -219,54 +217,50 @@ public class DiscobitsTypeHandler extend
 			return checkIfOppositExistsAndRedirectIfSo(nodeUri, uriInfo);
 		}
 			Map<UriRef, PropertyMap> result;
-			try {
-				String depthHeader = WebDavUtils.getHeaderAsString(headers, "Depth");
-				if (depthHeader == null) {
-					depthHeader = WebDavUtils.infinite;
-				}
-				HierarchyNode node = hierarchyService.getHierarchyNode(nodeUri);
-				if (body != null) {
-					Document requestDoc = WebDavUtils.sourceToDocument(body);
-					Node propfindNode = WebDavUtils.getNode(requestDoc, WebDavUtils.propfind);
-					Node requestNode = WebDavUtils.getFirstChild(propfindNode);
-					String requestType = requestNode.getLocalName();
-					if (requestType.equalsIgnoreCase(WebDavUtils.allprop)) {
-						result = getAllProps(node, depthHeader);
-					} else if (requestType.equalsIgnoreCase(WebDavUtils.prop)) {
-						result = getPropsByName(requestNode, node, depthHeader);
-					} else if (requestType.equalsIgnoreCase(WebDavUtils.propname)) {
-						result = getPropNames(node, depthHeader);
-					} else {
-						return Response.status(Status.BAD_REQUEST).build();
-					}
-				} else {
-					// returns all properties
+		try {
+			String depthHeader = WebDavUtils.getHeaderAsString(headers, "Depth");
+			if (depthHeader == null) {
+				depthHeader = WebDavUtils.infinite;
+			}
+			final MGraph mGraph = cgProvider.getContentGraph();
+			GraphNode node = new GraphNode(nodeUri, mGraph);
+			if (body != null) {
+				Document requestDoc = WebDavUtils.sourceToDocument(body);
+				Node propfindNode = WebDavUtils.getNode(requestDoc, WebDavUtils.propfind);
+				Node requestNode = WebDavUtils.getFirstChild(propfindNode);
+				String requestType = requestNode.getLocalName();
+				if (requestType.equalsIgnoreCase(WebDavUtils.allprop)) {
 					result = getAllProps(node, depthHeader);
+				} else if (requestType.equalsIgnoreCase(WebDavUtils.prop)) {
+					result = getPropsByName(requestNode, node, depthHeader);
+				} else if (requestType.equalsIgnoreCase(WebDavUtils.propname)) {
+					result = getPropNames(node, depthHeader);
+				} else {
+					return Response.status(Status.BAD_REQUEST).build();
 				}
-				Document responseDoc = WebDavUtils.createResponseDoc(result);
-				return Response.status(207).entity(new DOMSource(responseDoc)).type(
-						MediaType.APPLICATION_XML_TYPE).build();
-			} catch (NodeDoesNotExistException e) {
-				return Response.status(Status.NOT_FOUND).entity(
-						e.getMessage()).type(MediaType.TEXT_PLAIN).build();
-			} catch (TransformerFactoryConfigurationError e) {
-				return Response.status(Status.BAD_REQUEST).build();
-			} catch (TransformerException e) {
-				return Response.status(Status.BAD_REQUEST).build();
-			} catch (ParserConfigurationException e) {
-				throw new RuntimeException(e);
-			} catch(UnknownRootExcetpion ex) {
-				return Response.status(Status.BAD_REQUEST).build();
+			} else {
+				// returns all properties
+				result = getAllProps(node, depthHeader);
 			}
+			Document responseDoc = WebDavUtils.createResponseDoc(result);
+			return Response.status(207).entity(new DOMSource(responseDoc)).type(
+					MediaType.APPLICATION_XML_TYPE).build();
+		} catch (TransformerFactoryConfigurationError e) {
+			return Response.status(Status.BAD_REQUEST).build();
+		} catch (TransformerException e) {
+			return Response.status(Status.BAD_REQUEST).build();
+		} catch (ParserConfigurationException e) {
+			throw new RuntimeException(e);
+		}
 	}
 
-	Map<UriRef, PropertyMap> getPropNames(HierarchyNode node, String depthHeader) {
+	Map<UriRef, PropertyMap> getPropNames(GraphNode node, String depthHeader) {
 		Map<UriRef, PropertyMap> result = new HashMap<UriRef, PropertyMap>();
 		WebDavUtils.addNodeProperties(result, null, null, node, false);
 		return result;
 	}
 
-	Map<UriRef, PropertyMap> getPropsByName(Node requestNode, HierarchyNode node,
+	Map<UriRef, PropertyMap> getPropsByName(Node requestNode, GraphNode node,
 			String depthHeader) {
 		Map<UriRef, PropertyMap> result;
 		NodeList children = requestNode.getChildNodes();
@@ -274,7 +268,7 @@ public class DiscobitsTypeHandler extend
 		return result;
 	}
 
-	Map<UriRef, PropertyMap> getAllProps(HierarchyNode node, String depthHeader) {
+	Map<UriRef, PropertyMap> getAllProps(GraphNode node, String depthHeader) {
 		HashMap<UriRef, PropertyMap> result = new HashMap<UriRef, PropertyMap>();
 		WebDavUtils.addNodeProperties(result, null, null, node, true);
 		return result;
@@ -301,7 +295,8 @@ public class DiscobitsTypeHandler extend
 		}
 		try {
 			Document requestDoc = WebDavUtils.sourceToDocument(body);
-			HierarchyNode node = hierarchyService.getHierarchyNode(nodeUri);
+			final MGraph mGraph = cgProvider.getContentGraph();
+			GraphNode node = new GraphNode(nodeUri, mGraph);
 			NodeList propsToSet = null;
 			NodeList propsToRemove = null;
 			Node proppatchNode = WebDavUtils.getNode(requestDoc, WebDavUtils.proppatch);
@@ -320,18 +315,13 @@ public class DiscobitsTypeHandler extend
 			Document responseDoc = WebDavUtils.modifyProperties(node, propsToSet, propsToRemove);
 			return Response.status(207).entity(new DOMSource(responseDoc)).type(
 					MediaType.APPLICATION_XML_TYPE).build();
-		} catch (NodeDoesNotExistException e) {
-			return Response.status(Status.NOT_FOUND).entity(
-					e.getMessage()).type(MediaType.TEXT_PLAIN).build();
-		}catch (ParserConfigurationException ex) {
+		} catch (ParserConfigurationException ex) {
 			throw new RuntimeException(ex);
 		} catch (TransformerFactoryConfigurationError ex) {
 			return Response.status(Status.BAD_REQUEST).build();
 		} catch (TransformerException ex) {
 			return Response.status(Status.BAD_REQUEST).build();
-		} catch(UnknownRootExcetpion ex) {
-			return Response.status(Status.BAD_REQUEST).build();
-		}
+		} 
 	}
 
 	/**
@@ -352,66 +342,42 @@ public class DiscobitsTypeHandler extend
 	@MOVE
 	public Response move(@Context UriInfo uriInfo, @Context HttpHeaders headers) {
 		UriRef nodeUri = new UriRef(uriInfo.getAbsolutePath().toString());
-		if (!nodeAtUriExists(nodeUri)) {
-			UriRef oppositUri = HierarchyUtils.makeOppositeUriRef(nodeUri);
-			if(nodeAtUriExists(oppositUri)) {
-				nodeUri = oppositUri;
+		final LockableMGraph mGraph = cgProvider.getContentGraph();
+		GraphNode node = new GraphNode(nodeUri, mGraph);
+		String targetString = WebDavUtils.getHeaderAsString(headers,
+					"Destination");
+		UriRef targetUri = new UriRef(targetString);
+		String overwriteHeader = WebDavUtils.getHeaderAsString(headers, "Overwrite");
+		boolean overwriteTarget = "T".equalsIgnoreCase(overwriteHeader);
+		if (nodeAtUriExists(targetUri)) {
+			if (overwriteTarget) {
+				new GraphNode(targetUri, mGraph).deleteNodeContext();
 			} else {
-				return Response.status(Status.NOT_FOUND).build();
+				return Response.status(Status.PRECONDITION_FAILED).build();
 			}
 		}
-		HierarchyNode targetNode;
-		String overwriteHeader = null;
-		CollectionNode newParentCollection = null;
+		Lock l = mGraph.getLock().writeLock();
+		l.lock();
 		try {
-			targetNode = hierarchyService.getHierarchyNode(nodeUri);
-			/* ignored at the moment */
-			overwriteHeader = WebDavUtils.getHeaderAsString(headers, "Overwrite");
-			if (overwriteHeader == null) {
-				overwriteHeader = "F";
+			Iterator<Triple> oldParentTripleIter
+					= mGraph.filter(nodeUri, HIERARCHY.parent, null);
+			if (oldParentTripleIter.hasNext()) {
+				oldParentTripleIter.next();
+				oldParentTripleIter.remove();
+			}
+			while (oldParentTripleIter.hasNext()) {
+				logger.error("more than one parent statement: "+oldParentTripleIter.next());
+				oldParentTripleIter.remove();
 			}
-			String newCollectionString = WebDavUtils.getHeaderAsString(headers,
-					"Destination");
-			if (newCollectionString != null) {				
-				UriRef newParentUri = HierarchyUtils.extractParentCollectionUri(
-						new UriRef(newCollectionString));
-				newParentCollection = hierarchyService
-						.getCollectionNode(newParentUri);
-				targetNode.move(newParentCollection, HierarchyUtils.getName(
-						new UriRef(newCollectionString)), newParentCollection
-						.getMembers().size());
-				return Response.created(new java.net.URI(nodeUri.getUnicodeString()))
-						.build();
-			} else {
-				logger.error("empty Destination header!");
-				return Response.status(Status.BAD_REQUEST).build();
-			}
-		} catch (URISyntaxException e) {
-			return Response.status(Status.BAD_REQUEST).build();
-		} catch (NodeDoesNotExistException e) {
-			return Response.status(Status.NOT_FOUND).build();
-		} catch (NodeAlreadyExistsException e) {
-			if (overwriteHeader.equals("F")) {
-				return Response.status(Status.PRECONDITION_FAILED).build();
-			} else if (overwriteHeader.equals("T")) {
-				try {
-					String name = HierarchyUtils.getName(nodeUri);
-					hierarchyService.getHierarchyNode(
-							new UriRef(newParentCollection.getNode().
-							getUnicodeString() + name)).delete();
-					return this.move(uriInfo, headers);
-				} catch (NodeDoesNotExistException ex) {
-					throw new RuntimeException(e);
-				} catch (UnknownRootExcetpion ex) {
-					throw new RuntimeException(ex);
-				}
-			} else {
-				return Response.status(Status.BAD_REQUEST).build();
+			node.replaceWith(targetUri);
+			new CollectionCreator(mGraph).createContainingCollections(targetUri);
+			try {
+				return Response.created(new java.net.URI(targetUri.getUnicodeString())).build();
+			} catch (URISyntaxException ex) {
+				throw new IllegalArgumentException(ex);
 			}
-		} catch (IllegalMoveException e) {
-			return Response.status(Status.FORBIDDEN).build();
-		} catch (UnknownRootExcetpion ex) {
-			return Response.status(Status.BAD_REQUEST).build();
+		} finally {
+			l.unlock();
 		}
 	}
 
@@ -429,26 +395,12 @@ public class DiscobitsTypeHandler extend
 	public Response delete(@Context UriInfo uriInfo) {
 		UriRef nodeUri = new UriRef(uriInfo.getAbsolutePath().toString());
 		if (!nodeAtUriExists(nodeUri)) {
-			UriRef oppositUri = HierarchyUtils.makeOppositeUriRef(nodeUri);
-			if(nodeAtUriExists(oppositUri)) {
-				nodeUri = oppositUri;
-			} else {
-				return Response.status(Status.NOT_FOUND).entity(
-					uriInfo.getAbsolutePath()).type(MediaType.TEXT_PLAIN).build();
-			}
-		}
-		
-		HierarchyNode hierarchyNode;
-		try {
-			hierarchyNode = hierarchyService.getHierarchyNode(nodeUri);
-		} catch (NodeDoesNotExistException e) {
-			return Response.status(Status.NOT_FOUND).entity(
-					uriInfo.getAbsolutePath()).type(MediaType.TEXT_PLAIN).build();
-		} catch (UnknownRootExcetpion ex) {
 			return Response.status(Status.NOT_FOUND).entity(
 					uriInfo.getAbsolutePath()).type(MediaType.TEXT_PLAIN).build();
 		}
-		hierarchyNode.delete();
+		final LockableMGraph mGraph = cgProvider.getContentGraph();
+		GraphNode node = new GraphNode(nodeUri, mGraph);
+		node.deleteNodeContext();
 		return Response.ok().build();
 	}
 
@@ -512,10 +464,7 @@ public class DiscobitsTypeHandler extend
 		return metaDataGenerators;
 	}
 
-	@Override
-	protected HierarchyService getHierarchyService() {
-		return hierarchyService;
-	}	
+	
 
 	private boolean nodeAtUriExists(UriRef nodeUri) {
 		MGraph mGraph = getMGraph();
@@ -525,11 +474,25 @@ public class DiscobitsTypeHandler extend
 
 	private Response checkIfOppositExistsAndRedirectIfSo(UriRef nodeUri,
 			UriInfo uriInfo) {
-		UriRef oppositUri = HierarchyUtils.makeOppositeUriRef(nodeUri);
+		UriRef oppositUri = makeOppositeUriRef(nodeUri);
 		if (nodeAtUriExists(oppositUri)) {
 			return RedirectUtil.createSeeOtherResponse(
 					oppositUri.getUnicodeString(), uriInfo);
 		}
 		return Response.status(Status.NOT_FOUND).build();
 	}
+	/**
+	 * add trailing slash if none present, remove otherwise
+	 *
+	 * @param uri
+	 * @return
+	 */
+	private static UriRef makeOppositeUriRef(UriRef uri) {
+		String uriString = uri.getUnicodeString();
+		if (uriString.endsWith("/")) {
+			return new UriRef(uriString.substring(0, uriString.length() - 1));
+		} else {
+			return new UriRef(uriString + "/");
+		}
+	}
 }

Modified: incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java?rev=986208&r1=986207&r2=986208&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java (original)
+++ incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java Tue Aug 17 07:10:51 2010
@@ -20,7 +20,6 @@ package org.apache.clerezza.platform.con
 
 import org.apache.clerezza.rdf.metadata.MetaDataGenerator;
 import java.util.Set;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyService;
 import org.apache.clerezza.rdf.core.MGraph;
 
 /**
@@ -45,9 +44,6 @@ class SimpleDiscobitsHandler extends Abs
 		return null;
 	}
 
-	@Override
-	protected HierarchyService getHierarchyService() {
-		return null;
-	}
+
 
 }

Modified: incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java?rev=986208&r1=986207&r2=986208&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java (original)
+++ incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java Tue Aug 17 07:10:51 2010
@@ -40,8 +40,6 @@ import javax.xml.transform.TransformerEx
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMResult;
-import org.apache.clerezza.platform.content.oldhierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyNode;
 import org.apache.clerezza.rdf.core.Literal;
 import org.apache.clerezza.rdf.core.LiteralFactory;
 import org.apache.clerezza.rdf.core.Resource;
@@ -50,6 +48,8 @@ import org.apache.clerezza.rdf.core.UriR
 import org.apache.clerezza.rdf.core.impl.TripleImpl;
 import org.apache.clerezza.rdf.ontologies.DCTERMS;
 import org.apache.clerezza.rdf.ontologies.HIERARCHY;
+import org.apache.clerezza.rdf.ontologies.RDF;
+import org.apache.clerezza.rdf.utils.GraphNode;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -282,7 +282,7 @@ class WebDavUtils {
 	 *------------------------------------------------------------*/
 
 	static Map<UriRef, PropertyMap> getPropsByName(NodeList children,
-			HierarchyNode node, String depthHeader, boolean includeValues) {
+			GraphNode node, String depthHeader, boolean includeValues) {
 		List<Property> requestedUserProps = new ArrayList<Property>();
 		List<Property> requestedDavProps = new ArrayList<Property>();
 
@@ -301,9 +301,9 @@ class WebDavUtils {
 		}
 		Map<UriRef, PropertyMap> allprops = new HashMap<UriRef, PropertyMap>();
 
-		if (node instanceof CollectionNode) {
+		if (node.hasProperty(RDF.type, HIERARCHY.Collection)) {
 			return getCollectionProps(allprops, requestedUserProps, requestedDavProps,
-					(CollectionNode) node, depthHeader, includeValues);
+					node, depthHeader, includeValues);
 		}else{
 			addNodeProperties(allprops, requestedUserProps, requestedDavProps,
 					node, includeValues);
@@ -314,14 +314,18 @@ class WebDavUtils {
 	
 	static Map<UriRef, PropertyMap> getCollectionProps(Map<UriRef, PropertyMap> allprops,
 			List<Property> requestedUserProps, List<Property> requestedDavProps,
-			CollectionNode collection, String depthHeader, boolean includeValues) {
+			GraphNode collection, String depthHeader, boolean includeValues) {
 		if(allprops == null){
 			allprops = new HashMap<UriRef, PropertyMap>();
 		}
-		List<HierarchyNode> members = collection.getMembers();
 		addNodeProperties(allprops, requestedUserProps, requestedDavProps, collection,
 				includeValues);
 		if (depthHeader.equals("1") || depthHeader.equals(infinite)) {
+			Iterator<GraphNode> membersIter = collection.getSubjectNodes(HIERARCHY.parent);
+			List<GraphNode> members = new ArrayList<GraphNode>();
+			while (membersIter.hasNext()) {
+				members.add(membersIter.next());
+			}
 			addMemberProps(allprops, requestedUserProps, requestedDavProps, members,
 					depthHeader, includeValues);
 		}
@@ -330,11 +334,11 @@ class WebDavUtils {
 
 	private static void addMemberProps(Map<UriRef, PropertyMap> allprops,
 			List<Property> requestedUserProps, List<Property> requestedDavProps,
-			List<HierarchyNode> members, String depthHeader, boolean includeValues) {
-		for (HierarchyNode member : members) {
-			if (depthHeader.equals(infinite) && member instanceof CollectionNode) {
+			List<GraphNode> members, String depthHeader, boolean includeValues) {
+		for (GraphNode member : members) {
+			if (depthHeader.equals(infinite) && member.hasProperty(RDF.type, HIERARCHY.Collection)) {
 				getCollectionProps(allprops, requestedUserProps, requestedDavProps,
-						(CollectionNode) member, depthHeader, includeValues);
+						member, depthHeader, includeValues);
 			} else {
 				addNodeProperties(allprops, requestedUserProps, requestedDavProps,
 						member,	includeValues);
@@ -344,7 +348,7 @@ class WebDavUtils {
 
 	static void addNodeProperties(Map<UriRef, PropertyMap> allprops,
 			List<Property> requestedUserProps, List<Property> requestedDavProps,
-			HierarchyNode node,	boolean includeValues) {
+			GraphNode node,	boolean includeValues) {
 
 		if (requestedDavProps == null) {
 			requestedDavProps = new ArrayList<Property>();
@@ -360,11 +364,11 @@ class WebDavUtils {
 			addDavPropsWithoutValues(propertyMap);
 			addUserPropsWithoutValues(node, propertyMap);
 		}
-		allprops.put(node.getNode(), propertyMap);
+		allprops.put((UriRef) node.getNode(), propertyMap);
 
 	}
 
-	private static void addUserProps(HierarchyNode node, PropertyMap propertyMap,
+	private static void addUserProps(GraphNode node, PropertyMap propertyMap,
 			List<Property> requestedProps) {
 		Iterator<UriRef> userPropsIter = node.getProperties();
 		Set<UriRef> userProps = new HashSet<UriRef>();
@@ -406,7 +410,7 @@ class WebDavUtils {
 		}
 	}
 
-	private static void addUserPropsWithoutValues(HierarchyNode node,
+	private static void addUserPropsWithoutValues(GraphNode node,
 			PropertyMap propertyMap) {
 		Iterator<UriRef> userPropsIter = node.getProperties();
 		Set<UriRef> userProps = new HashSet<UriRef>();
@@ -448,14 +452,14 @@ class WebDavUtils {
 	 * @param includeValues
 	 * @param requestedProps
 	 */
-	private static void addDavProps(HierarchyNode node, PropertyMap propertyMap,
+	private static void addDavProps(GraphNode node, PropertyMap propertyMap,
 			List<Property> requestedProps) {
 		for (Property property : requestedProps) {
 			if (davProps.contains(property.prop)) {
 				if (property.prop.equalsIgnoreCase(displayname)) {
-					propertyMap.put(property, node.getName());
+					propertyMap.put(property, getLastSection(((UriRef)node.getNode()).getUnicodeString()));
 				} else if (property.prop.equalsIgnoreCase(resourcetype)) {
-					if (node instanceof CollectionNode) {
+					if (node.hasProperty(RDF.type, HIERARCHY.Collection)) {
 						propertyMap.put(property, "collection");
 					} else {
 						propertyMap.put(property, "");
@@ -503,13 +507,13 @@ class WebDavUtils {
 	 * Proppatch methods *
 	 *-------------------*/
 
-	static Document modifyProperties(HierarchyNode hierarchyNode, NodeList propsToSet,
+	static Document modifyProperties(GraphNode hierarchyNode, NodeList propsToSet,
 			NodeList propsToRemove) throws ParserConfigurationException {
 		Document responseDoc = DocumentBuilderFactory.newInstance()
 					.newDocumentBuilder().newDocument();
-		UriRef subject = hierarchyNode.getNode();
+		UriRef subject = (UriRef) hierarchyNode.getNode();
 		Element hrefElement = responseDoc.createElementNS(davUri, href);
-		hrefElement.setTextContent(hierarchyNode.getNode().getUnicodeString());
+		hrefElement.setTextContent(subject.getUnicodeString());
 		Element multistatus = responseDoc.createElementNS(davUri, multistat);
 		Element responseElement = responseDoc.createElementNS(davUri, response);
 		Element propOk = responseDoc.createElementNS(davUri, prop);
@@ -606,6 +610,10 @@ class WebDavUtils {
 				fac.createTypedLiteral(entry.getValue())));
 	}
 
+	private static String getLastSection(String s) {
+		return s.substring(s.lastIndexOf('/', s.length()-2));
+	}
+
 	/**
 	 * Helper class whicht is a {@link HashMap} that maps {@link Property} to a {@link String}
 	 * @author ali

Copied: incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/CollectionsCreatorTest.java (from r985375, incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/HierarchyTest.java)
URL: http://svn.apache.org/viewvc/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/CollectionsCreatorTest.java?p2=incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/CollectionsCreatorTest.java&p1=incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/HierarchyTest.java&r1=985375&r2=986208&rev=986208&view=diff
==============================================================================
--- incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/HierarchyTest.java (original)
+++ incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/CollectionsCreatorTest.java Tue Aug 17 07:10:51 2010
@@ -16,343 +16,39 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.clerezza.platform.content.oldhierarchy;
+package org.apache.clerezza.platform.content.collections;
 
-import org.apache.clerezza.platform.content.oldhierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeAlreadyExistsException;
-import org.apache.clerezza.platform.content.oldhierarchy.UnknownRootExcetpion;
-import org.apache.clerezza.platform.content.oldhierarchy.IllegalMoveException;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.oldhierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.oldhierarchy.HierarchyService;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.locks.Lock;
-import org.apache.clerezza.rdf.utils.GraphNode;
 import org.junit.Assert;
 import org.junit.Test;
-import org.apache.clerezza.platform.config.PlatformConfig;
-import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
-import org.apache.clerezza.rdf.core.BNode;
 import org.apache.clerezza.rdf.core.MGraph;
-import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.LockableMGraph;
-import org.apache.clerezza.rdf.core.access.LockableMGraphWrapper;
-import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
 import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
 import org.apache.clerezza.rdf.core.impl.TripleImpl;
-import org.apache.clerezza.rdf.core.test.LockableMGraphWrapperForTesting;
 import org.apache.clerezza.rdf.ontologies.HIERARCHY;
-import org.apache.clerezza.rdf.ontologies.PLATFORM;
 import org.apache.clerezza.rdf.ontologies.RDF;
 
 
 /**
- * @author mir
+ * @author mir, rbn
  */
-public class HierarchyTest{
+public class CollectionsCreatorTest{
 
 	private static UriRef root = new UriRef("http://localhost:8282/");
 	private UriRef foo = new UriRef("http://localhost:8282/foo/");
 	private UriRef fooResource = new UriRef("http://localhost:8282/foo/resource");
-	private UriRef fooResource2 = new UriRef("http://localhost:8282/foo/resource2");
-	private UriRef fooResource3 = new UriRef("http://localhost:8282/foo/resource3");
 	private UriRef fooTest = new UriRef("http://localhost:8282/foo/test/");
 	private UriRef fooTestResource4 = new UriRef("http://localhost:8282/foo/test/resource4");
-	private UriRef fooFolder1 = new UriRef("http://localhost:8282/foo/folder1/");
-	private UriRef bar = new UriRef("http://localhost:8282/bar/");
-	private UriRef barResource = new UriRef("http://localhost:8282/bar/resource");
-	private UriRef barResource2 = new UriRef("http://localhost:8282/bar/resource2");
-	private UriRef barFoo = new UriRef("http://localhost:8282/bar/foo/");
-	private UriRef barFooResource = new UriRef("http://localhost:8282/bar/foo/resource");
-	private UriRef barFooTest = new UriRef("http://localhost:8282/bar/foo/test/");
-	private UriRef newRoot = new UriRef("http://newRoot/");
-	private UriRef newRootTest = new UriRef("http://newRoot/test/");
-	private UriRef newRoot2Resource = new UriRef("http://newRoot2/resource");
-	private UriRef newRoot2 = new UriRef("http://newRoot2/");
 		
 	@Test
-	public void listPositionTest() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		HierarchyNode res1Node = hierarchyService.createNonCollectionNode(fooResource);
-		HierarchyNode res3Node = hierarchyService.createNonCollectionNode(fooResource3);
-		HierarchyNode res2Node = hierarchyService.createNonCollectionNode(fooResource2, 1);
-		CollectionNode fooNode = res1Node.getParent();
-		Iterator<HierarchyNode> fooMembers = fooNode.getMembers().iterator();
-
-		Assert.assertEquals(res1Node, fooMembers.next());
-		Assert.assertEquals(res2Node, fooMembers.next());
-		Assert.assertEquals(res3Node, fooMembers.next());
-	}
-
-	@Test
-	public void collectionNodeCreationAndDeletionTest() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		CollectionNode fooFolder1Node = hierarchyService.createCollectionNode(fooFolder1, 0);
-		boolean exceptionThrown = false;
-		try {
-			hierarchyService.createCollectionNode(foo);
-		} catch(NodeAlreadyExistsException e) {
-			exceptionThrown = true;
-		}
-		Assert.assertTrue(exceptionThrown);
-		try {
-			hierarchyService.createCollectionNode(fooResource);
-		} catch(IllegalArgumentException e) {
-			exceptionThrown = true;
-		}
-
-		Assert.assertTrue(exceptionThrown);
-		CollectionNode fooNode = (CollectionNode)hierarchyService.getHierarchyNode(foo);
-		List<HierarchyNode> fooMembers = fooNode.getMembers();
-		Assert.assertEquals(1, fooMembers.size());	
-		Assert.assertEquals(fooFolder1Node, fooMembers.get(0));
-		CollectionNode rootNode = (CollectionNode)hierarchyService.getHierarchyNode(root);
-		List<HierarchyNode> rootList = rootNode.getMembers();
-		Assert.assertEquals(1, rootList.size());
-		Assert.assertEquals(fooNode, rootList.get(0));
-	
-		fooNode.delete();
-
-		exceptionThrown = false;
-		try {
-			fooFolder1Node = (CollectionNode) hierarchyService.getHierarchyNode(fooFolder1);
-		} catch(NodeDoesNotExistException e) {
-			exceptionThrown = true;
-		}
-		Assert.assertTrue(exceptionThrown);
-
-		exceptionThrown = false;
-		try {
-			fooNode = (CollectionNode) hierarchyService.getHierarchyNode(foo);
-		} catch(NodeDoesNotExistException e) {
-			exceptionThrown = true;
-		}
-		Assert.assertTrue(exceptionThrown);
-	}
-
-    @Test
-	public void nonCollectionNodeCreation() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		HierarchyNode fooTestResource4Node = hierarchyService.
-		createNonCollectionNode(fooTestResource4, 0);
-		CollectionNode fooTestNode = fooTestResource4Node.getParent();
-		Assert.assertEquals(fooTest, fooTestNode.getNode());
-		CollectionNode fooNode = fooTestNode.getParent();
-		Assert.assertEquals(foo, fooNode.getNode());
-	}
-
-	@Test
-	public void nonCollectionMoveTest() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();		
-		HierarchyNode resourceNode = hierarchyService.createNonCollectionNode(fooResource);
-		CollectionNode barNode = hierarchyService.createCollectionNode(bar);
-
-		CollectionNode fooNode = (CollectionNode)hierarchyService.getHierarchyNode(foo);
-		List<HierarchyNode> fooList = fooNode.getMembers();
-		Assert.assertEquals(1, fooList.size());
-		Assert.assertEquals(resourceNode, fooList.get(0));
-		resourceNode.move(barNode, 0);
-		List<HierarchyNode> barList = barNode.getMembers();
-		fooList = fooNode.getMembers();
-		Assert.assertEquals(0, fooList.size());
-		Assert.assertEquals(1, barList.size());
-		HierarchyNode movedResourceNode = hierarchyService.getHierarchyNode(barResource);
-		Assert.assertEquals(movedResourceNode, barList.get(0));
-		hierarchyService.createNonCollectionNode(barResource2, 1);
-		barList = barNode.getMembers();
-		HierarchyNode barResource2Node = hierarchyService.getHierarchyNode(barResource2);
-		Assert.assertEquals(barResource2Node, barList.get(1));
-		movedResourceNode.move(barNode, 2);
-		barList = barNode.getMembers();
-		Assert.assertEquals(barResource2Node, barList.get(0));
-		Assert.assertEquals(movedResourceNode, barList.get(1));
-		movedResourceNode.move(barNode, 0);
-		barList = barNode.getMembers();
-		Assert.assertEquals(movedResourceNode, barList.get(0));
-		Assert.assertEquals(barResource2Node, barList.get(1));
-	}
-
-	@Test
-	public void nonCollectionMoveTest2() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		hierarchyService.createNonCollectionNode(fooResource);
-		CollectionNode barNode = hierarchyService.createCollectionNode(bar);
-
-		CollectionNode fooNode = (CollectionNode)hierarchyService.getHierarchyNode(foo);
-		fooNode.move(barNode, 0);
-		List<HierarchyNode> barList = barNode.getMembers();
-		CollectionNode barFooNode = hierarchyService.getCollectionNode(barFoo);
-		Assert.assertEquals(1, barList.size());
-		Assert.assertEquals(barFooNode, barList.get(0));
-		List<HierarchyNode> barFooList = barFooNode.getMembers();
-		Assert.assertEquals(1, barFooList.size());
-		HierarchyNode barFooResourceNode = hierarchyService.getHierarchyNode(barFooResource);
-		Assert.assertEquals(barFooResourceNode, barFooList.get(0));
-	}
-	
-	@Test
-	public void collectionMoveTest() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		hierarchyService.createCollectionNode(fooFolder1);
-		CollectionNode barNode = hierarchyService.createCollectionNode(bar);
-		CollectionNode rootNode = (CollectionNode) hierarchyService.getHierarchyNode(root);
-		CollectionNode fooNode = (CollectionNode) hierarchyService.getHierarchyNode(foo);
-		Assert.assertEquals(0, barNode.getMembers().size());
-		Assert.assertTrue(rootNode.getMembers().contains(fooNode));
-		fooNode.move(barNode, 0);
-		HierarchyNode barFooNode = hierarchyService.getHierarchyNode(barFoo);
-		Assert.assertTrue(barNode.getMembers().contains(barFooNode));
-		Assert.assertFalse(rootNode.getMembers().contains(fooNode));
-	}
-
-	@Test
-	public void collectionMoveTest2() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		hierarchyService.createCollectionNode(fooTest);
-		CollectionNode barNode = hierarchyService.createCollectionNode(bar);
-
-		CollectionNode fooNode = (CollectionNode)hierarchyService.getHierarchyNode(foo);
-		fooNode.move(barNode, 0);
-		List<HierarchyNode> barList = barNode.getMembers();
-		CollectionNode barFooNode = hierarchyService.getCollectionNode(barFoo);
-		Assert.assertEquals(1, barList.size());
-		Assert.assertEquals(barFooNode, barList.get(0));
-		List<HierarchyNode> barFooList = barFooNode.getMembers();
-		Assert.assertEquals(1, barFooList.size());
-		HierarchyNode barFooTestNode = hierarchyService.getHierarchyNode(barFooTest);
-		Assert.assertEquals(barFooTestNode, barFooList.get(0));
-	}
-
-	@Test
-	public void collectionMoveIntoItselfTest() throws Exception {
-		HierarchyService hierarchyService = getHierarchyService();
-		CollectionNode barNode = hierarchyService.createCollectionNode(bar);
-		try {
-			barNode.move(barNode, 0);
-			Assert.assertTrue(false);
-		} catch (IllegalMoveException ex) {
-			Assert.assertTrue(true);
-		}
-	}
-
-	@Test
-	public void renamingTest() throws Exception {
-		HierarchyService hierarchyService = getHierarchyService();
-		CollectionNode barNode = hierarchyService.createCollectionNode(bar);
-		barNode.move(barNode.getParent(), "foo", 0);
-		try {
-			barNode = hierarchyService.getCollectionNode(bar);
-			Assert.assertTrue(false);
-		} catch (NodeDoesNotExistException e) {}
-		try {
-			hierarchyService.getCollectionNode(foo);
-		} catch (NodeDoesNotExistException e) {
-			Assert.assertTrue(false);
-		}
-		HierarchyNode resource = hierarchyService.createNonCollectionNode(fooResource);
-		resource.move(resource.getParent(), "resource2", 0);
-		try {
-			resource = hierarchyService.getHierarchyNode(fooResource);
-			Assert.assertTrue(false);
-		} catch (NodeDoesNotExistException e) {}
-		try {
-			hierarchyService.getHierarchyNode(fooResource2);
-		} catch (NodeDoesNotExistException e) {
-			Assert.assertTrue(false);
-		}
-		HierarchyNode resource3 = hierarchyService.createNonCollectionNode(fooResource3);
-		try {
-			resource.move(resource3.getParent(), "resource2", 0);
-			Assert.assertTrue(false);
-		} catch (NodeAlreadyExistsException ex) {}
-	}
-
-	@Test(expected=UnknownRootExcetpion.class)
-	public void missingRootTest() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		hierarchyService.getHierarchyNode(newRootTest);
-	}
-
-	@Test
-	public void rootAutoCreationTest() throws Exception{
-		HierarchyService hierarchyService = getHierarchyService();
-		hierarchyService.createCollectionNode(newRootTest);
-		CollectionNode newRootNode = hierarchyService.getCollectionNode(newRoot);
-		Assert.assertTrue(hierarchyService.getRoots().contains(newRootNode));
-
-		hierarchyService.createNonCollectionNode(newRoot2Resource);
-		CollectionNode newRoot2Node = hierarchyService.getCollectionNode(newRoot2);
-		Assert.assertTrue(hierarchyService.getRoots().contains(newRoot2Node));
-
-		boolean exceptionThrown = false;
-		try {
-			hierarchyService.createCollectionNode(
-					new UriRef("http:///test2/"));
-		} catch(IllegalArgumentException e) {
-			exceptionThrown = true;
-		}
-		Assert.assertTrue(exceptionThrown);
-	}
-	
-	private class MyContentGraphProvider extends ContentGraphProvider {
-		SimpleMGraph contentGraph = new SimpleMGraph();
-		{
-			contentGraph.setCheckConcurrency(true);
-		}
-		private MGraph graph = new LockableMGraphWrapperForTesting(contentGraph);
-		@Override
-		public MGraph getContentGraph() {
-			return graph;
-		} 
-	}
-
-	private static class MyPlatformConfig extends PlatformConfig {
-
-		MyPlatformConfig() {
-			final SimpleMGraph systemGraph = new SimpleMGraph();
-			systemGraph.add(new TripleImpl(new BNode(),
-					RDF.type, PLATFORM.Instance));
-			bindSystemGraph(new LockableMGraphWrapper(systemGraph));
-		}
-		@Override
-		public Set<UriRef> getBaseUris() {
-			return Collections.singleton(root);
-		}
-	}
-
-	private HierarchyService getHierarchyService() {
-		HierarchyService hierarchyService = new TestHierarchyService();
-		ContentGraphProvider myCgProvider = new MyContentGraphProvider();
-		final SimpleMGraph systemGraph = new SimpleMGraph();
-		PlatformConfig myPlatConf = new MyPlatformConfig();
-		hierarchyService.cgProvider = myCgProvider;
-		hierarchyService.config = myPlatConf;
-		
-		hierarchyService.systemGraph = systemGraph;
-		Triple rootTriple = new TripleImpl(root,
-			RDF.type, HIERARCHY.Collection);
-		LockableMGraph lockableContentGraph = (LockableMGraph) myCgProvider.getContentGraph();
-		Lock writeLock = lockableContentGraph.getLock().writeLock();
-		writeLock.lock();
-		try {
-			lockableContentGraph.add(rootTriple);
-		} finally {
-			writeLock.unlock();
-		}
-		hierarchyService.activate(null);
-		return hierarchyService;
-	}
-
-	private class TestHierarchyService extends HierarchyService {
-		@Override
-		protected GraphNode getCreator() {
-			GraphNode node = new GraphNode(new BNode(), new SimpleMGraph());
-			node.addProperty(PLATFORM.userName, new PlainLiteralImpl("userName"));
-			return node;
-		}
+	public void listPositionTest() throws Exception {
+		MGraph mGraph = new SimpleMGraph();
+		CollectionCreator collectionCreator = new CollectionCreator(mGraph);
+		collectionCreator.createContainingCollections(fooTestResource4);
+		Assert.assertTrue(mGraph.contains(new TripleImpl(fooTest, RDF.type, HIERARCHY.Collection)));
+		Assert.assertTrue(mGraph.contains(new TripleImpl(fooTestResource4, HIERARCHY.parent, fooTest)));
+		Assert.assertTrue(mGraph.contains(new TripleImpl(foo, HIERARCHY.parent, root)));
+		Assert.assertTrue(mGraph.contains(new TripleImpl(root, RDF.type, HIERARCHY.Collection)));
+		collectionCreator.createContainingCollections(fooResource);
+		Assert.assertTrue(mGraph.contains(new TripleImpl(fooResource, HIERARCHY.parent, foo)));
 	}
 }