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

svn commit: r988461 - in /incubator/clerezza/trunk/org.apache.clerezza.parent: ./ org.apache.clerezza.platform.content/ org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/ org.apache.clerezza.platform.content/src/ma...

Author: ito
Date: Tue Aug 24 10:08:28 2010
New Revision: 988461

URL: http://svn.apache.org/viewvc?rev=988461&view=rev
Log:
CLEREZZA-270: HierarchyService replaced by CollectionsCreator to improve performace (commit from reto)

Added:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/collections/
      - copied from r988433, incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/collections/
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/collections/CollectionCreator.java
      - copied unchanged from r988433, incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/collections/CollectionCreator.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/
      - copied from r988433, 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/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/collections/CollectionsCreatorTest.java
      - copied unchanged from r988433, 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
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/
      - copied from r988433, incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/oldhierarchy/
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/menu.rdf
      - copied unchanged from r988433, incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/menu.rdf
Removed:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/CollectionNode.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/HierarchyManager.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/HierarchyNode.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/HierarchyService.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/HierarchyUtils.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/IllegalMoveException.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/NodeAlreadyExistsException.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/NodeDoesNotExistException.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/hierarchy/UnknownRootExcetpion.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/test/java/org/apache/clerezza/platform/content/hierarchy/HierarchyTest.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.menumanager/
Modified:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/resources/org/apache/clerezza/platform/content/collection.ssp
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.auth.cookie/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/RdfList.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.resources.scripts/   (props changed)
    incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -4,5 +4,7 @@
 /incubator/clerezza/issues/CLEREZZA-129/org.apache.clerezza.platform.content:917938-918563
 /incubator/clerezza/issues/CLEREZZA-248/org.apache.clerezza.platform.content:958551-959023
 /incubator/clerezza/issues/CLEREZZA-25/org.apache.clerezza.platform.content:891178-892849
+/incubator/clerezza/issues/CLEREZZA-270/org.apache.clerezza.parent/org.apache.clerezza.platform.content:984369-988433
 /incubator/clerezza/issues/CLEREZZA-65/org.apache.clerezza.platform.content:897875-897920
 /incubator/clerezza/issues/CLEREZZA-70/org.apache.clerezza.platform.content:897917-903631
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content:889374-916719

Modified: incubator/clerezza/trunk/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/AbstractDiscobitsHandler.java Tue Aug 24 10:08:28 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.hierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.hierarchy.HierarchyService;
-import org.apache.clerezza.platform.content.hierarchy.NodeAlreadyExistsException;
-import org.apache.clerezza.platform.content.hierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.hierarchy.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/trunk/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/CollectionTypeHandler.java Tue Aug 24 10:08:28 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.hierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.hierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.hierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.hierarchy.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/trunk/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java Tue Aug 24 10:08:28 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.hierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.hierarchy.HierarchyNode;
-import org.apache.clerezza.platform.content.hierarchy.HierarchyService;
-import org.apache.clerezza.platform.content.hierarchy.HierarchyUtils;
-import org.apache.clerezza.platform.content.hierarchy.IllegalMoveException;
-import org.apache.clerezza.platform.content.hierarchy.NodeAlreadyExistsException;
-import org.apache.clerezza.platform.content.hierarchy.NodeDoesNotExistException;
-import org.apache.clerezza.platform.content.hierarchy.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/trunk/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java Tue Aug 24 10:08:28 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.hierarchy.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/trunk/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/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java Tue Aug 24 10:08:28 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.hierarchy.CollectionNode;
-import org.apache.clerezza.platform.content.hierarchy.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

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/resources/org/apache/clerezza/platform/content/collection.ssp
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/resources/org/apache/clerezza/platform/content/collection.ssp?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/resources/org/apache/clerezza/platform/content/collection.ssp (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/resources/org/apache/clerezza/platform/content/collection.ssp Tue Aug 24 10:08:28 2010
@@ -1,16 +1,13 @@
 def hierarchy(s: Any) = new UriRef("http://clerezza.org/2009/09/hierarchy#" + s)
 <div id="tx-content">
 	<h3>{res*}</h3>
-	{if ((res/hierarchy("parent")).length != 0){
+	{ifx ((res/hierarchy("parent")).length != 0){
 	<h4>Parent: <a href={res/hierarchy("parent")*}>{res/hierarchy("parent")*}</a></h4>
-	}else{
-	<h4>Parent: -</h4>
 	}
 	}
-
-	{if ((res/hierarchy("members")).length != 0){
+	{if ((res/-hierarchy("parent")).length != 0){
 	<ul>
-		{for (member <- (res/hierarchy("members"))!!) yield
+		{for (member <- (res/-hierarchy("parent"))) yield
 			{
 			<li><a href={member*}>{member*}</a></li>
 			}

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -1,2 +1,3 @@
 /incubator/clerezza/issues/CLEREZZA-113/org.apache.clerezza.platform.language:908544-911024
 /incubator/clerezza/issues/CLEREZZA-72/org.apache.clerezza.platform.language:898371-901144
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language:903315-916719

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.launcher.storageless.parent/pom.xml Tue Aug 24 10:08:28 2010
@@ -437,11 +437,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.clerezza</groupId>
-			<artifactId>org.apache.clerezza.platform.menumanager</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.clerezza</groupId>
 			<artifactId>org.apache.clerezza.platform.language.ontologies</artifactId>
 			<scope>runtime</scope>
 		</dependency>

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -1 +1,2 @@
 /incubator/clerezza/issues/CLEREZZA-52/org.apache.clerezza.platform.scripting.scriptmanager:894321-894392
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager:889374-916719

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -1 +1,2 @@
 /incubator/clerezza/issues/CLEREZZA-80/org.apache.clerezza.platform.security:900994-901238
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security:889374-916719

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.auth.cookie/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -1 +1,2 @@
 /incubator/clerezza/issues/CLEREZZA-80/org.apache.clerezza.platform.security.auth.cookie:900994-901238
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.auth.cookie:889374-916719

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.testing/pom.xml Tue Aug 24 10:08:28 2010
@@ -332,11 +332,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.clerezza</groupId>
-			<artifactId>org.apache.clerezza.platform.menumanager</artifactId>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.clerezza</groupId>
 			<artifactId>org.apache.clerezza.platform.language.core</artifactId>
 			<scope>provided</scope>
 		</dependency>

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -1 +1,2 @@
 /incubator/clerezza/issues/CLEREZZA-91/org.apache.clerezza.platform.typehandlerspace:905991-906055
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace:889374-916719

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/RdfList.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/RdfList.java?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/RdfList.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/RdfList.java Tue Aug 24 10:08:28 2010
@@ -18,6 +18,8 @@
  */
 package org.apache.clerezza.rdf.utils;
 
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
 import java.util.AbstractList;
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -32,8 +34,12 @@ import org.apache.clerezza.rdf.core.Trip
 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.core.serializedform.Serializer;
+import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
 import org.apache.clerezza.rdf.ontologies.OWL;
 import org.apache.clerezza.rdf.ontologies.RDF;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * An implementation of an <code>java.util.List</code> backed by an RDF
@@ -51,6 +57,8 @@ import org.apache.clerezza.rdf.ontologie
  */
 public class RdfList extends AbstractList<Resource> {
 
+	private static final Logger logger = LoggerFactory.getLogger(RdfList.class);
+
 	private final static UriRef RDF_NIL =
 			new UriRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#nil");
 	/**
@@ -240,7 +248,28 @@ public class RdfList extends AbstractLis
 	}
 
 	private Resource getFirstEntry(NonLiteral listResource) {
-		return tc.filter(listResource, RDF.first, null).next().getObject();
+		try {
+			return tc.filter(listResource, RDF.first, null).next().getObject();
+		} catch (NullPointerException e) {
+			try {
+				final FileOutputStream fileOutputStream = new FileOutputStream("/tmp/broken-list.nt");
+				final GraphNode graphNode = new GraphNode(listResource, tc);
+				Serializer.getInstance().serialize(
+						fileOutputStream,
+						graphNode.getNodeContext(),
+						SupportedFormat.N_TRIPLE);
+				fileOutputStream.flush();
+				logger.warn("GraphNode: "+graphNode);
+				final Iterator<UriRef> properties = graphNode.getProperties();
+				while (properties.hasNext()) {
+					logger.warn("available: "+properties.next());
+				}
+
+				throw new RuntimeException("broken list "+listResource, e);
+			} catch (Exception ex) {
+				throw new RuntimeException(ex);
+			}
+		}
 	}
 
 	public NonLiteral getListResource() {

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -4,3 +4,4 @@
 /incubator/clerezza/issues/CLEREZZA-48/org.apache.clerezza.triaxrs:893435-898896
 /incubator/clerezza/issues/CLEREZZA-86/org.apache.clerezza.triaxrs:903135-910335
 /incubator/clerezza/issues/CLEREZZA-94/org.apache.clerezza.triaxrs:905562-905566
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs:918016-918029

Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.resources.scripts/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 24 10:08:28 2010
@@ -1,2 +1,2 @@
 /incubator/clerezza/issues/CLEREZZA-47/org.apache.clerezza.web.resources.scripts:892743-917522
-/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.resources.scripts:916331-916719
+/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.web.resources.scripts:889374-916719

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml?rev=988461&r1=988460&r2=988461&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml Tue Aug 24 10:08:28 2010
@@ -57,7 +57,6 @@
 		<module>org.apache.clerezza.platform.launcher.storageless.parent</module>
 		<module>org.apache.clerezza.platform.launcher.tdb</module>
 		<module>org.apache.clerezza.platform.mail</module>
-		<module>org.apache.clerezza.platform.menumanager</module>
 		<module>org.apache.clerezza.platform.scripting</module>
 		<module>org.apache.clerezza.platform.scripting.scriptmanager</module>
 		<module>org.apache.clerezza.platform.security.auth.basic</module>
@@ -1016,11 +1015,6 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.clerezza</groupId>
-				<artifactId>org.apache.clerezza.platform.menumanager</artifactId>
-				<version>0.3-incubating-SNAPSHOT</version>
-			</dependency>
-			<dependency>
-				<groupId>org.apache.clerezza</groupId>
 				<artifactId>org.apache.clerezza.rdf.file.storage</artifactId>
 				<version>0.3-incubating-SNAPSHOT</version>
 			</dependency>