snichol     2003/06/19 20:38:35

  Modified:    java/src/org/apache/soap/util/net Relay.java TcpTunnel.java
                        TcpTunnelGui.java
  Log:
  Add TODO comment about finding workaround for TextArea#append bug in
  JDK later than 1.2.2 (on Win32, at least).
  Allow character encoding to assume for captured/displayed data to be
  specified on command line.  If not specified, defaults to the previously
  hard-coded 8859_1.  In my experience, UTF8 is much more common.
  
  Revision  Changes    Path
  1.6       +29 -1     xml-soap/java/src/org/apache/soap/util/net/Relay.java
  
  Index: Relay.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/util/net/Relay.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Relay.java        11 Sep 2002 17:26:11 -0000      1.5
  +++ Relay.java        20 Jun 2003 03:38:35 -0000      1.6
  @@ -76,6 +76,7 @@
     byte buf[] = new byte[BUFSIZ];
     TextArea ta;
     OutputStream os;
  +  String enc = "8859_1";
   
     Relay (InputStream in, OutputStream out, TextArea ta) {
       this.in = in;
  @@ -89,6 +90,24 @@
       this.os = os;
     }
   
  +  Relay (InputStream in, OutputStream out, TextArea ta, String enc) {
  +    this.in = in;
  +    this.out = out;
  +    this.ta = ta;
  +    this.enc = enc;
  +  }
  +
  +  Relay (InputStream in, OutputStream out, OutputStream os, String enc) {
  +    this.in = in;
  +    this.out = out;
  +    this.os = os;
  +    this.enc = enc;
  +  }
  +
  +  public String getEncoding() {
  +    return enc;
  +  }
  +
     public void run () {
       int n;
   
  @@ -97,7 +116,12 @@
           out.write (buf, 0, n);
           out.flush ();
           if (ta != null) {
  -          ta.append (new String (buf, 0, n, "8859_1"));
  +          // TODO: There is a "feature" of JDK later than 1.2.2 on Win32
  +          // that append does not quite correctly work.  Specifically,
  +          // getText delegates to the peer, which returns a string in
  +          // which CR/LF are turned into just CR, so the length is off
  +          // and text is actually inserted prior to the final characters.
  +          ta.append (new String (buf, 0, n, enc));
           }
           if (os != null)
             os.write(buf, 0, n);
  @@ -110,5 +134,9 @@
         } catch (IOException e) {
         }
       }
  +  }
  +
  +  public void setEncoding(String enc) {
  +    this.enc = enc;
     }
   }
  
  
  
  1.5       +11 -4     xml-soap/java/src/org/apache/soap/util/net/TcpTunnel.java
  
  Index: TcpTunnel.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/util/net/TcpTunnel.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TcpTunnel.java    11 Sep 2002 17:26:11 -0000      1.4
  +++ TcpTunnel.java    20 Jun 2003 03:38:35 -0000      1.5
  @@ -69,8 +69,8 @@
    */
   public class TcpTunnel {
     public static void main (String args[]) throws IOException {
  -    if (args.length != 3) {
  -      System.err.println ("Usage: java TcpTunnel listenport tunnelhost tunnelport");
  +    if (args.length != 3 && args.length != 4) {
  +      System.err.println ("Usage: java TcpTunnel listenport tunnelhost tunnelport 
[encoding]");
         System.exit (1);
       }
   
  @@ -78,6 +78,13 @@
       String tunnelhost = args[1];
       int tunnelport = Integer.parseInt (args[2]);
   
  +    String enc;
  +    if (args.length == 4) {
  +      enc = args[3];
  +    } else {
  +      enc = "8859_1";
  +    }
  +
       System.out.println ("TcpTunnel: ready to rock and roll on port " + 
                           listenport);
   
  @@ -94,8 +101,8 @@
                             tunnelhost);
   
         // relay the stuff thru
  -      new Relay (sc.getInputStream(), st.getOutputStream(), System.out).start ();
  -      new Relay (st.getInputStream(), sc.getOutputStream(), System.out).start ();
  +      new Relay (sc.getInputStream(), st.getOutputStream(), System.out, enc).start 
();
  +      new Relay (st.getInputStream(), sc.getOutputStream(), System.out, enc).start 
();
   
         // that's it .. they're off; now I go back to my stuff.
       }
  
  
  
  1.4       +6 -4      xml-soap/java/src/org/apache/soap/util/net/TcpTunnelGui.java
  
  Index: TcpTunnelGui.java
  ===================================================================
  RCS file: /home/cvs/xml-soap/java/src/org/apache/soap/util/net/TcpTunnelGui.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TcpTunnelGui.java 1 Sep 2000 03:53:06 -0000       1.3
  +++ TcpTunnelGui.java 20 Jun 2003 03:38:35 -0000      1.4
  @@ -164,9 +164,9 @@
     }
   
     public static void main (String args[]) throws IOException {
  -    if (args.length != 3) {
  +    if (args.length != 3 && args.length != 4) {
         System.err.println ("Usage: java TcpTunnelGui listenport tunnelhost " +
  -                          "tunnelport");
  +                          "tunnelport [encoding]");
         System.exit (1);
       }
       
  @@ -176,6 +176,8 @@
       final TcpTunnelGui ttg = 
         new TcpTunnelGui (listenPort, tunnelHost, tunnelPort);
   
  +    final String enc = (args.length == 4) ? args[3] : "8859_1";
  +
       // create the server thread
       Thread server = new Thread () {
         public void run () {
  @@ -204,9 +206,9 @@
               
               // relay the stuff thru
               new Relay (sc.getInputStream (), st.getOutputStream (),
  -                       ttg.getListenText ()).start ();
  +                       ttg.getListenText (), enc).start ();
               new Relay (st.getInputStream (), sc.getOutputStream (),
  -                       ttg.getTunnelText ()).start ();
  +                       ttg.getTunnelText (), enc).start ();
               
               // that's it .. they're off; now I go back to my stuff.
             } catch (Exception ee) {
  
  
  

Reply via email to