Java and ColdFusion variables

Ben

June 16, 2021

At NerdVision we are always open to your feedback, and we want to make NerdVision the best it can be for you! Recently we received some feedback about how we were presenting variables from our Java agent (which is also used for ColdFusion, Groovy, Scala and Kotlin). We are excited to announce a change has been released that addresses this feedback and changes the way some variables are displayed from these environments. Specifically, we have changed the way maps are processed in the agent to handle simple keys in a more intuitive manner.

What was it before?

Before this change, we were processing all the values in a map as a collection of key-value pairs. This approach was to ensure the most accurate representation of the data and was modeled after similar tools in the debugging world. The primary reason for this approach was due to the ability in Java to have complex keys (a very powerful feature of the language) that can have multiple properties. The problem then becomes how to render these complex keys in the UI while maintaining the understanding of the data. Although we feel that we achieved this with the previous approach, the issues begin when you do not use these complex keys.

A key-value pair with a simple key

What is it now?

After discussions with users, we were able to change the way the agent processes the values of maps to make it handle simple keys in an easier to understand way. Now when the agent is processing the map values, it will look at the key type and if the key is a simple value it will use that value as the variable name in the snapshot. This means that the NerdVision UI is able to present this data in a much simpler format.

Simplified format for maps

Further improvements?

When we started working on this, we came across a few other issues that we will be working on in the next few weeks. These include:

  • ColdFusion Scopes - Sometimes these can contain references to functions and are then visible in the NerdVision UI as variables. We will be removing these references and instead including the property directly where we can. Other references to functions will be removed (as there is no usable data in them) to keep the data set clean.
  • Collection Sizes - We will be reviewing how we control the size of collections captured in NerdVision to ensure we are getting the data that is most important
  • Static Variables - We will be reviewing the collection of static variables to ensure we can remove anything that might not be relevant (e.g. properties on Java classes)
  • Modifier Capture - We will be looking into the ability to add the modifier information into the variable, so we can indicate if the value is public, private, static etc.
  • Thread Info - Adding the current thread info into the result, so this can be seen in the UI.
  • Lock Info - Capture any lock information available, so we can indicate this information in the UI.

Get involved!

We always welcome feedback about how you use our product, if you have any feedback or thoughts on the data we gather or any input to the above improvements please contact us! - join us on discord, or email support@nerd.vision.

Ben

Ben

Experienced developer in various languages, currently a product owner of nerd.vision leading the back end architecture.