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