IBM / JTOpen

IBM Toolbox for Java, an IBM i communications library
https://ibm.github.io/JTOpen/
Other
56 stars 26 forks source link

JTOpen 20.0.7 Testing NetServerTest fails with ResourceException: One or more attributes were not returned. #161

Closed jeber-ibm closed 5 months ago

jeber-ibm commented 5 months ago

Seeing a problem with the Netserver tests. All seem to have a resource exception. Here is a stack.

com.ibm.as400.resource.ResourceException: One or more attributes were not returned. at com.ibm.as400.resource.ProgramAttributeGetter.getValue(ProgramAttributeGetter.java:178) at com.ibm.as400.resource.ProgramAttributeGetter.getValue(ProgramAttributeGetter.java:105) at com.ibm.as400.resource.ProgramAttributeSetter.initializeAttributeValues(ProgramAttributeSetter.java:148) at com.ibm.as400.resource.ProgramAttributeSetter.initializeAttributeValues(ProgramAttributeSetter.java:95) at com.ibm.as400.access.NetServer.establishConnection(NetServer.java:794) at com.ibm.as400.access.NetServer.listFileShares(NetServer.java:933) at test.NetServerFileShareTestcase.Var005(NetServerFileShareTestcase.java:130)

jeber-ibm commented 5 months ago

The root cause of the problem seems to be a bad PCML document. This can be seen by turning on trace and seeing the cause of the exception.

Thread[main,5,main] Fri Feb 2 14:28:51:411 CST 2024 ResourceException was thrown com.ibm.as400.data.PcmlException: element named 'qzlsolst_zlsl0201.receiverVariable.authenticationMethodP' not found in document. at com.ibm.as400.data.PcmlDocument.getDataNode(PcmlDocument.java:764) at com.ibm.as400.data.PcmlDocument.getValue(PcmlDocument.java:613) at com.ibm.as400.data.PcmlDocument.getValue(PcmlDocument.java:606) at com.ibm.as400.data.ProgramCallDocument.getValue(ProgramCallDocument.java:873)

I see there are two NetServer.pcml documents in the tree.
./pcml/NetServer.pcml ./src/main/resources/com/ibm/as400/access/NetServer.pcml The one in the longer path has authenticationMethodP defined.

Is the build process building the right PCML document?

jeber-ibm commented 5 months ago

If I manually build the pcml.ser file using the .pcml in the jar, I get a larger size. ~> unzip jt400.jar ~> java com/ibm/as400/data/ProgramCallDocument -serialize com/ibm/as400/access/NetServer.pcml ~> ls -l com/ibm/as400/access/NetServer* -rw-r--r-- 1 jeber jeber 16876 Feb 02 00:41 com/ibm/as400/access/NetServer.class -rw-r--r-- 1 jeber jeber 24829 Feb 02 00:41 com/ibm/as400/access/NetServer.pcml -rw-r--r-- 1 jeber jeber 74085 Feb 02 14:56 com/ibm/as400/access/NetServer.pcml.ser The size in the jar file is smaller. ~> jar tvf jt400.jar | grep NetServer.pcml.ser 72119 Fri Feb 02 00:42:16 CST 2024 com/ibm/as400/access/NetServer.pcml.ser

jeber-ibm commented 5 months ago

Closing, this has been fixed.