15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/* 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership. 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License. You may obtain a copy of the License at 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * See the License for the specific language governing permissions and 165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * limitations under the License. 175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Vitaly A. Provodin 215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 26.01.2005 255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.framework; 275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport java.util.HashMap; 295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This class provides access to options for running JPDA tests. 325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <p> 335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The settings are presented as a set of getters and setters for test options, 345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * which can be implemented in different ways. In this implementation test 355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * options are implemented via VM system properties, which can be specified 365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * using option '-D' in VM command line. 375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <p> 385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The following options are currently recognized: 395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <ul> 405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeJavaHome</code> 415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - path to Java bundle to run debuggee on 425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeJavaExec</code> 435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - name of Java executable to run debuggee on 445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeJavaPath</code> 455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - full path to Java executable to run debuggee on 465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeAgentName</code> 475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - name of agent native library 485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeAgentExtraOptions</code> 495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - extra options for agent 505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeClassName</code> 515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - full name of class to run debuggee with 525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeVMExtraOptions</code> 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - extra options to run debuggee with 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.debuggeeSuspend</code> 555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - debuggee suspend mode ("y"|"n") 565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.transportWrapperClass</code> 575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - class name of TransportWrapper implementation 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.transportAddress</code> 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - address for JDWP connection 605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.connectorKind</code> 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - type of JDWP connection (attach or listen) 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.syncPort</code> 635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - port number for sync connection 645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.timeout</code> 655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - timeout used in JPDA tests 665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.waitingTime</code> 675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - timeout for waiting events 685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * </ul> 695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>jpda.settings.verbose</code> 705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * - flag that disables (default) or enables writing messages to the log 715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * </ul> 725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * All options have default values, if they are not specified. 735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class TestOptions { 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default timeout value for various operations. */ 785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final int DEFAULT_TIMEOUT = 1 * 60 * 1000; // 1 minute 795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default time interval for waiting for various events. */ 815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final int DEFAULT_WAITING_TIME = DEFAULT_TIMEOUT; 825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default static address for transport connection. */ 845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final String DEFAULT_ATTACHING_ADDRESS = "127.0.0.1:9898"; 855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default port number for sync connection. */ 875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final String DEFAULT_STATIC_SYNC_PORT = "9797"; 885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default port number for sync connection. */ 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final int DEFAULT_SYNC_PORT = 0; 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default class name for transport wrapper. */ 935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final String DEFAULT_TRANSPORT_WRAPPER 945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes = "org.apache.harmony.jpda.tests.framework.jdwp.SocketTransportWrapper"; 955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** Default aclass name for debuggee application. */ 975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public static final String DEFAULT_DEBUGGEE_CLASS_NAME 985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes = "org.apache.harmony.jpda.tests.jdwp.share.debuggee.HelloWorld"; 995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // current waiting time value (negative means using default value) 1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private long waitingTime = -1; 1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // current timeout value (negative means using default value) 1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private long timeout = -1; 1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // internally set property values 1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private HashMap internalProperties = new HashMap(); 1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Constructs an instance of this class. 1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public TestOptions() { 1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes super(); 1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns path to Java bundle to run debuggee on. 1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeJavaHome" or system property 1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * "java.home" by default. 1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeJavaHome() { 1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeJavaHome", getProperty("java.home", null)); 1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns name of Java executable to run debuggee on. 1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeJavaExec" or "java" by default. 1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeJavaExec() { 1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeJavaExec", "java"); 1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns full path to Java executable to run debuggee on. 1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeJavaPath" or construct path from 1395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * getDebuggeeJavaHome() and getDebuggeeJavaExec() by default. 1405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeJavaPath() { 1425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeJavaPath", 1435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes getDebuggeeJavaHome() + "/bin/" + getDebuggeeJavaExec()); 1445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns class name of TransportWrapper implementation. 1485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.transportWrapperClass" or 1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * DEFAULT_TRANSPORT_WRAPPER by default. 1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getTransportWrapperClassName() { 1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.transportWrapperClass", 1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes DEFAULT_TRANSPORT_WRAPPER); 1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns address for JDWP connection or null for dynamic address. 1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.transportAddress" or null by default. 1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getTransportAddress() { 1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.transportAddress", null); 1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets address to attach to debuggee. 1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param address to attach 1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setTransportAddress(String address) { 1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setProperty("jpda.settings.transportAddress", address); 1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns name of JDWP agent library. 1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeAgentName" or "jdwp" by default 1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeAgentName() { 1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeAgentName", "jdwp"); 1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns string with extra options for agent. 1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeAgentExtraOptions" or "" by default 1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeAgentExtraOptions() { 1905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeAgentExtraOptions", ""); 1915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns string with all options for agent including specified connection 1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * address. 1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param address - address to attach 1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param isDebuggerListen - true if debugger is listening for connection 1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return string with all agent options 2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeAgentOptions(String address, boolean isDebuggerListen) { 2035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String serv; 2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (isDebuggerListen) { 2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes serv = "n"; 2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } else { 2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes serv = "y"; 2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // add ',' to agent extra options if required 2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String agentExtraOptions = getDebuggeeAgentExtraOptions(); 2125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (agentExtraOptions.length() > 0 && agentExtraOptions.charAt(0) != ',') { 2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes agentExtraOptions = "," + agentExtraOptions; 2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeAgentOptions", 2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes "transport=dt_socket,address=" + address + ",server=" + serv 2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + ",suspend=" + getDebuggeeSuspend() + agentExtraOptions); 2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns string with all options for agent including specified connection 2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * address (only for debugger in listening mode). It just calls 2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <ul> 2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * <li><code>getDebuggeeAgentOptions(address, true)</code></li> 2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * </ul> 2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @deprecated This method is used as workaround for old tests and will be removed soon. 2295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param address - address to attach 2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return string with all agent options 2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeAgentOptions(String address) { 2355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getDebuggeeAgentOptions(address, true); 2365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns VM classpath value to run debuggee with. 2405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return system property "java.class.path" by default. 2425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeClassPath() { 2445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("java.class.path", null); 2455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns full name of the class to start debuggee with. 2495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeClassName" or 2515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * "org.apache.harmony.jpda.tests.jdwp.share.debuggee.HelloWorld" by default 2525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeClassName() { 2545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeClassName", DEFAULT_DEBUGGEE_CLASS_NAME); 2555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets full name of the class to start debuggee with. 2595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param className 2615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * full class name 2625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setDebuggeeClassName(String className) { 2645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setProperty("jpda.settings.debuggeeClassName", className); 2655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns string with extra options to start debuggee with. 2695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeVMExtraOptions" or "" by default 2715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeVMExtraOptions() { 2735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String extOpts = getProperty("jpda.settings.debuggeeVMExtraOptions", ""); 2745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes extOpts = extOpts + " -Djpda.settings.verbose=" + isVerbose(); 2755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return extOpts; 2765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns debuggee suspend mode ("y"|"n"). 2805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeSuspend" or "y" by default 2825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeSuspend() { 2845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeSuspend", "y"); 2855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns debuggee suspend mode ("y"|"n"). 2895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param mode 2915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * suspend mode 2925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setDebuggeeSuspend(String mode) { 2945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setProperty("jpda.settings.debuggeeSuspend", mode); 2955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Checks if debuggee is launched in suspend mode. 2995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true if debuggee is launched in suspend mode 3015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isDebuggeeSuspend() { 3035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getDebuggeeSuspend().equals("y"); 3045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns string representation of TCP/IP port for synchronization channel. 3085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return string with port number or null 3105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getSyncPortString() { 3125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.syncPort", null); 3135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns type of connection with debuggee. 3175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return system property "jpda.settings.connectorKind" or "listen" by default. 3195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getConnectorKind() { 3215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.connectorKind", "listen"); 3225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Checks if attach connection with debuggee. 3265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true, if attach connection, false otherwise. 3285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isAttachConnectorKind() { 3305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return ((getConnectorKind()).equals("attach")); 3315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Checks if listen connection with debuggee. 3365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return true, if listen connection, false otherwise. 3385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isListenConnectorKind() { 3405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return (getConnectorKind().equals("listen")); 3415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets connectorKind to attach to debuggee. 3455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setAttachConnectorKind() { 3475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setConnectorKind("attach"); 3485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets connectorKind to listen connection from debuggee. 3525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setListenConnectorKind() { 3545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setConnectorKind("listen"); 3555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets kind of connector (attach or listen). 3595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setConnectorKind(String kind) { 3615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes setProperty("jpda.settings.connectorKind", kind); 3625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns kind of launching debuggee VM, which can be "auto" or "manual". 3665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.debuggeeLaunchKind" or "auto" by default. 3685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getDebuggeeLaunchKind() { 3705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return getProperty("jpda.settings.debuggeeLaunchKind", "auto"); 3715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns TCP/IP port for synchronization channel. 3755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return string with port number or null 3775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getSyncPortNumber() { 3795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String buf = getSyncPortString(); 3805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (buf == null) { 3815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return DEFAULT_SYNC_PORT; 3825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 3855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return Integer.parseInt(buf); 3865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (NumberFormatException e) { 3875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException(e); 3885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns timeout for JPDA tests in milliseconds. 3935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return option "jpda.settings.timeout" or DEFAULT_TIMEOUT by default. 3955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getTimeout() { 3975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (timeout < 0) { 3985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes timeout = DEFAULT_TIMEOUT; 3995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String buf = getProperty("jpda.settings.timeout", null); 4005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (buf != null) { 4015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 4025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes timeout = Long.parseLong(buf); 4035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (NumberFormatException e) { 4045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException(e); 4055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return timeout; 4095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets timeout for JPDA tests in milliseconds. 4135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param timeout 4155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * timeout to be set 4165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setTimeout(long timeout) { 4185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (timeout < 0) { 4195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException("Cannot set negative timeout value: " 4205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + timeout); 4215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.timeout = timeout; 4235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns waiting time for events in milliseconds. 4275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return waiting time 4295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getWaitingTime() { 4315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (waitingTime < 0) { 4325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes waitingTime = DEFAULT_WAITING_TIME; 4335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String buf = getProperty("jpda.settings.waitingTime", null); 4345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (buf != null) { 4355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 4365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes waitingTime = Long.parseLong(buf); 4375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (NumberFormatException e) { 4385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes throw new TestErrorException(e); 4395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return waitingTime; 4435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets waiting time for events in milliseconds. 4475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param waitingTime 4495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * waiting time to be set 4505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setWaitingTime(long waitingTime) { 4525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.waitingTime = waitingTime; 4535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns whether print to log is enabled. 4575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return false (default) if log is disabled or true otherwise. 4595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean isVerbose() { 4615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return isTrue(getProperty("jpda.settings.verbose", "true")); 4625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Converts text to boolean. 4665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param str string representing boolean value 4685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return boolean 4695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes static public boolean isTrue(String str) { 4715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return str != null && ( 4725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes str.equalsIgnoreCase("true") || 4735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes str.equalsIgnoreCase("yes") || 4745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes str.equalsIgnoreCase("on") || 4755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes str.equals("1")); 4765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns value of given property if it was set internally or specified in system properties. 4805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param name 4825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * property name 4835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param defaultValue 4845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * default value for given property 4855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return string value of given property or default value if no such property found 4865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected String getProperty(String name, String defaultValue) { 4885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String value = (String)internalProperties.get(name); 4895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (value != null) { 4905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return value; 4915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return System.getProperty(name, defaultValue); 4935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets internal value of given property to override corresponding system property. 4975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param name 4995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * proparty name 5005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param value 5015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * value for given property 5025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 5035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected void setProperty(String name, String value) { 5045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes internalProperties.put(name, value); 5055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes} 508