Example usage for com.google.gwt.http.client RequestBuilder RequestBuilder

List of usage examples for com.google.gwt.http.client RequestBuilder RequestBuilder

Introduction

In this page you can find the example usage for com.google.gwt.http.client RequestBuilder RequestBuilder.

Prototype

protected RequestBuilder(String httpMethod, String url) 

Source Link

Document

Creates a builder using the parameters values for configuration.

Usage

From source file:com.google.walkaround.wave.client.rpc.AjaxRpc.java

License:Open Source License

@Override
public RpcHandle makeRequest(Method method, String serviceName, ReadableStringMap<String> params,
        final Rpc.RpcCallback rpcCallback) {

    final int requestId = nextRequestId;
    nextRequestId++;//w  w  w .  j  a va 2s  . c  om

    // See the javadoc for HARD_RELOAD.
    if (connectionState == ConnectionState.HARD_RELOAD) {
        return new Handle(requestId);
    }

    final String requestData;
    final RequestBuilder.Method httpMethod;

    StringBuilder urlBuilder = new StringBuilder(rpcRoot + "/" + serviceName + "?");
    // NOTE(danilatos): For some reason, IE6 seems not to perform some requests
    // it's already made, resulting in... no data. Inserting some
    // unique value into the request seems to fix that.
    if (UserAgent.isIE()) {
        urlBuilder.append("_no_cache=" + requestId + "" + Duration.currentTimeMillis() + "&");
    }

    if (method == Method.GET) {
        httpMethod = RequestBuilder.GET;
        addParams(urlBuilder, params);
        requestData = "";
    } else {
        httpMethod = RequestBuilder.POST;
        requestData = addParams(new StringBuilder(), params).toString();
    }

    final String url = urlBuilder.toString();

    RequestBuilder r = new RequestBuilder(httpMethod, url);
    if (method == Method.POST) {
        r.setHeader("Content-Type", "application/x-www-form-urlencoded");
        r.setHeader("X-Same-Domain", "true");
    }

    log.log(Level.INFO, "RPC Request, id=", requestId, " method=", httpMethod, " urlSize=", url.length(),
            " bodySize=", requestData.length());

    class RpcRequestCallback implements RequestCallback {
        @Override
        public void onResponseReceived(Request request, Response response) {
            RpcHandle handle = handles.get(requestId);
            if (handle == null) {
                // It's been dropped
                log.log(Level.INFO, "RPC SuccessDrop, id=", requestId);
                return;
            }

            // Clear it now, before callbacks
            removeHandle();

            int statusCode = response.getStatusCode();
            String data = response.getText();

            Result result;
            if (statusCode < 100) {
                result = Result.RETRYABLE_FAILURE;
                maybeSetConnectionState(ConnectionState.OFFLINE);
            } else if (statusCode == 200) {
                result = Result.OK;
                maybeSetConnectionState(ConnectionState.CONNECTED);
                consecutiveFailures = 0;
            } else if (statusCode >= 500) {
                result = Result.RETRYABLE_FAILURE;
                consecutiveFailures++;
                if (consecutiveFailures > MAX_CONSECUTIVE_FAILURES) {
                    maybeSetConnectionState(ConnectionState.OFFLINE);
                } else {
                    maybeSetConnectionState(ConnectionState.CONNECTED);
                }
            } else {
                result = Result.PERMANENT_FAILURE;
                maybeSetConnectionState(ConnectionState.SOFT_RELOAD);
            }

            switch (result) {
            case OK:
                log.log(Level.INFO, "RPC Success, id=", requestId);
                try {
                    rpcCallback.onSuccess(data);
                } catch (MessageException e) {
                    // Semi-HACK(danilatos): Treat parse errors as login problems
                    // due to loading a login or authorization page. (It's unlikely
                    // we'd otherwise get a parse error from a 200 OK result).
                    // The simpler solution of detecting redirects is not possible
                    // with XmlHttpRequest, the web is unfortunately broken.

                    // TODO(danilatos) Possible alternatives:
                    // either change our server side to not require
                    // login through web.xml but to check if UserService says currentUser==null (or
                    // whatever it does if not logged in) and return a well-defined "not logged in"
                    // response instead, or to prefix all responses from the server with a fixed string
                    // (like we do with "OK" elsewhere) and assume not logged in if that prefix is
                    // missing.  We could strip off that prefix here and make it transparent to the
                    // callbacks.

                    maybeSetConnectionState(ConnectionState.LOGGED_OUT);

                    error(new Exception("RPC failed due to message exception, treating as auth failure"
                            + ", status code: " + statusCode + ", data: " + data));
                }
                break;
            case RETRYABLE_FAILURE:
                error(new Exception("RPC failed, status code: " + statusCode + ", data: " + data));
                break;
            case PERMANENT_FAILURE:
                fatal(new Exception("RPC bad request, status code: " + statusCode + ", data: " + data));
                break;
            default:
                throw new AssertionError("Unknown result " + result);
            }
        }

        @Override
        public void onError(Request request, Throwable exception) {
            if (!handles.containsKey(requestId)) {
                log.log(Level.INFO, "RPC FailureDrop, id=", requestId, exception.getMessage());
                return;
            }
            removeHandle();
            error(exception);
        }

        private void fatal(Throwable e) {
            log.log(Level.WARNING, "RPC Bad Request, id=", requestId, e.getMessage(), "Request url:" + url, e);
            rpcCallback.onFatalError(e);
        }

        private void error(Throwable e) {
            log.log(Level.WARNING, "RPC Failure, id=", requestId, e.getMessage(), "Request url:" + url, e);
            rpcCallback.onConnectionError(e);
        }

        private void removeHandle() {
            handles.remove(requestId);
        }
    }

    RpcRequestCallback innerCallback = new RpcRequestCallback();

    try {
        // TODO: store the Request object somewhere so we can e.g. cancel it
        r.sendRequest(requestData, innerCallback);
        Handle handle = new Handle(requestId);
        handles.put(handle.getId(), handle);
        return handle;
    } catch (RequestException e) {
        // TODO(danilatos) Decide if this should be a badRequest.
        innerCallback.error(e);
        return null;
    }
}

From source file:com.google.web.bindery.requestfactory.gwt.client.DefaultRequestTransport.java

License:Apache License

/**
 * Constructs a {@link RequestBuilder} using the {@link RequestBuilder#POST}
 * method sent to the URL returned from {@link #getRequestUrl()}.
 * //  w w w.  ja  v  a 2  s  .  co m
 * @return a {@link RequestBuilder} instance
 */
protected RequestBuilder createRequestBuilder() {
    return new RequestBuilder(RequestBuilder.POST, getRequestUrl());
}

From source file:com.googlesource.gerrit.plugins.xdocs.client.XDocApi.java

License:Apache License

public static void checkHtml(String url, final AsyncCallback<VoidResult> callback) {
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
    try {//from  w ww .  java  2 s.  c  om
        builder.sendRequest(null, new RequestCallback() {
            @Override
            public void onResponseReceived(Request request, Response response) {
                int status = response.getStatusCode();
                if (200 <= status && status < 300) {
                    callback.onSuccess(VoidResult.create());
                } else {
                    callback.onFailure(new RequestException(status + " " + response.getStatusText()));
                }
            }

            @Override
            public void onError(Request request, Throwable caught) {
                callback.onFailure(caught);
            }
        });
    } catch (RequestException e) {
        callback.onFailure(e);
    }
}

From source file:com.gwt.conn.client.Communicate.java

public static boolean hasInternet() {

    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
    builder.setHeader("Content-Type", "application/x-www-form-urlencoded");
    //      builder.setHeader("Access-Control-Allow-Origin", "*");
    //      builder.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
    try {/* www . ja  v a  2 s .co  m*/
        Request response = builder.sendRequest(null, new RequestCallback() {
            public void onError(Request request, Throwable exception) {
            }

            public void onResponseReceived(Request request, Response response) {

            }
        });

    } catch (RequestException e) {
        return false;
    }

    return true;
}

From source file:com.gwt.conn.client.Communicate.java

public static String sync(String menuName, String restID, final boolean authenticating) {
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url + "menu/update");
    builder.setHeader("Content-Type", "application/x-www-form-urlencoded");
    //      builder.setHeader("Access-Control-Allow-Origin", "*");
    //      builder.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
    try {/*from  www .  j  a  v  a2  s . c o m*/
        String doc = StorageContainer.getMenu(menuName);

        String timestamp = new Date().getTime() + "";
        String secret_key = ""; // TODO get secret key from storage
        String message = doc + secret_key + timestamp;
        String hash = "";
        hash = "" + getSHA1(message + secret_key + timestamp);

        String[] keys = { "doc", "message", "timestamp", "message_hash", "restaurant_id" };
        String[] values = { doc, doc, timestamp, hash, restID };

        String postData = buildQueryString(keys, values);
        System.out.println(postData);
        Request response = builder.sendRequest(postData, new RequestCallback() {
            public void onError(Request request, Throwable exception) {
                if (authenticating)
                    storage.setItem("authenticated?", "no");
                else
                    showDialog("Synchronize could not be completed.");
            }

            public void onResponseReceived(Request request, Response response) {
                System.out.println("response.getText() - " + response.getText());
                if (response.getText().equals("ERROR: Incomplete or Malformed doc") && authenticating) {
                    showDialog("Invalid Restaurant ID");
                    storage.setItem("authenticated?", "no");
                    return;
                } else if (response.getText().equals("ERROR: Incomplete or Malformed doc") && !authenticating) {
                    showDialog("Synchronize could not be completed.");
                    storage.setItem("authenticated?", "no");
                    return;
                }
                storage.setItem("menu", response.getText());

                if (authenticating)
                    storage.setItem("authenticated?", "yes");
                else
                    showDialog("You have successfully synchronized your menu!");
            }
        });

    } catch (RequestException e) {
        return "Update Unsuccessful";
    }

    return ""; // asynchronous callback, so whether or not successful is determined later
}

From source file:com.gwtcx.extgwt.client.desktop.view.AbstractSettingsView.java

License:Open Source License

@Inject
public AbstractSettingsView(final String filename) {
    super();//ww w.  ja va2 s  .  c om

    Log.debug("AbstractPagingView()");

    this.filename = filename;

    // panel.setStyleName(StyleTokens.contextArea);
    setPanel(new VerticalLayoutContainer());
    getPanel().setSize(CONTEXT_AREA_WIDTH, CONTEXT_AREA_HEIGHT);

    this.builder = new RequestBuilder(RequestBuilder.GET,
            setDataUrl(URL_PREFIX + getFilename(), FILENAME_EXTENSION));

    this.proxy = new HttpProxy<ListLoadConfig>(builder);

    this.reader = new XmlReader<ListLoadResult<ContextAreaModel>, ContextAreaModelCollection>(
            XmlAutoBeanFactory.instance, ContextAreaModelCollection.class) {
        protected com.sencha.gxt.data.shared.loader.ListLoadResult<ContextAreaModel> createReturnData(
                Object loadConfig, ContextAreaModelCollection records) {
            return new ListLoadResultBean<ContextAreaModel>(records.getValues());
        };
    };

    this.store = new ListStore<ContextAreaModel>(new ModelKeyProvider<ContextAreaModel>() {
        @Override
        public String getKey(ContextAreaModel item) {
            return item.getColumn1DisplayName(); // return item.getColumn1Name();
        }
    });

    this.loader = new ListLoader<ListLoadConfig, ListLoadResult<ContextAreaModel>>(this.proxy, this.reader);
    this.loader.useLoadConfig(XmlAutoBeanFactory.instance.create(ListLoadConfig.class).as());
    this.loader.addLoadHandler(
            new LoadResultListStoreBinding<ListLoadConfig, ContextAreaModel, ListLoadResult<ContextAreaModel>>(
                    this.store));

    setGrid(new ContextAreaGrid(store, getContextAreaColumModel()));
    getGrid().setSize(CONTEXT_AREA_WIDTH, CONTEXT_AREA_HEIGHT);

    getGrid().setLoadMask(true);
    getGrid().setLoader(getLoader());

    getLoader().load();

    // add the Grid to the View's layout container
    getPanel().add(getGrid(), new VerticalLayoutData(1, 1));

    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
        @Override
        public void execute() {
            Log.debug("execute()");
            resize();
        }
    });

    bindCustomUiHandlers();
}

From source file:com.gwtcx.extgwt.client.widgets.NavigationPaneSection.java

License:Open Source License

@Inject
public NavigationPaneSection(final String filename) {
    super(appearance);

    this.filename = filename;

    setBuilder(/*from   w ww  .ja  v a2s.c om*/
            new RequestBuilder(RequestBuilder.GET, setDataUrl(URL_PREFIX + getFilename(), FILENAME_EXTENSION)));
    setProxy(new HttpProxy<ListLoadConfig>(builder));
    setReader(new XmlReader<ListLoadResult<NavigationPaneSectionModel>, NavigationPaneSectionModelCollection>(
            XmlAutoBeanFactory.instance, NavigationPaneSectionModelCollection.class) {
        protected com.sencha.gxt.data.shared.loader.ListLoadResult<NavigationPaneSectionModel> createReturnData(
                Object loadConfig, NavigationPaneSectionModelCollection records) {
            return new ListLoadResultBean<NavigationPaneSectionModel>(records.getValues());
        };
    });

    setStore(new ListStore<NavigationPaneSectionModel>(new ModelKeyProvider<NavigationPaneSectionModel>() {
        @Override
        public String getKey(NavigationPaneSectionModel item) {
            // Log.debug("getKey(NavigationPaneSectionModel item): " + item.getName());
            return item.getName();
        }
    }));

    setLoader(new ListLoader<ListLoadConfig, ListLoadResult<NavigationPaneSectionModel>>(getProxy(),
            getReader()));
    getLoader().useLoadConfig(XmlAutoBeanFactory.instance.create(ListLoadConfig.class).as());
    getLoader().addLoadHandler(
            new LoadResultListStoreBinding<ListLoadConfig, NavigationPaneSectionModel, ListLoadResult<NavigationPaneSectionModel>>(
                    getStore()));

    setGrid(new NavigationPaneSectionGrid(store, getColumModel()));
    // getGrid().setSize(NAVIGATION_PANE_WIDTH, NAVIGATION_PANE_HEIGHT);

    getGrid().setLoadMask(true);
    getGrid().setLoader(getLoader());

    getLoader().load();

    // add the Grid to the Panel's layout container
    this.add(getGrid()); // , new VerticalLayoutData(1, 1));
}

From source file:com.gwtext.client.widgets.tree.XMLTreeLoader.java

License:Open Source License

private static void requestData(final JavaScriptObject treeLoaderJS, final TreeNode root,
        final XMLTreeLoader treeLoader, String method, String url, final JavaScriptObject success,
        final JavaScriptObject failure, final JavaScriptObject callback, String params) {
    //build side nav tree from xml data
    RequestBuilder.Method httpMethod = "post".equalsIgnoreCase(method) ? RequestBuilder.POST
            : RequestBuilder.GET;//from   w w  w  .  j av  a 2 s  .c  o  m

    RequestBuilder builder = new RequestBuilder(httpMethod, url);
    builder.setHeader("Content-type", "application/x-www-form-urlencoded");
    try {
        builder.sendRequest(params, new RequestCallback() {

            public void onResponseReceived(Request request, Response response) {
                if (response.getStatusCode() == 200) {
                    Document xml = null;
                    try {
                        xml = XMLParser.parse(response.getText());
                    } catch (Exception e) {
                        call(failure, treeLoaderJS, root.getJsObj(), callback, e.getMessage());
                        return;
                    }
                    String rootTag = treeLoader.getRootTag();
                    Node rootNode = null;
                    if (rootTag == null) {
                        rootNode = xml.getDocumentElement().getParentNode().getChildNodes().item(0);
                    } else {
                        rootNode = xml.getElementsByTagName(rootTag).item(0);
                    }
                    load(treeLoader, root, rootNode.getChildNodes());
                    call(success, treeLoaderJS, root.getJsObj(), callback, response.getText());

                } else {
                    call(failure, treeLoaderJS, root.getJsObj(), callback,
                            response.getStatusCode() + ":" + response.getText());
                }
            }

            public void onError(Request request, Throwable throwable) {
                call(failure, treeLoaderJS, root.getJsObj(), callback, throwable.getMessage());
            }
        });
    } catch (RequestException e) {
        call(failure, treeLoaderJS, root.getJsObj(), callback, e.getMessage());
    }
}

From source file:com.gwtmodel.table.ReadRequestHtml.java

License:Apache License

public static void doGet(String url, ISetRequestText iSet) {
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
    try {// ww  w.j  a v  a 2s  . c  om
        Request response = builder.sendRequest(null, new RequestCallbackM(iSet, url));
    } catch (RequestException e) {
        iSet.setText(e.getMessage());
    }
}

From source file:com.gwtplatform.dispatch.client.rest.RestRequestBuilderFactory.java

License:Apache License

public <A extends RestAction<?>> RequestBuilder build(A action, String securityToken) throws ActionException {
    RequestBuilder.Method httpMethod = HTTP_METHODS.get(action.getHttpMethod());
    String url = buildUrl(action);

    RequestBuilder requestBuilder = new RequestBuilder(httpMethod, url);

    for (RestParameter param : action.getHeaderParams()) {
        requestBuilder.setHeader(param.getName(), encode(param));
    }//ww  w  .  j  a v a  2  s. c om

    requestBuilder.setHeader(CONTENT_TYPE, JSON_UTF8);
    requestBuilder.setHeader(MODULE_BASE_HEADER, baseUrl);

    if (action.hasFormParams()) {
        requestBuilder.setRequestData(buildQueryString(action.getFormParams()));
    } else if (action.hasBodyParam()) {
        requestBuilder.setRequestData(getSerializedValue(action, action.getBodyParam()));
    }

    if (securityToken != null && securityToken.length() > 0) {
        requestBuilder.setHeader(securityHeaderName, securityToken);
    }

    return requestBuilder;
}