0

I am creating a webserver on my Android device, and everything seems to be working fine except for the fact Jackson is not converting my objects to JSON. When I make a successfull (200) HTTP request from the browser on my Android device I am getting no JSON data in the network tab (Looking at the response in Google Chrome). I have registered the Jackson Converter as the documents state, and as what previous StackOverflow questions have covered. This does not seem to work, and I'm not getting any error. Any idea what I'm doing wrong? I hope this is enough information for you geniuses here, otherwise let me know what else you guys need.

Note I also tried GSONConverter

Edit: I've noticed that the entity inside the response is always null

WebServer.java

package com.android.restlettest;

    import org.restlet.Component;
    import org.restlet.data.Protocol;

        public class WebServer {

            Component component;

            WebServer() {
                component = new Component();
                component.getServers().add(Protocol.HTTP, 9001);
                component.getDefaultHost().attach("", new MyApplication());
            }

            void start() {
                try {
                    System.out.println("Starting the WebServer");
                    component.start();
                } catch(Exception e) {
                    System.out.println("Exception caught: " + e);
                }
            }

            void stop() {

            }


        }

MyApplication.java

package com.android.restlettest;

import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
import org.restlet.engine.Engine;
import org.restlet.ext.gson.GsonConverter;
import org.restlet.ext.jackson.JacksonConverter;

public class MyApplication extends Application {

        MyApplication() {
            super();
            Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
            //Engine.getInstance().getRegisteredConverters().add(new GsonConverter());
        }

        @Override
        public synchronized Restlet createInboundRoot() {
            Router router = new Router(getContext());

            router.attach("/", IndexResource.class);
            router.attach("/report/log", LogServerResource.class);

            return router;
        }

    }

LogServerResource.java

 public class LogServerResource extends ServerResource implements ILogResource {

        @Get("json")
        public Log retrieve() {
            Log[] list = new Log[2];
            Log log1 = new Log("test.log", "alksdjf32984u23jfsdv", 0);
            list[0] = log1;
            return list[0];
            //return "{\"resource\": \"log\"}";
        }
    }

Log.java

package com.android.restlettest;

import java.io.Serializable;

    public class Log implements Serializable {
        private static final long serialVersionUID = 1L;

        public String data;
        public String name;
        public int id;

        public Log() {

        }

        public Log(final String name, final String data, final int id) {
            super();
            this.name = name;
            this.data = data;
            this.id = id;
        }
    }
Taztingo
  • 1,915
  • 2
  • 27
  • 42

1 Answers1

0

I ended up finding someone that had a similar issue to me. I was missing some libs that needed to be added. I apologize for wasting your time.

Restlet server on Android: client is getting a null object

Taztingo
  • 1,915
  • 2
  • 27
  • 42