Changeset 4916

Show
Ignore:
Timestamp:
06/18/08 12:34:17 (5 months ago)
Author:
matti.tahvonen@…
Message:

fixes #1835

Location:
trunk/src/com/itmill/toolkit/terminal/gwt
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java

    r4913 r4916  
    4949    private static final String ERROR_CLASSNAME_EXT = "-error"; 
    5050 
    51     public static final String VAR_RECORD_SEPARATOR = escapeString("\u001e"); 
    52  
    53     public static final String VAR_FIELD_SEPARATOR = escapeString("\u001f"); 
     51    public static final String VAR_RECORD_SEPARATOR = "\u001e"; 
     52 
     53    public static final String VAR_FIELD_SEPARATOR = "\u001f"; 
    5454 
    5555    private final HashMap resourcesMap = new HashMap(); 
     
    132132        view = new IView(cnf.getRootPanelId()); 
    133133 
    134         makeUidlRequest("repaintAll=1"); 
     134        makeUidlRequest("", true); 
    135135        applicationRunning = true; 
    136136    } 
     
    230230    } 
    231231 
    232     private void makeUidlRequest(String requestData) { 
     232    private void makeUidlRequest(String requestData, boolean repaintAll) { 
    233233        startRequest(); 
    234234 
    235235        console.log("Making UIDL Request with params: " + requestData); 
    236         final String uri = getAppUri() + "UIDL" + configuration.getPathInfo(); 
     236        String uri = getAppUri() + "UIDL" + configuration.getPathInfo(); 
     237        if (repaintAll) { 
     238            uri += "?repaintAll=1"; 
     239        } 
    237240        final RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, uri); 
    238         rb.setHeader("Content-Type", 
    239                 "application/x-www-form-urlencoded; charset=utf-8"); 
    240         // rb.setHeader("Content-Type", "text/plain;charset=utf-8"); 
     241        // rb.setHeader("Content-Type", 
     242        // "application/x-www-form-urlencoded; charset=utf-8"); 
     243        rb.setHeader("Content-Type", "text/plain;charset=utf-8"); 
    241244        try { 
    242245            rb.sendRequest(requestData, new RequestCallback() { 
     
    621624        final StringBuffer req = new StringBuffer(); 
    622625 
    623         req.append("changes="); 
    624626        for (int i = 0; i < pendingVariables.size(); i++) { 
    625627            if (i > 0) { 
     
    634636 
    635637        pendingVariables.clear(); 
    636         makeUidlRequest(req.toString()); 
    637     } 
    638  
    639     private static native String escapeString(String value) 
    640     /*-{ 
    641      return encodeURIComponent(value); 
    642      }-*/; 
     638        makeUidlRequest(req.toString(), false); 
     639    } 
    643640 
    644641    public void updateVariable(String paintableId, String variableName, 
    645642            String newValue, boolean immediate) { 
    646         addVariableToQueue(paintableId, variableName, escapeString(newValue), 
    647                 immediate, 's'); 
     643        addVariableToQueue(paintableId, variableName, newValue, immediate, 's'); 
    648644    } 
    649645 
     
    685681                buf.append(","); 
    686682            } 
    687             buf.append(escapeString(values[i].toString())); 
     683            buf.append(values[i].toString()); 
    688684        } 
    689685        addVariableToQueue(paintableId, variableName, buf.toString(), 
  • trunk/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java

    r4894 r4916  
    3232 
    3333import javax.servlet.ServletException; 
     34import javax.servlet.ServletInputStream; 
    3435import javax.servlet.ServletOutputStream; 
    3536import javax.servlet.http.HttpServletRequest; 
     
    4849import com.itmill.toolkit.terminal.VariableOwner; 
    4950import com.itmill.toolkit.terminal.Paintable.RepaintRequestEvent; 
    50 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection; 
    5151import com.itmill.toolkit.ui.Component; 
    5252import com.itmill.toolkit.ui.Upload; 
     
    7272    private static final int VAR_VALUE = 0; 
    7373 
    74     private static final String VAR_RECORD_SEPARATOR = ApplicationConnection.VAR_RECORD_SEPARATOR; 
    75  
    76     private static final String VAR_FIELD_SEPARATOR = ApplicationConnection.VAR_FIELD_SEPARATOR; 
     74    private static final String VAR_RECORD_SEPARATOR = "\u001e"; 
     75 
     76    private static final String VAR_FIELD_SEPARATOR = "\u001f"; 
     77 
     78    private static final int MAX_BUFFER_SIZE = 64 * 1024; 
    7779 
    7880    private final ArrayList dirtyPaintabletSet = new ArrayList(); 
     
    504506     * @param application2 
    505507     * @return true if successful, false if there was an inconsistency 
     508     * @throws IOException 
    506509     */ 
    507510    private boolean handleVariables(HttpServletRequest request, 
    508             Application application2) { 
     511            Application application2) throws IOException { 
    509512        boolean success = true; 
    510         final Map params = new HashMap(request.getParameterMap()); 
    511         final String changes = (String) ((params.get("changes") instanceof String[]) ? ((String[]) params 
    512                 .get("changes"))[0] 
    513                 : params.get("changes")); 
    514         params.remove("changes"); 
    515  
    516         if (changes != null && changes.length() > 0) { 
     513 
     514        if (request.getContentLength() > 0) { 
     515 
     516            byte[] buffer = new byte[request.getContentLength()]; 
     517            ServletInputStream inputStream = request.getInputStream(); 
     518            int totalBytesRead = 0; 
     519            int bytesRead; 
     520            while ((bytesRead = inputStream.read(buffer, totalBytesRead, 
     521                    MAX_BUFFER_SIZE)) != -1) { 
     522                totalBytesRead += bytesRead; 
     523            } 
     524 
     525            String changes = new String(buffer, "utf-8"); 
    517526            // extract variables to two dim string array 
    518527            final String[] tmp = changes.split(VAR_RECORD_SEPARATOR);