Skip to content

Whatsnew_22

Francis Galiegue edited this page Apr 14, 2014 · 3 revisions

Introduction

This page lists all new features and other miscellaneous information compared to versions 2.0.x.

Global changes

License change

The project is now dual licensed under LGPL 3.0 (or later) and ASL 2.0. Prior versions were LGPL 3.0 (or later) only.

All new features from json-schema-core

For this, have a look at the wiki page for this package.

Gradle as a build system

The gradle wrapper is included, therefore all you have to do is have a JDK (at least 1.6) installed and run ./gradlew tasks (gradlew.bat tasks under Windows) to list available tasks.

Running from command line

You can now run from the command line. For this, you can download the standalone jar or fork this project and issue the ./gradlew fullJar command; this will produce a runnable jar in build/libs/jsonschema.jar.

You can then do:

java -jar path/to/jar --help

to see the full help.

Better compatibility with OSGi/APK builds

This of course implies that some packages (a lot, in fact) have been moved around; but you should now be able to reliably use this package on OSGi deployments and APK builds.

Validation

Full ISO 8601 support

This package now correctly analyzes that 2013-10-10T12:00:00.0+03:00 is a valid ISO 8601 date time; prior to this, only three digits were allowed in milliseconds.

"Lenient" validation of instance container children

When validating instances, if an array or object was deemed invalid, the process would not attempt to validate its children; you now have the option to validate children nevertheless.

Note however that this can lead to bizarre results since, in this case, there is no guarantee that the schema selected for this or that child (array element or object member) is the one you expected! The implementation will make a best effort at choosing, but that is only it, a best effort...

Further format attributes

Prior to this, they were in a (now dead) json-schema-formats package. Reminder: all format attributes (save for style and color) defined in the drafts are supported. This package additionally supports the following:

  • base64 (RFC 4648, section 4);
  • json-pointer (RFC 6901);
  • mac (a MAC address, IEEE 802);
  • md5, sha1, sha256, sha512 (note that a SHA1 is what git uses as commit ids);
  • uri-template (RFC 6570),
  • uuid.

Unicode-aware string length tests

The string length tests (of minLength and maxLength) now correctly account for Unicode supplementary characters (ie, code points greater than U+FFFF).