comminterview.java

来自「cqME :java framework for TCK test.」· Java 代码 · 共 363 行

JAVA
363
字号
/* * $Id$ * * Copyright 1996-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. * */package com.sun.tck.j2me.interview;import java.util.Map;import com.sun.interview.Interview;import com.sun.javatest.InterviewParameters;import com.sun.interview.Question;import com.sun.interview.IntQuestion;import com.sun.interview.NullQuestion;import com.sun.interview.FinalQuestion;import com.sun.interview.YesNoQuestion;import com.sun.interview.ChoiceQuestion;import com.sun.interview.StringQuestion;import com.sun.tck.j2me.utils.Utils;/** * Interview for the communication service. * <p> * The exported value of <code>httpHost</code> JavaTest environment variable * will be converted to RFC 2732 format if the value is a literal IPv6 address.  */public class CommInterview extends Interview {    public static final int CLDC_MODE  = 1;    public static final int CDC_MODE  = 2;    static final int HTTP_TRANSPORT = TransportConstants.HTTP_TRANSPORT;    static final int UDP_TRANSPORT = TransportConstants.UDP_TRANSPORT;    static final int TCP_IP_TRANSPORT = TransportConstants.TCP_IP_TRANSPORT;    static final int COMM_TRANSPORT = TransportConstants.COMM_TRANSPORT;    private static final String HTTP_CONNECTION = "httpConnection";    private static final String SOCKET_CONNECTION = "socketConnection";    private static final String DATAGRAM_CONNECTION = "datagramConnection";    private static final String COMM_CONNECTION = "commConnection";    private static final String CUSTOM_CONNECTION = "customConnection";    private int iMode;    private boolean bDistrMode;    private int iTransport = HTTP_TRANSPORT;    public CommInterview(Interview parent, int iMode, boolean bDistrMode)                throws InterviewParameters.Fault {        super(parent, "comm");        setResourceBundle("comm");        setHelpSet("help/vm");        if (iMode == CDC_MODE) {            setFirstQuestion(qIntro);        } else {            setFirstQuestion(qHttpHost);        }        this.iMode = iMode;        this.bDistrMode = bDistrMode;        customComm = new CustomCommunicationInterview(this);    }    private NullQuestion qIntro = new NullQuestion(this, "intro") {        public Question getNext() {            return qHttpHost;        }    };    private HostQuestion qHttpHost = new HostQuestion (this, "httpHost") {        protected Question getNext() {            if (iMode == CLDC_MODE) {                return qHttpPort;            } else {                return qCommTypes;            }        }    };    /*     * Only visible in CLDC mode.     */    private IntQuestion qHttpPort = new IntQuestion(this, "httpPort", 1, 65535) {        public void clear() {            setValue(8080);        }        protected Question getNext() {            if (!isValueValid())                return null;            else {                if (bDistrMode) {                    return qCommPort;                } else {                    return qEnd;                }            }        }    };    ChoiceQuestion qCommTypes = new ChoiceQuestion(this, "communicationType") {        {            clear();        }                protected void setChoices(String[] choices) {            super.setChoices(choices, true);        }                public void clear() {            setChoices(new String[] {                    HTTP_CONNECTION,                    SOCKET_CONNECTION,                    DATAGRAM_CONNECTION,                    COMM_CONNECTION,                    CUSTOM_CONNECTION});            setValue(SOCKET_CONNECTION);        }        protected Question getNext() {            if (HTTP_CONNECTION.equals(getValue())) {                setTransport(HTTP_TRANSPORT);                return qCommPort;            } else if (DATAGRAM_CONNECTION.equals(getValue())) {                setTransport(UDP_TRANSPORT);                return qDefaultDataLength;            } else if (SOCKET_CONNECTION.equals(getValue())) {                setTransport(TCP_IP_TRANSPORT);                return qCommPort;            } else if (COMM_CONNECTION.equals(getValue())) {                setTransport(COMM_TRANSPORT);                return qDefaultBaudRate;            } else if (CUSTOM_CONNECTION.equals(getValue())) {                return callInterview(customComm, qEnd);            } else {                return null;            }        }    };    private YesNoQuestion qDefaultDataLength = new YesNoQuestion(this, "defaultDataLength") {        public void clear() {            setValue(YesNoQuestion.YES);        }                    protected Question getNext() {            if (value == null) {                return null;            } else if (value == YesNoQuestion.YES) {                return qCommPort;            } else {                return qDataLength;            }        }        protected void export(Map data) {            if (value == YesNoQuestion.YES) {                data.put("datagram.dataLength", "1400");            }        }    };               private IntQuestion qDataLength = new IntQuestion(this, "dataLength", 200, 1400) {        protected Question getNext() {            return qCommPort;        }        protected void export(Map data) {            data.put("datagram.dataLength", String.valueOf(value));        }    };    private YesNoQuestion qDefaultBaudRate = new YesNoQuestion(this, "defaultBaudRate") {        public void clear() {            setValue(YesNoQuestion.YES);        }                    protected Question getNext() {            if (value == null) {                return null;            } else if (value == YesNoQuestion.YES) {                return qSerialPort;            } else {                return qBaudRate;            }        }        protected void export(Map data) {            if (value == YesNoQuestion.YES) {                data.put("commService.comm.baudRate", "9600");            }        }    };               private IntQuestion qBaudRate = new IntQuestion(this, "baudRate", 300, 115200) {        protected Question getNext() {            return qSerialPort;        }        protected void export(Map data) {            data.put("commService.comm.baudRate", String.valueOf(getValue()));        }    };    private StringQuestion qSerialPort = new StringQuestion(this, "serialPort") {        {            setSuggestions(new String[] {                "COM1", "COM2", "COM3", "COM4",                "/dev/term/a", "/dev/term/b",                "/dev/ttyS0", "/dev/ttyS1", "/dev/ttyS2", "/dev/ttyS3"});        }        protected Question getNext() {            if ((getValue() == null) || ("".equals(getValue()))) {                return null;            }            return qEnd;        }        protected void export(Map data) {            data.put("commService.server.port", getValue());            exportCommService(data, iTransport);        }    };    private IntQuestion qCommPort = new IntQuestion(this, "commPort", 1, 65535) {        public void clear() {            setValue(8188);        }        protected Question getNext() {            if (!isValueValid())                return null;            else                return qEnd;        }        protected void export(Map data) {            data.put("commService.j2me.jar", DEFAULT_J2ME_COMMUNICATION_JAR);            data.put("msgService.j2me.jar", DEFAULT_J2ME_MESSAGING_JAR);            data.put("commService.server.port", "" + getValue());            if (iMode == CLDC_MODE) {                String commClientJar = HTTP_COMM_CLIENT_JAR;                String commClientClass = HTTP_COMM_CLIENT_CLASS;                String commClientArgs = "IGNORE";                data.put("commService.server.address", HTTP_COMM_URL);                data.put("commService.client.jar", commClientJar);                data.put("commService.client", commClientClass);                data.put("commService.client.args", commClientArgs);             }            exportCommService(data, iTransport);        }    };    private void exportCommService(Map data, int transport) {        String commServerJar = null;        String commServerClass = null;        String commServiceServer = null;        if (transport == HTTP_TRANSPORT) {            commServerJar = HTTP_COMM_SERVER_JAR;            commServerClass = HTTP_COMM_SERVER_CLASS;            commServiceServer = commServerClass + " http.url=" + HTTP_COMM_URL;        } else if (transport == CommInterview.UDP_TRANSPORT) {            commServerJar = DATAGRAM_COMM_SERVER_JAR;            commServerClass = DATAGRAM_COMM_SERVER_CLASS;            commServiceServer = commServerClass + " url=" + DATAGRAM_COMM_URL;                            commServiceServer += " verbose=$remoteVerbose";        } else if (transport == CommInterview.TCP_IP_TRANSPORT) {            commServerJar = TCP_IP_COMM_SERVER_JAR;            commServerClass = TCP_IP_COMM_SERVER_CLASS;            commServiceServer = commServerClass + " host=$httpHost port=$commService.server.port";        } else if (transport == CommInterview.COMM_TRANSPORT) {            commServerJar = SERIAL_COMM_SERVER_JAR;            commServerClass = SERIAL_COMM_SERVER_CLASS;            commServiceServer = commServerClass + " -commPort $commService.server.port" +                    " -baudRate $commService.comm.baudRate";        }        data.put("commService.server", commServiceServer);        data.put("commService.server.jar", commServerJar);    }        /**     * @return the answer to the question of the host name where ComService      *         server will be running. If the host name is a literal IPv6     *         address, it will be converted to RFC 2732 format.              */         public String getLocalhost() {        return Utils.getURLFmtAddress(qHttpHost.getValue());    }    int getExecHttpServerPort() {        return qHttpPort.getValue();    }    private void setTransport(int iTransport) {        this.iTransport = iTransport;    }    private FinalQuestion qEnd = new FinalQuestion(this);    private CustomCommunicationInterview customComm;        //General    static final String DEFAULT_J2ME_COMMUNICATION_JAR =        "$j2meFwLibDir$/j2me_communication.jar";    static final String DEFAULT_J2ME_MESSAGING_JAR =        "$j2meFwLibDir$/j2me_messaging.jar";    //HTTP    static final String HTTP_COMM_URL =        "http://$httpHost:$commService.server.port";    static final String HTTP_COMM_SERVER_JAR =        "$j2meFwLibDir$/j2me_httpCommServer.jar";    static final String HTTP_COMM_SERVER_CLASS =        "com.sun.tck.j2me.services.commService.servers.HTTPCommServer";    static final String HTTP_COMM_CLIENT_JAR =        "$j2meFwLibDir$/midp_commClient.jar";    static final String HTTP_COMM_CLIENT_CLASS =        "com.sun.tck.j2me.services.commService.clients.MidHTTPCommClient";            //UDP    static final String DATAGRAM_COMM_URL =        "datagram://$httpHost:$commService.server.port";    static final String DATAGRAM_COMM_SERVER_JAR =        "$j2meFwLibDir$/datagram_commServer.jar";    static final String DATAGRAM_COMM_SERVER_CLASS =        "com.sun.tck.j2me.services.commService.servers.DatagramSocketCommServer";     //TCP/IP    static final String TCP_IP_COMM_SERVER_JAR =        "$j2meFwLibDir$/j2mefw_jt.jar";    static final String TCP_IP_COMM_SERVER_CLASS =        "com.sun.tck.j2me.services.commService.servers.SocketCommServer";    //COMM    static final String SERIAL_COMM_SERVER_JAR =        "$j2meFwLibDir$/serial_commServer.jar";    static final String SERIAL_COMM_SERVER_CLASS =        "com.sun.tck.j2me.services.commService.servers.SerialCommServer";}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?