Author: reto
Date: Thu Sep 30 14:10:33 2010
New Revision: 1003068
URL: http://svn.apache.org/viewvc?rev=1003068&view=rev
Log:
CLEREZZA-299: added support for custom-404 in platform content, necessary fixes
in triaxrs
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/
(props changed)
- copied from r1000384,
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.fsadaptor/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/
- copied from r1000384,
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.fsadaptor/src/main/scala/org/apache/clerezza/platform/content/fsadaptor/
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/DefaultPageNotFoundService.scala
- copied, changed from r1000384,
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.fsadaptor/src/main/scala/org/apache/clerezza/platform/content/fsadaptor/BundleFsLoader.scala
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java
Removed:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/BundleFsLoader.scala
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/Logger.scala
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/PathNode2MGraph.scala
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/fsadaptor/
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/resources/OSGI-INF/serviceComponents.xml
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.launcher.storageless.parent/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/JaxRsHandler.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/delegate/ResponseBuilderImpl.java
incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml
Propchange:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Sep 30 14:10:33 2010
@@ -0,0 +1 @@
+target
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/pom.xml?rev=1003068&r1=1000384&r2=1003068&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/pom.xml
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/pom.xml
Thu Sep 30 14:10:33 2010
@@ -6,13 +6,12 @@
<version>0.2-incubating-SNAPSHOT</version>
</parent>
<groupId>org.apache.clerezza</groupId>
- <artifactId>org.apache.clerezza.platform.content.fsadaptor</artifactId>
+ <artifactId>org.apache.clerezza.platform.content.default404</artifactId>
<version>0.1-incubating-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>Clerezza - Platform Content Filesystem Adaptor</name>
+ <name>Clerezza - Platform Content Default 404 response provider</name>
<description>
- Makes directories appear as a graph describing the files and
theits
- contents with the discobits ontology.
+ Provides a default implementation of PageNotFoundService
</description>
<dependencies>
@@ -22,19 +21,7 @@
</dependency>
<dependency>
<groupId>org.apache.clerezza</groupId>
-
<artifactId>org.apache.clerezza.platform.graphprovider.content</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.clerezza</groupId>
- <artifactId>org.apache.clerezza.rdf.core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.clerezza</groupId>
-
<artifactId>org.apache.clerezza.rdf.scala.utils</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.clerezza</groupId>
-
<artifactId>org.apache.clerezza.web.fileserver</artifactId>
+
<artifactId>org.apache.clerezza.platform.content</artifactId>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
@@ -79,7 +66,7 @@
<configuration>
<instructions>
<Service-Component>OSGI-INF/serviceComponents.xml</Service-Component>
-
<Export-Package>org.apache.clerezza.platform.content.fsadaptor</Export-Package>
+
<Export-Package>org.apache.clerezza.platform.content.default404</Export-Package>
<!--
<Bundle-SymbolicName>org.apache.clerezza.platform.users.core</Bundle-SymbolicName>
-->
</instructions>
</configuration>
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/resources/OSGI-INF/serviceComponents.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/resources/OSGI-INF/serviceComponents.xml?rev=1003068&r1=1000384&r2=1003068&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/resources/OSGI-INF/serviceComponents.xml
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/resources/OSGI-INF/serviceComponents.xml
Thu Sep 30 14:10:33 2010
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
- <scr:component enabled="true" immediate="true"
name="org.apache.clerezza.platform.content.fsadaptor.BundleFsLoader">
- <implementation
class="org.apache.clerezza.platform.content.fsadaptor.BundleFsLoader"/>
- <reference name="tcManager"
interface="org.apache.clerezza.rdf.core.access.TcManager"
- cardinality="1..1" policy="static" bind="bindTcManager"
unbind="unbindTcManager"/>
- <reference name="parser"
interface="org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider"
- cardinality="1..1" policy="static"
bind="bindContentGraphProvider" unbind="unbindContentGraphProvider"/>
+ <scr:component enabled="true" immediate="true"
name="org.apache.clerezza.platform.content.default404.DefaultPageNotFoundService">
+ <implementation
class="org.apache.clerezza.platform.content.default404.DefaultPageNotFoundService"/>
+ <service>
+ <provide
interface="org.apache.clerezza.platform.content.PageNotFoundService" />
+ </service>
</scr:component>
</components>
Copied:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/DefaultPageNotFoundService.scala
(from r1000384,
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.fsadaptor/src/main/scala/org/apache/clerezza/platform/content/fsadaptor/BundleFsLoader.scala)
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/DefaultPageNotFoundService.scala?p2=incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/DefaultPageNotFoundService.scala&p1=incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.fsadaptor/src/main/scala/org/apache/clerezza/platform/content/fsadaptor/BundleFsLoader.scala&r1=1000384&r2=1003068&rev=1003068&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.fsadaptor/src/main/scala/org/apache/clerezza/platform/content/fsadaptor/BundleFsLoader.scala
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content.default404/src/main/scala/org/apache/clerezza/platform/content/default404/DefaultPageNotFoundService.scala
Thu Sep 30 14:10:33 2010
@@ -17,92 +17,48 @@
* under the License.
*/
-package org.apache.clerezza.platform.content.fsadaptor
+package org.apache.clerezza.platform.content.default404
-import java.util.Collections
-import org.apache.clerezza.platform.Constants
-import org.apache.clerezza.platform.graphprovider.content.ContentGraphProvider
-import org.apache.clerezza.rdf.core.MGraph
-import org.apache.clerezza.rdf.core.UriRef
-import org.apache.clerezza.rdf.core.access.NoSuchEntityException
-import org.apache.clerezza.rdf.core.access.TcManager
-import org.apache.clerezza.rdf.core.access.security.TcPermission
-import org.apache.clerezza.utils.osgi.BundlePathNode
-import org.osgi.framework.Bundle
-import org.osgi.framework.BundleEvent
-import org.osgi.framework.BundleListener
-import org.osgi.service.component.ComponentContext
-import org.slf4j.LoggerFactory
-
-object BundleFsLoader {
- private val log = LoggerFactory.getLogger(classOf[BundleFsLoader])
-}
-class BundleFsLoader extends BundleListener with Logger {
-
- private val MGRAPH_NAME = new
UriRef("http://zz.localhost/web-resources.graph")
+import org.apache.clerezza.platform.content.PageNotFoundService
+import javax.ws.rs.core.UriInfo
+import java.io.FileNotFoundException
+import java.io.InputStream
+import java.net.URL
+import java.security.AccessController
+import java.security.PrivilegedAction
+import javax.ws.rs.core.Response
+import javax.ws.rs.core.Response.Status
+
+/**
+ * This returns the content of the resource /page-not-found dereferenced as uri
+ * with the same authority section as the request.
+ */
+class DefaultPageNotFoundService extends PageNotFoundService {
- private var tcManager: TcManager = null
- private var cgProvider: ContentGraphProvider = null
+ private val notFoundPagePath = "/page-not-found"
- protected def activate(context: ComponentContext) {
- try {
- tcManager.getMGraph(MGRAPH_NAME);
- } catch {
- case e: NoSuchEntityException => {
- tcManager.createMGraph(MGRAPH_NAME);
-
tcManager.getTcAccessController.setRequiredReadPermissions(
- MGRAPH_NAME, Collections.singleton(new
TcPermission(Constants.CONTENT_GRAPH_URI_STRING, TcPermission.READ)))
+ override def createResponse(uriInfo: UriInfo) = {
+ if (uriInfo.getPath == notFoundPagePath) {
+ Response.status(Status.NOT_FOUND).build();
+ } else {
+ val pageNotFoundUrl = new URL(uriInfo.getBaseUri.toURL,
notFoundPagePath)
+ AccessController.doPrivileged(
+ new PrivilegedAction[Option[(String,
InputStream)]] {
+ def run() = {
+ val connection =
pageNotFoundUrl.openConnection()
+ try {
+
Some(connection.getContentType, connection.getInputStream)
+ } catch {
+ case _:
FileNotFoundException => None
+ }
+ }
+ }
+ ) match {
+ case Some((mediaTypeString, in)) =>
Response.status(Status.NOT_FOUND).`type`(mediaTypeString).entity(in).build();
+ case None =>
Response.status(Status.NOT_FOUND).build();
}
- case e => throw e
- }
- for (bundle <- context.getBundleContext().getBundles()) {
- addToGraph(bundle);
- }
- context.getBundleContext().addBundleListener(this);
- cgProvider.addTemporaryAdditionGraph(MGRAPH_NAME)
- }
- protected def deactivate(context: ComponentContext) {
- context.getBundleContext().removeBundleListener(this);
- cgProvider.removeTemporaryAdditionGraph(MGRAPH_NAME)
- tcManager.deleteTripleCollection(MGRAPH_NAME);
- }
- def bundleChanged(event: BundleEvent) {
- val bundle = event.getBundle();
- event.getType() match {
- case BundleEvent.STARTED =>
- addToGraph(bundle);
- case BundleEvent.STOPPED =>
- removeFromGraph(bundle);
- case _ => BundleFsLoader.log.debug("only reacting on
bundle start and stop")
}
}
- def addToGraph(bundle: Bundle) {
- val pathNode = new BundlePathNode(bundle,
"CLEREZZA-INF/web-resources");
- val mGraph: MGraph = tcManager.getMGraph(MGRAPH_NAME);
- PathNode2MGraph.describeInGraph(pathNode, mGraph);
- BundleFsLoader.log.info("size of mgraph after adding resources
of {}: {}", bundle, mGraph.size)
- //log.info("size of mgraph after adding resources of {}: {}",
bundle, mGraph.size)
- }
-
- def removeFromGraph(bundle: Bundle) {
-
- }
-
- def bindTcManager(tcManager: TcManager) {
- this.tcManager = tcManager;
- }
-
- def unbindTcManager(tcManager: TcManager) {
- this.tcManager = null;
- }
-
- def bindContentGraphProvider(p: ContentGraphProvider) {
- cgProvider = p
- }
-
- def unbindContentGraphProvider(p: ContentGraphProvider) {
- cgProvider = null
- }
}
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=1003068&r1=1003067&r2=1003068&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
Thu Sep 30 14:10:33 2010
@@ -117,6 +117,9 @@ public class DiscobitsTypeHandler extend
@Reference
protected ContentGraphProvider cgProvider;
+
+ @Reference
+ PageNotFoundService notFoundPageService;
private static final Logger logger =
LoggerFactory.getLogger(DiscobitsTypeHandler.class);
@@ -143,7 +146,7 @@ public class DiscobitsTypeHandler extend
final UriRef uri = new
UriRef(uriInfo.getAbsolutePath().toString());
final GraphNode graphNode = getResourceAsGraphNode(uriInfo);
if (graphNode == null) {
- return checkIfOppositExistsAndRedirectIfSo(uri,
uriInfo);
+ return resourceUnavailable(uri, uriInfo);
}
InfoDiscobit infoDiscobit =
InfoDiscobit.createInstance(graphNode);
if (infoDiscobit != null) {
@@ -260,7 +263,7 @@ public class DiscobitsTypeHandler extend
@Context HttpHeaders headers, DOMSource body) {
final UriRef nodeUri = new
UriRef(uriInfo.getAbsolutePath().toString());
if (!nodeAtUriExists(nodeUri)) {
- return checkIfOppositExistsAndRedirectIfSo(nodeUri,
uriInfo);
+ return resourceUnavailable(nodeUri, uriInfo);
}
Map<UriRef, PropertyMap> result;
try {
@@ -337,7 +340,7 @@ public class DiscobitsTypeHandler extend
public Response proppatch(@Context UriInfo uriInfo, DOMSource body) {
UriRef nodeUri = new
UriRef(uriInfo.getAbsolutePath().toString());
if (!nodeAtUriExists(nodeUri)) {
- return checkIfOppositExistsAndRedirectIfSo(nodeUri,
uriInfo);
+ return resourceUnavailable(nodeUri, uriInfo);
}
try {
Document requestDoc =
WebDavUtils.sourceToDocument(body);
@@ -464,7 +467,7 @@ public class DiscobitsTypeHandler extend
public Response options(@Context UriInfo uriInfo) {
final UriRef nodeUri = new
UriRef(uriInfo.getAbsolutePath().toString());
if (!nodeAtUriExists(nodeUri)) {
- return checkIfOppositExistsAndRedirectIfSo(nodeUri,
uriInfo);
+ return resourceUnavailable(nodeUri, uriInfo);
}
Response.ResponseBuilder builder = Response.ok();
builder.header(HeaderName.DAV.toString(), "1");
@@ -518,14 +521,16 @@ public class DiscobitsTypeHandler extend
|| mGraph.filter(null, null, nodeUri).hasNext();
}
- private Response checkIfOppositExistsAndRedirectIfSo(UriRef nodeUri,
+ private Response resourceUnavailable(UriRef nodeUri,
UriInfo uriInfo) {
UriRef oppositUri = makeOppositeUriRef(nodeUri);
if (nodeAtUriExists(oppositUri)) {
return RedirectUtil.createSeeOtherResponse(
oppositUri.getUnicodeString(), uriInfo);
+ } else {
+ return notFoundPageService.createResponse(uriInfo);
}
- return Response.status(Status.NOT_FOUND).build();
+ //return Response.status(Status.NOT_FOUND).build();
}
/**
* add trailing slash if none present, remove otherwise
Added:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.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/PageNotFoundService.java?rev=1003068&view=auto
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java
(added)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.content/src/main/java/org/apache/clerezza/platform/content/PageNotFoundService.java
Thu Sep 30 14:10:33 2010
@@ -0,0 +1,40 @@
+/*
+ * 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
+ * Graph, this is a 404 response.
+ *
+ * @param uriInfo
+ * @return
+ */
+ public Response createResponse(UriInfo uriInfo);
+
+}
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=1003068&r1=1003067&r2=1003068&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
Thu Sep 30 14:10:33 2010
@@ -232,6 +232,11 @@
</dependency>
<dependency>
<groupId>org.apache.clerezza</groupId>
+
<artifactId>org.apache.clerezza.platform.content.default404</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
<artifactId>org.apache.clerezza.platform.content.fsadaptor</artifactId>
<scope>runtime</scope>
</dependency>
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/JaxRsHandler.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/JaxRsHandler.java?rev=1003068&r1=1003067&r2=1003068&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/JaxRsHandler.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/JaxRsHandler.java
Thu Sep 30 14:10:33 2010
@@ -504,13 +504,14 @@ public class JaxRsHandler implements Han
request,
resourceAndPathMatching.getRootResource(),
pathMatching.getRemainingURIPath(), pathMatching.getParameters());
}
+ ProcessableResponse processableResponse;
try {
- ProcessableResponse processableResponse =
(ProcessableResponse) methodResponse;
- ResponseProcessor.handleReturnValue(request,
response, processableResponse);
+ processableResponse = (ProcessableResponse)
methodResponse;
} catch (ClassCastException e) {
throw new RuntimeException("processing of other
MethodResponse" +
" implementations not yet
supported");
}
+ ResponseProcessor.handleReturnValue(request, response,
processableResponse);
} catch (ResourceMethodException ex) {
Throwable cause = ex.getCause();
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java?rev=1003068&r1=1003067&r2=1003068&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/ResponseProcessor.java
Thu Sep 30 14:10:33 2010
@@ -54,6 +54,7 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.RuntimeDelegate;
+import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -262,7 +263,13 @@ class ResponseProcessor {
List<Object> contentTypeList = jaxResponse.getMetadata().get(
HttpHeaders.CONTENT_TYPE);
if ((contentTypeList != null) && (contentTypeList.size() > 0)) {
- mediaType = (MediaType) contentTypeList.get(0);
+ Object mediaTypeObject = contentTypeList.get(0);
+ if (mediaTypeObject instanceof MediaType) {
+ mediaType = (MediaType) mediaTypeObject;
+ } else {
+ String mediaTypeString =
getStringValueFromHeader(mediaTypeObject);
+ mediaType = MediaType.valueOf(mediaTypeString);
+ }
} else {
headerMap.add(HttpHeaders.CONTENT_TYPE, mediaType);
}
@@ -464,14 +471,19 @@ class ResponseProcessor {
for (String headerNameString : headerMap.keySet()) {
List<Object> values = headerMap.get(headerNameString);
for (Object object : values) {
- RuntimeDelegate.HeaderDelegate headerDelegate =
RuntimeDelegate.getInstance().createHeaderDelegate(object.getClass());
- final String stringValue = headerDelegate ==
null ? object.toString() : headerDelegate.toString(object);
+ final String stringValue =
getStringValueFromHeader(object);
response.setHeader(HeaderName.get(headerNameString),
stringValue);
}
}
}
+ private static <T> String getStringValueFromHeader(T headerObject) {
+ HeaderDelegate<T> headerDelegate =
RuntimeDelegate.getInstance().createHeaderDelegate((Class<T>)headerObject.getClass());
+ String mediaTypeString = headerDelegate != null ?
headerDelegate.toString(headerObject) : headerObject.toString();
+ return mediaTypeString;
+ }
+
private static MediaType getConcreteMediaTypeFromPattern(
final MediaType mediaType) {
if (mediaType.isWildcardSubtype()) {
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/delegate/ResponseBuilderImpl.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/delegate/ResponseBuilderImpl.java?rev=1003068&r1=1003067&r2=1003068&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/delegate/ResponseBuilderImpl.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.triaxrs/org.apache.clerezza.triaxrs/src/main/java/org/apache/clerezza/triaxrs/delegate/ResponseBuilderImpl.java
Thu Sep 30 14:10:33 2010
@@ -84,7 +84,11 @@ class ResponseBuilderImpl extends Respon
@Override
public ResponseBuilder type(String type) {
- throw new UnsupportedOperationException("Not supported yet.");
+ if (type == null) {
+ headers.remove(HttpHeaders.CONTENT_TYPE);
+ }
+ headers.putSingle(HttpHeaders.CONTENT_TYPE, type);
+ return this;
}
@Override
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=1003068&r1=1003067&r2=1003068&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml Thu Sep 30
14:10:33 2010
@@ -45,6 +45,7 @@
<module>org.apache.clerezza.platform.config.gui</module>
<module>org.apache.clerezza.platform.content.imagemetadata</module>
<module>org.apache.clerezza.platform.content</module>
+ <module>org.apache.clerezza.platform.content.default404</module>
<module>org.apache.clerezza.platform.content.fsadaptor</module>
<module>org.apache.clerezza.platform.content.representations</module>
<module>org.apache.clerezza.platform.dashboard</module>
@@ -731,6 +732,11 @@
</dependency>
<dependency>
<groupId>org.apache.clerezza</groupId>
+
<artifactId>org.apache.clerezza.platform.content.default404</artifactId>
+ <version>0.1-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
<artifactId>org.apache.clerezza.platform.content.fsadaptor</artifactId>
<version>0.1-incubating-SNAPSHOT</version>
</dependency>