home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / INTERNET / NETSCAP4.06 / CP32E406.EXE / nav40.z / ldap10.jar / netscape / ldap / LDAPSSLavaSocket.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-08-13  |  3.9 KB  |  144 lines

  1. package netscape.ldap;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.lang.reflect.Constructor;
  7. import java.lang.reflect.Method;
  8. import java.net.InetAddress;
  9. import java.net.Socket;
  10. import java.util.Hashtable;
  11.  
  12. class LDAPSSLavaSocket extends Socket {
  13.    private final boolean m_debug = true;
  14.    private Object m_socket;
  15.    private final String m_packageName = "crysec.SSL.SSLSocket";
  16.    private Hashtable m_methodLookup = new Hashtable();
  17.  
  18.    public LDAPSSLavaSocket(String var1, int var2) throws LDAPException {
  19.       try {
  20.          Class var3 = Class.forName("crysec.SSL.SSLSocket");
  21.          Constructor[] var4 = var3.getConstructors();
  22.  
  23.          for(int var5 = 0; var5 < var4.length; ++var5) {
  24.             Class[] var6 = var4[var5].getParameterTypes();
  25.             if (var6.length == 2 && var6[0].getName().equals("java.lang.String") && var6[1].getName().equals("int")) {
  26.                Object[] var7 = new Object[]{var1, new Integer(var2)};
  27.                this.m_socket = var4[var5].newInstance(var7);
  28.                return;
  29.             }
  30.          }
  31.  
  32.          throw new LDAPException("No appropriate constructor in crysec.SSL.SSLSocket", 89);
  33.       } catch (ClassNotFoundException var8) {
  34.          throw new LDAPException("Class crysec.SSL.SSLSocket not found", 80);
  35.       } catch (Exception var9) {
  36.          throw new LDAPException("Failed to create SSL socket", 91);
  37.       }
  38.    }
  39.  
  40.    public InputStream getInputStream() {
  41.       try {
  42.          Object var1 = this.invokeMethod(this.m_socket, "getInputStream", (Object[])null);
  43.          return (InputStream)var1;
  44.       } catch (LDAPException var2) {
  45.          this.printDebug(var2.toString());
  46.          return null;
  47.       }
  48.    }
  49.  
  50.    public OutputStream getOutputStream() {
  51.       try {
  52.          Object var1 = this.invokeMethod(this.m_socket, "getOutputStream", (Object[])null);
  53.          return (OutputStream)var1;
  54.       } catch (LDAPException var2) {
  55.          this.printDebug(var2.toString());
  56.          return null;
  57.       }
  58.    }
  59.  
  60.    public void close() throws IOException {
  61.       try {
  62.          this.invokeMethod(this.m_socket, "close", (Object[])null);
  63.       } catch (LDAPException var2) {
  64.          this.printDebug(var2.toString());
  65.       }
  66.    }
  67.  
  68.    public void close(boolean var1) throws IOException {
  69.       try {
  70.          Object[] var2 = new Object[]{new Boolean(var1)};
  71.          this.invokeMethod(this.m_socket, "close", var2);
  72.       } catch (LDAPException var3) {
  73.          this.printDebug(var3.toString());
  74.       }
  75.    }
  76.  
  77.    public InetAddress getInetAddress() {
  78.       try {
  79.          Object var1 = this.invokeMethod(this.m_socket, "getInetAddress", (Object[])null);
  80.          return (InetAddress)var1;
  81.       } catch (LDAPException var2) {
  82.          this.printDebug(var2.toString());
  83.          return null;
  84.       }
  85.    }
  86.  
  87.    public int getLocalPort() {
  88.       try {
  89.          Object var1 = this.invokeMethod(this.m_socket, "getLocalPort", (Object[])null);
  90.          return (Integer)var1;
  91.       } catch (LDAPException var2) {
  92.          this.printDebug(var2.toString());
  93.          return -1;
  94.       }
  95.    }
  96.  
  97.    public int getPort() {
  98.       try {
  99.          Object var1 = this.invokeMethod(this.m_socket, "getPort", (Object[])null);
  100.          return (Integer)var1;
  101.       } catch (LDAPException var2) {
  102.          this.printDebug(var2.toString());
  103.          return -1;
  104.       }
  105.    }
  106.  
  107.    private Object invokeMethod(Object var1, String var2, Object[] var3) throws LDAPException {
  108.       try {
  109.          Method var4 = this.getMethod(var2);
  110.          return var4 != null ? var4.invoke(var1, var3) : null;
  111.       } catch (Exception var5) {
  112.          throw new LDAPException("Invoking " + var2 + ": " + ((Throwable)var5).toString(), 89);
  113.       }
  114.    }
  115.  
  116.    private Method getMethod(String var1) throws LDAPException {
  117.       try {
  118.          Object var2 = null;
  119.          Method var7;
  120.          if ((var7 = (Method)this.m_methodLookup.get(var1)) != null) {
  121.             return var7;
  122.          } else {
  123.             Class var3 = Class.forName("crysec.SSL.SSLSocket");
  124.             Method[] var4 = var3.getMethods();
  125.  
  126.             for(int var5 = 0; var5 < var4.length; ++var5) {
  127.                if (var4[var5].getName().equals(var1)) {
  128.                   this.m_methodLookup.put(var1, var4[var5]);
  129.                   return var4[var5];
  130.                }
  131.             }
  132.  
  133.             throw new LDAPException("Method " + var1 + " not found in " + "crysec.SSL.SSLSocket");
  134.          }
  135.       } catch (ClassNotFoundException var6) {
  136.          throw new LDAPException("Class crysec.SSL.SSLSocket not found");
  137.       }
  138.    }
  139.  
  140.    private void printDebug(String var1) {
  141.       System.out.println(var1);
  142.    }
  143. }
  144.