Package org.uengine.ui.taglibs

Source Code of org.uengine.ui.taglibs.JsonObjectTag

package org.uengine.ui.taglibs;

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonObjectTag extends SimpleTagSupport {
 
  private String var;

  public String getVar() {
    return var;
  }

  public void setVar(String var) {
    this.var = var;
  }

  public void doTag() throws JspException {
    String jsonString = getJsonString();
    boolean isArray = jsonString.startsWith("[");

    Object result = isArray ? parseJsonArray(jsonString) : parseJsonMap(jsonString);

    getJspContext().setAttribute(getVar(), result);
  }

  private Object parseJsonArray(String jsonString) {
    JSONArray jsonArray = JSONArray.fromObject(jsonString);
    return JSONArray.toCollection(jsonArray, ArrayList.class);
  }

  private Object parseJsonMap(String jsonString) {
    JSONObject jsonObject = JSONObject.fromObject(jsonString);
    return JSONObject.toBean(jsonObject, LinkedHashMap.class);
  }

  private String getJsonString() {
    JspFragment body = getJspBody();
    if (body == null) {
      throw new RuntimeException("Tag Body not found");
    }

    StringWriter writer = new StringWriter();
    try {
      body.invoke(writer);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
    return writer.toString().trim();
  }
}
TOP

Related Classes of org.uengine.ui.taglibs.JsonObjectTag

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.