Project

Profile

Help

Bug #3952

SchemaValidator 'lax' option causes crash

Added by O'Neil Delpratt 10 months ago. Updated 4 months ago.

Status:
Resolved
Priority:
High
Category:
-
Start date:
2018-10-05
Due date:
% Done:

100%

Found in version:
1.1.0
Fixed in version:

Description

When we use the 'lax' option on SchemaValidator it causes a crash. for example. validator.setProperty("lax", "true");

Internal error reported when debug is switched on:

Exception in thread "main" java.lang.ClassCastException: java.lang.String
    at net.sf.saxon.option.cpp.SchemaValidatorForCpp.applySchemaProperties(Unknown Source)
    at net.sf.saxon.option.cpp.SchemaValidatorForCpp.validate(Unknown Source)

The cause is in the SchemaValidatorForCpp Java class does not first convert the string to boolean.

SchemaValidator.h (5.98 KB) Contains workaround fix O'Neil Delpratt, 2018-10-05 19:06 SchemaValidator.h
SchemaValidator.cpp (17.8 KB) Contains workaround fix O'Neil Delpratt, 2018-10-05 19:06 SchemaValidator.cpp

History

#1 Updated by O'Neil Delpratt 10 months ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Bug fixed. Made change in the Java class SchemaValidatorForCpp.

Workaround alternatives:

  1. Set lax option in a config file. But there seems to be an issue with using a config file and SchemaValidation. see bug issue: #3953
  2. Modify the SchemaValidator.cpp file to pass the expected value for the 'lax' option i.e. Boolean object.

#2 Updated by O'Neil Delpratt 10 months ago

hi,

I have modified the SchemaValidator class with the option 2 workaround from comment #1

Notice we now have a method called setLax(boolean) used to set the lax option.

#3 Updated by O'Neil Delpratt 5 months ago

  • Status changed from Resolved to Closed
  • Fixed in version set to 1.1.2

Bug fix applied in the Saxon/C 1.1.2 maintenance release.

#4 Updated by O'Neil Delpratt 4 months ago

  • Status changed from Closed to In Progress
  • Fixed in version deleted (1.1.2)

Reported by user:

The setLax() function added to the API Schema Validator as a workaround doesn't exist in the 1.1.2 API.

#5 Updated by O'Neil Delpratt 4 months ago

As a workaround the following will work the same way as setLax:

XdmAtomicValue value = processor.makeBooleanValue(true);
sv.setParameter(“lax", value);

#6 Updated by O'Neil Delpratt 4 months ago

  • Status changed from In Progress to Resolved

setLax method and related code reinserted in SchemaValidator class in svn for both the 1.1 and 1.2 branches.

Please register to edit this issue

Also available in: Atom PDF