Files
Anatolii Sakhnik 249595d688 Redesign JSON validation against schema
:Release Notes:
Remove previous schema implementation, remove useless tests.
Integrate new schema implementation, add temporary support for "extends"
and type "any". Deliver schema parsing errors somehow.

:Detailed Notes:
Legacy implementation was the bottle-neck for validation performance.
Since jvalue was validated during parsing and generation, it impacted
the performance drastically. The key problems of it were: parsing
schema into jvalue, then interpreting it allocating much memory even
without need.

New implementation on the other hand, parses JSON schema directly
into a dedicated hierarchical data structure Validator, which is aware
of validation. The validator is biased for fast validation in expense
of preprocessing during construction. Advanced techniques are used:
LALR(1) parser generation with LEMON, gperf for keyword recognition,
glib for basic containers implementation.

:Testing Performed:
Unit tests passed, unit tests with memory checker passed.
Smoke test on TV passed.

:QA Notes:

:Issues Addressed:
[GF-13496] pbnjson: Redesign validation against schema
[GF-35713] Make new validator compatible with the old one.
[GF-35717] Fix small issues after validator integration.
[GF-8140] Upgrade libpbnjson to YAJL-2

Open-webOS-DCO-1.0-Signed-off-by: Anatolii Sakhnik <anatolii.sakhnik@lge.com>

Change-Id: I890063e635b304e61ff9fc62e50e346eb4418dea
Reviewed-on: https://g2g.palm.com/3323
Reviewed-by: Build Verification
Reviewed-by: Mykola Kryvonos <mykola.kryvonos@lge.com>
Tested-by: Mykola Kryvonos <mykola.kryvonos@lge.com>
Reviewed-by: Anatolii Sakhnik <anatolii.sakhnik@lge.com>
Tested-by: Anatolii Sakhnik <anatolii.sakhnik@lge.com>
Reviewed-by: Keith Derrick <keith.derrick@lge.com>
Reviewed-by: Alekseyev Oleksandr <alekseyev.oleksandr@lge.com>
2013-09-20 02:03:42 -07:00

28 lines
917 B
Plaintext

# @@@LICENSE
#
# Copyright (c) 2009-2013 LG Electronics, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# LICENSE@@@
libdir=@WEBOS_INSTALL_LIBDIR@
includedir=@WEBOS_INSTALL_INCLUDEDIR@
Name: libpbnjson C++ library
Description: @WEBOS_PROJECT_SUMMARY@ (C++ edition)
Version: @WEBOS_COMPONENT_VERSION@
Requires.private: glib-2.0 liburiparser
Libs: -L${libdir} -lpbnjson_cpp -lpbnjson_c
Cflags: -I${includedir}