You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2009/01/31 22:23:54 UTC

svn commit: r739621 - in /webservices/commons/trunk/modules/tcpmon/modules: tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/ tcpmon-core/src/main/java/org/apache/ws/commons...

Author: veithen
Date: Sat Jan 31 21:23:53 2009
New Revision: 739621

URL: http://svn.apache.org/viewvc?rev=739621&view=rev
Log:
Completely separated the connection handling from the UI code.

Added:
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/AbstractRequestResponse.java   (with props)
Modified:
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/AbstractListener.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/Connection.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/IRequestResponse.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/SocketRR.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Pipeline.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/Listener.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/RequestResponse.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/Listener.java
    webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/RequestResponse.java

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/AbstractListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/AbstractListener.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/AbstractListener.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/AbstractListener.java Sat Jan 31 21:23:53 2009
@@ -19,8 +19,10 @@
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
+import org.apache.ws.commons.tcpmon.core.ui.AbstractRequestResponse;
+
 public abstract class AbstractListener {
-    protected void resend(IRequestResponse requestResponse) {
+    protected void resend(AbstractRequestResponse requestResponse) {
         try {
             InputStream in = null;
             String text = requestResponse.getRequestAsString();
@@ -66,5 +68,5 @@
     public abstract Configuration getConfiguration();
     public abstract void onServerSocketStart();
     public abstract void onServerSocketError(Throwable ex);
-    public abstract IRequestResponse createRequestResponse(String time, String fromHost, String targetHost);
+    public abstract IRequestResponse createRequestResponse(String fromHost, String targetHost);
 }

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/Connection.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/Connection.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/Connection.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/Connection.java Sat Jan 31 21:23:53 2009
@@ -17,37 +17,23 @@
 package org.apache.ws.commons.tcpmon.core;
 
 import org.apache.ws.commons.tcpmon.SlowLinkSimulator;
-import org.apache.ws.commons.tcpmon.TCPMonBundle;
-import org.apache.ws.commons.tcpmon.core.filter.CharsetDecoderFilter;
 import org.apache.ws.commons.tcpmon.core.filter.Pipeline;
-import org.apache.ws.commons.tcpmon.core.filter.RequestLineExtractor;
 import org.apache.ws.commons.tcpmon.core.filter.StreamException;
 import org.apache.ws.commons.tcpmon.core.filter.Tee;
 import org.apache.ws.commons.tcpmon.core.filter.http.HttpHeaderRewriter;
 import org.apache.ws.commons.tcpmon.core.filter.http.HttpProxyClientHandler;
 import org.apache.ws.commons.tcpmon.core.filter.http.HttpProxyServerHandler;
 import org.apache.ws.commons.tcpmon.core.filter.http.HttpRequestFilter;
-import org.apache.ws.commons.tcpmon.core.filter.http.HttpResponseFilter;
-import org.apache.ws.commons.tcpmon.core.filter.mime.DefaultContentFilterFactory;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
 import java.net.Socket;
-import java.nio.charset.Charset;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 
 /**
  * a connection listens to a single current connection
  */
 public class Connection extends Thread {
-    private static final Charset UTF8 = Charset.forName("utf-8");
-    
     private final AbstractListener listener;
     private final Configuration config;
 
@@ -82,9 +68,6 @@
     private InputStream inputStream = null;
     
     private IRequestResponse requestResponse;
-    
-    private Writer inputWriter;
-    private Writer outputWriter;
 
     /**
      * Constructor Connection
@@ -141,13 +124,8 @@
             } else {
                 fromHost = "resend";
             }
-            String dateformat = TCPMonBundle.getMessage("dateformat00", "yyyy-MM-dd HH:mm:ss");
-            DateFormat df = new SimpleDateFormat(dateformat);
             String targetHost = config.getTargetHost();
-            requestResponse = listener.createRequestResponse(
-                    df.format(new Date()), fromHost, targetHost);
-            inputWriter = requestResponse.getRequestWriter();
-            outputWriter = requestResponse.getResponseWriter();
+            requestResponse = listener.createRequestResponse(fromHost, targetHost);
             int targetPort = config.getTargetPort();
             InputStream tmpIn1 = inputStream;
             OutputStream tmpOut1 = null;
@@ -160,11 +138,6 @@
             }
             
             Pipeline requestPipeline = new Pipeline();
-            requestPipeline.addFilter(new RequestLineExtractor(50) {
-                protected void done(String requestLine) {
-                    requestResponse.setRequest(requestLine);
-                }
-            });
             HttpRequestFilter requestFilter = new HttpRequestFilter(false);
             requestPipeline.addFilter(requestFilter);
             if (config.isProxy()) {
@@ -177,22 +150,23 @@
                         }
                     }
                 });
-            } else if (HTTPProxyHost != null) {
-                requestFilter.addHandler(new HttpProxyClientHandler(targetHost, targetPort));
-                outSocket = new Socket(HTTPProxyHost, HTTPProxyPort);
             } else {
                 requestFilter.addHandler(new HttpHeaderRewriter("Host", targetHost + ":" + targetPort));
                 outSocket = new Socket(targetHost, targetPort);
             }
+            // We log the request data at this stage. This means that the user will see the request
+            // as if it had been sent directly from the client to the server (without TCPMon or a proxy
+            // in between).
+            requestPipeline.addFilter(new Tee(requestResponse.getRequestOutputStream()));
+            if (HTTPProxyHost != null) {
+                requestFilter.addHandler(new HttpProxyClientHandler(targetHost, targetPort));
+                outSocket = new Socket(HTTPProxyHost, HTTPProxyPort);
+            }
             requestPipeline.addFilter(config.getSlowLink());
             Tee requestTee = new Tee();
             requestPipeline.addFilter(requestTee);
-            if (config.isXmlFormat()) {
-                HttpRequestFilter filter = new HttpRequestFilter(true);
-                filter.setContentFilterFactory(new DefaultContentFilterFactory());
-                requestPipeline.addFilter(filter);
-            }
-            requestPipeline.addFilter(new CharsetDecoderFilter(inputWriter, UTF8));
+            
+            requestResponse.setState(IRequestResponse.STATE_ACTIVE);
             
             // If we act as a proxy, we first need to read the start of the request before
             // the outSocket is available.
@@ -208,12 +182,7 @@
             if (tmpOut1 != null) {
                 responsePipeline.addFilter(new Tee(tmpOut1));
             }
-            if (config.isXmlFormat()) {
-                HttpResponseFilter filter = new HttpResponseFilter(true);
-                filter.setContentFilterFactory(new DefaultContentFilterFactory());
-                responsePipeline.addFilter(filter);
-            }
-            responsePipeline.addFilter(new CharsetDecoderFilter(outputWriter, UTF8));
+            responsePipeline.addFilter(new Tee(requestResponse.getResponseOutputStream()));
             
             // this is the channel to the endpoint
             rr1 = new SocketRR(this, inSocket, tmpIn1, outSocket, tmpOut2, requestPipeline);
@@ -237,14 +206,14 @@
                 
                 if ((null != rr1) && rr1.isDone()) {
                     if (rr2 != null) {
-                        requestResponse.setState(TCPMonBundle.getMessage("resp00", "Resp"));
+                        requestResponse.setState(IRequestResponse.STATE_RESP);
                     }
                     rr1 = null;
                 }
 
                 if ((null != rr2) && rr2.isDone()) {
                     if (rr1 != null) {
-                        requestResponse.setState(TCPMonBundle.getMessage("req00", "Req"));
+                        requestResponse.setState(IRequestResponse.STATE_REQ);
                     }
                     rr2 = null;
                 }
@@ -256,22 +225,12 @@
 
             active = false;
 
-            requestResponse.setState(TCPMonBundle.getMessage("done00", "Done"));
+            requestResponse.setState(IRequestResponse.STATE_DONE);
 
         } catch (Exception e) {
-            StringWriter st = new StringWriter();
-            PrintWriter wr = new PrintWriter(st);
             if (requestResponse != null) {
-                requestResponse.setState(TCPMonBundle.getMessage("error00", "Error"));
-            }
-            e.printStackTrace(wr);
-            wr.close();
-            if (outputWriter != null) {
-                try {
-                    outputWriter.write(st.toString());
-                } catch (IOException ex) {
-                    ex.printStackTrace();
-                }
+                requestResponse.setState(IRequestResponse.STATE_ERROR);
+                requestResponse.onError(e);
             }
             halt();
         }

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/IRequestResponse.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/IRequestResponse.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/IRequestResponse.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/IRequestResponse.java Sat Jan 31 21:23:53 2009
@@ -16,18 +16,22 @@
 
 package org.apache.ws.commons.tcpmon.core;
 
-import java.io.Writer;
+import java.io.OutputStream;
 
 /**
  * Listener receiving information about a given request-response exchange.
  */
 public interface IRequestResponse {
+    int STATE_ACTIVE = 0;
+    int STATE_REQ = 1;
+    int STATE_RESP = 2;
+    int STATE_DONE = 3;
+    int STATE_ERROR = 4;
+    
     void setOutHost(String outHost);
-    void setState(String state);
-    void setRequest(String request);
-    void setElapsed(String elapsed);
-    Writer getRequestWriter();
-    Writer getResponseWriter();
-    String getRequestAsString();
-    String getResponseAsString();
+    void setState(int state);
+    void setElapsed(long elapsed);
+    OutputStream getRequestOutputStream();
+    OutputStream getResponseOutputStream();
+    void onError(Throwable ex);
 }

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/SocketRR.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/SocketRR.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/SocketRR.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/SocketRR.java Sat Jan 31 21:23:53 2009
@@ -97,8 +97,8 @@
         return done;
     }
 
-    public String getElapsed() {
-        return String.valueOf(elapsed);
+    public long getElapsed() {
+        return elapsed;
     }
     
     /**

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Pipeline.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Pipeline.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Pipeline.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/filter/Pipeline.java Sat Jan 31 21:23:53 2009
@@ -312,6 +312,26 @@
         }
     }
     
+    private class OutputStreamImpl extends OutputStream {
+        public OutputStreamImpl() {}
+        
+        public void write(int b) throws IOException {
+            write(new byte[] { (byte)b });
+        }
+
+        public void write(byte[] b, int off, int len) throws IOException {
+            first.invoke(b, off, len, false, true);
+        }
+
+        public void write(byte[] b) throws IOException {
+            write(b, 0, b.length);
+        }
+
+        public void close() throws IOException {
+            first.invoke(new byte[0], 0, 0, true, false);
+        }
+    }
+    
     private final int bufferSize;
     private final LinkedList buffers = new LinkedList();
     private StreamImpl first;
@@ -357,4 +377,8 @@
         }
         return read;
     }
+    
+    public OutputStream getOutputStream() {
+        return new OutputStreamImpl();
+    }
 }

Added: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/AbstractRequestResponse.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/AbstractRequestResponse.java?rev=739621&view=auto
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/AbstractRequestResponse.java (added)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/AbstractRequestResponse.java Sat Jan 31 21:23:53 2009
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ws.commons.tcpmon.core.ui;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.ws.commons.tcpmon.TCPMonBundle;
+import org.apache.ws.commons.tcpmon.core.Configuration;
+import org.apache.ws.commons.tcpmon.core.IRequestResponse;
+import org.apache.ws.commons.tcpmon.core.filter.CharsetDecoderFilter;
+import org.apache.ws.commons.tcpmon.core.filter.Pipeline;
+import org.apache.ws.commons.tcpmon.core.filter.RequestLineExtractor;
+import org.apache.ws.commons.tcpmon.core.filter.http.HttpRequestFilter;
+import org.apache.ws.commons.tcpmon.core.filter.http.HttpResponseFilter;
+import org.apache.ws.commons.tcpmon.core.filter.mime.DefaultContentFilterFactory;
+
+public abstract class AbstractRequestResponse implements IRequestResponse {
+    private static final String[] states = new String[] {
+        TCPMonBundle.getMessage("active00","Active"),
+        TCPMonBundle.getMessage("req00", "Req"),
+        TCPMonBundle.getMessage("resp00", "Resp"),
+        TCPMonBundle.getMessage("done00", "Done"),
+        TCPMonBundle.getMessage("error00", "Error")
+    };
+    
+    private static final Charset UTF8 = Charset.forName("utf-8");
+    
+    private final Configuration config;
+    
+    public AbstractRequestResponse(Configuration config) {
+        this.config = config;
+    }
+    
+    protected static String getTime() {
+        String dateformat = TCPMonBundle.getMessage("dateformat00", "yyyy-MM-dd HH:mm:ss");
+        DateFormat df = new SimpleDateFormat(dateformat);
+        return df.format(new Date());
+    }
+    
+    public void setState(int state) {
+        setState(states[state]);
+    }
+
+    public OutputStream getRequestOutputStream() {
+        Pipeline pipeline = new Pipeline();
+        pipeline.addFilter(new RequestLineExtractor(50) {
+            protected void done(String requestLine) {
+                setRequest(requestLine);
+            }
+        });
+        if (config.isXmlFormat()) {
+            HttpRequestFilter filter = new HttpRequestFilter(true);
+            filter.setContentFilterFactory(new DefaultContentFilterFactory());
+            pipeline.addFilter(filter);
+        }
+        pipeline.addFilter(new CharsetDecoderFilter(getRequestWriter(), UTF8));
+        return pipeline.getOutputStream();
+    }
+    
+    public OutputStream getResponseOutputStream() {
+        Pipeline pipeline = new Pipeline();
+        if (config.isXmlFormat()) {
+            HttpResponseFilter filter = new HttpResponseFilter(true);
+            filter.setContentFilterFactory(new DefaultContentFilterFactory());
+            pipeline.addFilter(filter);
+        }
+        pipeline.addFilter(new CharsetDecoderFilter(getResponseWriter(), UTF8));
+        return pipeline.getOutputStream();
+    }
+    
+    public void onError(Throwable ex) {
+        StringWriter st = new StringWriter();
+        PrintWriter wr = new PrintWriter(st);
+        ex.printStackTrace(wr);
+        wr.close();
+        try {
+            getResponseWriter().write(st.toString());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    protected abstract void setState(String state);
+    protected abstract void setRequest(String request);
+    protected abstract Writer getRequestWriter();
+    protected abstract Writer getResponseWriter();
+    public abstract String getRequestAsString();
+    public abstract String getResponseAsString();
+}

Propchange: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-core/src/main/java/org/apache/ws/commons/tcpmon/core/ui/AbstractRequestResponse.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/Listener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/Listener.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/Listener.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/Listener.java Sat Jan 31 21:23:53 2009
@@ -641,7 +641,7 @@
         });
     }
 
-    public IRequestResponse createRequestResponse(String time, String fromHost, String targetHost) {
-        return new RequestResponse(this, time, fromHost, targetHost);
+    public IRequestResponse createRequestResponse(String fromHost, String targetHost) {
+        return new RequestResponse(this, fromHost, targetHost);
     }
 }

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/RequestResponse.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/RequestResponse.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/RequestResponse.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-eclipse-plugin/src/main/java/org/apache/ws/commons/tcpmon/eclipse/ui/RequestResponse.java Sat Jan 31 21:23:53 2009
@@ -19,12 +19,12 @@
 import java.io.Writer;
 
 import org.apache.ws.commons.tcpmon.TCPMonBundle;
-import org.apache.ws.commons.tcpmon.core.IRequestResponse;
+import org.apache.ws.commons.tcpmon.core.ui.AbstractRequestResponse;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Text;
 
-public class RequestResponse implements IRequestResponse {
+public class RequestResponse extends AbstractRequestResponse {
     private final Listener listener;
 
     /**
@@ -37,7 +37,8 @@
      */
     Text outputText = null;
 
-    public RequestResponse(final Listener listener, final String time, final String fromHost, final String targetHost) {
+    public RequestResponse(final Listener listener, final String fromHost, final String targetHost) {
+        super(listener.getConfiguration());
         this.listener = listener;
         final int count = listener.requestResponses.size();
 
@@ -45,7 +46,7 @@
             public void run() {
                 TableItem item = new TableItem(listener.connectionTable, SWT.BORDER, count + 1);
                 item.setText(new String[]{TCPMonBundle.getMessage("active00", "Active"),
-                        time,
+                        getTime(),
                         fromHost,
                         targetHost,
                         "", ""});
@@ -87,23 +88,23 @@
         setValue(MainView.OUTHOST_COLUMN, outHost);
     }
     
-    public void setState(String state) {
+    protected void setState(String state) {
         setValue(MainView.STATE_COLUMN, state);
     }
 
-    public void setRequest(String request) {
+    protected void setRequest(String request) {
         setValue(MainView.REQ_COLUMN, request);
     }
     
-    public void setElapsed(String elapsed) {
-        setValue(MainView.ELAPSED_COLUMN, elapsed);
+    public void setElapsed(long elapsed) {
+        setValue(MainView.ELAPSED_COLUMN, String.valueOf(elapsed));
     }
 
-    public Writer getRequestWriter() {
+    protected Writer getRequestWriter() {
         return new TextWidgetWriter(inputText);
     }
 
-    public Writer getResponseWriter() {
+    protected Writer getResponseWriter() {
         return new TextWidgetWriter(outputText);
     }
 

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/Listener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/Listener.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/Listener.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/Listener.java Sat Jan 31 21:23:53 2009
@@ -615,7 +615,7 @@
         stop();
     }
 
-    public IRequestResponse createRequestResponse(String time, String fromHost, String targetHost) {
-        return new RequestResponse(this, time, fromHost, targetHost);
+    public IRequestResponse createRequestResponse(String fromHost, String targetHost) {
+        return new RequestResponse(this, fromHost, targetHost);
     }
 }

Modified: webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/RequestResponse.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/RequestResponse.java?rev=739621&r1=739620&r2=739621&view=diff
==============================================================================
--- webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/RequestResponse.java (original)
+++ webservices/commons/trunk/modules/tcpmon/modules/tcpmon-ui/src/main/java/org/apache/ws/commons/tcpmon/RequestResponse.java Sat Jan 31 21:23:53 2009
@@ -21,9 +21,9 @@
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 
-import org.apache.ws.commons.tcpmon.core.IRequestResponse;
+import org.apache.ws.commons.tcpmon.core.ui.AbstractRequestResponse;
 
-public class RequestResponse implements IRequestResponse {
+public class RequestResponse extends AbstractRequestResponse {
     private final Listener listener;
     
     /**
@@ -46,14 +46,15 @@
      */
     JScrollPane outputScroll = null;
     
-    public RequestResponse(Listener listener, String time, String fromHost,
+    public RequestResponse(Listener listener, String fromHost,
             String targetHost) {
+        super(listener.getConfiguration());
         this.listener = listener;
         int count = listener.requestResponses.size();
         listener.tableModel.insertRow(count + 1,
                 new Object[]{
                     TCPMonBundle.getMessage("active00","Active"),
-                    time,
+                    getTime(),
                     fromHost,
                     targetHost,
                     ""});
@@ -90,23 +91,23 @@
         setValue(TCPMon.OUTHOST_COLUMN, outHost);
     }
     
-    public void setState(String state) {
+    protected void setState(String state) {
         setValue(TCPMon.STATE_COLUMN, state);
     }
     
-    public void setRequest(String request) {
+    protected void setRequest(String request) {
         setValue(TCPMon.REQ_COLUMN, request);
     }
     
-    public void setElapsed(String elapsed) {
-        setValue(TCPMon.ELAPSED_COLUMN, elapsed);
+    public void setElapsed(long elapsed) {
+        setValue(TCPMon.ELAPSED_COLUMN, String.valueOf(elapsed));
     }
     
-    public Writer getRequestWriter() {
+    protected Writer getRequestWriter() {
         return new JTextAreaWriter(inputText);
     }
 
-    public Writer getResponseWriter() {
+    protected Writer getResponseWriter() {
         return new JTextAreaWriter(outputText);
     }