You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2016/10/03 15:49:58 UTC
[32/51] [partial] clerezza git commit: CLEREZZA-1012: reduced
clerezza to core components, the rest stays in legacy-branch
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
deleted file mode 100644
index 757d7d9..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/DiscobitsTypeHandler.java
+++ /dev/null
@@ -1,555 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import org.apache.clerezza.rdf.utils.graphnodeprovider.GraphNodeProvider;
-import org.apache.clerezza.rdf.metadata.MetaDataGenerator;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-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;
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.core.Response.Status;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-import javax.xml.transform.dom.DOMSource;
-import org.apache.clerezza.jaxrs.utils.RedirectUtil;
-import org.apache.clerezza.platform.Constants;
-import org.apache.clerezza.platform.content.WebDavUtils.PropertyMap;
-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;
-import org.apache.clerezza.platform.content.webdav.PROPPATCH;
-
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
-import org.apache.felix.scr.annotations.Service;
-import org.apache.felix.scr.annotations.Services;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
-import org.apache.clerezza.platform.typehandlerspace.OPTIONS;
-import org.apache.clerezza.platform.typehandlerspace.SupportedTypes;
-import org.apache.clerezza.commons.rdf.Graph;
-import org.apache.clerezza.commons.rdf.Triple;
-import org.apache.clerezza.commons.rdf.Graph;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.commons.rdf.impl.utils.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.rdf.utils.UnionGraph;
-import org.apache.clerezza.rdf.utils.UriMutatingGraph;
-import org.apache.clerezza.web.fileserver.util.MediaTypeGuesser;
-import org.osgi.service.component.ComponentContext;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * This Class allows getting and putting content structured using the
- * Discobits ontology.
- *
- * Is an implementation of DiscobitsHandler and additionally registers as
- * TypeHanlder to allow HTTP GET and PUT.
- *
- * @author reto, tho, agron, mir
- */
-@Component(metatype=true)
-@Service({
- Object.class,
- DiscobitsHandler.class
-})
-@Property(name="org.apache.clerezza.platform.typehandler", boolValue=true)
-@Reference(name="metaDataGenerator",
- policy=ReferencePolicy.DYNAMIC,
- cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
- referenceInterface=MetaDataGenerator.class
-)
-@SupportedTypes(types = { "http://www.w3.org/2000/01/rdf-schema#Resource" }, prioritize = false)
-public class DiscobitsTypeHandler extends AbstractDiscobitsHandler
- implements DiscobitsHandler {
-@Property(value="600", label="Max-Age", description="Specifies the value of the max-age field"
- + "set in the cache-control header of InfoDiscoBit-Responses, as per RFC 2616 this is a number of "
- + "seconds")
- public static final String MAX_AGE = "max-age";
-
- @Reference
- protected ContentGraphProvider cgProvider;
-
- @Reference
- PageNotFoundService notFoundPageService;
-
- @Reference
- GraphNodeProvider graphNodeProvider;
-
- private static final Logger logger = LoggerFactory.getLogger(DiscobitsTypeHandler.class);
-
- private final Set<MetaDataGenerator> metaDataGenerators =
- Collections.synchronizedSet(new HashSet<MetaDataGenerator>());
-
- private String cacheControlHeaderValue;
-
- protected void activate(ComponentContext context) {
- cacheControlHeaderValue = "max-age="+(String) context.getProperties().get(MAX_AGE);
- }
-
- /**
- * TypeHandle method for rdf types "TitledContext", "InfoDiscoBit",
- * "OrderedContent" and "XHTMLInfoDiscoBit".
- *
- * @param uriInfo
- * @return
- */
- @GET
- @Produces({"*/*"})
- public Object getResource(@Context UriInfo uriInfo) {
- final IRI uri = new IRI(uriInfo.getAbsolutePath().toString());
- final GraphNode graphNode = getResourceAsGraphNode(uriInfo);
- if (graphNode == null) {
- return resourceUnavailable(uri, uriInfo);
- }
- InfoDiscobit infoDiscobit = InfoDiscobit.createInstance(graphNode);
- if (infoDiscobit != null) {
- Response response = Response.ok().
- header(HttpHeaders.CACHE_CONTROL, cacheControlHeaderValue).
- entity(infoDiscobit).
- build();
- return response;
- } else {
- return graphNode;
- }
- }
-
- private GraphNode getResourceAsGraphNode(UriInfo uriInfo) {
- final IRI uri = new IRI(uriInfo.getAbsolutePath().toString());
- GraphNode result = graphNodeProvider.getLocal(uri);
- //could chck if nodeContext > 0, but this would be less efficient
- Graph tc = result.getGraph();
- if (tc.filter(uri, null, null).hasNext()) {
- return result;
- }
- if (tc.filter(null, null, uri).hasNext()) {
- return result;
- }
- return null;
- }
-
-
-
- /**
- * Creates an <code>InfoDiscoBit</code> at the specified location
- *
- * @param uriInfo the uri of the InforDiscoBit to be created
- * @param data the content of the upload
- */
- @PUT
- public Response putInfoDiscobit(@Context UriInfo uriInfo, @Context HttpHeaders headers, byte[] data) {
- final String contentType;
- {
- final List<String> contentTypeHeaders = headers.getRequestHeader(HttpHeaders.CONTENT_TYPE);
- if (contentTypeHeaders == null) {
- logger.warn("Content-Type not specified");
- final MediaType guessTypeForName = MediaTypeGuesser.getInstance().
- guessTypeForName(uriInfo.getAbsolutePath().toString());
- contentType = guessTypeForName == null ?
- MediaType.APPLICATION_OCTET_STREAM : guessTypeForName.toString();
- } else {
- contentType = contentTypeHeaders.get(0);
- }
-
- }
- final IRI infoDiscoBitUri = new IRI(uriInfo.getAbsolutePath().toString());
- put(infoDiscoBitUri, MediaType.valueOf(contentType), data);
- return Response.status(Status.CREATED).build();
- }
-
- /**
- * Creates a new collection at the specified uri
- *
- * @param uriInfo
- * @return
- * <ul>
- * <li>201 "Created" response if method succeeded
- * <li>405 "Method Not Allowed" response if collection already exists
- * </ul>
- */
- @MKCOL
- public Object mkcol(@Context UriInfo uriInfo) {
- String uriString = uriInfo.getAbsolutePath().toString();
- if (uriString.charAt(uriString.length()-1) != '/') {
- uriString += '/';
- }
- IRI nodeUri = new IRI(uriString);
- final Graph 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();
- }
-
- /**
- * Finds all properties of a hierarchy node and returns them in a
- * {@link DOMSource}
- *
- * @param uriInfo
- * @param headers {@link HttpHeaders}
- * @param body {@link DOMSource} containing the requested properties, can be null
- * @return
- * <ul>
- * <li>207 "Multistatus" response if method succeeded
- * <li>404 "Not Found" response if the hierarchy node was not found
- * <li>400 "Bad Request" response if the body is malformed
- * </ul>
- */
- @PROPFIND
- @Consumes({"application/xml", "text/xml", "*/*"})
- @Produces({"application/xml", "text/xml", "*/*"})
- public Response propfind(@Context UriInfo uriInfo,
- @Context HttpHeaders headers, DOMSource body) {
- final IRI nodeUri = new IRI(uriInfo.getAbsolutePath().toString());
- if (!nodeAtUriExists(nodeUri)) {
- return resourceUnavailable(nodeUri, uriInfo);
- }
- Map<IRI, PropertyMap> result;
- try {
- String depthHeader = WebDavUtils.getHeaderAsString(headers, "Depth");
- if (depthHeader == null) {
- depthHeader = WebDavUtils.infinite;
- }
- final Graph 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();
- }
- } 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<IRI, PropertyMap> getPropNames(GraphNode node, String depthHeader) {
- Map<IRI, PropertyMap> result = new HashMap<IRI, PropertyMap>();
- WebDavUtils.addNodeProperties(result, null, null, node, false);
- return result;
- }
-
- Map<IRI, PropertyMap> getPropsByName(Node requestNode, GraphNode node,
- String depthHeader) {
- Map<IRI, PropertyMap> result;
- NodeList children = requestNode.getChildNodes();
- result = WebDavUtils.getPropsByName(children, node, "0", true);
- return result;
- }
-
- Map<IRI, PropertyMap> getAllProps(GraphNode node, String depthHeader) {
- HashMap<IRI, PropertyMap> result = new HashMap<IRI, PropertyMap>();
- WebDavUtils.addNodeProperties(result, null, null, node, true);
- return result;
- }
-
- /**
- * @param uriInfo
- * @param body {@link DOMSource} containing properties which should be set
- * or deleted
- * @return
- * <ul>
- * <li>207 "Multistatus" response if method succeeded
- * <li>404 "Not Found" response if the hierarchy node was not found
- * <li>400 "Bad Request" response if the body is malformed
- * </ul>
- */
- @PROPPATCH
- @Consumes({"application/xml", "text/xml", "*/*"})
- @Produces({"application/xml", "text/xml", "*/*"})
- public Response proppatch(@Context UriInfo uriInfo, DOMSource body) {
- IRI nodeUri = new IRI(uriInfo.getAbsolutePath().toString());
- if (!nodeAtUriExists(nodeUri)) {
- return resourceUnavailable(nodeUri, uriInfo);
- }
- try {
- Document requestDoc = WebDavUtils.sourceToDocument(body);
- final Graph mGraph = cgProvider.getContentGraph();
- GraphNode node = new GraphNode(nodeUri, mGraph);
- NodeList propsToSet = null;
- NodeList propsToRemove = null;
- Node proppatchNode = WebDavUtils.getNode(requestDoc, WebDavUtils.proppatch);
- NodeList childNodes = proppatchNode.getChildNodes();
- for (int i = 0; i < childNodes.getLength(); i++) {
- Node child = childNodes.item(i);
- String localName = child.getLocalName();
- if (localName != null) {
- if (localName.equals(WebDavUtils.set)) {
- propsToSet = child.getFirstChild().getChildNodes();
- } else if (localName.equals(WebDavUtils.remove)) {
- propsToRemove = child.getFirstChild().getChildNodes();
- }
- }
- }
- Document responseDoc = WebDavUtils.modifyProperties(node, propsToSet, propsToRemove);
- return Response.status(207).entity(new DOMSource(responseDoc)).type(
- MediaType.APPLICATION_XML_TYPE).build();
- } 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();
- }
- }
-
- /**
- * Moves or renames a hierarchy node
- *
- * @param uriInfo
- * @param headers
- * @return
- * <ul>
- * <li>201 "Created" response if method succeeded
- * <li>412 "Precondition Failed" response if the destination URL is already
- * mapped to a resource
- * <li>404 "Not Found" response if the hierarchy node was not found
- * <li>403 "Forbidden" response if the source and destination resources are the same
- * <li>400 "Bad Request" if no "Destination" header was found
- * </ul>
- */
- @MOVE
- public Response move(@Context UriInfo uriInfo, @Context HttpHeaders headers) {
- IRI nodeUri = new IRI(uriInfo.getAbsolutePath().toString());
- final Graph mGraph = cgProvider.getContentGraph();
- GraphNode node = new GraphNode(nodeUri, mGraph);
- String targetString = WebDavUtils.getHeaderAsString(headers,
- "Destination");
- IRI targetUri = new IRI(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.PRECONDITION_FAILED).build();
- }
- }
- Lock l = mGraph.getLock().writeLock();
- l.lock();
- try {
- 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();
- }
- Lock writeLock = node.writeLock();
- writeLock.lock();
- try {
- node.replaceWith(targetUri);
- } finally {
- writeLock.unlock();
- }
- new CollectionCreator(mGraph).createContainingCollections(targetUri);
- try {
- return Response.created(new java.net.URI(targetUri.getUnicodeString())).build();
- } catch (URISyntaxException ex) {
- throw new IllegalArgumentException(ex);
- }
- } finally {
- l.unlock();
- }
- }
-
- /**
- * Deletes a hierarchy node
- *
- * @param uriInfo
- * @return
- * <ul>
- * <li>200 "OK" response if method succeeded
- * <li>404 "Not Found" response if the hierarchy node was not found
- * </ul>
- */
- @DELETE
- public Response delete(@Context UriInfo uriInfo) {
- IRI nodeUri = new IRI(uriInfo.getAbsolutePath().toString());
- if (!nodeAtUriExists(nodeUri)) {
- return Response.status(Status.NOT_FOUND).entity(
- uriInfo.getAbsolutePath()).type(MediaType.TEXT_PLAIN).build();
- }
- final Graph mGraph = cgProvider.getContentGraph();
- GraphNode node = new GraphNode(nodeUri, mGraph);
- node.deleteNodeContext();
- return Response.ok().build();
- }
-
- /**
- * @param uriInfo
- * @return
- * <ul>
- * <li>200 "OK" response with an "Allow" and a "DAV" header. The "Allow"
- * header contains all the possible HTTP methods that can be executed on the
- * resource and the "DAV" header shows if the resource is WebDAV enabled
- * <li>404 "Not Found" response if the resource was not found
- * </ul>
- */
- @OPTIONS
- public Response options(@Context UriInfo uriInfo) {
- final IRI nodeUri = new IRI(uriInfo.getAbsolutePath().toString());
- if (!nodeAtUriExists(nodeUri)) {
- return resourceUnavailable(nodeUri, uriInfo);
- }
- Response.ResponseBuilder builder = Response.ok();
- builder.header("Dav", "1");
- Set<String> allow = new HashSet<String>();
- Method[] methods = this.getClass().getMethods();
- for (Method method : methods) {
- for (Annotation annotation : method.getAnnotations()) {
- HttpMethod httpMethod = annotation.annotationType().getAnnotation(HttpMethod.class);
- if (httpMethod != null) {
- allow.add(httpMethod.value());
- }
- }
- }
- if (allow.isEmpty()) {
- builder.header("Allow", "");
- } else {
- final Iterator<String> iterator = allow.iterator();
- final StringBuffer buffer = new StringBuffer(iterator.next());
- while (iterator.hasNext()) {
- buffer.append(", ");
- buffer.append(iterator.next());
- }
- builder.header("Allow", buffer.toString());
- }
- return builder.build();
- }
-
- protected void bindMetaDataGenerator(MetaDataGenerator generator) {
- metaDataGenerators.add(generator);
- }
-
- protected void unbindMetaDataGenerator(MetaDataGenerator generator) {
- metaDataGenerators.remove(generator);
- }
-
- @Override
- protected Graph getGraph() {
- return cgProvider.getContentGraph();
- }
-
- @Override
- protected Set<MetaDataGenerator> getMetaDataGenerators() {
- return metaDataGenerators;
- }
-
-
-
- private boolean nodeAtUriExists(IRI nodeUri) {
- Graph mGraph = getGraph();
- Lock readLock = mGraph.getLock().readLock();
- readLock.lock();
- try {
- return mGraph.filter(nodeUri, null, null).hasNext()
- || mGraph.filter(null, null, nodeUri).hasNext();
- } finally {
- readLock.unlock();
- }
- }
-
- private Response resourceUnavailable(IRI nodeUri,
- UriInfo uriInfo) {
- IRI oppositUri = makeOppositeIRI(nodeUri);
- if (nodeAtUriExists(oppositUri)) {
- return RedirectUtil.createSeeOtherResponse(
- oppositUri.getUnicodeString(), uriInfo);
- } else {
- return notFoundPageService.createResponse(uriInfo);
- }
- //return Response.status(Status.NOT_FOUND).build();
- }
- /**
- * add trailing slash if none present, remove otherwise
- *
- * @param uri
- * @return
- */
- private static IRI makeOppositeIRI(IRI uri) {
- String uriString = uri.getUnicodeString();
- if (uriString.endsWith("/")) {
- return new IRI(uriString.substring(0, uriString.length() - 1));
- } else {
- return new IRI(uriString + "/");
- }
- }
-
- private IRI createAnyHostUri(UriInfo uriInfo) {
- return new IRI(Constants.ALL_HOSTS_URI_PREFIX+uriInfo.getPath());
- }
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/Editor.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/Editor.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/Editor.java
deleted file mode 100644
index 095f5fa..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/Editor.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.net.URL;
-
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.ext.MessageBodyReader;
-import javax.ws.rs.ext.Providers;
-import org.apache.clerezza.rdf.utils.GraphUtils.NoSuchSubGraphException;
-
-import org.osgi.framework.Bundle;
-import org.osgi.service.component.ComponentContext;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.Service;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.clerezza.jaxrs.utils.TrailingSlash;
-import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider;
-import org.apache.clerezza.commons.rdf.ImmutableGraph;
-import org.apache.clerezza.commons.rdf.Graph;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.rdf.core.access.TcManager;
-import org.apache.clerezza.rdf.core.serializedform.Serializer;
-import org.apache.clerezza.rdf.utils.GraphNode;
-import org.apache.clerezza.rdf.utils.GraphUtils;
-import org.apache.clerezza.web.fileserver.BundlePathNode;
-import org.apache.clerezza.web.fileserver.FileServer;
-import org.wymiwyg.commons.util.dirbrowser.PathNode;
-
-/**
- * This Jax-rs root resource provides an ajax edito ro edit content structured
- * using the Discobits ontology
- *
- * @author rbn
- *
- */
-@Component
-@Service(Object.class)
-@Property(name = "javax.ws.rs", boolValue = true)
-@Path("tools/editor")
-public class Editor extends FileServer {
-
- @Reference
- private ContentGraphProvider cgProvider;
-
- @Reference
- private TcManager tcManager;
-
- @Reference
- private Serializer serializer;
-
- private static final Logger logger = LoggerFactory.getLogger(Editor.class);
-
- private Providers providers;
- private final String rdfXml = "application/rdf+xml";
-
- /**
- * On activation the {@link FileServer} is prepared
- *
- * @param context
- */
- protected void activate(ComponentContext context) {
- configure(context.getBundleContext());
- }
-
- /**
- * The providers are injected by the Jax-rs implementation and used to
- * locate readers for the RDF content of the body
- *
- * @param providers
- */
- @Context
- public void setProviders(Providers providers) {
- this.providers = providers;
- }
-
- @GET
- @Path("get")
- public GraphNode getDiscobit(@QueryParam("resource") IRI uri,
- @QueryParam("graph") IRI graphUri) {
- final Graph mGraph = graphUri == null ? cgProvider.getContentGraph()
- : tcManager.getGraph(graphUri);
- return new GraphNode(uri, mGraph);
- }
-
- /**
- * replaces the subgraph serialized with RDF/XML in <code>revokedString
- * </code> with the one from <code>assertedString</code>.
- *
- * @param graphUri the graph within which the replacement has to take place
- * or null for the content graph
- * @param assertedString the asserted ImmutableGraph as RDF/XML
- * @param revokedString the revoked ImmutableGraph as RDF/XML
- */
- @POST
- @Path("post")
- public void postDiscobit(@QueryParam("graph") IRI graphUri,
- @FormParam("assert") String assertedString,
- @FormParam("revoke") String revokedString,
- @FormParam("rdfFormat") String rdfFormat) {
- if (rdfFormat == null) {
- rdfFormat = rdfXml;
- }
- MediaType mediaType = MediaType.valueOf(rdfFormat);
- MessageBodyReader<ImmutableGraph> graphReader = providers.getMessageBodyReader(ImmutableGraph.class, ImmutableGraph.class, null, mediaType);
- final ImmutableGraph assertedGraph;
- final ImmutableGraph revokedGraph;
- try {
- assertedGraph = graphReader.readFrom(ImmutableGraph.class, ImmutableGraph.class, new Annotation[0], mediaType, null, new ByteArrayInputStream(assertedString.getBytes()));
- revokedGraph = graphReader.readFrom(ImmutableGraph.class, ImmutableGraph.class, new Annotation[0], mediaType, null, new ByteArrayInputStream(revokedString.getBytes()));
- } catch (IOException ex) {
- logger.error("reading graph {}", ex);
- throw new WebApplicationException(ex, 500);
- }
- final Graph mGraph = graphUri == null ? cgProvider.getContentGraph()
- : tcManager.getGraph(graphUri);
- try {
- System.out.println("Revoked:");
- logGraph(revokedGraph);
- System.out.println("Asserted:");
- logGraph(assertedGraph);
- GraphUtils.removeSubGraph(mGraph, revokedGraph);
- } catch (NoSuchSubGraphException ex) {
- throw new RuntimeException(ex);
- }
- mGraph.addAll(assertedGraph);
- }
-
- private void logGraph(Graph graph) {
- serializer.serialize(System.out, graph, "text/turtle");
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- serializer.serialize(baos, graph, "text/turtle");
- if (new String(baos.toByteArray()).contains("\r")) {
- System.out.println("The above graph conatins \\r");
- }
- System.out.println();
- }
-
- @GET
- //this is to work around
- @Produces(MediaType.APPLICATION_OCTET_STREAM)
- public PathNode getStaticFile(@Context UriInfo uriInfo) {
- TrailingSlash.enforcePresent(uriInfo);
- final PathNode node = getNode("disco.xhtml");
- logger.debug("serving static {}", node);
- return node;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobit.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobit.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobit.java
deleted file mode 100644
index 7988916..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobit.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import java.util.Iterator;
-import java.util.concurrent.locks.Lock;
-import org.apache.clerezza.commons.rdf.Literal;
-import org.apache.clerezza.commons.rdf.RDFTerm;
-import org.apache.clerezza.rdf.core.LiteralFactory;
-
-import org.apache.clerezza.rdf.utils.GraphNode;
-import org.apache.clerezza.rdf.ontologies.DISCOBITS;
-import org.apache.clerezza.rdf.ontologies.RDF;
-
-/**
- * Represents an InfoDiscoBit
- *
- * @author reto
- */
-public class InfoDiscobit {
-
- private GraphNode infoBit;
-
-
- /**
- *
- * @param infoBit
- * @return an instance of InfoDiscobit or null if node is not an InfoDiscoBit
- */
- public static InfoDiscobit createInstance(GraphNode node) {
- Lock l = node.readLock();
- l.lock();
- try {
- Iterator<RDFTerm> types = node.getObjects(RDF.type);
- while(types.hasNext()) {
- if (types.next().equals(DISCOBITS.InfoDiscoBit)){
- return new InfoDiscobit(node);
- }
- }
- return null;
- } finally {
- l.unlock();
- }
- }
-
- InfoDiscobit(GraphNode infoBit) {
- this.infoBit = infoBit;
- }
-
- public String getContentType() {
- Lock readLock = infoBit.readLock();
- readLock.lock();
- try {
- Iterator<Literal> mediaTypeLits = infoBit.getLiterals(DISCOBITS.mediaType);
- if (mediaTypeLits.hasNext()) {
- return mediaTypeLits.next().getLexicalForm();
- } else {
- throw new RuntimeException("InfoDiscobit has no media type property");
- }
- } finally {
- readLock.unlock();
- }
- }
-
- public byte[] getData() {
- byte[] result;
- Lock readLock = infoBit.readLock();
- readLock.lock();
- try {
- Iterator<Literal> infoBitLits = infoBit.getLiterals(DISCOBITS.infoBit);
- if (infoBitLits.hasNext()) {
- final Literal literalValue = infoBitLits.next();
- result = LiteralFactory.getInstance().createObject(
- (new byte[0]).getClass(), literalValue);
- } else {
- throw new RuntimeException("InfoDiscobit has not infoBit property");
- }
- } finally {
- readLock.unlock();
- }
- return result;
- };
-
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobitWriter.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobitWriter.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobitWriter.java
deleted file mode 100644
index 1c99a02..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/InfoDiscobitWriter.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import javax.ws.rs.Produces;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.ext.MessageBodyWriter;
-import javax.ws.rs.ext.Provider;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
-
-
-/**
- *
- *
- * @author reto
- */
-@Component
-@Service(Object.class)
-@Property(name = "javax.ws.rs", boolValue = true)
-@Provider
-@Produces("*/*")
-public class InfoDiscobitWriter implements MessageBodyWriter<InfoDiscobit> {
-
- @Override
- public boolean isWriteable(Class<?> type, Type genericType,
- Annotation[] annotations, MediaType mediaType) {
- return InfoDiscobit.class.isAssignableFrom(type);
- }
-
- @Override
- public long getSize(InfoDiscobit t, Class<?> type, Type genericType,
- Annotation[] annotations, MediaType mediaType) {
- return t.getData().length;
- }
-
- @Override
- public void writeTo(InfoDiscobit t, Class<?> type, Type genericType,
- Annotation[] annotations, MediaType mediaType,
- MultivaluedMap<String, Object> httpHeaders,
- OutputStream entityStream) throws IOException,
- WebApplicationException {
- httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, t.getContentType());
- entityStream.write(t.getData());
- }
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/JaxRsExceptionMapper.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/JaxRsExceptionMapper.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/JaxRsExceptionMapper.java
deleted file mode 100644
index 9cff9c9..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/JaxRsExceptionMapper.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2015 The Apache Software Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.ext.ExceptionMapper;
-import javax.ws.rs.ext.Provider;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Logs exceptions. This is only here lacking a better place.
- *
- * @author developer
- */
-@Component()
-@Service(Object.class)
-@Property(name = "javax.ws.rs", boolValue = true)
-@Provider
-public class JaxRsExceptionMapper implements ExceptionMapper<Throwable> {
-
- private static final Logger log = LoggerFactory.getLogger(JaxRsExceptionMapper.class);
-
- @Override
- public Response toResponse(Throwable exception) {
- log.error("toResponse() caught exception", exception);
- if (exception instanceof WebApplicationException) {
- return ((WebApplicationException) exception).getResponse();
- }
- return Response.status(getStatusCode(exception))
- .entity(getEntity(exception))
- .build();
- }
-
- /*
- * Get appropriate HTTP status code for an exception.
- */
- private int getStatusCode(Throwable exception) {
- return Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
- }
-
- /*
- * Get response body for an exception.
- */
- private Object getEntity(Throwable exception) {
- StringWriter errorMsg = new StringWriter();
- exception.printStackTrace(new PrintWriter(errorMsg));
- return errorMsg.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java
deleted file mode 100644
index 431be80..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2010 reto.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * under the License.
- */
-
-package org.apache.clerezza.platform.content;
-
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.UriInfo;
-
-/**
- * An instance of this service is called by DiscoBitHandler if a resource
- * is not found in the content graph.
- *
- * @author reto
- */
-public interface PageNotFoundService {
-
- /**
- * Creates a response when a resource could not be found in the Content
- * ImmutableGraph, this is a 404 response.
- *
- * @param uriInfo
- * @return
- */
- public Response createResponse(UriInfo uriInfo);
-
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
deleted file mode 100644
index 6a86009..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/SimpleDiscobitsHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import org.apache.clerezza.rdf.metadata.MetaDataGenerator;
-import java.util.Set;
-import org.apache.clerezza.commons.rdf.Graph;
-
-/**
- *
- * @author reto
- */
-class SimpleDiscobitsHandler extends AbstractDiscobitsHandler {
-
- private final Graph mGraph;
-
- public SimpleDiscobitsHandler(Graph mGraph) {
- this.mGraph = mGraph;
- }
-
- @Override
- protected Graph getGraph() {
- return mGraph;
- }
-
- @Override
- protected Set<MetaDataGenerator> getMetaDataGenerators() {
- return null;
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/TitledContentRenderlet.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/TitledContentRenderlet.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/TitledContentRenderlet.java
deleted file mode 100644
index aa1fab0..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/TitledContentRenderlet.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import javax.ws.rs.core.MediaType;
-import org.apache.clerezza.platform.typerendering.CallbackRenderer;
-import org.apache.clerezza.platform.typerendering.Renderlet;
-import org.apache.clerezza.commons.rdf.BlankNodeOrIRI;
-import org.apache.clerezza.commons.rdf.RDFTerm;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.rdf.ontologies.DISCOBITS;
-import org.apache.clerezza.rdf.utils.GraphNode;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Service;
-
-/**
- * A renderlet for rendering TitledContent. The contained elements are rendered
- * calling back to the specified <code>Renderer</code>.
- *
- * This renderlet uses a thread-local variable to set the appropriate heading
- * level (h1 - h6)
- *
- * @author rbn, mir
- *
- */
-@Component
-@Service(Renderlet.class)
-public class TitledContentRenderlet implements Renderlet {
-
- private static ThreadLocal<Integer> headingLevel = new ThreadLocal<Integer>() {
-
- @Override
- protected Integer initialValue() {
- return 1;
- }
-
- };
- @Override
- public void render(GraphNode res, GraphNode context, Map<String, Object> sharedRenderingValues,
- CallbackRenderer callbackRenderer,
- URI renderingSpecification,
- String mode,
- MediaType mediaType, RequestProperties requestProperties,
- OutputStream os) throws IOException {
- PrintWriter writer = new PrintWriter(os);
- List<GraphNode> containedNodes = getContainedNodes(res);
- if (containedNodes.size() < 2) {
- String nodeLabel = res.getNode() instanceof IRI ?
- ((IRI)res.getNode()).getUnicodeString() : " Bnode";
- writer.print(nodeLabel+": titled and/or content could not be found");
- writer.flush();
- return;
- }
- writer.print(getHeaderOpen());
- writer.flush();
- callbackRenderer.render(
- containedNodes.get(0),
- context, mode, os);
- writer.println(getHeaderClose());
- headingLevel.set(headingLevel.get()+1);
- writer.print("<div class='tx-content'>");
- writer.flush();
- callbackRenderer.render(
- containedNodes.get(1),
- context, mode, os);
- headingLevel.set(headingLevel.get()-1);
- writer.println("</div>");
- writer.flush();
- }
-
-
- private List<GraphNode> getContainedNodes(GraphNode titledContent) {
- final SortedSet<GraphNode> entries = new TreeSet<GraphNode>(new Comparator<GraphNode>() {
-
- @Override
- public int compare(GraphNode o1, GraphNode o2) {
- int pos1 = getPos(o1);
- int pos2 = getPos(o2);
- return pos1 - pos2;
- }
- private int getPos(GraphNode o) {
- try {
- return Integer.parseInt(o.getLiterals(DISCOBITS.pos).next().getLexicalForm());
- } catch (NullPointerException e) {
- return -1;
- }
- }
-
- });
- final Iterator<RDFTerm> entriesIter = titledContent.getObjects(DISCOBITS.contains);
- while (entriesIter.hasNext()) {
- RDFTerm resource = entriesIter.next();
- entries.add(new GraphNode((BlankNodeOrIRI) resource,titledContent.getGraph()));
- }
- final List<GraphNode> result = new ArrayList<GraphNode>();
- for (GraphNode graphNode : entries) {
- Iterator<RDFTerm> holded = graphNode.getObjects(DISCOBITS.holds);
- if (!holded.hasNext()) {
- throw new RuntimeException(
- "Titled Content must contain a first element: "+graphNode.getNodeContext());
- }
- result.add(new GraphNode(holded.next(),
- titledContent.getGraph()));
- }
- return result;
- }
-
- private String getHeaderOpen() {
- final Integer level = headingLevel.get();
- return level < 7 ? "<h"+level+">" : "<div class = \"heading\">";
- }
-
- private String getHeaderClose() {
- final Integer level = headingLevel.get();
- return level < 7 ? "</h"+level+">" : "</div>";
- }
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java
deleted file mode 100644
index 19f094d..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/WebDavUtils.java
+++ /dev/null
@@ -1,703 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.clerezza.platform.content;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.locks.Lock;
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-import javax.xml.transform.dom.DOMResult;
-import org.apache.clerezza.commons.rdf.Literal;
-import org.apache.clerezza.commons.rdf.RDFTerm;
-import org.apache.clerezza.commons.rdf.Triple;
-import org.apache.clerezza.commons.rdf.Graph;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.commons.rdf.impl.utils.TripleImpl;
-import org.apache.clerezza.rdf.core.LiteralFactory;
-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;
-import org.w3c.dom.NodeList;
-
-/**
- *
- * @author agron
- */
-class WebDavUtils {
-
- static final String infinite = "infinite";
- static final String prop = "prop";
- static final String allprop = "allprop";
- static final String propname = "propname";
- static final String propfind = "propfind";
- static final String proppatch = "propertyupdate";
- static final String set = "set";
- static final String remove = "remove";
- private static final String davUri = "DAV:";
- private static final String multistat = "multistatus";
- private static final String response = "response";
- private static final String href = "href";
- private static final String propstat = "propstat";
- private static final String status = "status";
-
- //WebDAV properties
- private static final String creationdate = "creationdate";
- private static final String displayname = "displayname";
- private static final String getcontentlanguage = "getcontentlanguage";
- private static final String getcontentlength = "getcontentlength";
- private static final String getcontenttype = "getcontenttype";
- private static final String getetag = "getetag";
- private static final String getlastmodified = "getlastmodified";
- private static final String lockdiscovery = "lockdiscovery";
- private static final String resourcetype = "resourcetype";
- private static final String supportedlock = "supportedlock";
-
- private static final List<String> davProps = new ArrayList<String>(Arrays.asList(
- creationdate, displayname, getcontentlanguage, getcontentlength,
- getcontenttype, getetag, getlastmodified, lockdiscovery,
- resourcetype, supportedlock));
-
- private static final List<String> protectedProps = new ArrayList<String>(Arrays.asList(
- creationdate, getcontentlength, getetag, getlastmodified,
- lockdiscovery, resourcetype, supportedlock));
-
-
- /**
- * Returns the {@link Node} from a given {@link Document}
- * @param doc
- * @param nodeName
- * @return null if Node wasen't found
- */
- static Node getNode(Document doc, String nodeName){
- NodeList nodes = doc.getElementsByTagNameNS(davUri, nodeName);
- if(nodes.getLength() == 1){
- return nodes.item(0);
- }
- return null;
- }
-
- /**
- * @param node
- * @return returns the first non Text node or null
- */
- static Node getFirstChild(Node node){
- NodeList nodeList = node.getChildNodes();
- for (int i = 0; i < nodeList.getLength(); i++) {
- if(nodeList.item(i).getLocalName() != null){
- return nodeList.item(i);
- }
- }
- return null;
- }
-
- /**
- * Converts a {@link Source} to a {@link Document}
- *
- * @throws ParserConfigurationException
- * @throws TransformerFactoryConfigurationError
- * @throws TransformerException
- */
- static Document sourceToDocument(Source body)
- throws ParserConfigurationException,
- TransformerFactoryConfigurationError, TransformerException {
- Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
- .newDocument();
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- DOMResult result = new DOMResult(doc);
- transformer.transform(body, result);
- return (Document) result.getNode();
- }
-
- /**
- * Returns the content of a requested header as a {@link String}
- *
- * @param headers
- * @param header
- * header to be returned
- * @return returns <code>null</code> if the requested header is empty
- */
- static String getHeaderAsString(HttpHeaders headers, String header) {
- List<String> requestedHeader = headers.getRequestHeader(header);
- if(requestedHeader == null){
- return null;
- }
- Iterator<String> headerIterator = requestedHeader.iterator();
- if (headerIterator.hasNext()) {
- return headerIterator.next();
- } else {
- return null;
- }
- }
-
- /**
- * @param clazz
- * @return returns an ok Response with a DAV: and an ALLOW: header
- */
- static Response options(Class<?> clazz){
- Response.ResponseBuilder builder = Response.ok();
- builder.header("Dav", "1");
- Set<String> allow = new HashSet<String>();
- Method[] methods = clazz.getMethods();
- for (Method method : methods){
- for (Annotation annotation : method.getAnnotations()){
- HttpMethod httpMethod = annotation.annotationType()
- .getAnnotation(HttpMethod.class);
- if(httpMethod != null){
- allow.add(httpMethod.value());
- }
- }
- }
- if (allow.isEmpty()) {
- builder.header("Allow", "");
- } else {
- final Iterator<String> iterator = allow.iterator();
- final StringBuffer buffer = new StringBuffer(iterator.next());
- while (iterator.hasNext()) {
- buffer.append(", ");
- buffer.append(iterator.next());
- }
- builder.header("Allow", buffer.toString());
- }
- return builder.build();
- }
-
- /*------------------------------------------*
- * Putting the properties in a DOM Document *
- *------------------------------------------*/
-
- static Document createResponseDoc(Map<IRI, PropertyMap> resultMap)
- throws ParserConfigurationException {
- Document responseDoc = DocumentBuilderFactory.newInstance().
- newDocumentBuilder().newDocument();
- Set<IRI> nodeNameSet = resultMap.keySet();
-
- Element multistatElement = responseDoc.createElementNS(davUri,"D:" + multistat);
- // add multistat element to response
- responseDoc.appendChild(multistatElement);
- for (IRI nodeName : nodeNameSet) {
- Element responseElement = responseDoc.createElementNS(davUri, "D:" + response);
- // add response element to response Document
- multistatElement.appendChild(responseElement);
- PropertyMap propertyMap = resultMap.get(nodeName);
- addElementsToResponse(propertyMap, responseElement, responseDoc, nodeName);
- }
- return responseDoc;
- }
-
- private static void addElementsToResponse(PropertyMap propertyMap,
- Element responseElement, Document responseDoc, IRI nodeName) {
- Element hrefElement = responseDoc.createElementNS(davUri, "D:" + href);
- hrefElement.setTextContent(nodeName.getUnicodeString());
- // add hrefElement element to responseElement
- responseElement.appendChild(hrefElement);
- addPropsToPropstat(responseElement, propertyMap, responseDoc);
-
- }
-
- private static void addPropsToPropstat(Element responseElement, PropertyMap propertyMap,
- Document responseDoc) {
- Set<Property> props = propertyMap.keySet();
- Element propFoundElement = responseDoc.createElementNS(davUri, "D:" + prop);
- Element propNotFoundElement = responseDoc.createElementNS(davUri, "D:" + prop);
- for(Property propVal : props){
- String propName = propVal.prop;
- String ns = propVal.ns;
- String prf = ns.equalsIgnoreCase(davUri) ? "D:":"R:";
- String value = propertyMap.get(propVal);
- Element resultElement = responseDoc.createElementNS(ns, prf + propName);
- if(value != null){
- if (!(value.isEmpty())){
- if (value.equals("collection")) {
- resultElement.appendChild(responseDoc.createElementNS(
- davUri, "D:collection"));
- } else {
- resultElement.setTextContent(value);
- }
- }
- propFoundElement.appendChild(resultElement);
- } else {
- propNotFoundElement.appendChild(resultElement);
- }
- }
- Element propstatFoundElement = responseDoc.createElementNS(davUri,
- "D:" + propstat);
- Element statusFoundElement = responseDoc.createElementNS(davUri,
- "D:" + status);
- propstatFoundElement.appendChild(propFoundElement);
- statusFoundElement.setTextContent("HTTP/1.1 200 OK");
- propstatFoundElement.appendChild(statusFoundElement);
- responseElement.appendChild(propstatFoundElement);
- if(propNotFoundElement.hasChildNodes()){
- Element propstatNotFoundElement = responseDoc.createElementNS(davUri,
- "D:" + propstat);
- Element statusNotFoundElement = responseDoc.createElementNS(davUri,
- "D:" + status);
- propstatNotFoundElement.appendChild(propNotFoundElement);
- statusNotFoundElement.setTextContent("HTTP/1.1 404 Not Found");
- propstatNotFoundElement.appendChild(statusNotFoundElement);
- responseElement.appendChild(propstatNotFoundElement);
- }
-
- }
-
- /*------------------------------------------------------------*
- * Get the properties from the CollectionNode and its members *
- *------------------------------------------------------------*/
-
- static Map<IRI, PropertyMap> getPropsByName(NodeList children,
- GraphNode node, String depthHeader, boolean includeValues) {
- List<Property> requestedUserProps = new ArrayList<Property>();
- List<Property> requestedDavProps = new ArrayList<Property>();
-
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- String localName = child.getLocalName();
- if(localName == null){
- continue;
- }
- String nsUri = child.getNamespaceURI();
- if (nsUri.equals(davUri)) {
- requestedDavProps.add(new Property(nsUri, localName));
- } else {
- requestedUserProps.add(new Property(nsUri, localName));
- }
- }
- Map<IRI, PropertyMap> allprops = new HashMap<IRI, PropertyMap>();
-
- if (node.hasProperty(RDF.type, HIERARCHY.Collection)) {
- return getCollectionProps(allprops, requestedUserProps, requestedDavProps,
- node, depthHeader, includeValues);
- }else{
- addNodeProperties(allprops, requestedUserProps, requestedDavProps,
- node, includeValues);
- return allprops;
- }
-
- }
-
- static Map<IRI, PropertyMap> getCollectionProps(Map<IRI, PropertyMap> allprops,
- List<Property> requestedUserProps, List<Property> requestedDavProps,
- GraphNode collection, String depthHeader, boolean includeValues) {
- if(allprops == null){
- allprops = new HashMap<IRI, PropertyMap>();
- }
- 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);
- }
- return allprops;
- }
-
- private static void addMemberProps(Map<IRI, PropertyMap> allprops,
- List<Property> requestedUserProps, List<Property> requestedDavProps,
- 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,
- member, depthHeader, includeValues);
- } else {
- addNodeProperties(allprops, requestedUserProps, requestedDavProps,
- member, includeValues);
- }
- }
- }
-
- static void addNodeProperties(Map<IRI, PropertyMap> allprops,
- List<Property> requestedUserProps, List<Property> requestedDavProps,
- GraphNode node, boolean includeValues) {
-
- if (requestedDavProps == null) {
- requestedDavProps = new ArrayList<Property>();
- for(String st : davProps){
- requestedDavProps.add(new Property(davUri, st));
- }
- }
- PropertyMap propertyMap = new PropertyMap();
- if (includeValues) {
- addDavProps(node, propertyMap, requestedDavProps);
- addUserProps(node, propertyMap, requestedUserProps);
- } else {
- addDavPropsWithoutValues(propertyMap);
- addUserPropsWithoutValues(node, propertyMap);
- }
- allprops.put((IRI) node.getNode(), propertyMap);
-
- }
-
- private static void addUserProps(GraphNode node, PropertyMap propertyMap,
- List<Property> requestedProps) {
- Iterator<IRI> userPropsIter;
- Lock readLock = node.readLock();
- readLock.lock();
- try {
- userPropsIter = node.getProperties();
- } finally {
- readLock.unlock();
- }
- Set<IRI> userProps = new HashSet<IRI>();
- while (userPropsIter.hasNext()) {
- userProps.add(userPropsIter.next());
- }
- userProps.remove(HIERARCHY.members);
- if (requestedProps != null) {
- for (Property requestedProp : requestedProps) {
- IRI predicate = new IRI(requestedProp.value());
- if (userProps.contains(predicate)) {
- readLock.lock();
- try {
- Iterator<RDFTerm> value = node.getObjects(predicate);
- if (value.hasNext()) {
- propertyMap.put(requestedProp, getValue(value.next()));
- } else {
- propertyMap.put(requestedProp, "");
- }
- } finally {
- readLock.unlock();
- }
- } else {
- propertyMap.put(requestedProp, null);
- }
- }
- } else {
- for (IRI uri : userProps) {
- String userProp = uri.getUnicodeString();
- int index = userProp.lastIndexOf("#");
- if (index == -1) {
- index = userProp.lastIndexOf("/");
- }
- Property property = new Property(userProp.substring(0, index + 1),
- userProp.substring(index + 1));
-
- Iterator<RDFTerm> value = node.getObjects(uri);
- readLock.lock();
- try {
- if (value.hasNext()) {
- propertyMap.put(property, getValue(value.next()));
- } else {
- propertyMap.put(property, "");
- }
- } finally {
- readLock.unlock();
- }
- }
- }
- }
-
- private static void addUserPropsWithoutValues(GraphNode node,
- PropertyMap propertyMap) {
- Iterator<IRI> userPropsIter;
- Lock readLock = node.readLock();
- readLock.lock();
- try {
- userPropsIter = node.getProperties();
- } finally {
- readLock.unlock();
- }
- Set<IRI> userProps = new HashSet<IRI>();
- while (userPropsIter.hasNext()) {
- userProps.add(userPropsIter.next());
- }
- userProps.remove(HIERARCHY.members);
- for (IRI uri : userProps) {
- String userProp = uri.getUnicodeString();
- int index = userProp.lastIndexOf("#");
- if (index == -1) {
- index = userProp.lastIndexOf("/");
- }
- Property property = new Property(userProp.substring(0, index + 1),
- userProp.substring(index + 1));
- propertyMap.put(property, "");
- }
- }
-
- /**
- * @param resource
- * @return returns the unicode string of an IRI or the lexical form of a
- * Literal or the return value of a toString() on a BlankNode
- */
- private static String getValue(RDFTerm resource){
- if(resource instanceof IRI){
- return ((IRI)resource).getUnicodeString();
- }else if(resource instanceof Literal){
- return ((Literal)resource).getLexicalForm();
- }else {
- return resource.toString();
- }
- }
-
- /**
- * FIXME find better implementation
- * @param node
- * @param propertyMap
- * @param includeValues
- * @param requestedProps
- */
- 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, getLastSection(((IRI)node.getNode()).getUnicodeString()));
- } else if (property.prop.equalsIgnoreCase(resourcetype)) {
- if (node.hasProperty(RDF.type, HIERARCHY.Collection)) {
- propertyMap.put(property, "collection");
- } else {
- propertyMap.put(property, "");
- }
- } else if(property.prop.equalsIgnoreCase(creationdate)){
- Lock readLock = node.readLock();
- readLock.lock();
- try {
- Iterator<RDFTerm> date = node.getObjects(DCTERMS.dateSubmitted);
- if (date.hasNext()) {
- String st = getValue(date.next());
- propertyMap.put(property, st);
- } else {
- propertyMap.put(property, "");
- }
- } finally {
- readLock.unlock();
- }
- } else if(property.prop.equalsIgnoreCase(getlastmodified)){
- Lock readLock = node.readLock();
- readLock.lock();
- try {
- Iterator<RDFTerm> date = node.getObjects(DCTERMS.modified);
- if (date.hasNext()) {
- String st = getValue(date.next());
- propertyMap.put(property, st);
- } else {
- propertyMap.put(property, "");
- }
- } finally {
- readLock.unlock();
- }
- } else if(property.prop.equalsIgnoreCase(getcontenttype)){
- Lock readLock = node.readLock();
- readLock.lock();
- try {
- Iterator<RDFTerm> mediaType = node.getObjects(DCTERMS.MediaType);
- if (mediaType.hasNext()) {
- String st = getValue(mediaType.next());
- propertyMap.put(property, st);
- } else {
- propertyMap.put(property, "");
- }
- } finally {
- readLock.unlock();
- }
- } else {
- propertyMap.put(property, "");
- }
- } else {
- propertyMap.put(property, null);
- }
- }
- }
-
- private static void addDavPropsWithoutValues(PropertyMap propertyMap) {
- for (String property : davProps) {
- propertyMap.put(new Property(davUri, property), "");
- }
- }
-
- /*-------------------*
- * Proppatch methods *
- *-------------------*/
-
- static Document modifyProperties(GraphNode hierarchyNode, NodeList propsToSet,
- NodeList propsToRemove) throws ParserConfigurationException {
- Document responseDoc = DocumentBuilderFactory.newInstance()
- .newDocumentBuilder().newDocument();
- IRI subject = (IRI) hierarchyNode.getNode();
- Element hrefElement = responseDoc.createElementNS(davUri, href);
- hrefElement.setTextContent(subject.getUnicodeString());
- Element multistatus = responseDoc.createElementNS(davUri, multistat);
- Element responseElement = responseDoc.createElementNS(davUri, response);
- Element propOk = responseDoc.createElementNS(davUri, prop);
- Element propForbidden = responseDoc.createElementNS(davUri, prop);
-
- responseDoc.appendChild(multistatus);
- multistatus.appendChild(responseElement);
- responseElement.appendChild(hrefElement);
-
- Map<Property, String> setMap = getNodeListAsMap(propsToSet);
- Map<Property, String> removeMap = getNodeListAsMap(propsToRemove);
- Graph contentGraph = hierarchyNode.getGraph();
- for(Map.Entry<Property, String> entry : setMap.entrySet()){
- Property property = entry.getKey();
- if(property.ns.equalsIgnoreCase(davUri)){
- if(protectedProps.contains(property.prop)){
- propForbidden.appendChild(responseDoc
- .createElementNS(davUri, property.prop));
- } else {
- IRI predicate = new IRI(property.value());
- Lock writeLock = hierarchyNode.writeLock();
- writeLock.lock();
- try {
- Iterator<RDFTerm> valIter = hierarchyNode.getObjects(predicate);
- replaceProp(subject, predicate, valIter, contentGraph, entry);
- } finally {
- writeLock.unlock();
- }
- propOk.appendChild(responseDoc.createElementNS(davUri, property.prop));
- }
- } else {
- IRI predicate = new IRI(property.value());
- Lock writeLock = hierarchyNode.writeLock();
- writeLock.lock();
- try {
- Iterator<RDFTerm> valIter = hierarchyNode.getObjects(predicate);
- replaceProp(subject, predicate, valIter, contentGraph, entry);
- } finally {
- writeLock.unlock();
- }
- propOk.appendChild(responseDoc.createElementNS(property.ns, "R:" + property.prop));
- }
- }
-
- for(Map.Entry<Property, String> entry : removeMap.entrySet()){
- Property property = entry.getKey();
- if(davProps.contains(property.prop)){
- propForbidden.appendChild(responseDoc
- .createElementNS(davUri, property.prop));
- } else {
- IRI predicate = new IRI(property.value());
- Lock writeLock = hierarchyNode.writeLock();
- writeLock.lock();
- try {
- Iterator<RDFTerm> valIter = hierarchyNode.getObjects(predicate);
- Set<Triple> triplesToBeRemoved = new HashSet<Triple>();
- while (valIter.hasNext()) {
- triplesToBeRemoved.add(new TripleImpl(subject, predicate, valIter.next()));
- }
- contentGraph.removeAll(triplesToBeRemoved);
- } finally {
- writeLock.unlock();
- }
- propOk.appendChild(responseDoc.createElementNS(property.ns, property.prop));
-
- }
- }
-
- if(propOk.hasChildNodes()){
- Element propstatOk = responseDoc.createElementNS(davUri, propstat);
- Element statusOk = responseDoc.createElementNS(davUri, status);
- responseElement.appendChild(propstatOk);
- propstatOk.appendChild(propOk);
- propstatOk.appendChild(statusOk);
- statusOk.setTextContent("HTTP/1.1 200 OK");
- }
- if(propForbidden.hasChildNodes()){
- Element propstatForbidden = responseDoc.createElementNS(davUri, propstat);
- Element statusForbidden = responseDoc.createElementNS(davUri, status);
- responseElement.appendChild(propstatForbidden);
- propstatForbidden.appendChild(propForbidden);
- propstatForbidden.appendChild(statusForbidden);
- statusForbidden.setTextContent("HTTP/1.1 403 Forbidden");
- }
-
- return responseDoc;
- }
-
- private static Map<Property, String> getNodeListAsMap(NodeList nodeList) {
- if (nodeList == null) {
- return new HashMap<Property, String>();
- }
- Map<Property, String> result = new HashMap<Property, String>();
- for (int i = 0; i < nodeList.getLength(); i++) {
- Node node = nodeList.item(i);
- String propName = node.getLocalName();
- if (propName != null) {
- String nsUri = node.getNamespaceURI();
- result.put(new Property(nsUri, propName), node.getTextContent());
- }
- }
- return result;
- }
-
- private static void replaceProp(IRI subject, IRI predicate,
- Iterator<RDFTerm> valIter, Graph contentGraph,
- Map.Entry<Property, String> entry) {
- LiteralFactory fac = LiteralFactory.getInstance();
- Set<Triple> triplesToBeRemoved = new HashSet<Triple>();
- if (valIter.hasNext()) {
- triplesToBeRemoved.add(new TripleImpl(subject, predicate, valIter.next()));
- }
- contentGraph.removeAll(triplesToBeRemoved);
- contentGraph.add(new TripleImpl(subject, predicate,
- 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
- */
- @SuppressWarnings("serial")
- static class PropertyMap extends HashMap<Property, String> {
- }
-
- static class Property {
- final String ns;
- final String prop;
-
- public Property(String ns, String prop) {
- this.ns = ns;
- this.prop = prop;
- }
-
- public String value(){
- return ns+prop;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/collections/CollectionCreator.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/collections/CollectionCreator.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/collections/CollectionCreator.java
deleted file mode 100644
index 4a40b04..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/collections/CollectionCreator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.clerezza.platform.content.collections;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import org.apache.clerezza.commons.rdf.Graph;
-import org.apache.clerezza.commons.rdf.IRI;
-import org.apache.clerezza.commons.rdf.impl.utils.TripleImpl;
-import org.apache.clerezza.rdf.ontologies.HIERARCHY;
-import org.apache.clerezza.rdf.ontologies.RDF;
-
-/**
- * Creates the collections containing a resource in an underlying Graph
- *
- * @author reto
- */
-public class CollectionCreator {
-
- private Graph mGraph;
-
- public CollectionCreator(Graph mGraph) {
- this.mGraph = mGraph;
- }
-
- public void createContainingCollections(IRI uriRef) {
- try {
- URI uri = new URI(uriRef.getUnicodeString());
- if (uri.getHost() == null) {
- throw new IllegalArgumentException("Host name missing in " + uriRef);
- }
- String[] pathSections = uri.getRawPath().split("/");
- for (int i = pathSections.length - 1; i >= 0 ; i--) {
- String section = pathSections[i];
- if (section.length() == 0) {
- if (i == 0) {
- return;
- } else {
- throw new IllegalArgumentException(
- uriRef+" contains consequtive slashes in path section");
- }
- }
- final String unicodeString = uriRef.getUnicodeString();
- int lastIndexOf = unicodeString.lastIndexOf(section);
- IRI parentIRI = new IRI(unicodeString.substring(0, lastIndexOf));
- mGraph.add(new TripleImpl(uriRef, HIERARCHY.parent, parentIRI));
- mGraph.add(new TripleImpl(parentIRI, RDF.type, HIERARCHY.Collection));
- uriRef = parentIRI;
-
- }
- } catch (URISyntaxException ex) {
- throw new IllegalArgumentException(ex);
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/genericmetadata/GenericMetaDataGenerator.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/genericmetadata/GenericMetaDataGenerator.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/genericmetadata/GenericMetaDataGenerator.java
deleted file mode 100644
index 97ba890..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/genericmetadata/GenericMetaDataGenerator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content.genericmetadata;
-
-import java.util.Date;
-import javax.ws.rs.core.MediaType;
-import org.apache.clerezza.commons.rdf.Literal;
-import org.apache.clerezza.rdf.core.LiteralFactory;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
-import org.apache.clerezza.rdf.utils.GraphNode;
-import org.apache.clerezza.rdf.metadata.MetaDataGenerator;
-import org.apache.clerezza.rdf.ontologies.DCTERMS;
-
-/**
- * This class generates metadata about assets.
- *
- * @author tio
- */
-@Component()
-@Service(MetaDataGenerator.class)
-public class GenericMetaDataGenerator implements MetaDataGenerator {
-
- @Override
- public void generate(GraphNode node, byte[] data, MediaType mediaType) {
- Literal dateLiteral = LiteralFactory.getInstance()
- .createTypedLiteral(new Date());
- if(node.getObjects(DCTERMS.dateSubmitted).hasNext()) {
- if(node.getObjects(DCTERMS.modified).hasNext()) {
- node.deleteProperties(DCTERMS.modified);
- }
- node.addProperty(DCTERMS.modified, dateLiteral);
- } else {
- node.addProperty(DCTERMS.dateSubmitted, dateLiteral);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/14575ea3/platform/content/src/main/java/org/apache/clerezza/platform/content/webdav/COPY.java
----------------------------------------------------------------------
diff --git a/platform/content/src/main/java/org/apache/clerezza/platform/content/webdav/COPY.java b/platform/content/src/main/java/org/apache/clerezza/platform/content/webdav/COPY.java
deleted file mode 100644
index 9b7c666..0000000
--- a/platform/content/src/main/java/org/apache/clerezza/platform/content/webdav/COPY.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.clerezza.platform.content.webdav;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.ws.rs.HttpMethod;
-
-/**
- * Indicates that the annotated method responds to HTTP COPY requests
- * @author ali
- */
-
-@Target({ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@HttpMethod("COPY")
-public @interface COPY {
-
-}