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


Reply via email to