home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / allaire / cfide / CFNetRouter.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-12  |  7.4 KB  |  208 lines

  1. package allaire.cfide;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.net.MalformedURLException;
  7. import java.net.URL;
  8. import java.net.URLConnection;
  9. import netscape.application.AWTCompatibility;
  10. import netscape.util.Enumeration;
  11. import netscape.util.Vector;
  12.  
  13. public class CFNetRouter {
  14.    private String m_strUserName;
  15.    private String m_strPassword;
  16.    private static final String typeBoolean = "BOOL:";
  17.    private static final String typeChar = "CHAR:";
  18.    private static final String typeDouble = "DBL:";
  19.    private static final String typeInt = "INT:";
  20.    private static final String typeLong = "LONG:";
  21.    private static final String typeString = "STR:";
  22.    private static final String typeVector = "VECT:";
  23.  
  24.    CFNetRouter(String strUserName, String strPassword) {
  25.       this.m_strUserName = new String(strUserName);
  26.       this.m_strPassword = new String(strPassword);
  27.    }
  28.  
  29.    int addArgument(StringBuffer strBuffer, Vector vectParms) {
  30.       int argCounter = 1;
  31.       int result = 0;
  32.  
  33.       for(Enumeration enumParms = vectParms.elements(); enumParms.hasMoreElements() && result == 0; ++argCounter) {
  34.          Object objCurrent = enumParms.nextElement();
  35.          String strType = "";
  36.          String strValue = objCurrent.toString();
  37.          Integer iSize = new Integer(strValue.length());
  38.          if (objCurrent instanceof Boolean) {
  39.             strType = "BOOL:";
  40.          } else if (objCurrent instanceof Character) {
  41.             strType = "CHAR:";
  42.          } else if (!(objCurrent instanceof Double) && !(objCurrent instanceof Float)) {
  43.             if (objCurrent instanceof Integer) {
  44.                strType = "INT:";
  45.             } else if (objCurrent instanceof Long) {
  46.                strType = "LONG:";
  47.             } else if (objCurrent instanceof String) {
  48.                strType = "STR:";
  49.             } else if (objCurrent instanceof Vector) {
  50.                strType = "VECT:";
  51.                Vector vectVector = (Vector)objCurrent;
  52.                StringBuffer strVectorBuffer = new StringBuffer("");
  53.                result = this.addArgument(strVectorBuffer, vectVector);
  54.                iSize = new Integer(vectVector.size());
  55.                strValue = strVectorBuffer.toString();
  56.             } else {
  57.                result = argCounter;
  58.             }
  59.          } else {
  60.             strType = "DBL:";
  61.          }
  62.  
  63.          strBuffer.append(strType);
  64.          strBuffer.append(iSize.toString() + ":" + strValue);
  65.       }
  66.  
  67.       return result;
  68.    }
  69.  
  70.    void changePassword(String strPassword) {
  71.       this.m_strPassword = strPassword;
  72.    }
  73.  
  74.    Vector callRPC(String strFunctionName) throws CFRPCParameterException, CFRPCServerException {
  75.       Vector vectParms = new Vector();
  76.       return this.processRPC(strFunctionName, vectParms);
  77.    }
  78.  
  79.    Vector callRPC(String strFunctionName, Object objParm1) throws CFRPCParameterException, CFRPCServerException {
  80.       Vector vectParms = new Vector();
  81.       vectParms.addElement(objParm1);
  82.       return this.processRPC(strFunctionName, vectParms);
  83.    }
  84.  
  85.    Vector callRPC(String strFunctionName, Object objParm1, Object objParm2) throws CFRPCParameterException, CFRPCServerException {
  86.       Vector vectParms = new Vector();
  87.       vectParms.addElement(objParm1);
  88.       vectParms.addElement(objParm2);
  89.       return this.processRPC(strFunctionName, vectParms);
  90.    }
  91.  
  92.    Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3) throws CFRPCParameterException, CFRPCServerException {
  93.       Vector vectParms = new Vector();
  94.       vectParms.addElement(objParm1);
  95.       vectParms.addElement(objParm2);
  96.       vectParms.addElement(objParm3);
  97.       return this.processRPC(strFunctionName, vectParms);
  98.    }
  99.  
  100.    Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4) throws CFRPCParameterException, CFRPCServerException {
  101.       Vector vectParms = new Vector();
  102.       vectParms.addElement(objParm1);
  103.       vectParms.addElement(objParm2);
  104.       vectParms.addElement(objParm3);
  105.       vectParms.addElement(objParm4);
  106.       return this.processRPC(strFunctionName, vectParms);
  107.    }
  108.  
  109.    Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4, Object objParm5) throws CFRPCParameterException, CFRPCServerException {
  110.       Vector vectParms = new Vector();
  111.       vectParms.addElement(objParm1);
  112.       vectParms.addElement(objParm2);
  113.       vectParms.addElement(objParm3);
  114.       vectParms.addElement(objParm4);
  115.       vectParms.addElement(objParm5);
  116.       return this.processRPC(strFunctionName, vectParms);
  117.    }
  118.  
  119.    Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4, Object objParm5, Object objParm6) throws CFRPCParameterException, CFRPCServerException {
  120.       Vector vectParms = new Vector();
  121.       vectParms.addElement(objParm1);
  122.       vectParms.addElement(objParm2);
  123.       vectParms.addElement(objParm3);
  124.       vectParms.addElement(objParm4);
  125.       vectParms.addElement(objParm5);
  126.       vectParms.addElement(objParm6);
  127.       return this.processRPC(strFunctionName, vectParms);
  128.    }
  129.  
  130.    Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4, Object objParm5, Object objParm6, Object objParm7) throws CFRPCParameterException, CFRPCServerException {
  131.       Vector vectParms = new Vector();
  132.       vectParms.addElement(objParm1);
  133.       vectParms.addElement(objParm2);
  134.       vectParms.addElement(objParm3);
  135.       vectParms.addElement(objParm4);
  136.       vectParms.addElement(objParm5);
  137.       vectParms.addElement(objParm6);
  138.       vectParms.addElement(objParm7);
  139.       return this.processRPC(strFunctionName, vectParms);
  140.    }
  141.  
  142.    Vector processRPC(String strFunctionName, Vector vectParms) throws CFRPCParameterException, CFRPCServerException {
  143.       Vector vectResult = new Vector();
  144.       StringBuffer strBuffer = new StringBuffer("");
  145.       Integer iSize = new Integer(vectParms.size() + 1);
  146.       strBuffer.append(iSize.toString() + ":");
  147.       vectParms.addElement((Object)this.m_strPassword);
  148.       int argResult = this.addArgument(strBuffer, vectParms);
  149.       if (argResult != 0) {
  150.          throw new CFRPCParameterException(argResult);
  151.       } else {
  152.          URL urlOriginal = AWTCompatibility.awtApplet().getDocumentBase();
  153.          String hostName = urlOriginal.getHost();
  154.  
  155.          try {
  156.             String urlString = "http://" + hostName + "/CFIDE/main/ide.cfm?CFSRV=IDE&ACTION=" + strFunctionName;
  157.             URL urlNew = new URL(urlString);
  158.             URLConnection connNew = urlNew.openConnection();
  159.             connNew.setDoOutput(true);
  160.             String strRPCPacket = strBuffer.toString();
  161.             int iBufferLength = strRPCPacket.length();
  162.             byte[] byteServerInput = new byte[iBufferLength];
  163.             strRPCPacket.getBytes(0, iBufferLength, byteServerInput, 0);
  164.             OutputStream dsOut = connNew.getOutputStream();
  165.             dsOut.write(byteServerInput, 0, iBufferLength);
  166.             InputStream dsIn = connNew.getInputStream();
  167.             byte[] byteServerOutput = new byte[100];
  168.             StringBuffer strOutputBuffer = new StringBuffer("");
  169.  
  170.             for(int bytesRead = dsIn.read(byteServerOutput, 0, 100); bytesRead != -1; bytesRead = dsIn.read(byteServerOutput, 0, 100)) {
  171.                if (bytesRead > 0) {
  172.                   String strConversion = new String(byteServerOutput, 0, 0, bytesRead);
  173.                   strOutputBuffer.append(strConversion);
  174.                }
  175.             }
  176.  
  177.             String strResult = strOutputBuffer.toString();
  178.             int findChar = strResult.indexOf(":");
  179.             if (findChar == -1) {
  180.                throw new CFRPCServerException("Malformed server return");
  181.             } else {
  182.                Integer numberOfResults = new Integer(strResult.substring(0, findChar));
  183.                int argCount = numberOfResults;
  184.                if (argCount < 0) {
  185.                   throw new CFRPCServerException(argCount, strResult.substring(findChar + 1));
  186.                } else {
  187.                   strResult = strResult.substring(findChar + 1);
  188.  
  189.                   for(int counter = 0; counter < numberOfResults; ++counter) {
  190.                      findChar = strResult.indexOf(":");
  191.                      Integer argLength = new Integer(strResult.substring(0, findChar));
  192.                      String argValue = strResult.substring(findChar + 1, findChar + argLength + 1);
  193.                      vectResult.addElement(argValue);
  194.                      strResult = strResult.substring(findChar + argLength + 1);
  195.                   }
  196.  
  197.                   return vectResult;
  198.                }
  199.             }
  200.          } catch (MalformedURLException var28) {
  201.             throw new CFRPCServerException("Malformed URL");
  202.          } catch (IOException var29) {
  203.             throw new CFRPCServerException("IO error on server communication");
  204.          }
  205.       }
  206.    }
  207. }
  208.