1e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin/* 2e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Copyright (C) 2012 Google Inc. 3e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * 4e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 5e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * you may not use this file except in compliance with the License. 6e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * You may obtain a copy of the License at 7e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * 8e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 9e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * 10e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * Unless required by applicable law or agreed to in writing, software 11e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 12e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * See the License for the specific language governing permissions and 14e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * limitations under the License. 15e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin */ 16e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 17e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinpackage com.google.caliper.bridge; 18e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 19e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport static com.google.common.base.Preconditions.checkNotNull; 20e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 21e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport com.google.common.base.Throwables; 22e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 23e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinimport java.io.Serializable; 24e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 25e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin/** 26e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin * A message containing information on a failure encountered by the worker JVM. 27e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin */ 28e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffinpublic class FailureLogMessage extends LogMessage implements Serializable { 29e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin private static final long serialVersionUID = 1L; 30e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 31e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin private final String stackTrace; 32e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 33e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin public FailureLogMessage(Throwable e) { 34e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin this(Throwables.getStackTraceAsString(e)); 35e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 36e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 37e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin public FailureLogMessage(String stackTrace) { 38e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin this.stackTrace = checkNotNull(stackTrace); 39e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 40e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 41e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin public String stackTrace() { 42e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin return stackTrace; 43e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 44e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 45e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin @Override 46e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin public void accept(LogMessageVisitor visitor) { 47e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin visitor.visit(this); 48e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 49e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 50e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin @Override 51e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin public int hashCode() { 52e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin return stackTrace.hashCode(); 53e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 54e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin 55e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin @Override 56e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin public boolean equals(Object obj) { 57e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin if (obj == this) { 58e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin return true; 59e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } else if (obj instanceof FailureLogMessage) { 60e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin FailureLogMessage that = (FailureLogMessage) obj; 61e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin return this.stackTrace.equals(that.stackTrace); 62e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } else { 63e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin return false; 64e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 65e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin } 66e236301e5fc778bffe1748ed80d7936e6c807012Paul Duffin} 67