Thanks Jerome for the prompt reply. So after I got some rest I could address this with a clearer mind. I resolved it this way:
*spring xml:* <bean id="restletComponent" class="org.restlet.ext.spring.SpringComponent"> <!-- the defaultTarget for this component is our Restlet Application --> <property name="defaultTarget" ref="restletApplication" /> <property name="clientsList"> <list> <value>CLAP</value> <value>FILE</value> </list> </property> </bean> <bean id="restletApplication" class="org.restlet.ext.wadl.WadlApplication" scope="singleton"> <!-- all requests to this Application will be sent to myPath2BeanRouter --> <property name="name" value="REST API" /> <!--property name="inboundRoot" ref="authenticator" / --> <property name="inboundRoot" ref="springRouter" /> <property name="encoderService.enabled" value="true" /> </bean> <!-- Reslet component's Context bean --> * <bean id="restletComponent.context"* * class="org.springframework.beans.factory.config.PropertyPathFactoryBean" />* * <bean id="restletContext" factory-bean="restletComponent.context"* * factory-method="createChildContext" scope="prototype" />* * <bean name="/images" autowire="byName" scope="prototype"* * class="com.zebra.rest.directory.ImagesDirectory">* * <constructor-arg ref="restletContext" />* * </bean>* <!-- Singleton instance of this class --> <bean name="springRouter" class="org.restlet.ext.spring.SpringBeanRouter" /> and then I created a simple Java class extending from Directory import org.restlet.Context; import org.restlet.resource.Directory; public class ImagesDirectory extends Directory { public ImagesDirectory(Context context) { super(context, "clap://class/images"); } } And Voilá! it worked. The only funny thing I see is double logging: May 30, 2014 10:59:46 AM org.restlet.engine.log.LogFilter afterHandle INFO: 2014-05-30 10:59:46 0:0:0:0:0:0:0:1 - 0:0:0:0:0:0:0:1 9091 GET /images/zebra_logo.png - 200 - 0 15 http://localhost:9091 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 - May 30, 2014 10:59:46 AM org.restlet.engine.log.LogFilter afterHandle INFO: 2014-05-30 10:59:46 0:0:0:0:0:0:0:1 - 0:0:0:0:0:0:0:1 9091 GET /images/zebra_logo.png - 200 - 0 1 http://localhost:9091 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 - Could be related to the clap protocol? Other than that, I debugged it and looks it is working as expected, nothing strange under the sun. Thanks! -JG On Thu, May 29, 2014 at 4:15 PM, Jerome Louvel <jlou...@restlet.com> wrote: > Hi Jorge, > > Normally, you shouldn't embed a Directory inside a ServerResource but > directly attach it to your SpringBeanRouter. > To not have to use the {imageId} path variable (for your file names I > guess), you can set the route's matchingMode to Template.STARTS_WITH. I'm > not sure exactly how to do it with SpringBeanRouter, but with a regular > router you would do this: > > myRouter.attach("/v1/images/", > myDirectory).setMatchingMode(Template.STARTS_WITH). > > Thanks, > Jerome > -- > http://restlet.com > @jlouvel <http://twitter.com/#!/jlouvel> > > > > > On Thu, May 29, 2014 at 1:48 PM, Jorge Gallardo <jorgeagalla...@gmail.com> > wrote: > >> Hello all, >> >> Im trying to serve static content from the filesystem but I cant. I was >> able to do it with a plain and simple Reslet application but not using >> SpringBeanRouter. >> Here is the code: >> >> >> @Component("/v1/images/{imageId}") >> >> @Scope("prototype") >> >> public class ImagesResource extends DirectoryServerResource { >> >> private String imageId; >> >> @Override >> >> public void doInit() throws ResourceException { >> >> Directory directory = new Directory(getContext(), >> >> "file:///path/images"); >> >> getRequestAttributes().put("org.restlet.directory", directory); >> >> super.doInit(); >> >> } >> >> } >> And here the xml mapping: >> >> <bean id="restletComponent" class= >> "org.restlet.ext.spring.SpringComponent"> >> >> <property name="defaultTarget" ref="restletApplication" /> >> >> <property name="clientsList"> >> >> <list> >> >> <value>CLAP</value> >> >> <value>FILE</value> >> >> </list> >> >> </property> >> >> </bean> >> >> <bean id="restletApplication" class= >> "org.restlet.ext.wadl.WadlApplication" >> >> scope="singleton"> >> >> <property name="name" value="REST API" /> >> >> <property name="inboundRoot" ref="ServerHeaderFilter" /> >> >> <property name="encoderService.enabled" value="true" /> >> >> </bean> >> >> <bean name="springRouter" class="org.restlet.ext.spring.SpringBeanRouter" >> /> >> >> >> Im facing two issues: >> >> 1- the URL mapping. If i use "/v1/images", SpringBeanRouter does not >> match it, so I went for "/v1/images/{imageId}" >> >> 2- If i dont put the Directory in the map, I get a NullPointerException. >> It looks odd, is there any other/better way of doing it? >> >> Thanks! >> -- >> Jorge Gallardo >> ---------------------------------------- >> jorgeagalla...@gmail.com >> > > -- Jorge Gallardo ---------------------------------------- jorgeagalla...@gmail.com ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=3079582