package pl.net.bluesoft.rnd.processtool.plugins; import com.thoughtworks.xstream.XStream; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializationConfig.Feature; 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.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; public class AperteWorkflowConfigurationExposureServlet extends HttpServlet { public enum Format { JSON, XML } private static final String NAME = "name"; private static Logger logger = Logger.getLogger(AperteWorkflowConfigurationExposureServlet.class.getName()); private static final ObjectMapper mapper = new ObjectMapper(); private static final XStream xstream = new XStream(); private static final Format DEFAULT_FORMAT = Format.JSON; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ProcessToolRegistry reg = (ProcessToolRegistry) getServletContext().getAttribute(ProcessToolRegistry.class.getName()); resp.setContentType("text/plain"); Map<String,Object> res = new HashMap<String,Object>(); res.put("definitionLanguage", reg.getBpmDefinitionLanguage()); PrintWriter out = resp.getWriter(); String formatString = req.getParameter("format"); Format format; if (formatString == null) { format = DEFAULT_FORMAT; } else { format = Format.valueOf(formatString.toUpperCase()); } switch (format) { case XML: { out.write(xstream.toXML(res)); break; } case JSON: { mapper.configure(Feature.INDENT_OUTPUT, true); mapper.writeValue(out, res); break; } } out.close(); logger.info(this.getClass().getSimpleName() + " GET"); } @Override public void init() throws ServletException { super.init(); logger.info(this.getClass().getSimpleName() + " INITIALIZED: " + getServletContext().getContextPath()); } @Override public void destroy() { super.destroy(); logger.info(this.getClass().getSimpleName() + " DESTROYED"); } }