001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.test.util.ejb;
023:
024: import junit.framework.AssertionFailedError;
025:
026: /**
027: * RemoteAssertionFailedError is the client-side view of an assertion
028: * failed error on the server.
029: *
030: * All throwables caught on the server are wrapped with a RemoteTestException
031: * and rethrown. On the client side the exception is caught, and if the
032: * server side exception is an instance of AssertionFailedError, it is
033: * wrapped with an instance of this class and rethrown. That makes the
034: * exception an instance of AssertionFailedError so it is reconized as
035: * a failure and not an Error.
036: *
037: * @author <a href="mailto:dain@daingroup.com">Dain Sundstrom</a>
038: * @version $Revision: 57211 $
039: */
040: public class RemoteAssertionFailedError extends AssertionFailedError {
041: private AssertionFailedError remoteAssertionFailedError;
042: private String remoteStackTrace;
043:
044: /**
045: * Constructs a remote assertion failed error based on the specified
046: * AssertionFailedError and remote stack trace.
047: * @param e the AssertionFailedError that was thrown on the server side
048: * @param remoteStackTrace the stack trace of the assertion failed error
049: * exactly as it appeared on the server side
050: */
051: public RemoteAssertionFailedError(AssertionFailedError e,
052: String remoteStackTrace) {
053:
054: remoteAssertionFailedError = e;
055: this .remoteStackTrace = remoteStackTrace;
056: }
057:
058: /**
059: * Gets the message exactly as it appeared on server side.
060: * @return the message exactly as it appeared on server side
061: */
062: public String getMessage() {
063: return remoteAssertionFailedError.getMessage();
064: }
065:
066: /**
067: * Prints the stack trace exactly as it appeared on the server side.
068: * @param ps the PrintStream on which the stack trace is printed
069: */
070: public void printStackTrace(java.io.PrintStream ps) {
071: ps.print(remoteStackTrace);
072: }
073:
074: /**
075: * Prints the stack trace exactly as it appeared on the server side.
076: */
077: public void printStackTrace() {
078: printStackTrace(System.err);
079: }
080:
081: /**
082: * Prints the stack trace exactly as it appeared on the server side.
083: * @param pw the PrintWriter on which the stack trace is printed
084: */
085: public void printStackTrace(java.io.PrintWriter pw) {
086: pw.print(remoteStackTrace);
087: }
088:
089: /**
090: * Gets the assertion failed error object from the server side.
091: * Note: the stack trace of this object is not available because
092: * exceptions don't seralize the stack trace. Use
093: * getRemoteStackTrace to get the stack trace as it appeared
094: * on the server.
095: * @retun the assertion failed error object from the server side.
096: */
097: public AssertionFailedError getRemoteAssertionFailedError() {
098: return remoteAssertionFailedError;
099: }
100:
101: /**
102: * Gets the stack trace exactly as it appeared on the server side.
103: * @return the stack trace exactly as it appeared on the server side
104: */
105: public String getRemoteStackTrace() {
106: return remoteStackTrace;
107: }
108: }
|