Subversion Repositories bacoAlunos

Rev

Rev 2027 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.es.exemplos.hibernate.web.rest;

import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.es.exemplos.hibernate.utils.StreamsUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public abstract class AbstractRestServlet extends HttpServlet
{
    @1.5.0/docs/api/java/lang/Override.html">Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException {
        process(req,resp);
    }

    @1.5.0/docs/api/java/lang/Override.html">Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException {
        process(req,resp);
    }

    protected void process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException
    {
        JSONObject requestObj;

        if(req.getContentType().equalsIgnoreCase("application/json"))
        {
            5+0%2Fdocs%2Fapi+InputStream">InputStream content = req.getInputStream();
            if(content != null)
            {
                1.5.0/docs/api/java/lang/String.html">String json = StreamsUtils.readString(content);
                try {
                    requestObj = new JSONObject(json);
                    1.5.0/docs/api/java/lang/System.html">System.out.println("REQUEST JSON:");
                    1.5.0/docs/api/java/lang/System.html">System.out.println(requestObj.toString());

                    1.5.0/docs/api/java/lang/String.html">String service = requestObj.getString("service");
                    1.5.0/docs/api/java/lang/String.html">String data = requestObj.has("data") ? requestObj.getString("data") : null;

                    1.5.0/docs/api/java/lang/reflect/Method.html">Method innerMethod = this.getClass().getMethod(service,new 1.5.0/docs/api/java/lang/Class.html">Class[]{
                            JSONObject.class,
                            HttpServletRequest.class,
                            HttpServletResponse.class});
                    JSONObject obj = (JSONObject) innerMethod.invoke(this,new 5+0%2Fdocs%2Fapi+Object">Object[]{data,req,resp});

                    JSONObject response = new JSONObject();
                    response.put("service","ok");
                    response.put("response",obj);

                    resp.setContentType("application/json");
                    1.5.0/docs/api/java/io/PrintWriter.html">PrintWriter pw = resp.getWriter();
                    pw.write(obj.toString());

                } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e) {
                    e.printStackTrace();
                    JSONObject response = new JSONObject();
                    try {
                        response.put("service","error");
                        response.put("cause",e.toString());
                        resp.setContentType("application/json");
                        1.5.0/docs/api/java/io/PrintWriter.html">PrintWriter pw = resp.getWriter();
                        pw.write(response.toString());
                    } catch (JSONException e1) {
                        e1.printStackTrace();
                    }


                }
            }
        }


    }
}