bloritsch    02/01/22 05:58:20

  Modified:    src/org/apache/jmeter/util JMeterUtils.java
  Log:
  fix XML parser instantiation isues
  
  Revision  Changes    Path
  1.21      +864 -842  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.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- JMeterUtils.java  23 Dec 2001 04:36:19 -0000      1.20
  +++ JMeterUtils.java  22 Jan 2002 13:58:20 -0000      1.21
  @@ -67,6 +67,8 @@
   import org.xml.sax.*;
   import org.apache.jmeter.gui.util.ComponentUtil;
   import org.apache.jmeter.gui.GuiPackage;
  +import javax.xml.parsers.SAXParserFactory;
  +import javax.xml.parsers.SAXParser;
   
   
   /**
  @@ -74,852 +76,872 @@
    *
    *@author     <a href="mailto:[EMAIL PROTECTED]";>Stefano Mazzocchi</a>
    *@created    June 28, 2001
  - *@version    $Revision: 1.20 $ $Date: 2001/12/23 04:36:19 $
  + *@version    $Revision: 1.21 $ $Date: 2002/01/22 13:58:20 $
    */
   
   public class JMeterUtils
   {
   
  +    private static final SAXParserFactory xmlFactory;
   
  -
  -     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
  -      *
  -      *@param  properties  The properties file containing the parser's class name
  -      *@return             The XMLParser value
  -      */
  -     public static XMLReader getXMLParser(Properties properties)
  -     {
  -             return (XMLReader) 
instantiate(getPropDefault("xml.parser","org.xml.sax.Parser"),
  -                             "org.xml.sax.Parser");
  -     }
  -
  -     /**
  -      *  Create an instance of an org.xml.sax.Parser based on the default props.
  -      *
  -      *@return    The XMLParser value
  -      */
  -     public static XMLReader getXMLParser()
  -     {
  -             return getXMLParser(getJMeterProperties());
  -     }
  -
  -     /**
  -      *  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)
  -     {
  -
  -             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.7Beta2";
  -     }
  +    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)
  +    {
  +
  +        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.7Beta2";
  +    }
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to