I've been having trouble getting Spring to play nice with Restlet (I'm 
experienced with Spring, a newbie with Restlet, so please bear with me!). Using 
Spring 2.5.6 and Restlet 1.2-SNAPSHOT.

I want to define a resource called "uniq" and map /uniq to my UniqResource bean 
(extends Resource). Simple, yeah? When I browse to http://localhost:8182/uniq, 
I get the following stack trace:

Apr 3, 2009 10:54:19 AM org.restlet.engine.StatusFilter getStatus
SEVERE: Unhandled exception or error intercepted
java.lang.NullPointerException
 at java.lang.Class.isAssignableFrom(Native Method)
 at org.restlet.resource.Finder.handle(Finder.java:391)
 at org.restlet.routing.Filter.doHandle(Filter.java:156)
 at org.restlet.routing.Filter.handle(Filter.java:201)
 at org.restlet.routing.Router.handle(Router.java:520)
 at org.restlet.routing.Filter.doHandle(Filter.java:156)
 at org.restlet.routing.Filter.handle(Filter.java:201)
 at org.restlet.routing.Router.handle(Router.java:520)
 at org.restlet.routing.Filter.doHandle(Filter.java:156)
 at org.restlet.routing.Filter.handle(Filter.java:201)
 at org.restlet.routing.Router.handle(Router.java:520)
 at org.restlet.routing.Filter.doHandle(Filter.java:156)
 at org.restlet.engine.StatusFilter.doHandle(StatusFilter.java:153)
 at org.restlet.routing.Filter.handle(Filter.java:201)
 at org.restlet.routing.Filter.doHandle(Filter.java:156)
 at org.restlet.routing.Filter.handle(Filter.java:201)
 at org.restlet.engine.ChainHelper.handle(ChainHelper.java:126)
 at org.restlet.Component.handle(Component.java:724)
 at org.restlet.Server.handle(Server.java:355)
 at org.restlet.engine.ServerHelper.handle(ServerHelper.java:71)
 at org.restlet.engine.http.HttpServerHelper.handle(HttpServerHelper.java:149)
 at 
org.restlet.engine.http.StreamServerHelper$ConnectionHandler.run(StreamServerHelper.java:89)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
Apr 3, 2009 10:54:19 AM org.restlet.engine.LogFilter afterHandle
INFO: 2009-04-03        10:54:19        127.0.0.1       -       -       8182    
GET     /uniq   -       500     365     -       39      http://localhost:8182   
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/2009032711 
Ubuntu/8.10 (intrepid) Firefox/3.0.8       -


Here's my applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";>

        <bean id="springComponent" 
class="org.restlet.ext.spring.SpringComponent" init-method="start" 
destroy-method="stop">
                <property name="server">
                        <bean class="org.restlet.ext.spring.SpringServer">
                                <constructor-arg value="http" />
                                <constructor-arg value="8182" />
                        </bean>
                </property>
                <property name="defaultTarget" ref="springRouter" />
        </bean>

        <bean id="springRouter" class="org.restlet.ext.spring.SpringBeanRouter" 
/>

        <bean name="/uniq" autowire="byName" id="uniqResource" 
class="org.example.uniq.rest.UniqResource" scope="prototype">
                <property name="nextUniqDao" ref="nextUniqDao" />
        </bean>
        
</beans>


And UniqResource.java:

package org.example.uniq.rest;

import java.io.StringReader;

import org.example.uniq.dao.NextUniqDao;

import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.representation.ReaderRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
import org.restlet.resource.Resource;
import org.restlet.resource.ResourceException;

public class UniqResource extends Resource {
        
        private NextUniqDao nextUniqDao;
        
        public final void setNextUniqDao(NextUniqDao nextUniqDao) {
                this.nextUniqDao = nextUniqDao;
        }
        
        /** @see 
org.restlet.resource.Resource#represent(org.restlet.representation.Variant) */
        public Representation represent(Variant variant) throws 
ResourceException {
                Long next = this.nextUniqDao.pop();
                this.getResponse().setStatus(Status.SUCCESS_OK);
                return new ReaderRepresentation(new 
StringReader(next.toString()), MediaType.TEXT_PLAIN);
        }

}

Clearly I'm missing something basic, but I can't figure it out. Any help would 
be greatly appreciated!

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1534381

Reply via email to