You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by sebb <se...@gmail.com> on 2011/12/04 18:21:26 UTC
Re: svn commit: r1209955 - in /jmeter/trunk: src/core/org/apache/jmeter/gui/GuiPackage.java
src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java xdocs/changes.xml
On 3 December 2011 17:20, <pm...@apache.org> wrote:
> Author: pmouawad
> Date: Sat Dec 3 17:20:49 2011
> New Revision: 1209955
>
> URL: http://svn.apache.org/viewvc?rev=1209955&view=rev
> Log:
> Bug 52279 - Switching to another language loses icons in Tree and logs error Can't obtain GUI class from ...
-1
Need better way of doing language changes for TestBeanGui elements.
> Modified:
> jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
> jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
> jmeter/trunk/xdocs/changes.xml
>
> Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java?rev=1209955&r1=1209954&r2=1209955&view=diff
> ==============================================================================
> --- jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java (original)
> +++ jmeter/trunk/src/core/org/apache/jmeter/gui/GuiPackage.java Sat Dec 3 17:20:49 2011
> @@ -362,6 +362,10 @@ public final class GuiPackage implements
> comp = testBeanGUIs.get(testClass);
> if (comp == null) {
> comp = new TestBeanGUI(testClass);
> + // When Switching to another language occurs, Introspector clears its internal caches
> + // and GUI classes information gets lost, so we initialize the GUI classes here
> + // TODO Find a better place for this
> + ((TestBeanGUI)comp).setupGuiClasses();
Surely this is not needed here anyway?
The class has just been created, so the cache will have just been created.
I think the TestBean changes need to be reverted while we find a
better solution.
> testBeanGUIs.put(testClass, comp);
> }
> } else {
>
> Modified: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java?rev=1209955&r1=1209954&r2=1209955&view=diff
> ==============================================================================
> --- jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java (original)
> +++ jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java Sat Dec 3 17:20:49 2011
> @@ -25,6 +25,7 @@ import java.beans.IntrospectionException
> import java.beans.Introspector;
> import java.beans.PropertyDescriptor;
> import java.beans.PropertyEditorManager;
> +import java.util.ArrayList;
> import java.util.Arrays;
> import java.util.Collection;
> import java.util.HashMap;
> @@ -347,9 +348,34 @@ public class TestBeanGUI extends Abstrac
> return null;
> }
>
> - int matches = 0; // How many classes can we assign from?
Not sure this is all necessary.
> + int matches = setupGuiClasses(menuCategories);
> + if (matches == 0) {
> + log.error("Could not assign GUI class to " + testBeanClass.getName());
> + } else if (matches > 1) {// may be impossible, but no harm in
> + // checking ...
> + log.error("More than 1 GUI class found for " + testBeanClass.getName());
> + }
> + return menuCategories;
> + }
> +
> + /**
> + * Setup GUI class
> + * @return number of matches
> + */
> + public int setupGuiClasses() {
> + return setupGuiClasses(new ArrayList<String>());
> + }
> +
> + /**
> + * Setup GUI class
> + * @param menuCategories List<String> menu categories
> + * @return number of matches
> + */
> + private int setupGuiClasses(List<String> menuCategories ) {
> + int matches = 0;// How many classes can we assign from?
> // TODO: there must be a nicer way...
> - if (Assertion.class.isAssignableFrom(testBeanClass)) {
> + BeanDescriptor bd = beanInfo.getBeanDescriptor();
> + if (Assertion.class.isAssignableFrom(testBeanClass)) {
> menuCategories.add(MenuFactory.ASSERTIONS);
> bd.setValue(TestElement.GUI_CLASS, AbstractAssertionGui.class.getName());
> matches++;
> @@ -375,27 +401,21 @@ public class TestBeanGUI extends Abstrac
> matches++;
> }
> if (PreProcessor.class.isAssignableFrom(testBeanClass)) {
> - matches++;
> menuCategories.add(MenuFactory.PRE_PROCESSORS);
> bd.setValue(TestElement.GUI_CLASS, AbstractPreProcessorGui.class.getName());
> + matches++;
> }
> if (Sampler.class.isAssignableFrom(testBeanClass)) {
> - matches++;
> menuCategories.add(MenuFactory.SAMPLERS);
> bd.setValue(TestElement.GUI_CLASS, AbstractSamplerGui.class.getName());
> + matches++;
> }
> if (Timer.class.isAssignableFrom(testBeanClass)) {
> - matches++;
> menuCategories.add(MenuFactory.TIMERS);
> bd.setValue(TestElement.GUI_CLASS, AbstractTimerGui.class.getName());
> + matches++;
> }
> - if (matches == 0) {
> - log.error("Could not assign GUI class to " + testBeanClass.getName());
> - } else if (matches > 1) {// may be impossible, but no harm in
> - // checking ...
> - log.error("More than 1 GUI class found for " + testBeanClass.getName());
> - }
> - return menuCategories;
> + return matches;
> }
>
> private void init() {
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1209955&r1=1209954&r2=1209955&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml (original)
> +++ jmeter/trunk/xdocs/changes.xml Sat Dec 3 17:20:49 2011
> @@ -154,6 +154,7 @@ This behaviour can be changed with prope
> <li>Bug 52217 - ViewResultsFullVisualizer : Synchronization issues on root and treeModel</li>
> <li>Bug 43294 - XPath Extractor namespace problems</li>
> <li>Bug 52224 - TestBeanHelper does not support NOT_UNDEFINED == Boolean.FALSE</li>
> +<li>Bug 52279 - Switching to another language loses icons in Tree and logs error Can't obtain GUI class from ...</li>
> </ul>
>
> <!-- =================== Improvements =================== -->
>
>