Package org.appfuse.webapp.client.application.base.request

Source Code of org.appfuse.webapp.client.application.base.request.CustomDefaultRequestTransport

package org.appfuse.webapp.client.application.base.request;

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

import org.appfuse.webapp.client.application.base.security.AuthRequiredEvent;
import org.appfuse.webapp.client.application.base.security.RequestForbidenEvent;

import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.History;
import com.google.web.bindery.event.shared.EventBus;
import com.google.web.bindery.requestfactory.gwt.client.DefaultRequestTransport;
import com.google.web.bindery.requestfactory.shared.ServerFailure;

class CustomDefaultRequestTransport extends DefaultRequestTransport {

  private static final String SERVER_ERROR = "Server Error";
  private static final Logger wireLogger = Logger.getLogger("WireActivityLogger");

  private final EventBus eventBus;

  /**
   * @param eventBus
   */
  public CustomDefaultRequestTransport(EventBus eventBus) {
    super();
    this.eventBus = eventBus;
  }



  @Override
  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(), getExceptionName(exception), null, true));
      }

      public void onResponseReceived(Request request, Response response) {
        wireLogger.finest("Response received");
        if (Response.SC_UNAUTHORIZED == response.getStatusCode()) {
          eventBus.fireEvent(new AuthRequiredEvent());
        } else   if (Response.SC_FORBIDDEN == response.getStatusCode()) {
          eventBus.fireEvent(new RequestForbidenEvent());
        } else if (Response.SC_OK == response.getStatusCode()) {
          String text = response.getText();
          receiver.onTransportSuccess(text);
        } else {
          String message = response.getStatusCode() + " " + response.getText();
          wireLogger.severe(SERVER_ERROR + " " + message);
          receiver.onTransportFailure(new ServerFailure(message, null, null, true));
        }
      }
    };
  }
 
  private String getExceptionName(Throwable exception) {
    Class exceptionType = getMostSpecificCause(exception).getClass();
    String simpleName = exceptionType.getName();
//    simpleName = simpleName.substring(simpleName.lastIndexOf('.'));
//    simpleName = simpleName.replace("Exception", "");
    return simpleName;
  }

  private Throwable getMostSpecificCause(Throwable exception) {
    if(exception.getCause() != null) {
      return getMostSpecificCause(exception);
    } else {
      return exception;
    }
  }
 
}
TOP

Related Classes of org.appfuse.webapp.client.application.base.request.CustomDefaultRequestTransport

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.