/** * Sencha GXT 3.0.0b - Sencha for GWT * Copyright(c) 2007-2012, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.sencha.gxt.examples.resources.server; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONObject; import com.sencha.gxt.examples.resources.server.data.Folder; import com.sencha.gxt.examples.resources.server.data.Music; public class JsonTreeServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { String id = req.getParameter("id"); Folder folder = Folder.findFolder(id == null ? 1 : Integer.valueOf(id)); String xml = generateJson(folder); resp.setContentType("application/json"); PrintWriter out = resp.getWriter(); out.println(xml); out.flush(); } catch (Exception e) { throw new ServletException(e); } } private String generateJson(Folder folder) throws Exception { JSONObject root = new JSONObject(); JSONArray records = new JSONArray(); root.put("records", records); for (int i = 0, len = folder.getSubFolders().size(); i < len; i++) { Folder sub = folder.getSubFolders().get(i); JSONObject f = new JSONObject(); f.put("folder", true); f.put("name", sub.getName()); f.put("id", sub.getId()); records.put(f); } for (int i = 0, len = folder.getChildren().size(); i < len; i++) { Music m = folder.getChildren().get(i); JSONObject f = new JSONObject(); f.put("folder", false); f.put("name", m.getName()); f.put("id", m.getId()); records.put(f); } return root.toString(); } }