[Java Gateway] How to interprete %Status of COS in Java side
I fire a call of COS method through Java gateway and get the return value whose type is %Status in COS.
What is the corresponding class for %Status in Java side? Any existing utility to help me parse this object so I could know this COS call finish with errors or not.
I only know what to use on the COS side; you can use the %SYSTEM.Status class with methods IsOK, IsError, GetErrorText, GetErrorCodes, like this:
s returnStatus = ...code that returns %Status...
s isOK = ##class(%SYSTEM.Status).IsOK(returnStatus)
There is a shortcut:
s isOK = $system.Status.IsOK(returnStatus)
I find .GetErrorText(returnStatus) and .DisplayError(returnStatus) methods to be quite useful when I want to display the error text in an alert window or on the screen (respectively).
See the class reference for more methods.
I don't know of a utility on the Java side; that would be nice to know. Perhaps you can call out to COS again to parse it and return a Java type. However, the first character of a %Status is always a 1 if it's OK, and a 0 if it's an error.
Is this what you were looking for?
Thanks,
Laura
Hi Laura,
Thanks for your response, but this is not what I want.
Since when COS fail, some error messages would also get returned and I need to how to access these messages from Java side.
Ah, so you need to map the %SYSTEM.Status class from cache to a Java object. I've never done that. Did the "Java Proxy Class Mapping" have anything helpful?
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
and
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
I'm thinking you might have to create your own Status class that extens %Status; like creating your own exception class in Java. Then you can edit your Status class so that when compiled it will create a Java class.
Sounds fun. Let me know if this works for you.