Re: [JMeter] evolution request - handle BeanDescriptor.hidden flag in JMeter
Stéphane Hoblingre <[email protected]> Wed, 9 Nov 2011 13:52:33 +0530
| Newsgroups | gmane.comp.jakarta.cactus.devel |
|---|---|
| Message-ID | <CA+oWjF6Xj1W6YUM7=ZoEsc780C9mxA6hm7vGVWT5SgrFowk8+w@mail.gmail.com> |
--f46d043895676628e304b148fdb6
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Hi again,
In addition to this, could it be possible to add this method in
org.apache.jmeter.util.NameUpdater.java :
public static Object setProperty(String key, String value) {
return nameMap.setProperty(String key, String value);
}
This would allow plugins to add their own translation rules, without having
to modify the properties file.
Thanks and Regards,
Stef
2011/11/9 St=E9phane Hoblingre <[email protected]>
> Thank you Sebb for your quick response!
>
> I know about not_in_menu configuration, but we would like to avoid JMeter
> users to edit propertie file from JMeter to install the plugins. So this =
is
> why we would like to do it from the plugin code itself. I did the
> modification in MenuFactory.java from trunk (r1199633), please find
> attached the patch / file.
>
> The modification is very light (in bold):
>
> if (name.endsWith("JMeterTreeNode") // $NON-NLS-1$
> || name.endsWith("TestBeanGUI")) {// $NON-NLS-1$
> continue;// Don't try to instantiate these
> }
>
> *>//Handle BeanDescriptor hidden property
> >boolean isHiddenBean =3D false;*
>
> JMeterGUIComponent item;
> try {
> Class<?> c =3D Class.forName(name);
> if (TestBean.class.isAssignableFrom(c)) {
> item =3D new TestBeanGUI(c);
> *> try {
> > isHiddenBean =3D
> Introspector.getBeanInfo(c).getBeanDescriptor().isHidden();
> > } catch (IntrospectionException e) {
> > log.warn("Cannot get bean info from class " + name + ".");
> > }*
>
> } else {
> item =3D (JMeterGUIComponent) c.newInstance();
> }
> } catch (NoClassDefFoundError e) {
> log.warn("Missing jar? Could not create " + name + ". " + e);
> continue;
> } catch (Throwable e) {
> log.warn("Could not instantiate " + name, e);
> if (e instanceof Error){
> throw (Error) e;
> }
> if (e instanceof RuntimeException){
> throw (RuntimeException) e;
> }
> continue;
> }
> *>* if (elementsToSkip.contains(name) ||
> elementsToSkip.contains(item.getStaticLabel()) *|| isHiddenBean*) {
> log.info("Skipping " + name);
> continue;
> }
>
> Could this be added in the next version of JMeter?
>
> Thanks,
>
> Stef
>
>
> On Wed, Nov 9, 2011 at 12:06 AM, sebb <[email protected]> wrote:
>
>> 2011/11/8 St=E9phane Hoblingre <[email protected]>:
>> > Dear JMeter dev team,
>> >
>> > I have an evolution request for JMeter which will help plugin
>> developers.
>> > In our plugins, we implemented one component using TestBeans. We have
>> now
>> > rewrote this component and use regular test elements, so we need to hi=
de
>> > the previous one from jmeter add menus (backward jmx compatibility). T=
he
>> > only way I found is very dirty, that is setting its name to null. But =
in
>>
>> You can also edit the JMeter property:
>>
>> not_in_menu
>>
>> see jmeter.properties.
>>
>> You might also be able to make use of upgrade.properties and dispense
>> with the old class altogether.
>>
>> > BeanDescriptor class, there is one attribute:
>> >
>> > isHidden
>> > public boolean isHidden()
>> > The "hidden" flag is used to identify features that are intended on=
ly
>> > for tool use, and which should not be exposed to humans.
>> >
>> > While building the add component menu, could you check the hidden flag
>> and
>> > if true not add it in the menu? That would allow to plugin developers =
to
>> > hide properly it.
>> >
>> > Is it possible? Do you want me to open a bug for it?
>>
>> If it can be done without affecting the existing API, then I suppose
>> it would be possible to interpret the isHidden() status as meaning
>> that the TestBean is not added to the display.
>>
>> If you provide a patch as a Bugzilla enhancement we will take a look.
>>
>> > Thanks,
>> >
>> > Stef
>> > JMeter Plugins - http://code.google.com/p/jmeter-plugins
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
--f46d043895676628e304b148fdb6--