You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2014/03/22 00:50:40 UTC

svn commit: r1580086 - in /jmeter/trunk: src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java xdocs/changes.xml

Author: sebb
Date: Fri Mar 21 23:50:40 2014
New Revision: 1580086

URL: http://svn.apache.org/r1580086
Log:
JSR223 language display does not show which engine will be used
Bugzilla Id: 56298

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java
    jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java?rev=1580086&r1=1580085&r2=1580086&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java Fri Mar 21 23:50:40 2014
@@ -19,11 +19,13 @@
 package org.apache.jmeter.util;
 
 import java.util.Arrays;
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.List;
+import java.util.ListResourceBundle;
 import java.util.Locale;
-import java.util.Set;
-
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.ResourceBundle;
 import javax.script.ScriptEngineFactory;
 import javax.script.ScriptEngineManager;
 
@@ -36,22 +38,44 @@ public abstract class JSR223BeanInfoSupp
 
     private static final String[] LANGUAGE_TAGS;
 
+    public static final String[][] LANGUAGE_NAMES;
+
     static {
-        Set<String> shortNames = new HashSet<String>();
+        Map<String, ScriptEngineFactory> nameMap = new HashMap<String, ScriptEngineFactory>();
         ScriptEngineManager sem = new ScriptEngineManager();
         final List<ScriptEngineFactory> engineFactories = sem.getEngineFactories();
         for(ScriptEngineFactory fact : engineFactories){
             List<String> names = fact.getNames();
             for(String shortName : names) {
-                shortNames.add(shortName.toLowerCase(Locale.ENGLISH));
+                nameMap.put(shortName.toLowerCase(Locale.ENGLISH), fact);
             }
         }
-        LANGUAGE_TAGS = shortNames.toArray(new String[shortNames.size()]);
+        LANGUAGE_TAGS = nameMap.keySet().toArray(new String[nameMap.size()]);
         Arrays.sort(LANGUAGE_TAGS);
+        LANGUAGE_NAMES = new String[nameMap.size()][2];
+        int i = 0;
+        for(Entry<String, ScriptEngineFactory> me : nameMap.entrySet()) {
+            final String key = me.getKey();
+            LANGUAGE_NAMES[i][0] = key;
+            final ScriptEngineFactory fact = me.getValue();
+            LANGUAGE_NAMES[i++][1] = key + 
+                    "     (" // $NON-NLS-1$
+                    + fact.getLanguageName() + " " + fact.getLanguageVersion()  // $NON-NLS-1$
+                    + " / "  // $NON-NLS-1$
+                    + fact.getEngineName() + " " + fact.getEngineVersion() // $NON-NLS-1$
+                    + ")";   // $NON-NLS-1$
+        }
     }
 
+    private static final ResourceBundle NAME_BUNDLE = new ListResourceBundle() {            
+        @Override
+        protected Object[][] getContents() {
+            return LANGUAGE_NAMES;
+        }
+    };
+
     protected JSR223BeanInfoSupport(Class<? extends TestBean> beanClass) {
-        super(beanClass, LANGUAGE_TAGS);
+        super(beanClass, LANGUAGE_TAGS, NAME_BUNDLE);
     }
 
 }

Modified: jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java?rev=1580086&r1=1580085&r2=1580086&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java Fri Mar 21 23:50:40 2014
@@ -19,6 +19,7 @@
 package org.apache.jmeter.util;
 
 import java.beans.PropertyDescriptor;
+import java.util.ResourceBundle;
 
 import org.apache.jmeter.testbeans.BeanInfoSupport;
 import org.apache.jmeter.testbeans.TestBean;
@@ -30,13 +31,20 @@ import org.apache.jmeter.testbeans.gui.T
  */
 public abstract class ScriptingBeanInfoSupport extends BeanInfoSupport {
 
-    protected ScriptingBeanInfoSupport(Class<? extends TestBean> beanClass, String[] LANGUAGE_TAGS) {
+    public ScriptingBeanInfoSupport(Class<? extends TestBean> beanClass, String[] languageTags) {
+        this(beanClass, languageTags, null);
+    }
+
+    protected ScriptingBeanInfoSupport(Class<? extends TestBean> beanClass, String[] LANGUAGE_TAGS, ResourceBundle rb) {
         super(beanClass);
         PropertyDescriptor p;
 
         p = property("scriptLanguage"); // $NON-NLS-1$
         p.setValue(NOT_UNDEFINED, Boolean.TRUE);
         p.setValue(DEFAULT, ""); // $NON-NLS-1$
+        if (rb != null) {
+            p.setValue(RESOURCE_BUNDLE, rb);
+        }
         p.setValue(TAGS, LANGUAGE_TAGS);
 
         createPropertyGroup("scriptingLanguage", // $NON-NLS-1$

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1580086&r1=1580085&r2=1580086&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Fri Mar 21 23:50:40 2014
@@ -211,6 +211,7 @@ A workaround is to use a Java 7 update 4
 <ul>
 <li><bugzilla>21695</bugzilla> - Unix jmeter start script assumes it is on PATH, not a link</li>
 <li><bugzilla>56292</bugzilla> - Add the check of the Java's version in startup files and disable some options when is Java v8 engine</li>
+<li><bugzilla>56298</bugzilla> - JSR223 language display does not show which engine will be used</li>
 </ul>
 
 <ch_section>Non-functional changes</ch_section>