package er.ajax.json.client; import com.webobjects.appserver.WOApplication; import com.webobjects.appserver.WOContext; import com.webobjects.appserver.WOResponse; import er.ajax.AjaxUtils; import er.ajax.json.JSONRequestHandler; import er.extensions.components.ERXComponent; /** * StatelessJSONClient renders a "new JSONRpcClient('...')" with a URL back to your application (along with a session ID if * there is one). * * <code> * var jsonClient = <wo:StatelessJSONClient/>; * </code> * * @author mschrag * @binding callback the initialization callback */ public class AjaxStatelessJSONClient extends ERXComponent { /** * Do I need to update serialVersionUID? * See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the * <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a> */ private static final long serialVersionUID = 1L; public AjaxStatelessJSONClient(WOContext context) { super(context); } public boolean global() { return booleanValueForBinding("global", false); } @Override public boolean isStateless() { return true; } public String jsonComponent() { return null; } public String jsonInstance() { return null; } @Override public void appendToResponse(WOResponse woresponse, WOContext wocontext) { AjaxUtils.addScriptResourceInHead(wocontext, woresponse, "jsonrpc.js"); String queryString = null; if (wocontext.request().sessionID() != null && wocontext.session().storesIDsInURLs()) { String sessionIdKey = WOApplication.application().sessionIdKey(); queryString = sessionIdKey + "=" + wocontext.request().sessionID(); } String componentName = jsonComponent(); String instance; if (componentName == null) { instance = null; } else { instance = jsonInstance(); } String jsonUrl = JSONRequestHandler.jsonUrl(wocontext, componentName, instance, queryString); woresponse.appendContentString("new JSONRpcClient("); String callback = stringValueForBinding("callback"); if (callback != null) { woresponse.appendContentString(callback); woresponse.appendContentString(","); } woresponse.appendContentString("'"); woresponse.appendContentString(jsonUrl); woresponse.appendContentString("')"); } }