On Jan 5, 2009, at 1:05 PM, fmancinelli (SVN) wrote:
Author: fmancinelli
Date: 2009-01-05 13:05:32 +0100 (Mon, 05 Jan 2009)
New Revision: 15061
Modified:
sandbox/xwiki-core-rest/.classpath
sandbox/xwiki-core-rest/src/main/java/org/xwiki/rest/
PageResource.java
sandbox/xwiki-core-rest/src/main/java/org/xwiki/rest/
RestApplication.java
Log:
Componentized page representation with plexus components as
suggested on the mailing list.
Modified: sandbox/xwiki-core-rest/.classpath
===================================================================
--- sandbox/xwiki-core-rest/.classpath 2009-01-05 12:01:09 UTC (rev
15060)
+++ sandbox/xwiki-core-rest/.classpath 2009-01-05 12:05:32 UTC (rev
15061)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes"
path="src/main/
java"/>
+ <classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="src" path="src/test/resources"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/
org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
Modified: sandbox/xwiki-core-rest/src/main/java/org/xwiki/rest/
PageResource.java
===================================================================
--- sandbox/xwiki-core-rest/src/main/java/org/xwiki/rest/
PageResource.java 2009-01-05 12:01:09 UTC (rev 15060)
+++ sandbox/xwiki-core-rest/src/main/java/org/xwiki/rest/
PageResource.java 2009-01-05 12:05:32 UTC (rev 15061)
@@ -1,14 +1,15 @@
package org.xwiki.rest;
+import java.util.Map;
+
import org.restlet.Context;
import org.restlet.data.MediaType;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.data.Status;
import org.restlet.resource.Representation;
-import org.restlet.resource.StringRepresentation;
import org.restlet.resource.Variant;
-import org.xwiki.rest.model.Page;
+import org.xwiki.component.manager.ComponentLookupException;
import com.xpn.xwiki.api.Document;
@@ -29,9 +30,19 @@
public PageResource(Context context, Request request, Response
response)
{
super(context, request, response);
- getVariants().clear();
- getVariants().add(new Variant(MediaType.TEXT_XML));
- getVariants().add(new Variant(MediaType.TEXT_PLAIN));
+
+ /* Configure Media types from registered PageRepresenter
components */
+ try {
+ getVariants().clear();
+ Map<String, Object> map = com.xpn.xwiki.web.Utils.getComponentManager
().lookupMap(PageRepresenter.ROLE);
+ for (String mediaTypeName : map.keySet()) {
+ MediaType mediaType =
MediaType.valueOf(mediaTypeName);
+ getVariants().add(new Variant(mediaType));
+ }
+ } catch (ComponentLookupException e) {
+ throw new RuntimeException(e);
+ }
The ideal way would be for PageResource to be a component. You could
then have a component map directly injected in PageResource using
Plexus and you wouldn't need to use the xwiki-core dep on web.Utils
which we need to get rif of.
-Vincent