SICSR-18254

[SICSR-18254] Sequence Number incorrectly typed as decimal number  
Product Line: P&C
Component/s: SICS Server
Affects Version/s: SICS 4.9.5
Fix Version/s: SICS 20.1 SICS 4.9.5 SSP2
Customer: DXC

We switched to use the new Axis2 web service engine in SICS 4.9.5.

After this change, the web service clients we generate hits an error when trying to deserialize a server repsonse that includes the field "seqNr".

"seqNr" is types as integer in our XSD's, but is typed (incorrectly) as BigDecimal in SICS java code. This causes the SICS Server to return values such as "1.00" for this field even if it is typed as "xsd:integer". This causes a number format exception when deserializing the response in the web service client.

"seqNr" has been incorrectly typed as BigDecimal in SICS since the Java conversion project years back. In Smalltalk it was correctly handled as an integer.

The only reason we haven't discovered this earlier or bothered to fix it, is because it happened to work by accident when we used Axis 1 as our web service engine.

 

Just to double-check, I have inspected the values in schema SICS4PC on Oracle 003V on column BUS_RETRO.SEQ_NR.

All values are either null or whole numbers (despite the table column being defined as a decimal number; 20,2). So it should be safe to truncate the column's values into real integer numbers (and change the table definition to use integer for that column).

 

So this fix requires some code changes and a database patch, but there will be no visible/ or functional changes exposed to the end-user.