Thanks for the great article! It made a good introduction to the new JSON capabilities in Caché for me.

But it seems like there is one super strange issue with $toJSON method.

Check this simple REST application:

Class JSON.Mystery Extends %CSP.REST
{

XData UrlMap
{
<Routes>
   <Route Url="/test" Method="GET" Call="Test"/>
</Routes>
}

ClassMethod Test() As %Status
{
set = "test"1 }
do a.$toJSON()
quit $$$OK
}

}

Guess what you get by querying "http://hostname/webAppName/test"? You get nothing. And now, by adding a pointless change to the Test method:

ClassMethod Test() As %Status
{
set = "test":1 }
write ""  // Right. This one.
do a.$toJSON()
quit $$$OK
}

Everything works as expected, string '{"test":1}' is outputted. Tested on Caché 2016.2.0.590.0.

Any ideas on why this happens? Doesn't $toJSON function initialize the output as write does?

Thank you Wolf for the good suggestions! Especially about UML associations.

As Timur mentioned, you can fill the issue or feature request on GitHub's Class Explorer issue tracker, but don't expect it to be implemented fast if only it is not critical for you. Just left the suggestions there to keep things organized, if you have some time.

Thanks for your interest on the project!

Alex, the current WebTerminal version (3.1.4) supports only VT100/Caché TERM applications. The VT440 support was not in the close future todo list, but may become true anytime.

We had tried to run some "dinosaurs" in WebTerminal and some of them worked really well, but moslty it was all about the issue with the Caché command "USE": it breaks WebSocket connection and should be used properly considering that WebTerminal is an "over-TCP device". I believe one day we will find a way to make no difference between the common Terminal and WebTerminal behavior at this point, but today these application maybe should include a little fix to any usage of "USE" commands inside terminal applications.