You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by ms...@apache.org on 2002/03/02 20:53:45 UTC

cvs commit: jakarta-jmeter/src/org/apache/jmeter/util JMeterUtils.java

mstover1    02/03/02 11:53:45

  Modified:    src/org/apache/jmeter/util JMeterUtils.java
  Log:
  Using the @VERSION@ token to automatically update version
  
  Revision  Changes    Path
  1.24      +864 -864  jakarta-jmeter/src/org/apache/jmeter/util/JMeterUtils.java
  
  Index: JMeterUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/JMeterUtils.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- JMeterUtils.java	20 Feb 2002 02:36:30 -0000	1.23
  +++ JMeterUtils.java	2 Mar 2002 19:53:45 -0000	1.24
  @@ -76,874 +76,874 @@
    *
    *@author     <a href="mailto://stefano@apache.org">Stefano Mazzocchi</a>
    *@created    June 28, 2001
  - *@version    $Revision: 1.23 $ $Date: 2002/02/20 02:36:30 $
  + *@version    $Revision: 1.24 $ $Date: 2002/03/02 19:53:45 $
    */
   
   public class JMeterUtils
   {
   
  -    private static final SAXParserFactory xmlFactory;
  +	 private static final SAXParserFactory xmlFactory;
   
  -    static {
  -        SAXParserFactory temp = null;
  -        try {
  -            temp = SAXParserFactory.newInstance();
  -        } catch(Exception e) {
  -            temp = null;
  -        }
  -
  -        xmlFactory = temp;
  -    }
  -
  -
  -    private static Properties appProperties;
  -    public static ResourceBundle RESOURCES = ResourceBundle.getBundle("org.apache.jmeter.resources.messages");
  -
  -
  -    /**
  -     *  This method is used by the init method to load the property file that may
  -     *  even reside in the user space, or in the classpath under
  -     *  org.apache.jmeter.jmeter.properties
  -     *
  -     *@param  file  Description of Parameter
  -     *@return       The Properties value
  -     */
  -    public static Properties getProperties(String file)
  -    {
  -        Properties p = new Properties(System.getProperties());
  -        try
  -        {
  -            File f = new File(file);
  -            p.load(new FileInputStream(f));
  -        }
  -        catch (Exception e)
  -        {
  -            try
  -            {
  -                p.load(JMeterUtils.class.getClassLoader().getSystemResourceAsStream("org/apache/jmeter/jmeter.properties"));
  -            }
  -            catch (IOException ex)
  -            {
  -                //JMeter.fail("Could not read internal resource. Archive is broken.");
  -            }
  -        }
  -        appProperties = p;
  -        return p;
  -    }
  -
  -    /**
  -     *  Gets the resource string for this key.
  -     *  @param key the key in the resource file
  -     *  @return the resource string if the key is found; otherwise, return an empty string
  -     */
  -    public static String getResString(String key)
  -    {
  -        String resString = null;
  -
  -        try
  -        {
  -            resString = RESOURCES.getString(key);
  -        }
  -        catch (MissingResourceException mre)
  -        {
  -            System.out.println("ERROR! Resource string not found: [" + key + "]");
  -            resString = "";
  -        }
  -
  -        return resString;
  -    }
  -
  -    /**
  -     *  This gets the currently defined appProperties. It can only be called after
  -     *  the getProperties(String file) method is called.
  -     *
  -     *@return    The JMeterProperties value
  -     */
  -    public static Properties getJMeterProperties()
  -    {
  -        return appProperties;
  -    }
  -
  -    /**
  -     *  This looks for the requested image in the classpath under
  -     *  org.apache.jmeter.images. <name>
  -     *
  -     *@param  name  Description of Parameter
  -     *@return       The Image value
  -     */
  -    public static ImageIcon getImage(String name)
  -    {
  -        try
  -        {
  -            return new ImageIcon(JMeterUtils.class.getClassLoader().getResource(
  -                          "org/apache/jmeter/images/" + name.trim()));
  -        }
  -        catch(NullPointerException e)
  -        {
  -            System.out.println(name);
  -            return null;
  -        }
  -    }
  -
  -    /**
  -     *  Creates the vector of Timers plugins.
  -     *
  -     *@param  properties  Description of Parameter
  -     *@return             The Timers value
  -     */
  -    public static Vector getTimers(Properties properties)
  -    {
  -        return instantiate(getVector(properties, "timer."), "org.apache.jmeter.timers.Timer");
  -    }
  -
  -    /**
  -     *  Creates the vector of visualizer plugins.
  -     *
  -     *@param  properties  Description of Parameter
  -     *@return             The Visualizers value
  -     */
  -    public static Vector getVisualizers(Properties properties)
  -    {
  -        return instantiate(getVector(properties, "visualizer."),
  -                "org.apache.jmeter.visualizers.Visualizer");
  -    }
  -
  -    /**
  -     *  Creates a vector of SampleController plugins.
  -     *
  -     *@param  properties  The properties with information about the samplers
  -     *@return             The Controllers value
  -     */
  -    public static Vector getControllers(Properties properties)
  -    {
  -        String name = "controller.";
  -        Vector v = new Vector();
  -        Enumeration names = properties.keys();
  -        while (names.hasMoreElements())
  -        {
  -            String prop = (String) names.nextElement();
  -            if (prop.startsWith(name))
  -            {
  -                Object o = instantiate(properties.getProperty(prop),
  -                        "org.apache.jmeter.control.SamplerController");
  -                v.addElement(o);
  -            }
  -        }
  -        return v;
  -    }
  -
  -    /**
  -     *  Create a string of class names for a particular SamplerController
  -     *
  -     *@param  properties  The properties with info about the samples.
  -     *@param  name        The name of the sampler controller.
  -     *@return             The TestSamples value
  -     */
  -    public static String[] getTestSamples(Properties properties, String name)
  -    {
  -        return (String[]) getVector(properties, name + ".testsample").toArray(new String[0]);
  -    }
  -
  -    /**
  -     *  Create an instance of an org.xml.sax.Parser
  -     *
  -     * @deprecated use the plain version instead.  We are using JAXP!
  -     *@param  properties  The properties file containing the parser's class name
  -     *@return             The XMLParser value
  -     */
  -    public static XMLReader getXMLParser(Properties properties)
  -    {
  -        return getXMLParser();
  -    }
  -
  -    /**
  -     *  Create an instance of an org.xml.sax.Parser based on the default props.
  -     *
  -     *@return    The XMLParser value
  -     */
  -    public static XMLReader getXMLParser()
  -    {
  -        XMLReader reader = null;
  -
  -        try {
  -            reader = xmlFactory.newSAXParser().getXMLReader();
  -        } catch (Exception e) {
  -            reader = (XMLReader) instantiate(getPropDefault("xml.parser", "org.apache.xerces.parsers.SAXParser"), "org.xml.sax.XMLReader");
  -        }
  -
  -        return reader;
  -    }
  -
  -    /**
  -     *  Creates the vector of alias strings.
  -     *
  -     *@param  properties  Description of Parameter
  -     *@return             The Alias value
  -     */
  -    public static Hashtable getAlias(Properties properties)
  -    {
  -        return getHashtable(properties, "alias.");
  -    }
  -
  -    /**
  -     *  Creates a vector of strings for all the properties that start with a common
  -     *  prefix.
  -     *
  -     *@param  properties  Description of Parameter
  -     *@param  name        Description of Parameter
  -     *@return             The Vector value
  -     */
  -    public static Vector getVector(Properties properties, String name)
  -    {
  -        Vector v = new Vector();
  -        Enumeration names = properties.keys();
  -        while (names.hasMoreElements())
  -        {
  -            String prop = (String) names.nextElement();
  -            if (prop.startsWith(name))
  -            {
  -                v.addElement(properties.getProperty(prop));
  -            }
  -        }
  -        return v;
  -    }
  -
  -    /**
  -     *  Creates a vector of strings for all the properties that start with a common
  -     *  prefix.
  -     *
  -     *@param  properties  Description of Parameter
  -     *@param  name        Description of Parameter
  -     *@return             The Hashtable value
  -     */
  -    public static Hashtable getHashtable(Properties properties, String name)
  -    {
  -        Hashtable t = new Hashtable();
  -        Enumeration names = properties.keys();
  -        while (names.hasMoreElements())
  -        {
  -            String prop = (String) names.nextElement();
  -            if (prop.startsWith(name))
  -            {
  -                t.put(prop.substring(name.length()), properties.getProperty(prop));
  -            }
  -        }
  -        return t;
  -    }
  -
  -    /**
  -     *  Get a int value with default if not present.
  -     *
  -     *@param  propName    the name of the property.
  -     *@param  defaultVal  the default value.
  -     *@return             The PropDefault value
  -     */
  -    public static int getPropDefault(String propName, int defaultVal)
  -    {
  -        int ans;
  -        try
  -        {
  -            ans = (Integer.valueOf(
  -                    appProperties.getProperty(propName, Integer.toString(defaultVal)).trim())).intValue();
  -        }
  -        catch (Exception e)
  -        {
  -            ans = defaultVal;
  -        }
  -        return ans;
  -    }
  -
  -    /**
  -     *  Get a boolean value with default if not present.
  -     *
  -     *@param  propName    the name of the property.
  -     *@param  defaultVal  the default value.
  -     *@return             The PropDefault value
  -     */
  -    public static boolean getPropDefault(String propName, boolean defaultVal)
  -    {
  -        boolean ans;
  -        try
  -        {
  -            String strVal = appProperties.getProperty(propName,
  -                    (new Boolean(defaultVal)).toString()).trim();
  -            if (strVal.equalsIgnoreCase("true") || strVal.equalsIgnoreCase("t"))
  -            {
  -                ans = true;
  -            }
  -            else if (strVal.equalsIgnoreCase("false") || strVal.equalsIgnoreCase("f"))
  -            {
  -                ans = false;
  -            }
  -            else
  -            {
  -                ans = ((Integer.valueOf(strVal)).intValue() == 1);
  -            }
  -        }
  -        catch (Exception e)
  -        {
  -            ans = defaultVal;
  -        }
  -        return ans;
  -    }
  -
  -    /**
  -     *  Get a long value with default if not present.
  -     *
  -     *@param  propName    the name of the property.
  -     *@param  defaultVal  the default value.
  -     *@return             The PropDefault value
  -     */
  -    public static long getPropDefault(String propName, long defaultVal)
  -    {
  -        long ans;
  -        try
  -        {
  -            ans = (Long.valueOf(appProperties.getProperty(propName, Long.toString(defaultVal)).trim())).longValue();
  -        }
  -        catch (Exception e)
  -        {
  -            ans = defaultVal;
  -        }
  -        return ans;
  -    }
  -
  -    /**
  -     *  Get a String value with default if not present.
  -     *
  -     *@param  propName    the name of the property.
  -     *@param  defaultVal  the default value.
  -     *@return             The PropDefault value
  -     */
  -    public static String getPropDefault(String propName, String defaultVal)
  -    {
  -        String ans;
  -        try
  -        {
  -            ans = appProperties.getProperty(propName, defaultVal).trim();
  -        }
  -        catch (Exception e)
  -        {
  -            ans = defaultVal;
  -        }
  -        return ans;
  -    }
  -
  -    /**
  -     *  Sets the selection of the JComboBox to the Object 'name' from the list in
  -     *  namVec.
  -     *
  -     *@param  properties  Description of Parameter
  -     *@param  combo       Description of Parameter
  -     *@param  namVec      Description of Parameter
  -     *@param  name        Description of Parameter
  -     */
  -
  -    public static void selJComboBoxItem(Properties properties, JComboBox combo, Vector namVec, String name)
  -    {
  -
  -        int idx = namVec.indexOf(name);
  -
  -
  -        combo.setSelectedIndex(idx);
  -
  -
  -        // Redisplay.
  -
  -        combo.updateUI();
  -
  -        return;
  -    }
  -
  -
  -    /**
  -     *  Instatiate an object and guarantee its class.
  -     *
  -     *@param  className  The name of the class to instantiate.
  -     *@param  impls      The name of the class it subclases.
  -     *@return            Description of the Returned Value
  -     */
  -
  -    public static Object instantiate(String className, String impls)
  -    {
  -        if (className != null) className.trim();
  -        if (impls != null) className.trim();
  -
  -        try
  -        {
  -
  -            Class c = Class.forName(impls);
  -
  -
  -            try
  -            {
  -
  -                Class o = Class.forName(className);
  -
  -
  -                Object res = o.newInstance();
  -
  -                if (c.isInstance(res))
  -                {
  -
  -                    return res;
  -                }
  -
  -                else
  -                {
  -
  -                    throw new IllegalArgumentException
  -                            (className + " is not an instance of " + impls);
  -                }
  -
  -            }
  -
  -            catch (ClassNotFoundException e)
  -            {
  -
  -                System.err.println("Error loading class " +
  -                        className + ": class is not found");
  -
  -            }
  -
  -            catch (IllegalAccessException e)
  -            {
  -
  -                System.err.println("Error loading class " + className +
  -                        ": does not have access");
  -
  -            }
  -
  -            catch (InstantiationException e)
  -            {
  -
  -                System.err.println("Error loading class " + className +
  -                        ": could not instantiate");
  -
  -            }
  -
  -            catch (NoClassDefFoundError e)
  -            {
  -
  -                System.err.println("Error loading class " + className +
  -                        ": couldn't find class " + e.getMessage());
  -
  -            }
  -
  -        }
  -
  -        catch (ClassNotFoundException e)
  -        {
  -
  -            System.err.println("Error loading class " + impls +
  -                    ": was not found.");
  -
  -        }
  -
  -        return null;
  -    }
  -
  -
  -    /**
  -     *  Instantiate a vector of classes
  -     *
  -     *@param  v          Description of Parameter
  -     *@param  className  Description of Parameter
  -     *@return            Description of the Returned Value
  -     */
  -
  -    public static Vector instantiate(Vector v, String className)
  -    {
  -
  -        Vector i = new Vector();
  -
  -
  -        try
  -        {
  -
  -            Class c = Class.forName(className);
  -
  -            Enumeration elements = v.elements();
  -
  -            while (elements.hasMoreElements())
  -            {
  -
  -                String name = (String) elements.nextElement();
  -
  -                try
  -                {
  -
  -                    Object o = Class.forName(name).newInstance();
  -
  -                    if (c.isInstance(o))
  -                    {
  -
  -                        i.addElement(o);
  -
  -                    }
  -
  -                }
  -
  -                catch (ClassNotFoundException e)
  -                {
  -
  -                    System.err.println("Error loading class " +
  -                            name + ": class is not found");
  -
  -                }
  -
  -                catch (IllegalAccessException e)
  -                {
  -
  -                    System.err.println("Error loading class " + name + ": does not have access");
  -
  -                }
  -
  -                catch (InstantiationException e)
  -                {
  -
  -                    System.err.println("Error loading class " + name + ": could not instantiate");
  -
  -                }
  -
  -                catch (NoClassDefFoundError e)
  -                {
  -
  -                    System.err.println("Error loading class " + name + ": couldn't find class " + e.getMessage());
  -
  -                }
  -
  -
  -            }
  -
  -        }
  -        catch (ClassNotFoundException e)
  -        {
  -
  -            System.err.println("Error loading class " + className + ": class is not found");
  -
  -        }
  -
  -
  -        return i;
  -    }
  -
  -
  -    /**
  -     *  Tokenize a string into a vector of tokens
  -     *
  -     *@param  string     Description of Parameter
  -     *@param  separator  Description of Parameter
  -     *@return            Description of the Returned Value
  -     */
  -
  -    public static Vector tokenize(String string, String separator)
  -    {
  -
  -        Vector v = new Vector();
  -
  -        StringTokenizer s = new StringTokenizer(string, separator);
  -
  -        while (s.hasMoreTokens())
  -        {
  -
  -            v.addElement(s.nextToken());
  -
  -        }
  -
  -        return v;
  -    }
  -
  -
  -    /**
  -     *  Create a button with the netscape style
  -     *
  -     *@param  name      Description of Parameter
  -     *@param  listener  Description of Parameter
  -     *@return           Description of the Returned Value
  -     */
  -
  -    public static JButton createButton(String name, ActionListener listener)
  -    {
  -
  -        JButton button = new JButton(getImage(name + ".on.gif"));
  -
  -        button.setDisabledIcon(getImage(name + ".off.gif"));
  -
  -        button.setRolloverIcon(getImage(name + ".over.gif"));
  -
  -        button.setPressedIcon(getImage(name + ".down.gif"));
  -
  -        button.setActionCommand(name);
  -
  -        button.addActionListener(listener);
  -
  -        button.setRolloverEnabled(true);
  -
  -        button.setFocusPainted(false);
  -
  -        button.setBorderPainted(false);
  -
  -        button.setOpaque(false);
  -
  -        button.setPreferredSize(new Dimension(24, 24));
  -
  -        return button;
  -    }
  -
  -
  -    /**
  -     *  Create a button with the netscape style
  -     *
  -     *@param  name      Description of Parameter
  -     *@param  listener  Description of Parameter
  -     *@return           Description of the Returned Value
  -     */
  -
  -    public static JButton createSimpleButton(String name, ActionListener listener)
  -    {
  -
  -        JButton button = new JButton(getImage(name + ".gif"));
  -
  -        button.setActionCommand(name);
  -
  -        button.addActionListener(listener);
  -
  -        button.setFocusPainted(false);
  -
  -        button.setBorderPainted(false);
  -
  -        button.setOpaque(false);
  -
  -        button.setPreferredSize(new Dimension(25, 25));
  -
  -        return button;
  -    }
  -
  -
  -    /**
  -     *  Takes a String and a tokenizer character, and returns a new array of
  -     *  strings of the string split by the tokenizer character.
  -     *
  -     *@param  splittee   String to be split
  -     *@param  splitChar  Character to split the string on
  -     *@return            Array of all the tokens.
  -     */
  -
  -    public static String[] split(String splittee, String splitChar)
  -    {
  -        if (splittee == null || splitChar == null)
  -        {
  -            return new String[0];
  -        }
  -        StringTokenizer tokens;
  -        String temp;
  -        int spot;
  -        while ((spot = splittee.indexOf(splitChar + splitChar)) != -1)
  -        {
  -            splittee = splittee.substring(0, spot + splitChar.length()) +
  -                    splittee.substring(spot + 2 * splitChar.length(),
  -                    splittee.length());
  -        }
  -        Vector returns = new Vector();
  -        int start = 0;
  -        int length = splittee.length();
  -        spot = 0;
  -        while (start < length && (spot = splittee.indexOf(splitChar, start)) > -1)
  -        {
  -            if (spot > 0)
  -            {
  -                returns.addElement(splittee.substring(start, spot));
  -            }
  -            start = spot + splitChar.length();
  -        }
  -        if (start < length)
  -        {
  -            returns.add(splittee.substring(start));
  -        }
  -        String[] values = new String[returns.size()];
  -        returns.copyInto(values);
  -        return values;
  -    }
  -    // End Method
  -
  -
  -    /**
  -     *  Takes a String and a tokenizer character, and returns a new array of
  -     *  strings of the string split by the tokenizer character.
  -     *
  -     *@param  splittee   String to be split
  -     *@param  splitChar  Character to split the string on
  -     *@param  def        Default value to place between two split chars that have
  -     *      nothing between them
  -     *@return            Array of all the tokens.
  -     */
  -
  -    public static String[] split(String splittee, String splitChar, String def)
  -    {
  -        if (splittee == null || splitChar == null)
  -        {
  -            return new String[0];
  -        }
  -        StringTokenizer tokens;
  -        String temp;
  -        int spot;
  -        while ((spot = splittee.indexOf(splitChar + splitChar)) != -1)
  -        {
  -            splittee = splittee.substring(0, spot + splitChar.length()) + def +
  -                    splittee.substring(spot + 1 * splitChar.length(),
  -                    splittee.length());
  -        }
  -        Vector returns = new Vector();
  -        int start = 0;
  -        int length = splittee.length();
  -        spot = 0;
  -        while (start < length && (spot = splittee.indexOf(splitChar, start)) > -1)
  -        {
  -            if (spot > 0)
  -            {
  -                returns.addElement(splittee.substring(start, spot));
  -            }
  -            start = spot + splitChar.length();
  -        }
  -        if (start < length)
  -        {
  -            returns.add(splittee.substring(start));
  -        }
  -        String[] values = new String[returns.size()];
  -        returns.copyInto(values);
  -        return values;
  -    }
  -
  -    /**
  -     *  Report an error through a dialog box.
  -     *
  -     *@param  errorMsg  the error message.
  -     */
  -    public static void reportErrorToUser(String errorMsg)
  -    {
  -        JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
  -                errorMsg,"Error",JOptionPane.ERROR_MESSAGE);
  -    }
  -
  -    /**
  -     *  Finds a string in an array of strings and returns the
  -     *
  -     *@param  array  Array of strings.
  -     *@param  value  String to compare to array values.
  -     *@return        Index of value in array, or -1 if not in array.
  -     */
  -
  -    public static int findInArray(String[] array, String value)
  -    {
  -        int count = -1;
  -        int index = -1;
  -        if (array != null && value != null)
  -        {
  -            while (++count < array.length)
  -            {
  -                if (array[count] != null && array[count].equals(value))
  -                {
  -                    index = count;
  -                    break;
  -                }
  -            }
  -        }
  -        return index;
  -    }
  -
  -
  -    /**
  -     *  Takes an array of strings and a tokenizer character, and returns a string
  -     *  of all the strings concatenated with the tokenizer string in between each
  -     *  one.
  -     *
  -     *@param  splittee   Array of Objects to be concatenated.
  -     *@param  splitChar  Object to unsplit the strings with.
  -     *@return            Array of all the tokens.
  -     */
  -
  -    public static String unsplit(Object[] splittee, Object splitChar)
  -    {
  -
  -        StringBuffer retVal = new StringBuffer("");
  -
  -        int count = -1;
  -
  -        while (++count < splittee.length)
  -        {
  -
  -            if (splittee[count] != null)
  -            {
  -
  -                retVal.append(splittee[count]);
  -            }
  -
  -            if (count + 1 < splittee.length && splittee[count + 1] != null)
  -            {
  -
  -                retVal.append(splitChar);
  -            }
  -
  -        }
  -
  -        return retVal.toString();
  -    }
  -    // End Method
  -
  -
  -    /**
  -     *  Takes an array of strings and a tokenizer character, and returns a string
  -     *  of all the strings concatenated with the tokenizer string in between each
  -     *  one.
  -     *
  -     *@param  splittee   Array of Objects to be concatenated.
  -     *@param  splitChar  Object to unsplit the strings with.
  -     *@param  def        Default value to replace null values in array.
  -     *@return            Array of all the tokens.
  -     */
  -
  -    public static String unsplit(Object[] splittee, Object splitChar, String def)
  -    {
  -
  -        StringBuffer retVal = new StringBuffer("");
  -
  -        int count = -1;
  -
  -        while (++count < splittee.length)
  -        {
  -
  -            if (splittee[count] != null)
  -            {
  -
  -                retVal.append(splittee[count]);
  -            }
  -
  -            else
  -            {
  -
  -                retVal.append(def);
  -            }
  -
  -            if (count + 1 < splittee.length)
  -            {
  -
  -                retVal.append(splitChar);
  -            }
  -
  -        }
  -
  -        return retVal.toString();
  -    }
  -    // End Method
  -
  -
  -    /**
  -     * Gets the JMeter Version.
  -     * @returns the JMeter version.
  -     */
  -    public static String getJMeterVersion()
  -    {
  -        return "1.7Beta3";
  -    }
  +	 static {
  +		  SAXParserFactory temp = null;
  +		  try {
  +				temp = SAXParserFactory.newInstance();
  +		  } catch(Exception e) {
  +				temp = null;
  +		  }
  +
  +		  xmlFactory = temp;
  +	 }
  +
  +
  +	 private static Properties appProperties;
  +	 public static ResourceBundle RESOURCES = ResourceBundle.getBundle("org.apache.jmeter.resources.messages");
  +
  +
  +	 /**
  +	  *  This method is used by the init method to load the property file that may
  +	  *  even reside in the user space, or in the classpath under
  +	  *  org.apache.jmeter.jmeter.properties
  +	  *
  +	  *@param  file  Description of Parameter
  +	  *@return       The Properties value
  +	  */
  +	 public static Properties getProperties(String file)
  +	 {
  +		  Properties p = new Properties(System.getProperties());
  +		  try
  +		  {
  +				File f = new File(file);
  +				p.load(new FileInputStream(f));
  +		  }
  +		  catch (Exception e)
  +		  {
  +				try
  +				{
  +					 p.load(JMeterUtils.class.getClassLoader().getSystemResourceAsStream("org/apache/jmeter/jmeter.properties"));
  +				}
  +				catch (IOException ex)
  +				{
  +					 //JMeter.fail("Could not read internal resource. Archive is broken.");
  +				}
  +		  }
  +		  appProperties = p;
  +		  return p;
  +	 }
  +
  +	 /**
  +	  *  Gets the resource string for this key.
  +	  *  @param key the key in the resource file
  +	  *  @return the resource string if the key is found; otherwise, return an empty string
  +	  */
  +	 public static String getResString(String key)
  +	 {
  +		  String resString = null;
  +
  +		  try
  +		  {
  +				resString = RESOURCES.getString(key);
  +		  }
  +		  catch (MissingResourceException mre)
  +		  {
  +				System.out.println("ERROR! Resource string not found: [" + key + "]");
  +				resString = "";
  +		  }
  +
  +		  return resString;
  +	 }
  +
  +	 /**
  +	  *  This gets the currently defined appProperties. It can only be called after
  +	  *  the getProperties(String file) method is called.
  +	  *
  +	  *@return    The JMeterProperties value
  +	  */
  +	 public static Properties getJMeterProperties()
  +	 {
  +		  return appProperties;
  +	 }
  +
  +	 /**
  +	  *  This looks for the requested image in the classpath under
  +	  *  org.apache.jmeter.images. <name>
  +	  *
  +	  *@param  name  Description of Parameter
  +	  *@return       The Image value
  +	  */
  +	 public static ImageIcon getImage(String name)
  +	 {
  +		  try
  +		  {
  +				return new ImageIcon(JMeterUtils.class.getClassLoader().getResource(
  +								  "org/apache/jmeter/images/" + name.trim()));
  +		  }
  +		  catch(NullPointerException e)
  +		  {
  +				System.out.println(name);
  +				return null;
  +		  }
  +	 }
  +
  +	 /**
  +	  *  Creates the vector of Timers plugins.
  +	  *
  +	  *@param  properties  Description of Parameter
  +	  *@return             The Timers value
  +	  */
  +	 public static Vector getTimers(Properties properties)
  +	 {
  +		  return instantiate(getVector(properties, "timer."), "org.apache.jmeter.timers.Timer");
  +	 }
  +
  +	 /**
  +	  *  Creates the vector of visualizer plugins.
  +	  *
  +	  *@param  properties  Description of Parameter
  +	  *@return             The Visualizers value
  +	  */
  +	 public static Vector getVisualizers(Properties properties)
  +	 {
  +		  return instantiate(getVector(properties, "visualizer."),
  +					 "org.apache.jmeter.visualizers.Visualizer");
  +	 }
  +
  +	 /**
  +	  *  Creates a vector of SampleController plugins.
  +	  *
  +	  *@param  properties  The properties with information about the samplers
  +	  *@return             The Controllers value
  +	  */
  +	 public static Vector getControllers(Properties properties)
  +	 {
  +		  String name = "controller.";
  +		  Vector v = new Vector();
  +		  Enumeration names = properties.keys();
  +		  while (names.hasMoreElements())
  +		  {
  +				String prop = (String) names.nextElement();
  +				if (prop.startsWith(name))
  +				{
  +					 Object o = instantiate(properties.getProperty(prop),
  +								"org.apache.jmeter.control.SamplerController");
  +					 v.addElement(o);
  +				}
  +		  }
  +		  return v;
  +	 }
  +
  +	 /**
  +	  *  Create a string of class names for a particular SamplerController
  +	  *
  +	  *@param  properties  The properties with info about the samples.
  +	  *@param  name        The name of the sampler controller.
  +	  *@return             The TestSamples value
  +	  */
  +	 public static String[] getTestSamples(Properties properties, String name)
  +	 {
  +		  return (String[]) getVector(properties, name + ".testsample").toArray(new String[0]);
  +	 }
  +
  +	 /**
  +	  *  Create an instance of an org.xml.sax.Parser
  +	  *
  +	  * @deprecated use the plain version instead.  We are using JAXP!
  +	  *@param  properties  The properties file containing the parser's class name
  +	  *@return             The XMLParser value
  +	  */
  +	 public static XMLReader getXMLParser(Properties properties)
  +	 {
  +		  return getXMLParser();
  +	 }
  +
  +	 /**
  +	  *  Create an instance of an org.xml.sax.Parser based on the default props.
  +	  *
  +	  *@return    The XMLParser value
  +	  */
  +	 public static XMLReader getXMLParser()
  +	 {
  +		  XMLReader reader = null;
  +
  +		  try {
  +				reader = xmlFactory.newSAXParser().getXMLReader();
  +		  } catch (Exception e) {
  +				reader = (XMLReader) instantiate(getPropDefault("xml.parser", "org.apache.xerces.parsers.SAXParser"), "org.xml.sax.XMLReader");
  +		  }
  +
  +		  return reader;
  +	 }
  +
  +	 /**
  +	  *  Creates the vector of alias strings.
  +	  *
  +	  *@param  properties  Description of Parameter
  +	  *@return             The Alias value
  +	  */
  +	 public static Hashtable getAlias(Properties properties)
  +	 {
  +		  return getHashtable(properties, "alias.");
  +	 }
  +
  +	 /**
  +	  *  Creates a vector of strings for all the properties that start with a common
  +	  *  prefix.
  +	  *
  +	  *@param  properties  Description of Parameter
  +	  *@param  name        Description of Parameter
  +	  *@return             The Vector value
  +	  */
  +	 public static Vector getVector(Properties properties, String name)
  +	 {
  +		  Vector v = new Vector();
  +		  Enumeration names = properties.keys();
  +		  while (names.hasMoreElements())
  +		  {
  +				String prop = (String) names.nextElement();
  +				if (prop.startsWith(name))
  +				{
  +					 v.addElement(properties.getProperty(prop));
  +				}
  +		  }
  +		  return v;
  +	 }
  +
  +	 /**
  +	  *  Creates a vector of strings for all the properties that start with a common
  +	  *  prefix.
  +	  *
  +	  *@param  properties  Description of Parameter
  +	  *@param  name        Description of Parameter
  +	  *@return             The Hashtable value
  +	  */
  +	 public static Hashtable getHashtable(Properties properties, String name)
  +	 {
  +		  Hashtable t = new Hashtable();
  +		  Enumeration names = properties.keys();
  +		  while (names.hasMoreElements())
  +		  {
  +				String prop = (String) names.nextElement();
  +				if (prop.startsWith(name))
  +				{
  +					 t.put(prop.substring(name.length()), properties.getProperty(prop));
  +				}
  +		  }
  +		  return t;
  +	 }
  +
  +	 /**
  +	  *  Get a int value with default if not present.
  +	  *
  +	  *@param  propName    the name of the property.
  +	  *@param  defaultVal  the default value.
  +	  *@return             The PropDefault value
  +	  */
  +	 public static int getPropDefault(String propName, int defaultVal)
  +	 {
  +		  int ans;
  +		  try
  +		  {
  +				ans = (Integer.valueOf(
  +						  appProperties.getProperty(propName, Integer.toString(defaultVal)).trim())).intValue();
  +		  }
  +		  catch (Exception e)
  +		  {
  +				ans = defaultVal;
  +		  }
  +		  return ans;
  +	 }
  +
  +	 /**
  +	  *  Get a boolean value with default if not present.
  +	  *
  +	  *@param  propName    the name of the property.
  +	  *@param  defaultVal  the default value.
  +	  *@return             The PropDefault value
  +	  */
  +	 public static boolean getPropDefault(String propName, boolean defaultVal)
  +	 {
  +		  boolean ans;
  +		  try
  +		  {
  +				String strVal = appProperties.getProperty(propName,
  +						  (new Boolean(defaultVal)).toString()).trim();
  +				if (strVal.equalsIgnoreCase("true") || strVal.equalsIgnoreCase("t"))
  +				{
  +					 ans = true;
  +				}
  +				else if (strVal.equalsIgnoreCase("false") || strVal.equalsIgnoreCase("f"))
  +				{
  +					 ans = false;
  +				}
  +				else
  +				{
  +					 ans = ((Integer.valueOf(strVal)).intValue() == 1);
  +				}
  +		  }
  +		  catch (Exception e)
  +		  {
  +				ans = defaultVal;
  +		  }
  +		  return ans;
  +	 }
  +
  +	 /**
  +	  *  Get a long value with default if not present.
  +	  *
  +	  *@param  propName    the name of the property.
  +	  *@param  defaultVal  the default value.
  +	  *@return             The PropDefault value
  +	  */
  +	 public static long getPropDefault(String propName, long defaultVal)
  +	 {
  +		  long ans;
  +		  try
  +		  {
  +				ans = (Long.valueOf(appProperties.getProperty(propName, Long.toString(defaultVal)).trim())).longValue();
  +		  }
  +		  catch (Exception e)
  +		  {
  +				ans = defaultVal;
  +		  }
  +		  return ans;
  +	 }
  +
  +	 /**
  +	  *  Get a String value with default if not present.
  +	  *
  +	  *@param  propName    the name of the property.
  +	  *@param  defaultVal  the default value.
  +	  *@return             The PropDefault value
  +	  */
  +	 public static String getPropDefault(String propName, String defaultVal)
  +	 {
  +		  String ans;
  +		  try
  +		  {
  +				ans = appProperties.getProperty(propName, defaultVal).trim();
  +		  }
  +		  catch (Exception e)
  +		  {
  +				ans = defaultVal;
  +		  }
  +		  return ans;
  +	 }
  +
  +	 /**
  +	  *  Sets the selection of the JComboBox to the Object 'name' from the list in
  +	  *  namVec.
  +	  *
  +	  *@param  properties  Description of Parameter
  +	  *@param  combo       Description of Parameter
  +	  *@param  namVec      Description of Parameter
  +	  *@param  name        Description of Parameter
  +	  */
  +
  +	 public static void selJComboBoxItem(Properties properties, JComboBox combo, Vector namVec, String name)
  +	 {
  +
  +		  int idx = namVec.indexOf(name);
  +
  +
  +		  combo.setSelectedIndex(idx);
  +
  +
  +		  // Redisplay.
  +
  +		  combo.updateUI();
  +
  +		  return;
  +	 }
  +
  +
  +	 /**
  +	  *  Instatiate an object and guarantee its class.
  +	  *
  +	  *@param  className  The name of the class to instantiate.
  +	  *@param  impls      The name of the class it subclases.
  +	  *@return            Description of the Returned Value
  +	  */
  +
  +	 public static Object instantiate(String className, String impls)
  +	 {
  +		  if (className != null) className.trim();
  +		  if (impls != null) className.trim();
  +
  +		  try
  +		  {
  +
  +				Class c = Class.forName(impls);
  +
  +
  +				try
  +				{
  +
  +					 Class o = Class.forName(className);
  +
  +
  +					 Object res = o.newInstance();
  +
  +					 if (c.isInstance(res))
  +					 {
  +
  +						  return res;
  +					 }
  +
  +					 else
  +					 {
  +
  +						  throw new IllegalArgumentException
  +									 (className + " is not an instance of " + impls);
  +					 }
  +
  +				}
  +
  +				catch (ClassNotFoundException e)
  +				{
  +
  +					 System.err.println("Error loading class " +
  +								className + ": class is not found");
  +
  +				}
  +
  +				catch (IllegalAccessException e)
  +				{
  +
  +					 System.err.println("Error loading class " + className +
  +								": does not have access");
  +
  +				}
  +
  +				catch (InstantiationException e)
  +				{
  +
  +					 System.err.println("Error loading class " + className +
  +								": could not instantiate");
  +
  +				}
  +
  +				catch (NoClassDefFoundError e)
  +				{
  +
  +					 System.err.println("Error loading class " + className +
  +								": couldn't find class " + e.getMessage());
  +
  +				}
  +
  +		  }
  +
  +		  catch (ClassNotFoundException e)
  +		  {
  +
  +				System.err.println("Error loading class " + impls +
  +						  ": was not found.");
  +
  +		  }
  +
  +		  return null;
  +	 }
  +
  +
  +	 /**
  +	  *  Instantiate a vector of classes
  +	  *
  +	  *@param  v          Description of Parameter
  +	  *@param  className  Description of Parameter
  +	  *@return            Description of the Returned Value
  +	  */
  +
  +	 public static Vector instantiate(Vector v, String className)
  +	 {
  +
  +		  Vector i = new Vector();
  +
  +
  +		  try
  +		  {
  +
  +				Class c = Class.forName(className);
  +
  +				Enumeration elements = v.elements();
  +
  +				while (elements.hasMoreElements())
  +				{
  +
  +					 String name = (String) elements.nextElement();
  +
  +					 try
  +					 {
  +
  +						  Object o = Class.forName(name).newInstance();
  +
  +						  if (c.isInstance(o))
  +						  {
  +
  +								i.addElement(o);
  +
  +						  }
  +
  +					 }
  +
  +					 catch (ClassNotFoundException e)
  +					 {
  +
  +						  System.err.println("Error loading class " +
  +									 name + ": class is not found");
  +
  +					 }
  +
  +					 catch (IllegalAccessException e)
  +					 {
  +
  +						  System.err.println("Error loading class " + name + ": does not have access");
  +
  +					 }
  +
  +					 catch (InstantiationException e)
  +					 {
  +
  +						  System.err.println("Error loading class " + name + ": could not instantiate");
  +
  +					 }
  +
  +					 catch (NoClassDefFoundError e)
  +					 {
  +
  +						  System.err.println("Error loading class " + name + ": couldn't find class " + e.getMessage());
  +
  +					 }
  +
  +
  +				}
  +
  +		  }
  +		  catch (ClassNotFoundException e)
  +		  {
  +
  +				System.err.println("Error loading class " + className + ": class is not found");
  +
  +		  }
  +
  +
  +		  return i;
  +	 }
  +
  +
  +	 /**
  +	  *  Tokenize a string into a vector of tokens
  +	  *
  +	  *@param  string     Description of Parameter
  +	  *@param  separator  Description of Parameter
  +	  *@return            Description of the Returned Value
  +	  */
  +
  +	 public static Vector tokenize(String string, String separator)
  +	 {
  +
  +		  Vector v = new Vector();
  +
  +		  StringTokenizer s = new StringTokenizer(string, separator);
  +
  +		  while (s.hasMoreTokens())
  +		  {
  +
  +				v.addElement(s.nextToken());
  +
  +		  }
  +
  +		  return v;
  +	 }
  +
  +
  +	 /**
  +	  *  Create a button with the netscape style
  +	  *
  +	  *@param  name      Description of Parameter
  +	  *@param  listener  Description of Parameter
  +	  *@return           Description of the Returned Value
  +	  */
  +
  +	 public static JButton createButton(String name, ActionListener listener)
  +	 {
  +
  +		  JButton button = new JButton(getImage(name + ".on.gif"));
  +
  +		  button.setDisabledIcon(getImage(name + ".off.gif"));
  +
  +		  button.setRolloverIcon(getImage(name + ".over.gif"));
  +
  +		  button.setPressedIcon(getImage(name + ".down.gif"));
  +
  +		  button.setActionCommand(name);
  +
  +		  button.addActionListener(listener);
  +
  +		  button.setRolloverEnabled(true);
  +
  +		  button.setFocusPainted(false);
  +
  +		  button.setBorderPainted(false);
  +
  +		  button.setOpaque(false);
  +
  +		  button.setPreferredSize(new Dimension(24, 24));
  +
  +		  return button;
  +	 }
  +
  +
  +	 /**
  +	  *  Create a button with the netscape style
  +	  *
  +	  *@param  name      Description of Parameter
  +	  *@param  listener  Description of Parameter
  +	  *@return           Description of the Returned Value
  +	  */
  +
  +	 public static JButton createSimpleButton(String name, ActionListener listener)
  +	 {
  +
  +		  JButton button = new JButton(getImage(name + ".gif"));
  +
  +		  button.setActionCommand(name);
  +
  +		  button.addActionListener(listener);
  +
  +		  button.setFocusPainted(false);
  +
  +		  button.setBorderPainted(false);
  +
  +		  button.setOpaque(false);
  +
  +		  button.setPreferredSize(new Dimension(25, 25));
  +
  +		  return button;
  +	 }
  +
  +
  +	 /**
  +	  *  Takes a String and a tokenizer character, and returns a new array of
  +	  *  strings of the string split by the tokenizer character.
  +	  *
  +	  *@param  splittee   String to be split
  +	  *@param  splitChar  Character to split the string on
  +	  *@return            Array of all the tokens.
  +	  */
  +
  +	 public static String[] split(String splittee, String splitChar)
  +	 {
  +		  if (splittee == null || splitChar == null)
  +		  {
  +				return new String[0];
  +		  }
  +		  StringTokenizer tokens;
  +		  String temp;
  +		  int spot;
  +		  while ((spot = splittee.indexOf(splitChar + splitChar)) != -1)
  +		  {
  +				splittee = splittee.substring(0, spot + splitChar.length()) +
  +						  splittee.substring(spot + 2 * splitChar.length(),
  +						  splittee.length());
  +		  }
  +		  Vector returns = new Vector();
  +		  int start = 0;
  +		  int length = splittee.length();
  +		  spot = 0;
  +		  while (start < length && (spot = splittee.indexOf(splitChar, start)) > -1)
  +		  {
  +				if (spot > 0)
  +				{
  +					 returns.addElement(splittee.substring(start, spot));
  +				}
  +				start = spot + splitChar.length();
  +		  }
  +		  if (start < length)
  +		  {
  +				returns.add(splittee.substring(start));
  +		  }
  +		  String[] values = new String[returns.size()];
  +		  returns.copyInto(values);
  +		  return values;
  +	 }
  +	 // End Method
  +
  +
  +	 /**
  +	  *  Takes a String and a tokenizer character, and returns a new array of
  +	  *  strings of the string split by the tokenizer character.
  +	  *
  +	  *@param  splittee   String to be split
  +	  *@param  splitChar  Character to split the string on
  +	  *@param  def        Default value to place between two split chars that have
  +	  *      nothing between them
  +	  *@return            Array of all the tokens.
  +	  */
  +
  +	 public static String[] split(String splittee, String splitChar, String def)
  +	 {
  +		  if (splittee == null || splitChar == null)
  +		  {
  +				return new String[0];
  +		  }
  +		  StringTokenizer tokens;
  +		  String temp;
  +		  int spot;
  +		  while ((spot = splittee.indexOf(splitChar + splitChar)) != -1)
  +		  {
  +				splittee = splittee.substring(0, spot + splitChar.length()) + def +
  +						  splittee.substring(spot + 1 * splitChar.length(),
  +						  splittee.length());
  +		  }
  +		  Vector returns = new Vector();
  +		  int start = 0;
  +		  int length = splittee.length();
  +		  spot = 0;
  +		  while (start < length && (spot = splittee.indexOf(splitChar, start)) > -1)
  +		  {
  +				if (spot > 0)
  +				{
  +					 returns.addElement(splittee.substring(start, spot));
  +				}
  +				start = spot + splitChar.length();
  +		  }
  +		  if (start < length)
  +		  {
  +				returns.add(splittee.substring(start));
  +		  }
  +		  String[] values = new String[returns.size()];
  +		  returns.copyInto(values);
  +		  return values;
  +	 }
  +
  +	 /**
  +	  *  Report an error through a dialog box.
  +	  *
  +	  *@param  errorMsg  the error message.
  +	  */
  +	 public static void reportErrorToUser(String errorMsg)
  +	 {
  +		  JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
  +					 errorMsg,"Error",JOptionPane.ERROR_MESSAGE);
  +	 }
  +
  +	 /**
  +	  *  Finds a string in an array of strings and returns the
  +	  *
  +	  *@param  array  Array of strings.
  +	  *@param  value  String to compare to array values.
  +	  *@return        Index of value in array, or -1 if not in array.
  +	  */
  +
  +	 public static int findInArray(String[] array, String value)
  +	 {
  +		  int count = -1;
  +		  int index = -1;
  +		  if (array != null && value != null)
  +		  {
  +				while (++count < array.length)
  +				{
  +					 if (array[count] != null && array[count].equals(value))
  +					 {
  +						  index = count;
  +						  break;
  +					 }
  +				}
  +		  }
  +		  return index;
  +	 }
  +
  +
  +	 /**
  +	  *  Takes an array of strings and a tokenizer character, and returns a string
  +	  *  of all the strings concatenated with the tokenizer string in between each
  +	  *  one.
  +	  *
  +	  *@param  splittee   Array of Objects to be concatenated.
  +	  *@param  splitChar  Object to unsplit the strings with.
  +	  *@return            Array of all the tokens.
  +	  */
  +
  +	 public static String unsplit(Object[] splittee, Object splitChar)
  +	 {
  +
  +		  StringBuffer retVal = new StringBuffer("");
  +
  +		  int count = -1;
  +
  +		  while (++count < splittee.length)
  +		  {
  +
  +				if (splittee[count] != null)
  +				{
  +
  +					 retVal.append(splittee[count]);
  +				}
  +
  +				if (count + 1 < splittee.length && splittee[count + 1] != null)
  +				{
  +
  +					 retVal.append(splitChar);
  +				}
  +
  +		  }
  +
  +		  return retVal.toString();
  +	 }
  +	 // End Method
  +
  +
  +	 /**
  +	  *  Takes an array of strings and a tokenizer character, and returns a string
  +	  *  of all the strings concatenated with the tokenizer string in between each
  +	  *  one.
  +	  *
  +	  *@param  splittee   Array of Objects to be concatenated.
  +	  *@param  splitChar  Object to unsplit the strings with.
  +	  *@param  def        Default value to replace null values in array.
  +	  *@return            Array of all the tokens.
  +	  */
  +
  +	 public static String unsplit(Object[] splittee, Object splitChar, String def)
  +	 {
  +
  +		  StringBuffer retVal = new StringBuffer("");
  +
  +		  int count = -1;
  +
  +		  while (++count < splittee.length)
  +		  {
  +
  +				if (splittee[count] != null)
  +				{
  +
  +					 retVal.append(splittee[count]);
  +				}
  +
  +				else
  +				{
  +
  +					 retVal.append(def);
  +				}
  +
  +				if (count + 1 < splittee.length)
  +				{
  +
  +					 retVal.append(splitChar);
  +				}
  +
  +		  }
  +
  +		  return retVal.toString();
  +	 }
  +	 // End Method
  +
  +
  +	 /**
  +	  * Gets the JMeter Version.
  +	  * @returns the JMeter version.
  +	  */
  +	 public static String getJMeterVersion()
  +	 {
  +		  return "@VERSION@";
  +	 }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>