You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ri...@apache.org on 2002/05/27 14:16:48 UTC
cvs commit: xml-axis/java/src/org/apache/axis/utils tcpmon.java tcpmon.properties
rineholt 02/05/27 05:16:48
Modified: java/src/org/apache/axis/utils tcpmon.java tcpmon.properties
Log:
Treat both streams equitably in determining connection life.
Change thread handling-- should require no sleeps.
Revision Changes Path
1.35 +591 -432 xml-axis/java/src/org/apache/axis/utils/tcpmon.java
Index: tcpmon.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/tcpmon.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- tcpmon.java 22 May 2002 12:37:53 -0000 1.34
+++ tcpmon.java 27 May 2002 12:16:47 -0000 1.35
@@ -54,6 +54,7 @@
*/
package org.apache.axis.utils ;
+
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
@@ -104,6 +105,7 @@
import java.util.ResourceBundle;
import java.util.Vector;
+
/**
* @author Doug Davis (dug@us.ibm.com)
*/
@@ -137,14 +139,14 @@
GridBagConstraints c = new GridBagConstraints();
mainPane = new JPanel(layout);
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER;
mainPane.add( new JLabel(getMessage("newTCP00", "Create a new TCP/IP Monitor...") + " "), c );
// Add some blank space
- mainPane.add( Box.createRigidArea(new Dimension(1,5)), c );
-
+ mainPane.add( Box.createRigidArea(new Dimension(1, 5)), c );
+
// The listener info
///////////////////////////////////////////////////////////////////
JPanel tmpPanel = new JPanel(new GridBagLayout());
@@ -159,10 +161,11 @@
mainPane.add( tmpPanel, c );
- mainPane.add( Box.createRigidArea(new Dimension(1,5)), c );
-
+ mainPane.add( Box.createRigidArea(new Dimension(1, 5)), c );
+
// Group for the radio buttons
ButtonGroup btns = new ButtonGroup();
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
mainPane.add( new JLabel(getMessage("actAs00", "Act as a...") ), c );
@@ -173,69 +176,76 @@
c.gridwidth = GridBagConstraints.REMAINDER ;
final String listener = getMessage("listener00", "Listener");
+
mainPane.add( listenerButton = new JRadioButton( listener ), c );
btns.add( listenerButton );
listenerButton.setSelected( true );
- listenerButton.addActionListener( new ActionListener(){
- public void actionPerformed(ActionEvent event) {
- if (listener.equals(event.getActionCommand())) {
- boolean state = listenerButton.isSelected();
- tport.setEnabled( state );
- host.setEnabled( state );
- hostLabel.setForeground(state?Color.black:Color.gray);
- tportLabel.setForeground(state?Color.black:Color.gray);
+ listenerButton.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (listener.equals(event.getActionCommand())) {
+ boolean state = listenerButton.isSelected();
+
+ tport.setEnabled( state );
+ host.setEnabled( state );
+ hostLabel.setForeground(state ? Color.black : Color.gray);
+ tportLabel.setForeground(state ? Color.black : Color.gray);
+ }
}
}
- });
+ );
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = 1 ;
- mainPane.add( Box.createRigidArea(new Dimension(25,0)) );
+ mainPane.add( Box.createRigidArea(new Dimension(25, 0)) );
mainPane.add( hostLabel = new JLabel(getMessage("targetHostname00", "Target Hostname") + " "), c );
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
mainPane.add( host = new JTextField(30), c );
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = 1 ;
- mainPane.add( Box.createRigidArea(new Dimension(25,0)) );
+ mainPane.add( Box.createRigidArea(new Dimension(25, 0)) );
mainPane.add( tportLabel = new JLabel(getMessage("targetPort00", "Target Port #") + " "), c );
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
mainPane.add( tport = new JTextField(4), c );
-
+
// Act as proxy section
///////////////////////////////////////////////////////////////////
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
final String proxy = getMessage("proxy00", "Proxy");
- mainPane.add( proxyButton = new JRadioButton( proxy ),c);
+
+ mainPane.add( proxyButton = new JRadioButton( proxy ), c);
btns.add( proxyButton );
- proxyButton.addActionListener( new ActionListener(){
- public void actionPerformed(ActionEvent event) {
- if (proxy.equals(event.getActionCommand())) {
- boolean state = proxyButton.isSelected();
- tport.setEnabled( !state );
- host.setEnabled( !state );
- hostLabel.setForeground(state?Color.gray:Color.black);
- tportLabel.setForeground(state?Color.gray:Color.black);
+ proxyButton.addActionListener( new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (proxy.equals(event.getActionCommand())) {
+ boolean state = proxyButton.isSelected();
+
+ tport.setEnabled( !state );
+ host.setEnabled( !state );
+ hostLabel.setForeground(state ? Color.gray : Color.black);
+ tportLabel.setForeground(state ? Color.gray : Color.black);
+ }
}
}
- });
+ );
// Spacer
/////////////////////////////////////////////////////////////////
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
- mainPane.add( Box.createRigidArea(new Dimension(1,10)), c );
+ mainPane.add( Box.createRigidArea(new Dimension(1, 10)), c );
// Options section
///////////////////////////////////////////////////////////////////
JPanel opts = new JPanel(new GridBagLayout());
+
opts.setBorder( new TitledBorder(getMessage("options00", "Options")) );
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
@@ -246,53 +256,57 @@
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
final String proxySupport = getMessage("proxySupport00", "HTTP Proxy Support");
+
opts.add(HTTPProxyBox = new JCheckBox(proxySupport), c);
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = 1 ;
opts.add( HTTPProxyHostLabel = new JLabel(getMessage("hostname00", "Hostname") + " "), c );
HTTPProxyHostLabel.setForeground( Color.gray );
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
opts.add( HTTPProxyHost = new JTextField(30), c );
HTTPProxyHost.setEnabled( false );
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = 1 ;
opts.add( HTTPProxyPortLabel = new JLabel(getMessage("port00", "Port #") + " "), c );
HTTPProxyPortLabel.setForeground( Color.gray );
-
+
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
opts.add( HTTPProxyPort = new JTextField(4), c );
HTTPProxyPort.setEnabled( false );
HTTPProxyBox.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if (proxySupport.equals(event.getActionCommand())) {
- boolean b = HTTPProxyBox.isSelected();
- Color color = b ? Color.black : Color.gray ;
-
- HTTPProxyHost.setEnabled( b );
- HTTPProxyPort.setEnabled( b );
- HTTPProxyHostLabel.setForeground( color );
- HTTPProxyPortLabel.setForeground( color );
+ public void actionPerformed(ActionEvent event) {
+ if (proxySupport.equals(event.getActionCommand())) {
+ boolean b = HTTPProxyBox.isSelected();
+ Color color = b ? Color.black : Color.gray ;
+
+ HTTPProxyHost.setEnabled( b );
+ HTTPProxyPort.setEnabled( b );
+ HTTPProxyHostLabel.setForeground( color );
+ HTTPProxyPortLabel.setForeground( color );
+ }
}
- };
- });
+ ;
+ }
+ );
// Set default proxy values...
String tmp = System.getProperty( "http.proxyHost" );
+
if ( tmp != null && tmp.equals("") )
tmp = null ;
HTTPProxyBox.setSelected( tmp != null );
HTTPProxyHost.setEnabled( tmp != null );
HTTPProxyPort.setEnabled( tmp != null );
- HTTPProxyHostLabel.setForeground( tmp!=null?Color.black:Color.gray);
- HTTPProxyPortLabel.setForeground( tmp!=null?Color.black:Color.gray);
-
+ HTTPProxyHostLabel.setForeground( tmp != null ? Color.black : Color.gray);
+ HTTPProxyPortLabel.setForeground( tmp != null ? Color.black : Color.gray);
+
if ( tmp != null ) {
HTTPProxyBox.setSelected( true );
HTTPProxyHost.setText( tmp );
@@ -304,56 +318,59 @@
// Spacer
//////////////////////////////////////////////////////////////////
- mainPane.add( Box.createRigidArea(new Dimension(1,10)), c );
-
+ mainPane.add( Box.createRigidArea(new Dimension(1, 10)), c );
+
// ADD Button
///////////////////////////////////////////////////////////////////
c.anchor = GridBagConstraints.WEST ;
c.gridwidth = GridBagConstraints.REMAINDER ;
final String add = getMessage("add00", "Add");
+
mainPane.add( addButton = new JButton( add ), c );
-
+
this.add( new JScrollPane( mainPane ), BorderLayout.CENTER );
// addButton.setEnabled( false );
addButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if ( add.equals(event.getActionCommand()) ) {
- String text ;
- Listener l = null ;
- int lPort = Integer.parseInt(port.getText());
- String tHost = host.getText();
- int tPort = 0 ;
-
- text = tport.getText();
- if ( text != null && !text.equals("") )
- tPort = Integer.parseInt(text);
- l = new Listener( noteb, null, lPort, tHost, tPort,
- proxyButton.isSelected() );
-
- // Pick-up the HTTP Proxy settings
- ///////////////////////////////////////////////////
- text = HTTPProxyHost.getText();
- if ( "".equals(text) ) text = null ;
- l.HTTPProxyHost = text ;
- text = HTTPProxyPort.getText();
- if ( "".equals(text) ) text = null ;
- if( text != null )
- l.HTTPProxyPort = Integer.parseInt(text);
-
- port.setText(null);
- host.setText(null);
- tport.setText(null);
+ public void actionPerformed(ActionEvent event) {
+ if ( add.equals(event.getActionCommand()) ) {
+ String text ;
+ Listener l = null ;
+ int lPort = Integer.parseInt(port.getText());
+ String tHost = host.getText();
+ int tPort = 0 ;
+
+ text = tport.getText();
+ if ( text != null && !text.equals("") )
+ tPort = Integer.parseInt(text);
+ l = new Listener( noteb, null, lPort, tHost, tPort,
+ proxyButton.isSelected() );
+
+ // Pick-up the HTTP Proxy settings
+ ///////////////////////////////////////////////////
+ text = HTTPProxyHost.getText();
+ if ( "".equals(text) ) text = null ;
+ l.HTTPProxyHost = text ;
+ text = HTTPProxyPort.getText();
+ if ( "".equals(text) ) text = null ;
+ if ( text != null )
+ l.HTTPProxyPort = Integer.parseInt(text);
+
+ port.setText(null);
+ host.setText(null);
+ tport.setText(null);
+ }
}
- };
- });
+ ;
+ }
+ );
notebook.addTab( name, this );
notebook.repaint();
- notebook.setSelectedIndex( notebook.getTabCount()-1 );
+ notebook.setSelectedIndex( notebook.getTabCount() - 1 );
}
- };
+ }
class SocketWaiter extends Thread {
ServerSocket sSocket = null ;
@@ -372,16 +389,18 @@
listener.setLeft( new JLabel(getMessage("wait00", " Waiting for Connection...") ) );
listener.repaint();
sSocket = new ServerSocket( port );
- for(;;) {
+ for (; ; ) {
Socket inSocket = sSocket.accept();
+
if ( pleaseStop ) break ;
new Connection( listener, inSocket );
inSocket = null ;
}
}
- catch( Exception exp ) {
+ catch ( Exception exp ) {
if ( !"socket closed".equals(exp.getMessage()) ) {
JLabel tmp = new JLabel( exp.toString() );
+
tmp.setForeground( Color.red );
listener.setLeft( tmp );
listener.setRight( new JLabel("") );
@@ -396,12 +415,13 @@
new Socket( "127.0.0.1", port );
if ( sSocket != null ) sSocket.close();
}
- catch( Exception e ) {
+ catch ( Exception e ) {
e.printStackTrace();
}
}
}
+
class SocketRR extends Thread {
Socket inSocket = null ;
Socket outSocket = null ;
@@ -409,14 +429,16 @@
InputStream in = null ;
OutputStream out = null ;
boolean xmlFormat ;
- boolean done = false ;
+ volatile boolean done = false ;
TableModel tmodel = null ;
- int tableIndex =0 ;
-
- public SocketRR(Socket inputSocket, InputStream inputStream,
- Socket outputSocket, OutputStream outputStream,
- JTextArea _textArea, boolean format,
- TableModel tModel, int index) {
+ int tableIndex = 0 ;
+ String type = null;
+ Connection myConnection = null;
+
+ public SocketRR(Connection c, Socket inputSocket, InputStream inputStream,
+ Socket outputSocket, OutputStream outputStream,
+ JTextArea _textArea, boolean format,
+ TableModel tModel, int index, final String type) {
inSocket = inputSocket ;
in = inputStream ;
outSocket = outputSocket ;
@@ -425,11 +447,13 @@
xmlFormat = format ;
tmodel = tModel ;
tableIndex = index ;
+ this.type = type;
+ myConnection = c;
start();
}
public boolean isDone() {
- return( done );
+ return ( done );
}
public void run() {
@@ -443,58 +467,68 @@
int reqSaved = 0 ;
int tabWidth = 3 ;
boolean atMargin = true ;
- int thisIndent = - 1,
- nextIndent = -1,
- previousIndent = -1;
+ int thisIndent = -1,
+ nextIndent = -1,
+ previousIndent = -1;
- if ( inSocket != null ) inSocket.setSoTimeout( 10 );
- if ( outSocket != null ) outSocket.setSoTimeout( 10 );
+ //if ( inSocket != null ) inSocket.setSoTimeout( 10 );
+ //if ( outSocket != null ) outSocket.setSoTimeout( 10 );
if ( tmodel != null ) {
- String tmpStr = (String) tmodel.getValueAt(tableIndex,
- REQ_COLUMN);
- if ( !"".equals(tmpStr) )
- reqSaved = tmpStr.length();
- }
-
- for ( ;; ) {
- if( done ) break;
- len = in.available();
+ String tmpStr = (String) tmodel.getValueAt(tableIndex,
+ REQ_COLUMN);
+
+ if ( !"".equals(tmpStr) )
+ reqSaved = tmpStr.length();
+ }
+
+ a:
+ for ( ; ; ) {
+ if ( done ) break;
+ //try{
+ //len = in.available();
+ //}catch(Exception e){len=0;}
+ len = buffer.length ;
// Used to be 1, but if we block it doesn't matter
// however 1 will break with some servers, including apache
- if ( len == 0 ) len = 4096 ;
- if ( saved+len > 4096 ) len = 4096-saved ;
- int len1=0;
- while( len1==0 ) {
+ if ( len == 0 ) len = buffer.length;
+ if ( saved + len > buffer.length) len = buffer.length - saved ;
+ int len1 = 0;
+
+ while ( len1 == 0 ) {
try {
- len1 = in.read(buffer,saved,len);
- } catch( Exception ex ) {
- len1=0;
- if( done ) return;
+ len1 = in.read(buffer, saved, len);
+ }
+ catch ( Exception ex ) {
+ if ( done && saved == 0 ) break a;
+ len1 = -1;
+ break;
}
}
- len=len1;
+ len = len1;
if ( len == -1 && saved == 0 ) break ;
+ if ( len == -1) done = true;
// No matter how we may (or may not) format it, send it
// on unformatted - we don't want to mess with how its
// sent to the other side, just how its displayed
if ( out != null && len > 0 ) {
- out.write( buffer, saved, len );
+ out.write( buffer, saved, len );
}
-
+
if ( tmodel != null && reqSaved < 50 ) {
- String old = (String) tmodel.getValueAt( tableIndex,
- REQ_COLUMN);
- old = old + new String(buffer,saved,len);
+ String old = (String) tmodel.getValueAt( tableIndex,
+ REQ_COLUMN);
+
+ old = old + new String(buffer, saved, len);
if ( old.length() > 50 )
- old = old.substring(0,50);
+ old = old.substring(0, 50);
reqSaved = old.length();
if ( (i = old.indexOf('\n')) > 0 ) {
- old = old.substring(0,i-1);
+ old = old.substring(0, i - 1);
reqSaved = 50 ;
}
@@ -505,66 +539,93 @@
// Do XML Formatting
boolean inXML = false ;
int bufferLen = saved ;
+
if ( len != -1 ) bufferLen += len ;
i1 = 0 ;
i2 = 0 ;
saved = 0 ;
- for( ; i1 < bufferLen ; i1++ ) {
- // Except when we're at EOF, saved last char
- if ( len != -1 && i1+1 == bufferLen ) {
- saved = 1;
- break;
- }
- thisIndent = -1;
- if ( buffer[i1]=='<' && buffer[i1+1]!='/' ) {
- previousIndent = nextIndent++;
- thisIndent = nextIndent;
- inXML = true ;
- }
- if ( buffer[i1]=='<' && buffer[i1+1]=='/' ) {
- if (previousIndent>nextIndent)
- thisIndent = nextIndent;
- previousIndent = nextIndent--;
- inXML = true ;
- }
- if ( buffer[i1]=='/' && buffer[i1+1]=='>' ) {
- previousIndent = nextIndent--;
- inXML = true ;
- }
- if ( thisIndent!=-1 ) {
- if ( thisIndent > 0 ) tmpbuffer[i2++] = (byte)'\n';
- for ( i = tabWidth*thisIndent; i>0; i-- )
- tmpbuffer[i2++] = (byte)' ';
- }
- atMargin = ( buffer[i1]=='\n' || buffer[i1]=='\r');
-
- if ( !inXML || !atMargin ) {
- tmpbuffer[i2++] = buffer[i1];
- }
+ for ( ; i1 < bufferLen ; i1++ ) {
+ // Except when we're at EOF, saved last char
+ if ( len != -1 && i1 + 1 == bufferLen ) {
+ saved = 1;
+ break;
+ }
+ thisIndent = -1;
+ if ( buffer[i1] == '<' && buffer[i1 + 1] != '/' ) {
+ previousIndent = nextIndent++;
+ thisIndent = nextIndent;
+ inXML = true ;
+ }
+ if ( buffer[i1] == '<' && buffer[i1 + 1] == '/' ) {
+ if (previousIndent > nextIndent)
+ thisIndent = nextIndent;
+ previousIndent = nextIndent--;
+ inXML = true ;
+ }
+ if ( buffer[i1] == '/' && buffer[i1 + 1] == '>' ) {
+ previousIndent = nextIndent--;
+ inXML = true ;
+ }
+ if ( thisIndent != -1 ) {
+ if ( thisIndent > 0 ) tmpbuffer[i2++] = (byte) '\n';
+ for ( i = tabWidth * thisIndent; i > 0; i-- )
+ tmpbuffer[i2++] = (byte) ' ';
+ }
+ atMargin = ( buffer[i1] == '\n' || buffer[i1] == '\r');
+
+ if ( !inXML || !atMargin ) {
+ tmpbuffer[i2++] = buffer[i1];
+ }
}
textArea.append( new String( tmpbuffer, 0, i2 ) );
// Shift saved bytes to the beginning
for ( i = 0 ; i < saved ; i++ )
- buffer[i] = buffer[bufferLen-saved+i];
+ buffer[i] = buffer[bufferLen - saved + i];
}
else {
textArea.append( new String( buffer, 0, len ) );
}
- this.sleep(3); // Let other threads have a chance to run
+ // this.sleep(3); // Let other threads have a chance to run
}
- this.sleep(3); // Let other threads have a chance to run
- // halt();
- // Only set the 'done' flag if we were reading from a
- // Socket - if we were reading from an input stream then
- // we'll let the other side control when we're done
- if ( inSocket != null ) done = true ;
+ // this.sleep(3); // Let other threads have a chance to run
+ // halt();
+ // Only set the 'done' flag if we were reading from a
+ // Socket - if we were reading from an input stream then
+ // we'll let the other side control when we're done
+ // if ( inSocket != null ) done = true ;
}
- catch( Exception e ) {
+ catch ( Exception e ) {
e.printStackTrace();
}
+ finally {
+ done = true ;
+ try {
+ if (out != null) {
+ out.flush();
+ if (null != outSocket) outSocket.shutdownOutput();
+ else out.close();
+ out = null;
+ }
+ }
+ catch (Exception e) {
+ ;
+ }
+ try {
+ if (in != null) {
+ if (inSocket != null) inSocket.shutdownInput();
+ else in.close();
+ in = null;
+ }
+ }
+ catch (Exception e) {
+ ;
+ }
+ myConnection.wakeUp();
+ }
}
+
public void halt() {
try {
if ( inSocket != null ) inSocket.close();
@@ -575,13 +636,15 @@
if ( out != null ) out.close();
in = null ;
out = null ;
- done=true;
- } catch( Exception e ) {
+ done = true;
+ }
+ catch ( Exception e ) {
e.printStackTrace();
}
}
}
+
class Connection extends Thread {
Listener listener ;
boolean active ;
@@ -609,13 +672,13 @@
}
public Connection(Listener l, Socket s ) {
- this(l);
+ this (l);
inSocket = s ;
start();
}
public Connection(Listener l, InputStream in ) {
- this(l);
+ this (l);
inputStream = in ;
start();
}
@@ -627,34 +690,41 @@
HTTPProxyHost = System.getProperty( "http.proxyHost" );
if ( HTTPProxyHost != null && HTTPProxyHost.equals("") )
HTTPProxyHost = null ;
-
+
if ( HTTPProxyHost != null ) {
String tmp = System.getProperty( "http.proxyPort" );
+
if ( tmp != null && tmp.equals("") ) tmp = null ;
if ( tmp == null ) HTTPProxyPort = 80 ;
else HTTPProxyPort = Integer.parseInt( tmp );
}
- if ( inSocket != null )
- fromHost = (inSocket.getInetAddress()).getHostName();
- else
- fromHost = "resend" ;
+ if ( inSocket != null )
+ fromHost = (inSocket.getInetAddress()).getHostName();
+ else
+ fromHost = "resend" ;
DateFormat df = new SimpleDateFormat("MM/dd/yy hh:mm:ss aa");
+
time = df.format( new Date() );
-
+
int count = listener.connections.size();
- listener.tableModel.insertRow(count+1, new Object[] { getMessage("active00", "Active"),
- time,
- fromHost,
- listener.hostField.getText(), "" });
+
+ listener.tableModel.insertRow(count + 1, new Object[] {
+ getMessage("active00", "Active"),
+ time,
+ fromHost,
+ listener.hostField.getText(), ""
+ }
+ );
listener.connections.add( this );
inputText = new JTextArea( null, null, 20, 80 );
inputScroll = new JScrollPane( inputText );
outputText = new JTextArea( null, null, 20, 80 );
outputScroll = new JScrollPane( outputText );
-
+
ListSelectionModel lsm = listener.connectionTable.getSelectionModel();
+
if ( count == 0 || lsm.getLeadSelectionIndex() == 0 ) {
listener.outPane.setVisible( false );
int divLoc = listener.outPane.getDividerLocation();
@@ -672,7 +742,7 @@
String targetHost = listener.hostField.getText();
int targetPort = Integer.parseInt(listener.tPortField.getText());
-
+
InputStream tmpIn1 = inputStream ;
OutputStream tmpOut1 = null ;
@@ -680,10 +750,10 @@
OutputStream tmpOut2 = null ;
if ( tmpIn1 == null )
- tmpIn1 = inSocket.getInputStream();
-
- if ( inSocket != null )
- tmpOut1 = inSocket.getOutputStream();
+ tmpIn1 = inSocket.getInputStream();
+
+ if ( inSocket != null )
+ tmpOut1 = inSocket.getOutputStream();
String bufferedData = null ;
StringBuffer buf = null ;
@@ -693,13 +763,14 @@
if (listener.isProxyBox.isSelected() || HTTPProxyHost != null) {
// Check if we're a proxy
byte[] b = new byte[1];
+
buf = new StringBuffer();
String s ;
- for ( ;; ) {
+ for ( ; ; ) {
int len ;
- len = tmpIn1.read(b,0,1);
+ len = tmpIn1.read(b, 0, 1);
if ( len == -1 ) break ;
s = new String( b );
buf.append( s );
@@ -711,14 +782,15 @@
inputText.append( bufferedData );
if ( bufferedData.startsWith( "GET " ) ||
- bufferedData.startsWith( "POST " ) ) {
+ bufferedData.startsWith( "POST " ) ) {
int start, end ;
URL url ;
- start = bufferedData.indexOf( ' ' )+1;
- while( bufferedData.charAt(start) == ' ' ) start++ ;
+ start = bufferedData.indexOf( ' ' ) + 1;
+ while ( bufferedData.charAt(start) == ' ' ) start++ ;
end = bufferedData.indexOf( ' ', start );
String urlString = bufferedData.substring( start, end );
+
if ( urlString.charAt(0) == '/' ) urlString = urlString.substring(1);
if ( listener.isProxyBox.isSelected() ) {
url = new URL( urlString );
@@ -726,52 +798,57 @@
targetPort = url.getPort();
if ( targetPort == -1 ) targetPort = 80 ;
- listener.tableModel.setValueAt( targetHost, index+1,
- OUTHOST_COLUMN );
+ listener.tableModel.setValueAt( targetHost, index + 1,
+ OUTHOST_COLUMN );
bufferedData = bufferedData.substring( 0, start) +
- url.getFile() +
- bufferedData.substring( end );
+ url.getFile() +
+ bufferedData.substring( end );
}
else {
- url = new URL( "http://" + targetHost + ":" +
- targetPort + "/" + urlString );
+ url = new URL( "http://" + targetHost + ":" +
+ targetPort + "/" + urlString );
- listener.tableModel.setValueAt( targetHost, index+1,
- OUTHOST_COLUMN );
+ listener.tableModel.setValueAt( targetHost, index + 1,
+ OUTHOST_COLUMN );
bufferedData = bufferedData.substring( 0, start) +
- url.toExternalForm() +
- bufferedData.substring( end );
+ url.toExternalForm() +
+ bufferedData.substring( end );
targetHost = HTTPProxyHost ;
targetPort = HTTPProxyPort ;
}
}
- } else {
+ }
+ else {
//
// Change Host: header to point to correct host
//
byte[] b1 = new byte[1];
+
buf = new StringBuffer();
String s1;
String lastLine = null ;
- for ( ;; ) {
+ for ( ; ; ) {
int len ;
+
len = tmpIn1.read(b1, 0, 1);
if ( len == -1 )
- break ;
+ break ;
s1 = new String( b1 );
buf.append( s1 );
if ( b1[0] != '\n' )
- continue ;
+ continue ;
// we have a complete line
String line = buf.toString();
+
buf.setLength(0);
// check to see if we have found Host: header
if (line.startsWith("Host: ")) {
// we need to update the hostname to target host
String newHost = "Host: " + targetHost + "\r\n";
+
bufferedData = bufferedData.concat(newHost);
break ;
}
@@ -790,72 +867,93 @@
inputText.append( bufferedData );
s1 = bufferedData.substring( 0, 50 );
int i = s1.indexOf('\n');
- if ( i > 0 ) s1 = s1.substring(0,i-1);
- s1 = s1 + " " +
- " ";
- s1 = s1.substring(0,51);
- listener.tableModel.setValueAt( s1, index+1,
- REQ_COLUMN );
+
+ if ( i > 0 ) s1 = s1.substring(0, i - 1);
+ s1 = s1 + " " +
+ " ";
+ s1 = s1.substring(0, 51);
+ listener.tableModel.setValueAt( s1, index + 1,
+ REQ_COLUMN );
}
}
if ( targetPort == -1 ) targetPort = 80 ;
outSocket = new Socket(targetHost, targetPort );
-
+
tmpIn2 = outSocket.getInputStream();
tmpOut2 = outSocket.getOutputStream();
if ( bufferedData != null ) {
byte[] b = bufferedData.getBytes();
+
tmpOut2.write( b );
}
boolean format = listener.xmlFormatBox.isSelected();
- rr1 = new SocketRR( inSocket, tmpIn1, outSocket,
- tmpOut2, inputText, format,
- listener.tableModel, index+1 );
- rr2 = new SocketRR( outSocket, tmpIn2, inSocket,
- tmpOut1, outputText, format,
- null, 0 );
-
- while( !rr1.isDone() && !rr2.isDone() ) {
- // Only loop as long as the connection to the target
- // machine is available - once that's gone we can stop.
- // The old way, loop until both are closed, left us
- // looping forever since no one closed the 1st one.
- // while( !rr2.isDone() ) {
- Thread.sleep( 10 );
+ rr1 = new SocketRR(this, inSocket, tmpIn1, outSocket,
+ tmpOut2, inputText, format,
+ listener.tableModel, index + 1, "request:" );
+ rr2 = new SocketRR( this, outSocket, tmpIn2, inSocket,
+ tmpOut1, outputText, format,
+ null, 0, "response:" );
+
+ while ( rr1 != null || rr2 != null ) {
+ // Only loop as long as the connection to the target
+ // machine is available - once that's gone we can stop.
+ // The old way, loop until both are closed, left us
+ // looping forever since no one closed the 1st one.
+ // while( !rr2.isDone() )
+ if (null != rr1 && rr1.isDone()) {
+ if ( index >= 0 ) {
+ listener.tableModel.setValueAt(getMessage("resp00", "Resp"),
+ 1 + index, STATE_COLUMN );
+ rr1 = null;
+ }
+ }
+ if (null != rr2 && rr2.isDone()) {
+ if ( index >= 0 ) {
+ listener.tableModel.setValueAt(getMessage("req00", "Req"),
+ 1 + index, STATE_COLUMN );
+ rr2 = null;
+ }
+ }
+
+ // Thread.sleep( 10 );
+ synchronized ( this) {
+ wait(1000); //Safety just incase we're not told to wake up.
+ }
}
+
// System.out.println("Done ");
- rr1.halt();
- rr2.halt();
+ // rr1.halt();
+ // rr2.halt();
+
- rr1 = null ;
- rr2 = null ;
-
active = false ;
+
/*
- if ( inSocket != null ) {
- inSocket.close();
- inSocket = null ;
- }
- outSocket.close();
- outSocket = null ;
- */
+ if ( inSocket != null ) {
+ inSocket.close();
+ inSocket = null ;
+ }
+ outSocket.close();
+ outSocket = null ;
+ */
if ( index >= 0 ) {
- listener.tableModel.setValueAt(getMessage("done00","Done"),
- 1+index, STATE_COLUMN );
+ listener.tableModel.setValueAt(getMessage("done00", "Done"),
+ 1 + index, STATE_COLUMN );
}
}
- catch( Exception e ) {
+ catch ( Exception e ) {
StringWriter st = new StringWriter();
PrintWriter wr = new PrintWriter(st);
int index = listener.connections.indexOf( this );
+
if ( index >= 0 )
- listener.tableModel.setValueAt( getMessage("error00", "Error"), 1+index, STATE_COLUMN );
+ listener.tableModel.setValueAt( getMessage("error00", "Error"), 1 + index, STATE_COLUMN );
e.printStackTrace(wr);
wr.close();
outputText.append( st.toString() );
@@ -863,6 +961,10 @@
}
}
+ synchronized void wakeUp() {
+ notifyAll();
+ }
+
public void halt() {
try {
if ( rr1 != null ) rr1.halt();
@@ -872,24 +974,28 @@
if ( outSocket != null ) outSocket.close();
outSocket = null ;
}
- catch( Exception e ) {
+ catch ( Exception e ) {
e.printStackTrace();
}
}
public void remove() {
+ int index = -1;
+
try {
halt();
- int index = listener.connections.indexOf( this );
- listener.tableModel.removeRow( index+1 );
+ index = listener.connections.indexOf( this );
+ listener.tableModel.removeRow( index + 1 );
listener.connections.remove( index );
}
- catch( Exception e ) {
+ catch ( Exception e ) {
+ System.err.println("index:=" + index + this );
e.printStackTrace();
}
}
}
-
+
+
class Listener extends JPanel {
public Socket inputSocket = null ;
public Socket outputSocket = null ;
@@ -918,10 +1024,9 @@
final public Vector connections = new Vector();
- public Listener(JTabbedPane _notebook, String name,
- int listenPort, String host, int targetPort,
- boolean isProxy)
- {
+ public Listener(JTabbedPane _notebook, String name,
+ int listenPort, String host, int targetPort,
+ boolean isProxy) {
notebook = _notebook ;
if ( name == null ) name = getMessage("port01", "Port") + " " + listenPort ;
@@ -930,43 +1035,49 @@
// 1st component is just a row of labels and 1-line entry fields
/////////////////////////////////////////////////////////////////////
JPanel top = new JPanel();
+
top.setLayout( new BoxLayout(top, BoxLayout.X_AXIS) );
- top.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+ top.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
final String start = getMessage("start00", "Start");
+
top.add( stopButton = new JButton( start ) );
- top.add( Box.createRigidArea(new Dimension(5,0)) );
+ top.add( Box.createRigidArea(new Dimension(5, 0)) );
top.add( new JLabel( " " + getMessage("listenPort01", "Listen Port:") + " ", SwingConstants.RIGHT ) );
- top.add( portField = new JTextField( ""+listenPort, 4 ) );
+ top.add( portField = new JTextField( "" + listenPort, 4 ) );
top.add( new JLabel( " " + getMessage("host00", "Host:"), SwingConstants.RIGHT ) );
top.add( hostField = new JTextField( host, 30 ) );
top.add( new JLabel( " " + getMessage("port02", "Port:") + " ", SwingConstants.RIGHT ) );
- top.add( tPortField = new JTextField( ""+targetPort, 4 ) );
- top.add( Box.createRigidArea(new Dimension(5,0)) );
+ top.add( tPortField = new JTextField( "" + targetPort, 4 ) );
+ top.add( Box.createRigidArea(new Dimension(5, 0)) );
top.add( isProxyBox = new JCheckBox(getMessage("proxy00", "Proxy")) );
isProxyBox.addChangeListener( new BasicButtonListener(isProxyBox) {
- public void stateChanged(ChangeEvent event) {
- JCheckBox box = (JCheckBox) event.getSource();
- boolean state = box.isSelected();
- tPortField.setEnabled( !state );
- hostField.setEnabled( !state );
+ public void stateChanged(ChangeEvent event) {
+ JCheckBox box = (JCheckBox) event.getSource();
+ boolean state = box.isSelected();
+
+ tPortField.setEnabled( !state );
+ hostField.setEnabled( !state );
+ }
}
- });
+ );
+
isProxyBox.setSelected(isProxy);
portField.setEditable(false);
portField.setMaximumSize(new Dimension(50, Short.MAX_VALUE) );
hostField.setEditable(false);
- hostField.setMaximumSize(new Dimension(85,Short.MAX_VALUE) );
+ hostField.setMaximumSize(new Dimension(85, Short.MAX_VALUE) );
tPortField.setEditable(false);
- tPortField.setMaximumSize(new Dimension(50,Short.MAX_VALUE) );
+ tPortField.setMaximumSize(new Dimension(50, Short.MAX_VALUE) );
stopButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if ( getMessage("stop00", "Stop").equals(event.getActionCommand()) ) stop();
- if ( start.equals(event.getActionCommand()) ) start();
- };
- });
+ public void actionPerformed(ActionEvent event) {
+ if ( getMessage("stop00", "Stop").equals(event.getActionCommand()) ) stop();
+ if ( start.equals(event.getActionCommand()) ) start();
+ }
+ }
+ );
this.add( top, BorderLayout.NORTH );
@@ -974,106 +1085,125 @@
// and the request/response text areas on the bottom
/////////////////////////////////////////////////////////////////////
- tableModel = new DefaultTableModel(new String[] {getMessage("state00", "State"),
- getMessage("time00", "Time"),
- getMessage("requestHost00", "Request Host"),
- getMessage("targetHost", "Target Host"),
- getMessage("request00", "Request...")},
- 0 );
+ tableModel = new DefaultTableModel(new String[] {
+ getMessage("state00", "State"),
+ getMessage("time00", "Time"),
+ getMessage("requestHost00", "Request Host"),
+ getMessage("targetHost", "Target Host"),
+ getMessage("request00", "Request...")
+ } , 0 );
- connectionTable = new JTable(1,2);
+ connectionTable = new JTable(1, 2);
connectionTable.setModel( tableModel );
- connectionTable.setSelectionMode(ListSelectionModel.
- MULTIPLE_INTERVAL_SELECTION);
+ connectionTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// Reduce the STATE column and increase the REQ column
TableColumn col ;
+
col = connectionTable.getColumnModel().getColumn(STATE_COLUMN);
- col.setMaxWidth( col.getPreferredWidth()/2 );
+ col.setMaxWidth( col.getPreferredWidth() / 2 );
col = connectionTable.getColumnModel().getColumn(REQ_COLUMN);
- col.setPreferredWidth( col.getPreferredWidth()*2 );
-
+ col.setPreferredWidth( col.getPreferredWidth() * 2 );
+
ListSelectionModel sel = connectionTable.getSelectionModel();
+
sel.addListSelectionListener( new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent event) {
- if (event.getValueIsAdjusting()) return ;
- ListSelectionModel m = (ListSelectionModel) event.getSource();
- int divLoc = outPane.getDividerLocation();
- if (m.isSelectionEmpty()) {
- setLeft( new JLabel(" " + getMessage("wait00", "Waiting for Connection...") ) );
- setRight( new JLabel("") );
- removeButton.setEnabled(false);
- removeAllButton.setEnabled(false);
- saveButton.setEnabled(false);
- resendButton.setEnabled(false);
- }
- else {
- int row = m.getLeadSelectionIndex();
- if ( row == 0 ) {
- if ( connections.size() == 0 ) {
- setLeft(new JLabel(" " + getMessage("wait00", "Waiting for connection...")));
- setRight(new JLabel(""));
- removeButton.setEnabled(false);
- removeAllButton.setEnabled(false);
- saveButton.setEnabled(false);
- resendButton.setEnabled(false);
- }
- else {
- Connection conn = (Connection) connections.lastElement();
- setLeft( conn.inputScroll );
- setRight( conn.outputScroll );
- removeButton.setEnabled(false);
- removeAllButton.setEnabled(true);
- saveButton.setEnabled(true);
- resendButton.setEnabled(true);
- }
- }
- else {
- Connection conn = (Connection) connections.get(row-1);
- setLeft( conn.inputScroll );
- setRight( conn.outputScroll );
- removeButton.setEnabled(true);
- removeAllButton.setEnabled(true);
- saveButton.setEnabled(true);
- resendButton.setEnabled(true);
- }
- }
- outPane.setDividerLocation(divLoc);
- }} );
- tableModel.addRow( new Object[] { "---", getMessage("mostRecent00", "Most Recent"), "---", "---", "---" } );
+ public void valueChanged(ListSelectionEvent event) {
+ if (event.getValueIsAdjusting()) return ;
+ ListSelectionModel m = (ListSelectionModel) event.getSource();
+ int divLoc = outPane.getDividerLocation();
+
+ if (m.isSelectionEmpty()) {
+ setLeft( new JLabel(" " + getMessage("wait00", "Waiting for Connection...") ) );
+ setRight( new JLabel("") );
+ removeButton.setEnabled(false);
+ removeAllButton.setEnabled(false);
+ saveButton.setEnabled(false);
+ resendButton.setEnabled(false);
+ }
+ else {
+ int row = m.getLeadSelectionIndex();
+
+ if ( row == 0 ) {
+ if ( connections.size() == 0 ) {
+ setLeft(new JLabel(" " + getMessage("wait00", "Waiting for connection...")));
+ setRight(new JLabel(""));
+ removeButton.setEnabled(false);
+ removeAllButton.setEnabled(false);
+ saveButton.setEnabled(false);
+ resendButton.setEnabled(false);
+ }
+ else {
+ Connection conn = (Connection) connections.lastElement();
+
+ setLeft( conn.inputScroll );
+ setRight( conn.outputScroll );
+ removeButton.setEnabled(false);
+ removeAllButton.setEnabled(true);
+ saveButton.setEnabled(true);
+ resendButton.setEnabled(true);
+ }
+ }
+ else {
+ Connection conn = (Connection) connections.get(row - 1);
+
+ setLeft( conn.inputScroll );
+ setRight( conn.outputScroll );
+ removeButton.setEnabled(true);
+ removeAllButton.setEnabled(true);
+ saveButton.setEnabled(true);
+ resendButton.setEnabled(true);
+ }
+ }
+ outPane.setDividerLocation(divLoc);
+ }
+ }
+ );
+ tableModel.addRow( new Object[] {
+ "---", getMessage("mostRecent00", "Most Recent"), "---", "---", "---"
+ }
+ );
JPanel tablePane = new JPanel();
+
tablePane.setLayout( new BorderLayout() );
JScrollPane tableScrollPane = new JScrollPane( connectionTable );
+
tablePane.add( tableScrollPane, BorderLayout.CENTER );
JPanel buttons = new JPanel();
+
buttons.setLayout( new BoxLayout(buttons, BoxLayout.X_AXIS) );
- buttons.setBorder( BorderFactory.createEmptyBorder(5,5,5,5) );
+ buttons.setBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5) );
final String removeSelected = getMessage("removeSelected00", "Remove Selected");
+
buttons.add( removeButton = new JButton(removeSelected) );
- buttons.add( Box.createRigidArea(new Dimension(5,0)) );
+ buttons.add( Box.createRigidArea(new Dimension(5, 0)) );
final String removeAll = getMessage("removeAll00", "Remove All");
+
buttons.add( removeAllButton = new JButton(removeAll) );
tablePane.add( buttons, BorderLayout.SOUTH );
removeButton.setEnabled( false );
removeButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if ( removeSelected.equals(event.getActionCommand()) ) remove();
- };
- });
+ public void actionPerformed(ActionEvent event) {
+ if ( removeSelected.equals(event.getActionCommand()) ) remove();
+ }
+ }
+ );
removeAllButton.setEnabled( false );
removeAllButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if ( removeAll.equals(event.getActionCommand()) ) removeAll();
- };
- });
+ public void actionPerformed(ActionEvent event) {
+ if ( removeAll.equals(event.getActionCommand()) ) removeAll();
+ }
+ }
+ );
// Add Response Section
/////////////////////////////////////////////////////////////////////
JPanel pane2 = new JPanel();
+
pane2.setLayout( new BorderLayout() );
leftPanel = new JPanel();
@@ -1092,58 +1222,69 @@
pane2.add( outPane, BorderLayout.CENTER );
JPanel bottomButtons = new JPanel();
+
bottomButtons.setLayout( new BoxLayout(bottomButtons, BoxLayout.X_AXIS));
- bottomButtons.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+ bottomButtons.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
bottomButtons.add( xmlFormatBox = new JCheckBox( getMessage("xmlFormat00", "XML Format") ) );
- bottomButtons.add( Box.createRigidArea(new Dimension(5,0)) );
+ bottomButtons.add( Box.createRigidArea(new Dimension(5, 0)) );
final String save = getMessage("save00", "Save");
+
bottomButtons.add( saveButton = new JButton( save ) );
- bottomButtons.add( Box.createRigidArea(new Dimension(5,0)) );
+ bottomButtons.add( Box.createRigidArea(new Dimension(5, 0)) );
final String resend = getMessage("resend00", "Resend");
+
bottomButtons.add( resendButton = new JButton( resend ) );
- bottomButtons.add( Box.createRigidArea(new Dimension(5,0)) );
+ bottomButtons.add( Box.createRigidArea(new Dimension(5, 0)) );
final String switchStr = getMessage("switch00", "Switch Layout");
+
bottomButtons.add( switchButton = new JButton( switchStr ) );
bottomButtons.add( Box.createHorizontalGlue() );
final String close = getMessage("close00", "Close");
+
bottomButtons.add( closeButton = new JButton( close ) );
pane2.add( bottomButtons, BorderLayout.SOUTH );
saveButton.setEnabled( false );
saveButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if ( save.equals(event.getActionCommand()) ) save();
- };
- });
+ public void actionPerformed(ActionEvent event) {
+ if ( save.equals(event.getActionCommand()) ) save();
+ }
+ }
+ );
resendButton.setEnabled( false );
resendButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if ( resend.equals(event.getActionCommand()) ) resend();
- };
- });
+ public void actionPerformed(ActionEvent event) {
+ if ( resend.equals(event.getActionCommand()) ) resend();
+ }
+ }
+ );
switchButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if (switchStr.equals(event.getActionCommand()) ) {
- int v = outPane.getOrientation();
- if ( v == 0 ) // top/bottom
- outPane.setOrientation(1);
- else // left/right
- outPane.setOrientation(0);
- outPane.setDividerLocation(0.5);
+ public void actionPerformed(ActionEvent event) {
+ if (switchStr.equals(event.getActionCommand()) ) {
+ int v = outPane.getOrientation();
+
+ if ( v == 0 ) // top/bottom
+ outPane.setOrientation(1);
+ else // left/right
+ outPane.setOrientation(0);
+ outPane.setDividerLocation(0.5);
+ }
}
- };
- });
+ }
+ );
closeButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- if (close.equals(event.getActionCommand()) )
- close();
- };
- });
+ public void actionPerformed(ActionEvent event) {
+ if (close.equals(event.getActionCommand()) )
+ close();
+ }
+ }
+ );
JSplitPane pane1 = new JSplitPane( 0 );
+
pane1.setDividerSize(4);
pane1.setTopComponent( tablePane );
pane1.setBottomComponent( pane2 );
@@ -1152,11 +1293,11 @@
//
////////////////////////////////////////////////////////////////////
- sel.setSelectionInterval(0,0);
+ sel.setSelectionInterval(0, 0);
outPane.setDividerLocation( 150 );
notebook.addTab( name, this );
start();
- };
+ }
public void setLeft(Component left) {
leftPanel.remove(1);
@@ -1170,12 +1311,15 @@
public void start() {
int port = Integer.parseInt( portField.getText() );
- portField.setText( ""+port );
+
+ portField.setText( "" + port );
int i = notebook.indexOfComponent( this );
+
notebook.setTitleAt( i, getMessage("port01", "Port") + " " + port );
int tmp = Integer.parseInt( tPortField.getText() );
- tPortField.setText( ""+tmp );
+
+ tPortField.setText( "" + tmp );
sw = new SocketWaiter( this, port );
stopButton.setText( getMessage("stop00", "Stop") );
@@ -1195,6 +1339,7 @@
try {
for ( int i = 0 ; i < connections.size() ; i++ ) {
Connection conn = (Connection) connections.get( i );
+
conn.halt();
}
sw.halt();
@@ -1204,7 +1349,7 @@
tPortField.setEditable(true);
isProxyBox.setEnabled(true);
}
- catch( Exception e ) {
+ catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -1215,49 +1360,52 @@
int top = lsm.getMaxSelectionIndex();
for ( int i = top ; i >= bot ; i-- ) {
- ((Connection) connections.get(i-1)).remove();
+ ((Connection) connections.get(i - 1)).remove();
}
if ( bot > connections.size() ) bot = connections.size();
- lsm.setSelectionInterval(bot,bot);
+ lsm.setSelectionInterval(bot, bot);
}
public void removeAll() {
- while ( connections.size() > 0 )
- ((Connection)connections.get(0)).remove();
ListSelectionModel lsm = connectionTable.getSelectionModel();
lsm.clearSelection();
- lsm.setSelectionInterval(0,0);
+ while ( connections.size() > 0 )
+ ((Connection) connections.get(0)).remove();
+
+ lsm.setSelectionInterval(0, 0);
}
public void save() {
JFileChooser dialog = new JFileChooser( "." );
int rc = dialog.showSaveDialog( this );
+
if ( rc == JFileChooser.APPROVE_OPTION ) {
try {
File file = dialog.getSelectedFile();
FileOutputStream out = new FileOutputStream( file );
-
+
ListSelectionModel lsm = connectionTable.getSelectionModel();
+
rc = lsm.getLeadSelectionIndex();
if ( rc == 0 ) rc = connections.size();
- Connection conn = (Connection) connections.get( rc-1 );
-
+ Connection conn = (Connection) connections.get( rc - 1 );
+
rc = Integer.parseInt( portField.getText() );
out.write( (new String(getMessage("listenPort01", "Listen Port:") + " " + rc + "\n" )).getBytes() );
- out.write( (new String(getMessage("targetHost01", "Target Host:") + " " + hostField.getText() +
- "\n" )).getBytes() );
+ out.write( (new String(getMessage("targetHost01", "Target Host:") + " " + hostField.getText() +
+ "\n" )).getBytes() );
rc = Integer.parseInt( tPortField.getText() );
out.write( (new String(getMessage("targetPort01", "Target Port:") + " " + rc + "\n" )).getBytes() );
-
+
out.write( (new String("==== " + getMessage("request01", "Request") + " ====\n" )).getBytes() );
out.write( conn.inputText.getText().getBytes() );
-
+
out.write( (new String("==== " + getMessage("response00", "Response") + " ====\n" )).getBytes() );
out.write( conn.outputText.getText().getBytes() );
-
+
out.close();
}
- catch( Exception e ) {
+ catch ( Exception e ) {
e.printStackTrace();
}
}
@@ -1265,66 +1413,70 @@
public void resend() {
int rc ;
+
try {
ListSelectionModel lsm = connectionTable.getSelectionModel();
+
rc = lsm.getLeadSelectionIndex();
if ( rc == 0 ) rc = connections.size();
- Connection conn = (Connection) connections.get( rc-1 );
+ Connection conn = (Connection) connections.get( rc - 1 );
+
if ( rc > 0 ) {
- lsm.clearSelection();
- lsm.setSelectionInterval(0,0);
+ lsm.clearSelection();
+ lsm.setSelectionInterval(0, 0);
}
-
+
InputStream in = null ;
String text = conn.inputText.getText();
// Fix Content-Length HTTP headers
if ( text.startsWith("POST ") || text.startsWith("GET ") ) {
- System.err.println("IN CL" );
- int pos1, pos2, pos3 ;
- String body, headers, headers1, header2 ;
-
- pos3 = text.indexOf( "\n\n" );
- if ( pos3 == -1 ) {
- pos3 = text.indexOf( "\r\n\r\n" );
- if ( pos3 != -1 ) pos3 = pos3 + 4 ;
- }
- else
- pos3 += 2 ;
-
- headers = text.substring( 0, pos3 );
-
- pos1 = headers.indexOf( "Content-Length:" );
- System.err.println("pos1: "+ pos1 );
- System.err.println("pos3: "+ pos3 );
- if ( pos1 != -1 ) {
- int newLen = text.length()-pos3 ;
-
- pos2 = headers.indexOf( "\n", pos1 );
-
- System.err.println("CL: " + newLen );
- System.err.println("Hdrs: '" + headers + "'" );
- System.err.println("subTEXT: '" +
- text.substring(pos3,pos3+newLen)+"'");
- text = headers.substring(0,pos1) +
- "Content-Length: " + newLen + "\n" +
- headers.substring(pos2+1) +
- text.substring(pos3) ;
- System.err.println("\nTEXT: '" + text + "'" );
- }
+ System.err.println("IN CL" );
+ int pos1, pos2, pos3 ;
+ String body, headers, headers1, header2 ;
+
+ pos3 = text.indexOf( "\n\n" );
+ if ( pos3 == -1 ) {
+ pos3 = text.indexOf( "\r\n\r\n" );
+ if ( pos3 != -1 ) pos3 = pos3 + 4 ;
+ }
+ else
+ pos3 += 2 ;
+
+ headers = text.substring( 0, pos3 );
+
+ pos1 = headers.indexOf( "Content-Length:" );
+ System.err.println("pos1: " + pos1 );
+ System.err.println("pos3: " + pos3 );
+ if ( pos1 != -1 ) {
+ int newLen = text.length() - pos3 ;
+
+ pos2 = headers.indexOf( "\n", pos1 );
+
+ System.err.println("CL: " + newLen );
+ System.err.println("Hdrs: '" + headers + "'" );
+ System.err.println("subTEXT: '" +
+ text.substring(pos3, pos3 + newLen) + "'");
+ text = headers.substring(0, pos1) +
+ "Content-Length: " + newLen + "\n" +
+ headers.substring(pos2 + 1) +
+ text.substring(pos3) ;
+ System.err.println("\nTEXT: '" + text + "'" );
+ }
}
in = new ByteArrayInputStream( text.getBytes() );
new Connection( this, in );
}
- catch( Exception e ) {
+ catch ( Exception e ) {
e.printStackTrace();
}
}
- };
+ }
+
public tcpmon(int listenPort, String targetHost, int targetPort) {
- super( getMessage("tcpmon00", "TCPMonitor") );
+ super ( getMessage("tcpmon00", "TCPMonitor") );
notebook = new JTabbedPane();
this.getContentPane().add( notebook );
@@ -1333,20 +1485,22 @@
if ( listenPort != 0 ) {
Listener l = null ;
+
if ( targetHost == null )
- l= new Listener( notebook, null, listenPort,
- targetHost, targetPort, true );
+ l = new Listener( notebook, null, listenPort,
+ targetHost, targetPort, true );
else
- l = new Listener( notebook, null, listenPort,
- targetHost, targetPort, false );
+ l = new Listener( notebook, null, listenPort,
+ targetHost, targetPort, false );
notebook.setSelectedIndex( 1 );
l.HTTPProxyHost = System.getProperty( "http.proxyHost" );
if ( l.HTTPProxyHost != null && l.HTTPProxyHost.equals("") )
l.HTTPProxyHost = null ;
-
+
if ( l.HTTPProxyHost != null ) {
String tmp = System.getProperty( "http.proxyPort" );
+
if ( tmp != null && tmp.equals("") ) tmp = null ;
if ( tmp == null ) l.HTTPProxyPort = 80 ;
else l.HTTPProxyPort = Integer.parseInt( tmp );
@@ -1359,11 +1513,14 @@
}
protected void processWindowEvent(WindowEvent event) {
- switch( event.getID() ) {
- case WindowEvent.WINDOW_CLOSING: exit();
- break ;
- default: super.processWindowEvent(event);
- break ;
+ switch ( event.getID() ) {
+ case WindowEvent.WINDOW_CLOSING:
+ exit();
+ break ;
+
+ default:
+ super.processWindowEvent(event);
+ break ;
}
}
@@ -1382,11 +1539,13 @@
if ( args.length == 3 ) {
int p1 = Integer.parseInt( args[0] );
int p2 = Integer.parseInt( args[2] );
+
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new tcpmon( p1, args[1], p2 );
}
else if ( args.length == 1 ) {
int p1 = Integer.parseInt( args[0] );
+
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new tcpmon( p1, null, 0 );
}
@@ -1395,10 +1554,10 @@
}
else {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- new tcpmon(0,null,0);
+ new tcpmon(0, null, 0);
}
}
- catch( Throwable exp ) {
+ catch ( Throwable exp ) {
exp.printStackTrace();
}
}
1.2 +2 -0 xml-axis/java/src/org/apache/axis/utils/tcpmon.properties
Index: tcpmon.properties
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/utils/tcpmon.properties,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- tcpmon.properties 12 Nov 2001 21:49:55 -0000 1.1
+++ tcpmon.properties 27 May 2002 12:16:48 -0000 1.2
@@ -10,6 +10,8 @@
admin00=Admin
close00=Close
done00=Done
+resp00=Resp
+req00=Req
error00=Error
host00=Host:
hostname00=Hostname