JSM bindings and field length

Normally, in RDML, setting a char field to a string value that is too long truncates the string, silently.

Imagine my surprise when, using Lansa Integrator’s JSM, this was different. I am pretty sure that is because JSM, being Java, does not truncate a string value silently. In fact, looking at the trace files, in SERVICE.TXT I find

stack trace: java.lang.IllegalArgumentException: DataTypeText: byte data exceeds size of data type definition (34,30) (field: WERROR)
at com.lansa.jsm.d.setValue(Unknown Source)
at com.lansa.jsm.service.SOAPAgentService.a(Unknown Source)
at com.lansa.jsm.service.SOAPAgentService.do(Unknown Source)
at com.lansa.jsm.service.SOAPAgentService.a(Unknown Source)
at com.lansa.jsm.service.SOAPAgentService.for(Unknown Source)
at com.lansa.jsm.service.SOAPAgentService.command(Unknown Source)
at com.lansa.jsm.f.for(Unknown Source)
at com.lansa.jsm.f.do(Unknown Source)
at com.lansa.jsm.f.run(Unknown Source)

Command : ERROR : "DataTypeText: byte data exceeds size of data type definition (34,30) (field: WERROR)"

Unfortunately, using RDML and JSM, this is difficult to prevent in all cases. In this specific case, I can be fairly sure what the maximum length of the string value will be so I changed #WERROR to be a char(255).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s