blob: 3106483009471cebb81154eb59191f9f42e7efd6 [file] [log] [blame]
/*
* 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;
}
}