home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Method;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.util.Hashtable;
-
- class LDAPSSLavaSocket extends Socket {
- private final boolean m_debug = true;
- private Object m_socket;
- private final String m_packageName = "crysec.SSL.SSLSocket";
- private Hashtable m_methodLookup = new Hashtable();
-
- public LDAPSSLavaSocket(String var1, int var2) throws LDAPException {
- try {
- Class var3 = Class.forName("crysec.SSL.SSLSocket");
- Constructor[] var4 = var3.getConstructors();
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- Class[] var6 = var4[var5].getParameterTypes();
- if (var6.length == 2 && var6[0].getName().equals("java.lang.String") && var6[1].getName().equals("int")) {
- Object[] var7 = new Object[]{var1, new Integer(var2)};
- this.m_socket = var4[var5].newInstance(var7);
- return;
- }
- }
-
- throw new LDAPException("No appropriate constructor in crysec.SSL.SSLSocket", 89);
- } catch (ClassNotFoundException var8) {
- throw new LDAPException("Class crysec.SSL.SSLSocket not found", 80);
- } catch (Exception var9) {
- throw new LDAPException("Failed to create SSL socket", 91);
- }
- }
-
- public InputStream getInputStream() {
- try {
- Object var1 = this.invokeMethod(this.m_socket, "getInputStream", (Object[])null);
- return (InputStream)var1;
- } catch (LDAPException var2) {
- this.printDebug(var2.toString());
- return null;
- }
- }
-
- public OutputStream getOutputStream() {
- try {
- Object var1 = this.invokeMethod(this.m_socket, "getOutputStream", (Object[])null);
- return (OutputStream)var1;
- } catch (LDAPException var2) {
- this.printDebug(var2.toString());
- return null;
- }
- }
-
- public void close() throws IOException {
- try {
- this.invokeMethod(this.m_socket, "close", (Object[])null);
- } catch (LDAPException var2) {
- this.printDebug(var2.toString());
- }
- }
-
- public void close(boolean var1) throws IOException {
- try {
- Object[] var2 = new Object[]{new Boolean(var1)};
- this.invokeMethod(this.m_socket, "close", var2);
- } catch (LDAPException var3) {
- this.printDebug(var3.toString());
- }
- }
-
- public InetAddress getInetAddress() {
- try {
- Object var1 = this.invokeMethod(this.m_socket, "getInetAddress", (Object[])null);
- return (InetAddress)var1;
- } catch (LDAPException var2) {
- this.printDebug(var2.toString());
- return null;
- }
- }
-
- public int getLocalPort() {
- try {
- Object var1 = this.invokeMethod(this.m_socket, "getLocalPort", (Object[])null);
- return (Integer)var1;
- } catch (LDAPException var2) {
- this.printDebug(var2.toString());
- return -1;
- }
- }
-
- public int getPort() {
- try {
- Object var1 = this.invokeMethod(this.m_socket, "getPort", (Object[])null);
- return (Integer)var1;
- } catch (LDAPException var2) {
- this.printDebug(var2.toString());
- return -1;
- }
- }
-
- private Object invokeMethod(Object var1, String var2, Object[] var3) throws LDAPException {
- try {
- Method var4 = this.getMethod(var2);
- return var4 != null ? var4.invoke(var1, var3) : null;
- } catch (Exception var5) {
- throw new LDAPException("Invoking " + var2 + ": " + ((Throwable)var5).toString(), 89);
- }
- }
-
- private Method getMethod(String var1) throws LDAPException {
- try {
- Object var2 = null;
- Method var7;
- if ((var7 = (Method)this.m_methodLookup.get(var1)) != null) {
- return var7;
- } else {
- Class var3 = Class.forName("crysec.SSL.SSLSocket");
- Method[] var4 = var3.getMethods();
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- if (var4[var5].getName().equals(var1)) {
- this.m_methodLookup.put(var1, var4[var5]);
- return var4[var5];
- }
- }
-
- throw new LDAPException("Method " + var1 + " not found in " + "crysec.SSL.SSLSocket");
- }
- } catch (ClassNotFoundException var6) {
- throw new LDAPException("Class crysec.SSL.SSLSocket not found");
- }
- }
-
- private void printDebug(String var1) {
- System.out.println(var1);
- }
- }
-