/* * Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ package com.sun.enterprise.tools.wsmonitoring; import java.io.ByteArrayOutputStream; import java.util.logging.Logger; import java.util.logging.Level; import java.util.Map; import java.util.HashMap; import java.util.Vector; import java.util.Iterator; import com.sun.logging.LogDomains; import com.sun.enterprise.webservice.monitoring.MessageListener; import com.sun.enterprise.webservice.monitoring.MessageTrace; import com.sun.enterprise.webservice.monitoring.Endpoint; /** * This class is responsible for monitoring a particular * endpoint. * * @author dochez */ public class EndpointMonitor implements MessageListener { static final Logger sLogger=Logger.getLogger(LogDomains.WEB_LOGGER); MessageExchange[] traces; int traceIndex=0; Endpoint endpoint; /** Creates a new instance of EndpointMonitor */ public EndpointMonitor(Endpoint endpoint) { this.endpoint = endpoint; traces = new MessageExchange[5]; } public Endpoint getEndpoint() { return endpoint; } public void invocationProcessed(MessageTrace request, MessageTrace response) { MessageExchange newExchange = new MessageExchange(); newExchange.request = request; newExchange.response = response; traces[traceIndex++] = newExchange; if (traceIndex==traces.length) { traceIndex=0; } } public MessageExchange[] getInvocationTraces() { Vector<MessageExchange> v = new Vector<MessageExchange>(); if (traces[traceIndex]!=null) { for (int i=traceIndex;i<traces.length;i++) { v.add(traces[i]); } } for (int i=0;i<traceIndex;i++) { v.add(traces[i]); } if (v.isEmpty()) { return null; } else { return (MessageExchange[]) v.toArray(new MessageExchange[0]); } } }