private static final String ERROR_CLASSNAME_EXT = "-error";
- public static final String VAR_RECORD_SEPARATOR = escapeString("\u001e");
+ public static final String VAR_RECORD_SEPARATOR = "\u001e";
- public static final String VAR_FIELD_SEPARATOR = escapeString("\u001f");
+ public static final String VAR_FIELD_SEPARATOR = "\u001f";
private final HashMap resourcesMap = new HashMap();
// TODO remove hard coded id name
view = new IView(cnf.getRootPanelId());
- makeUidlRequest("repaintAll=1");
+ makeUidlRequest("", true);
applicationRunning = true;
}
return (activeRequests > 0);
}
- private void makeUidlRequest(String requestData) {
+ private void makeUidlRequest(String requestData, boolean repaintAll) {
startRequest();
console.log("Making UIDL Request with params: " + requestData);
- final String uri = getAppUri() + "UIDL" + configuration.getPathInfo();
+ String uri = getAppUri() + "UIDL" + configuration.getPathInfo();
+ if (repaintAll) {
+ uri += "?repaintAll=1";
+ }
final RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, uri);
- rb.setHeader("Content-Type",
- "application/x-www-form-urlencoded; charset=utf-8");
- // rb.setHeader("Content-Type", "text/plain;charset=utf-8");
+ // rb.setHeader("Content-Type",
+ // "application/x-www-form-urlencoded; charset=utf-8");
+ rb.setHeader("Content-Type", "text/plain;charset=utf-8");
try {
rb.sendRequest(requestData, new RequestCallback() {
public void onError(Request request, Throwable exception) {
private void buildAndSendVariableBurst(Vector pendingVariables) {
final StringBuffer req = new StringBuffer();
- req.append("changes=");
for (int i = 0; i < pendingVariables.size(); i++) {
if (i > 0) {
if (i % 2 == 0) {
}
pendingVariables.clear();
- makeUidlRequest(req.toString());
+ makeUidlRequest(req.toString(), false);
}
- private static native String escapeString(String value)
- /*-{
- return encodeURIComponent(value);
- }-*/;
-
public void updateVariable(String paintableId, String variableName,
String newValue, boolean immediate) {
- addVariableToQueue(paintableId, variableName, escapeString(newValue),
- immediate, 's');
+ addVariableToQueue(paintableId, variableName, newValue, immediate, 's');
}
public void updateVariable(String paintableId, String variableName,
if (i > 0) {
buf.append(",");
}
- buf.append(escapeString(values[i].toString()));
+ buf.append(values[i].toString());
}
addVariableToQueue(paintableId, variableName, buf.toString(),
immediate, 'a');
import java.util.Set;
import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.itmill.toolkit.terminal.UploadStream;
import com.itmill.toolkit.terminal.VariableOwner;
import com.itmill.toolkit.terminal.Paintable.RepaintRequestEvent;
-import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
import com.itmill.toolkit.ui.Component;
import com.itmill.toolkit.ui.Upload;
import com.itmill.toolkit.ui.Window;
private static final int VAR_TYPE = 3;
private static final int VAR_VALUE = 0;
- private static final String VAR_RECORD_SEPARATOR = ApplicationConnection.VAR_RECORD_SEPARATOR;
+ private static final String VAR_RECORD_SEPARATOR = "\u001e";
- private static final String VAR_FIELD_SEPARATOR = ApplicationConnection.VAR_FIELD_SEPARATOR;
+ private static final String VAR_FIELD_SEPARATOR = "\u001f";
+
+ private static final int MAX_BUFFER_SIZE = 64 * 1024;
private final ArrayList dirtyPaintabletSet = new ArrayList();
* @param request
* @param application2
* @return true if successful, false if there was an inconsistency
+ * @throws IOException
*/
private boolean handleVariables(HttpServletRequest request,
- Application application2) {
+ Application application2) throws IOException {
boolean success = true;
- final Map params = new HashMap(request.getParameterMap());
- final String changes = (String) ((params.get("changes") instanceof String[]) ? ((String[]) params
- .get("changes"))[0]
- : params.get("changes"));
- params.remove("changes");
- if (changes != null && changes.length() > 0) {
+ if (request.getContentLength() > 0) {
+
+ byte[] buffer = new byte[request.getContentLength()];
+ ServletInputStream inputStream = request.getInputStream();
+ int totalBytesRead = 0;
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer, totalBytesRead,
+ MAX_BUFFER_SIZE)) != -1) {
+ totalBytesRead += bytesRead;
+ }
+
+ String changes = new String(buffer, "utf-8");
// extract variables to two dim string array
final String[] tmp = changes.split(VAR_RECORD_SEPARATOR);
final String[][] variableRecords = new String[tmp.length][4];