package com.google.code.joto.ui.tree.aggrs; import com.google.code.joto.eventrecorder.RecordEventSummary; import com.google.code.joto.eventrecorder.spy.calls.MethodCallEventUtils; import com.google.code.joto.ui.tree.AggrRecordEventTemplateTreeNodeAST.AbstractAggrEventTreeNode; import com.google.code.joto.ui.tree.AggrRecordEventTemplateTreeNodeAST.ClassAggrEventTreeNode; import com.google.code.joto.ui.tree.AggrRecordEventTemplateTreeNodeAST.MethodAggrEventTreeNode; import com.google.code.joto.ui.tree.AggrRecordEventTemplateTreeNodeAST.RootPackageAggrEventTreeNode; import com.google.code.joto.ui.tree.AggrRecordEventTemplateTreeNodeAST.TemplateMethodCallAggrEventTreeNode; import com.google.code.joto.ui.tree.AggrRecordEventTemplatizer; import com.google.code.joto.ui.tree.AggrRecordEventTreeModel; /** * */ public class MethodCallEventTemplatizer implements AggrRecordEventTemplatizer { // ------------------------------------------------------------------------ public MethodCallEventTemplatizer() { } // ------------------------------------------------------------------------ @Override public boolean canHandle(AggrRecordEventTreeModel target, RecordEventSummary event) { return MethodCallEventUtils.METHODCALL_EVENT_TYPE.equals(event.getEventType()); } @Override public AbstractAggrEventTreeNode aggregateTemplatizedEvent(AggrRecordEventTreeModel target, RecordEventSummary event) { String eventSubType = event.getEventSubType(); String className = event.getEventClassName(); String methodName = event.getEventMethodName(); if (className == null) { className = "Unknown"; // should not occur } RootPackageAggrEventTreeNode rootPackageNode = target.getRootPackageNode(); ClassAggrEventTreeNode classNode = rootPackageNode.getOrCreateRecursiveChildClass(className); MethodAggrEventTreeNode methodNode = classNode.getOrCreateMethod(methodName); String templateCallKey = "dummy-params-templatekey"; // ... todo templatize params... TemplateMethodCallAggrEventTreeNode methodCallNode = methodNode.getOrCreateTemplateCall(templateCallKey); if (MethodCallEventUtils.REQUEST_EVENT_SUBTYPE.equals(eventSubType)) { methodCallNode.addRequestEvent(event); } else if (MethodCallEventUtils.RESPONSE_EVENT_SUBTYPE.equals(eventSubType)) { methodCallNode.addResponseEvent(event); } else { // unrecognized request/response event subType => ignore! } return methodCallNode; } }