/* * 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.web.bindery.requestfactory.shared; /** * Describes a request failure on the server. * <p> * This error reporting mechanism is adequate at best. When RequestFactory is * extended to handle polymorphic types, this class will likely be replaced with * something more expressive. */ public class ServerFailure { private final String message; private final String stackTraceString; private final String exceptionType; private final boolean fatal; private RequestContext requestContext; /** * Constructs a ServerFailure with null properties. */ public ServerFailure() { this(null); } /** * Constructs a fatal ServerFailure with null type and null stack trace. */ public ServerFailure(String message) { this(message, null, null, true); } /** * Constructs a ServerFailure object. * * @param message a String containing the failure message * @param exceptionType a String containing the exception type * @param stackTraceString a String containing the stack trace */ public ServerFailure(String message, String exceptionType, String stackTraceString, boolean fatal) { this.message = message; this.exceptionType = exceptionType; this.stackTraceString = stackTraceString; this.fatal = fatal; } /** * Return the exception type. * * @return the exception type as a String */ public String getExceptionType() { return exceptionType; } /** * Return the failure message. * * @return the message as a String */ public String getMessage() { return message; } /** * Returns the RequestContext that triggered the ServerFailure. */ public RequestContext getRequestContext() { return requestContext; } /** * Return the failure stack trace. * * @return the stack trace as a String */ public String getStackTraceString() { return stackTraceString; } /** * Return true if this is a fatal error. The default implementation of * {@link Receiver#onFailure} throws a runtime exception for fatal failures. * * @return whether this is a fatal failure */ public boolean isFatal() { return fatal; } /** * Sets the RequestContext to return via {@link #getRequestContext()}. */ public void setRequestContext(RequestContext requestContext) { this.requestContext = requestContext; } }