package com.google.code.joto.ui; import java.io.Serializable; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import javax.swing.JFrame; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import com.google.code.joto.JotoConfig; import com.google.code.joto.eventrecorder.RecordEventStore; import com.google.code.joto.eventrecorder.RecordEventSummary; import com.google.code.joto.eventrecorder.ext.calls.DefaultSerializableFoo; import com.google.code.joto.eventrecorder.ext.calls.IFoo; import com.google.code.joto.eventrecorder.ext.calls.MethodEventWriterInvocationHandlerTest; import com.google.code.joto.eventrecorder.impl.DefaultMemoryRecordEventStore; import com.google.code.joto.eventrecorder.spy.log.EventStoreWriterLog4jAppender; import com.google.code.joto.eventrecorder.spy.log.EventStoreWriterLogbackAppender; import com.google.code.joto.eventrecorder.writer.RecordEventWriter; import com.google.code.joto.testobj.Pt; import com.google.code.joto.testobj.TestObjFactory; import com.google.code.joto.ui.JotoContext; import com.google.code.joto.ui.JotoContextFacadePanel; public class UiTestMain { private static Logger log = LoggerFactory.getLogger(UiTestMain.class); public static void main(String[] args) { JotoConfig config = new JotoConfig(); RecordEventStore eventStore = new DefaultMemoryRecordEventStore(); RecordEventWriter eventWriter = eventStore.getEventWriter(); JotoContext context = new JotoContext(config, eventStore); // record Serializable POJO doRecordEventObj(eventStore, "SimpleIntFieldA", TestObjFactory.createSimpleIntFieldA()); // doRecordEventObj(eventStore, "SimpleRefObjectFieldA", TestObjFactory.createSimpleRefObjectFieldA()); doRecordEventObj(eventStore, "A", TestObjFactory.createBeanA()); doRecordEventObj(eventStore, "A2", TestObjFactory.createBeanA2()); doRecordEventObj(eventStore, "SimpleRefBean_Cyclic", TestObjFactory.createSimpleRefBean_Cyclic()); doRecordEventObj(eventStore, "Pt", new Pt(1, 2)); // also record method calls using java.lang.reflect.Proxy + interface { IFoo fooImpl = new DefaultSerializableFoo(); IFoo fooProxy = MethodEventWriterInvocationHandlerTest.createFooProxyRecorder(fooImpl, eventWriter); MethodEventWriterInvocationHandlerTest.doCallFooMethods(fooProxy); } { // record events using Logback event Writer String eventType = "logback"; String loggerName = "a.b.Test"; LoggerContext loggerContext = new LoggerContext(); loggerContext.reset(); Logger logger = loggerContext.getLogger(loggerName); EventStoreWriterLogbackAppender eventAppender = new EventStoreWriterLogbackAppender(eventWriter, eventType); eventAppender.start(); ((ch.qos.logback.classic.Logger) logger).addAppender(eventAppender); // now test logging events from log4j logger.info("test info message"); logger.warn("test warn message"); logger.warn("test warn message with ex", new Exception()); logger.error("test error message"); logger.info("test info message multiline\n... message line 2\n...message line 3"); Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT")); cal.set(1999, 12, 31, 23, 59, 59); logger.info("test info message with arguments: str={} int={} date={}", new Object[] { "test", 123, cal.getTime() }); } { // record events using deprecated log4j event Writer String eventType = "log4j"; String loggerName = "a.b.Test"; org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(loggerName); EventStoreWriterLog4jAppender eventAppender = new EventStoreWriterLog4jAppender(eventWriter, eventType); ((org.apache.log4j.Logger) logger).addAppender(eventAppender); // now test logging events from log4j logger.info("test info message"); logger.warn("test warn message"); logger.warn("test warn message with ex", new Exception()); logger.error("test error message"); logger.info("test info message multiline\n... message line 2\n...message line 3"); } JotoContextFacadePanel jotoPanel = new JotoContextFacadePanel(context); JFrame frame = new JFrame(); frame.getContentPane().add(jotoPanel.getJComponent()); frame.pack(); frame.setVisible(true); } private static void doRecordEventObj(RecordEventStore eventStore, String methodName, Serializable objData) { RecordEventSummary evt = new RecordEventSummary(-1); evt.setEventDate(new Date()); evt.setEventType("testObj"); evt.setEventSubType("testObj SubType"); evt.setEventMethodName(methodName); try { eventStore.addEvent(evt, objData); } catch(Exception ex) { log.warn("Failed to serialize?.. ignore", ex); } } }