All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.requestfactory.client.DefaultRequestTransport Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.requestfactory.client;

import static com.google.gwt.user.client.rpc.RpcRequestBuilder.STRONG_NAME_HEADER;

import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.requestfactory.shared.RequestFactory;
import com.google.gwt.requestfactory.shared.RequestTransport;
import com.google.gwt.requestfactory.shared.ServerFailure;
import com.google.gwt.user.client.Window.Location;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * An implementation of {@link RequestTransport} that uses a
 * {@link RequestBuilder}.
 *
 * 

RequestFactory has moved to * com.google.web.bindery.requestfactory. This package will be * removed in a future version of GWT.

*/ @Deprecated public class DefaultRequestTransport implements RequestTransport { private static final String SERVER_ERROR = "Server Error"; /** * The default URL for a DefaultRequestTransport is * {@link GWT#getHostPageBaseURL()} + {@value #URL} which may be * overridden by calling {@link #setRequestUrl(String)}. */ public static final String URL = "gwtRequest"; /* * A separate logger for wire activity, which does not get logged by the * remote log handler, so we avoid infinite loops. All log messages that could * happen every time a request is made from the server should be logged to * this logger. */ private static final Logger wireLogger = Logger.getLogger("WireActivityLogger"); private String requestUrl = GWT.getHostPageBaseURL() + URL; /** * Returns the current URL used by this transport. * * @return the URL as a String * @see #setRequestUrl(String) */ public String getRequestUrl() { return requestUrl; } public void send(String payload, TransportReceiver receiver) { RequestBuilder builder = createRequestBuilder(); configureRequestBuilder(builder); builder.setRequestData(payload); builder.setCallback(createRequestCallback(receiver)); try { wireLogger.finest("Sending fire request"); builder.send(); } catch (RequestException e) { wireLogger.log(Level.SEVERE, SERVER_ERROR + " (" + e.getMessage() + ")", e); } } /** * Override the default URL used by this transport. * * @param url a String URL * @see #getRequestUrl() */ public void setRequestUrl(String url) { this.requestUrl = url; } /** * Override to change the headers sent in the HTTP request. * * @param builder a {@link RequestBuilder} instance */ protected void configureRequestBuilder(RequestBuilder builder) { builder.setHeader("Content-Type", RequestFactory.JSON_CONTENT_TYPE_UTF8); builder.setHeader("pageurl", Location.getHref()); builder.setHeader(STRONG_NAME_HEADER, GWT.getPermutationStrongName()); } /** * Constructs a {@link RequestBuilder} using the {@link RequestBuilder#POST} * method sent to the URL returned from {@link #getRequestUrl()}. * * @return a {@link RequestBuilder} instance */ protected RequestBuilder createRequestBuilder() { return new RequestBuilder(RequestBuilder.POST, getRequestUrl()); } /** * Creates a RequestCallback that maps the HTTP response onto the * {@link com.google.gwt.requestfactory.shared.RequestTransport.TransportReceiver * TransportReceiver} interface. * * @param receiver a {@link TransportReceiver} * @return a {@link RequestCallback} instance */ protected RequestCallback createRequestCallback( final TransportReceiver receiver) { return new RequestCallback() { public void onError(Request request, Throwable exception) { wireLogger.log(Level.SEVERE, SERVER_ERROR, exception); receiver.onTransportFailure(new ServerFailure(exception.getMessage())); } public void onResponseReceived(Request request, Response response) { wireLogger.finest("Response received"); if (Response.SC_OK == response.getStatusCode()) { String text = response.getText(); receiver.onTransportSuccess(text); } else { String message = SERVER_ERROR + " " + response.getStatusCode() + " " + response.getText(); wireLogger.severe(message); receiver.onTransportFailure(new ServerFailure(message)); } } }; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy