All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ebay.jetstream.event.support.ManagedExceptionEntry Maven / Gradle / Ivy

/*******************************************************************************
 *  Copyright © 2012-2015 eBay Software Foundation
 *  This program is dual licensed under the MIT and Apache 2.0 licenses.
 *  Please see LICENSE for more information.
 *******************************************************************************/
package com.ebay.jetstream.event.support;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.concurrent.atomic.AtomicInteger;

import com.ebay.jetstream.event.JetstreamEvent;

final class ManagedExceptionEntry implements Comparable {

	private final String m_strEvent;
	private final String m_strStackTrace;
	private final AtomicInteger m_occurrance = new AtomicInteger(1);
	
	ManagedExceptionEntry(Throwable t, JetstreamEvent evTriggeringEvent) {
		Writer wtr = new StringWriter();
		PrintWriter pw = new PrintWriter(wtr);
		t.printStackTrace(pw);
		pw.flush();
		m_strStackTrace = wtr.toString();
		m_strEvent = (evTriggeringEvent != null) ? evTriggeringEvent.toString() : "{\"triggerevent\":\"unknown\"}";
	}
	
	void incrementOccurranceCount() {
		m_occurrance.incrementAndGet();
	}
	
	@Override
	public int hashCode() {
		return m_strStackTrace.hashCode();
	}
	
	@Override
	public boolean equals(Object obj) {
		return (obj instanceof ManagedExceptionEntry) && ((ManagedExceptionEntry)obj).m_strStackTrace.equals(m_strStackTrace);
	}

	@Override
	public int compareTo(ManagedExceptionEntry o) {
		int nComp = (o != null) ? m_occurrance.get() - m_occurrance.get() : 1;
		if (nComp == 0)
			nComp = o.m_strStackTrace.compareTo(m_strStackTrace);
		return nComp;
	}
	
	@Override
	public String toString() {
		StringBuilder bldr = new StringBuilder();
		bldr.append("Causing Event: ").append(m_strEvent).append("\n");
		bldr.append("Occurance Count: ").append(m_occurrance).append("\n");
		bldr.append("Stack Trace: ").append(m_strStackTrace).append("\n");
		bldr.append("------------------------------------------------\n");
		return bldr.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy