home *** CD-ROM | disk | FTP | other *** search
- package allaire.cfide;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLConnection;
- import netscape.application.AWTCompatibility;
- import netscape.util.Enumeration;
- import netscape.util.Vector;
-
- public class CFNetRouter {
- private String m_strUserName;
- private String m_strPassword;
- private static final String typeBoolean = "BOOL:";
- private static final String typeChar = "CHAR:";
- private static final String typeDouble = "DBL:";
- private static final String typeInt = "INT:";
- private static final String typeLong = "LONG:";
- private static final String typeString = "STR:";
- private static final String typeVector = "VECT:";
-
- CFNetRouter(String strUserName, String strPassword) {
- this.m_strUserName = new String(strUserName);
- this.m_strPassword = new String(strPassword);
- }
-
- int addArgument(StringBuffer strBuffer, Vector vectParms) {
- int argCounter = 1;
- int result = 0;
-
- for(Enumeration enumParms = vectParms.elements(); enumParms.hasMoreElements() && result == 0; ++argCounter) {
- Object objCurrent = enumParms.nextElement();
- String strType = "";
- String strValue = objCurrent.toString();
- Integer iSize = new Integer(strValue.length());
- if (objCurrent instanceof Boolean) {
- strType = "BOOL:";
- } else if (objCurrent instanceof Character) {
- strType = "CHAR:";
- } else if (!(objCurrent instanceof Double) && !(objCurrent instanceof Float)) {
- if (objCurrent instanceof Integer) {
- strType = "INT:";
- } else if (objCurrent instanceof Long) {
- strType = "LONG:";
- } else if (objCurrent instanceof String) {
- strType = "STR:";
- } else if (objCurrent instanceof Vector) {
- strType = "VECT:";
- Vector vectVector = (Vector)objCurrent;
- StringBuffer strVectorBuffer = new StringBuffer("");
- result = this.addArgument(strVectorBuffer, vectVector);
- iSize = new Integer(vectVector.size());
- strValue = strVectorBuffer.toString();
- } else {
- result = argCounter;
- }
- } else {
- strType = "DBL:";
- }
-
- strBuffer.append(strType);
- strBuffer.append(iSize.toString() + ":" + strValue);
- }
-
- return result;
- }
-
- void changePassword(String strPassword) {
- this.m_strPassword = strPassword;
- }
-
- Vector callRPC(String strFunctionName) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1, Object objParm2) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- vectParms.addElement(objParm2);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- vectParms.addElement(objParm2);
- vectParms.addElement(objParm3);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- vectParms.addElement(objParm2);
- vectParms.addElement(objParm3);
- vectParms.addElement(objParm4);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4, Object objParm5) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- vectParms.addElement(objParm2);
- vectParms.addElement(objParm3);
- vectParms.addElement(objParm4);
- vectParms.addElement(objParm5);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4, Object objParm5, Object objParm6) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- vectParms.addElement(objParm2);
- vectParms.addElement(objParm3);
- vectParms.addElement(objParm4);
- vectParms.addElement(objParm5);
- vectParms.addElement(objParm6);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector callRPC(String strFunctionName, Object objParm1, Object objParm2, Object objParm3, Object objParm4, Object objParm5, Object objParm6, Object objParm7) throws CFRPCParameterException, CFRPCServerException {
- Vector vectParms = new Vector();
- vectParms.addElement(objParm1);
- vectParms.addElement(objParm2);
- vectParms.addElement(objParm3);
- vectParms.addElement(objParm4);
- vectParms.addElement(objParm5);
- vectParms.addElement(objParm6);
- vectParms.addElement(objParm7);
- return this.processRPC(strFunctionName, vectParms);
- }
-
- Vector processRPC(String strFunctionName, Vector vectParms) throws CFRPCParameterException, CFRPCServerException {
- Vector vectResult = new Vector();
- StringBuffer strBuffer = new StringBuffer("");
- Integer iSize = new Integer(vectParms.size() + 1);
- strBuffer.append(iSize.toString() + ":");
- vectParms.addElement((Object)this.m_strPassword);
- int argResult = this.addArgument(strBuffer, vectParms);
- if (argResult != 0) {
- throw new CFRPCParameterException(argResult);
- } else {
- URL urlOriginal = AWTCompatibility.awtApplet().getDocumentBase();
- String hostName = urlOriginal.getHost();
-
- try {
- String urlString = "http://" + hostName + "/CFIDE/main/ide.cfm?CFSRV=IDE&ACTION=" + strFunctionName;
- URL urlNew = new URL(urlString);
- URLConnection connNew = urlNew.openConnection();
- connNew.setDoOutput(true);
- String strRPCPacket = strBuffer.toString();
- int iBufferLength = strRPCPacket.length();
- byte[] byteServerInput = new byte[iBufferLength];
- strRPCPacket.getBytes(0, iBufferLength, byteServerInput, 0);
- OutputStream dsOut = connNew.getOutputStream();
- dsOut.write(byteServerInput, 0, iBufferLength);
- InputStream dsIn = connNew.getInputStream();
- byte[] byteServerOutput = new byte[100];
- StringBuffer strOutputBuffer = new StringBuffer("");
-
- for(int bytesRead = dsIn.read(byteServerOutput, 0, 100); bytesRead != -1; bytesRead = dsIn.read(byteServerOutput, 0, 100)) {
- if (bytesRead > 0) {
- String strConversion = new String(byteServerOutput, 0, 0, bytesRead);
- strOutputBuffer.append(strConversion);
- }
- }
-
- String strResult = strOutputBuffer.toString();
- int findChar = strResult.indexOf(":");
- if (findChar == -1) {
- throw new CFRPCServerException("Malformed server return");
- } else {
- Integer numberOfResults = new Integer(strResult.substring(0, findChar));
- int argCount = numberOfResults;
- if (argCount < 0) {
- throw new CFRPCServerException(argCount, strResult.substring(findChar + 1));
- } else {
- strResult = strResult.substring(findChar + 1);
-
- for(int counter = 0; counter < numberOfResults; ++counter) {
- findChar = strResult.indexOf(":");
- Integer argLength = new Integer(strResult.substring(0, findChar));
- String argValue = strResult.substring(findChar + 1, findChar + argLength + 1);
- vectResult.addElement(argValue);
- strResult = strResult.substring(findChar + argLength + 1);
- }
-
- return vectResult;
- }
- }
- } catch (MalformedURLException var28) {
- throw new CFRPCServerException("Malformed URL");
- } catch (IOException var29) {
- throw new CFRPCServerException("IO error on server communication");
- }
- }
- }
- }
-