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

org.headlessintrace.client.connection.DefaultTraceEventWriterImpl Maven / Gradle / Ivy

package org.headlessintrace.client.connection;


import org.headlessintrace.client.DefaultFactory;


import org.headlessintrace.client.ITraceWriter;
import org.headlessintrace.client.IntraceException;
import org.headlessintrace.client.model.ITraceEvent;
import org.headlessintrace.client.model.ITraceEventParser;
import org.headlessintrace.client.model.ITraceEvent.EventType;

import ca.odell.glazedlists.EventList;

import org.headlessintrace.client.filter.ITraceFilterExt;
import org.headlessintrace.client.filter.ITraceFilter;
//import org.headlessintrace.client.filter.IncludeThisEventFilterExt;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DefaultTraceEventWriterImpl implements ITraceWriter {
	private static final Logger LOG = LoggerFactory.getLogger(DefaultTraceEventWriterImpl.class);
	ITraceEventParser m_eventParser = null;
	public DefaultTraceEventWriterImpl() {
		m_eventParser = DefaultFactory.getFactory().getEventParser();
		//For now, assume that everything matches...TODO: code a filter that takes into account InTrace-class-includes/excludes and InTrace-filter-includes/excludes
		setTraceFilter( new ITraceFilter(){
			@Override
			public boolean matches(String traceData) {
				return true;
			}});
		setTraceFilterExt( new ITraceFilterExt(){
			@Override
			public boolean matches(ITraceEvent traceData) {
				return true;
			}

			});
	}
	private ITraceFilter m_traceFilter = null;
	private ITraceFilterExt m_traceFilterExt = null;
	  public ITraceFilterExt getTraceFilterExt() {
		return m_traceFilterExt;
	}
	public void setTraceFilterExt(ITraceFilterExt traceFilterExt) {
		this.m_traceFilterExt = traceFilterExt;
	}
	private EventList m_traceEvents = null;
	private String m_name;
	  public void setTraceEvents(EventList traceEvents) {
		  this.m_traceEvents = traceEvents;
	  }
	  public EventList getTraceEvents() {
		  if (LOG.isDebugEnabled()) LOG.debug("@#%332 DefaultTraceEventWriterImpl traceEvents [" + m_traceEvents.hashCode() + "]");
		  return m_traceEvents;
	  }

	public void writeTraceEvent(String traceLine, HostPort hostPort) {
		//traceLine = this.getName() + "-" + traceLine;
		if (getTraceFilter().matches(traceLine)) {
			  try {
				  //BeanTraceEventImpl te = TraceFactory.createTraceEvent(traceLine);
				  getTraceEvents().getReadWriteLock().writeLock().lock();
				  ITraceEvent te = m_eventParser.createEvent(traceLine,0);
				  if (te.getEventType()==EventType.DEBUG)
					  System.out.println("AGENT DEBUG: " + te.getRawEventData() );
				  else {
					  te.setAgentHostName(hostPort.hostNameOrIpAddress);
					  te.setAgentPort((short) hostPort.port);
					  if (getTraceFilterExt().matches(te)) {
						  getTraceEvents().add(te);
					  }
					  
				  }
			} catch (IntraceException e) {
				e.printStackTrace();
			} finally {
				getTraceEvents().getReadWriteLock().writeLock().unlock();
			}
		}

	}
	public ITraceFilter getTraceFilter() {
		return m_traceFilter;
	}
	public void setTraceFilter(ITraceFilter traceFilter) {
		this.m_traceFilter = traceFilter;
	}
	public String getName() {
		return m_name;
	}
	/**
	 * This is the window name.
	 */
	public void setName(String name) {
		m_name = name;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy