import java.util.Iterator;
import java.util.Map;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
public class EscapeUtil {
protected static final ToStringStyle JS_STYLE = new JSStyle();
protected EscapeUtil() {
}// End Of Constructor()
public static String toJSObject(String data) {
return "/"" + StringEscapeUtils.escapeJavaScript(data) + "/"";
}// End Of Method(toJSObject)
public static String toJSObject(String[] data) {
StringBuffer jsString = new StringBuffer("new Array(");
for (int i = 0; i < data.length; i++) {
if (i > 0) jsString.append(", ");
jsString.append(toJSObject(data[i]));
}
return jsString.append(")").toString();
}// End Of Method(toJSObject)
public static String toJSObject(Map data) {
StringBuffer jsString = new StringBuffer("{");
for (Iterator iter = data.keySet().iterator(); iter.hasNext();) {
String fieldName = (String)iter.next();
Object fieldValue = data.get(fieldName);
if (jsString.length() > 1) jsString.append(", ");
if (fieldValue instanceof String) {
jsString.append(fieldName + ": " + toJSObject((String)fieldValue));
} else if (fieldValue instanceof String[]) {
jsString.append(fieldName + ": " + toJSObject((String[])fieldValue));
} else if (fieldValue instanceof Map) {
jsString.append(fieldName + ": " + toJSObject((Map)fieldValue));
} else {
jsString.append(fieldName + ": " + toJSObject(fieldValue));
}
}
return jsString.append("}").toString();
}// End Of Method(toJSObject)
public static String toJSObject(Object data) {
return ToStringBuilder.reflectionToString(data, JS_STYLE);
}// End Of Method(toJSObject)
protected static class JSStyle extends ToStringStyle {
/** Field: serialVersionUID */
private static final long serialVersionUID = 1L;
private JSStyle() {
setUseClassName(false);
setUseIdentityHashCode(false);
setContentStart("{");
setContentEnd("}");
setFieldSeparator(", ");
setFieldNameValueSeparator(": ");
setArrayStart("new Array(");
setArrayEnd(")");
setArraySeparator(", ");
setNullText("null");
}// End Of Constructor()
/***************************************************************
* appendDetail.<BR>
* @see JSStyle#appendDetail(StringBuffer, String, Object).
**************************************************************/
protected void appendDetail(StringBuffer buffer, String fieldName, Object value) {
if (value instanceof String) {
buffer.append("/"" + String.valueOf(value) + "/"");
} else {
super.appendDetail(buffer, fieldName, value);
}
}// End Of Method(appendDetail)
}// End Of Class(JSStyle)
}// End Of Class(EscapeUtil)