Hello Murilo,

could you tell us what is the variable called "context"? A call to "getContext()" should be sufficient since it represents the context of the application.
Could you tell us how the EsbApplication is used? In a Component?

Best regards,
Thierry Boileau
--
Restlet ~ Core developer ~ http://www.restlet.org
Noelios Technologies ~ Co-founder ~ http://www.noelios.com

Hi,

After I got the redirection class working I tried to modify to work on mule (www.mulesource.org)

On my my example I just create a class and that's it.

But mule needs a class which extends org.restlet.Application, and my problems started again.

This is my class:

public class EsbApplication extends Application {
    @Override
    public Restlet createRoot() {
            
        Router router = new Router(context);
        router.attach(new Redirector(context, "https://services.dev{rr}",
                Redirector.MODE_DISPATCHER));
       
        return router;
    }
}

When I do the request I received this exception.

0-Nov-2008 17:51:57 org.restlet.Redirector handle
INFO: Redirecting via client connector to: https://services.dev/services/users
10-Nov-2008 17:51:57 com.noelios.restlet.StatusFilter getStatus
SEVERE: Unhandled exception or error intercepted
java.lang.NullPointerException
    at org.restlet.Redirector.redirectDispatcher(Redirector.java:244)
    at org.restlet.Redirector.handle(Redirector.java:217)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Router.handle(Router.java:504)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
    at com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:112)
    at org.restlet.Application.handle(Application.java:341)
    at org.restlet.Uniform.handle(Uniform.java:108)
    at org.mule.transport.restlet.RestletComponent$RestletCallable.onCall(RestletComponent.java:44)

So.. I looked the Redirector's source on the line 244 and the line is...

->  getContext().getClientDispatcher().handle(request, response);

So... I tried to create a context with this lines before create the redirector, but without success.

Context context = new Context();
Context.setCurrent(context);

I think it was a mule's problem, but I need to solve this to continue my implementation.

Thanks in advance,

Murilo

java.lang.NullPointerException
    at org.restlet.Redirector.redirectDispatcher(Redirector.java:244)
    at org.restlet.Redirector.handle(Redirector.java:217)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Router.handle(Router.java:504)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
    at com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:112)
    at org.restlet.Application.handle(Application.java:341)
    at org.restlet.Uniform.handle(Uniform.java:108)
    at org.mule.transport.restlet.RestletComponent$RestletCallable.onCall(RestletComponent.java:44)
    at org.mule.model.resolvers.CallableEntryPointResolver.invoke(CallableEntryPointResolver.java:52)
    at org.mule.model.resolvers.DefaultEntryPointResolverSet.invoke(DefaultEntryPointResolverSet.java:50)
    at org.mule.component.DefaultLifecycleAdapter.invoke(DefaultLifecycleAdapter.java:197)
    at org.mule.component.AbstractJavaComponent.invokeComponentInstance(AbstractJavaComponent.java:83)
    at org.mule.component.AbstractJavaComponent.doInvoke(AbstractJavaComponent.java:74)
    at org.mule.component.AbstractComponent.invokeInternal(AbstractComponent.java:125)
    at org.mule.component.AbstractComponent.invoke(AbstractComponent.java:153)
    at org.mule.service.AbstractService.invokeComponent(AbstractService.java:932)
    at org.mule.model.seda.SedaService.doSend(SedaService.java:229)
    at org.mule.service.AbstractService.sendEvent(AbstractService.java:505)
    at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:354)
    at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:220)
    at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:180)
    at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:365)
    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:253)
    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:176)
    at org.mule.transport.vm.VMMessageReceiver.onCall(VMMessageReceiver.java:107)
    at org.mule.transport.vm.VMMessageDispatcher$2.doInTransaction(VMMessageDispatcher.java:125)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:99)
    at org.mule.transport.vm.VMMessageDispatcher.doSend(VMMessageDispatcher.java:128)
    at org.mule.transport.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:168)
    at org.mule.transport.AbstractConnector.send(AbstractConnector.java:1910)
    at org.mule.endpoint.DefaultOutboundEndpoint.send(DefaultOutboundEndpoint.java:77)
    at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:327)
    at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:213)
    at org.mule.routing.outbound.AbstractOutboundRouter$2.doInTransaction(AbstractOutboundRouter.java:149)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:99)
    at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:156)
    at org.mule.routing.outbound.FilteringOutboundRouter.route(FilteringOutboundRouter.java:68)
    at org.mule.routing.outbound.DefaultOutboundRouterCollection$1.doInTransaction(DefaultOutboundRouterCollection.java:64)
    at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:45)
    at org.mule.routing.outbound.DefaultOutboundRouterCollection.route(DefaultOutboundRouterCollection.java:69)
    at org.mule.service.AbstractService.sendToOutboundRouter(AbstractService.java:902)
    at org.mule.model.seda.SedaService.doSend(SedaService.java:230)
    at org.mule.service.AbstractService.sendEvent(AbstractService.java:505)
    at org.mule.DefaultMuleSession.sendEvent(DefaultMuleSession.java:354)
    at org.mule.routing.inbound.DefaultInboundRouterCollection.send(DefaultInboundRouterCollection.java:220)
    at org.mule.routing.inbound.DefaultInboundRouterCollection.route(DefaultInboundRouterCollection.java:180)
    at org.mule.transport.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:365)
    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:253)
    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:194)
    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.doRequest(HttpMessageReceiver.java:272)
    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.processRequest(HttpMessageReceiver.java:230)
    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:190)
    at org.mule.work.WorkerContext.run(WorkerContext.java:310)
    at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
    at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
    at java.lang.Thread.run(Thread.java:619)




On Tue, Nov 4, 2008 at 8:56 AM, Murilo Foltran <[EMAIL PROTECTED]> wrote:
No problems I understood the right address.

So.... I got the successful redirection.

I use this class.

public class Test {
    public static void main(String[] args) throws Exception {
        // Create a component

        Component component = new Component();
        component.getServers().add(Protocol.HTTP, 8182);
        component.getClients().add(Protocol.HTTP);

        component.getDefaultHost()
                .attachDefault(
                        new Redirector(component.getContext(),
                                "http://services.dev{rr}",

                                Redirector.MODE_DISPATCHER));
        component.start();
    }
}

I had to modify one thing, I have to use "http://services.dev{rr}" without the '/' before '{rr}' because it was redirecting with two '/',
like this: http://services.dev//services/users.

Now, I'm trying integrate this application with Mule, but I think I'll need change this code because mule expect classes extending org,restlet.Application.

I'll try modify the standalone class to extend Application and after this integrate with mule.

Thanks by the help,

Murilo

Reply via email to