Showing preview only (1,154K chars total). Download the full file or copy to clipboard to get everything.
Repository: json-path/JsonPath
Branch: master
Commit: 62a4c9f0f65b
Files: 235
Total size: 1.0 MB
Directory structure:
gitextract_5g0slvqk/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .travis.yml
├── LICENSE
├── Procfile
├── README.md
├── build.gradle
├── changelog.md
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── json-path/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── jayway/
│ │ └── jsonpath/
│ │ ├── Configuration.java
│ │ ├── Criteria.java
│ │ ├── DocumentContext.java
│ │ ├── EvaluationListener.java
│ │ ├── Filter.java
│ │ ├── InvalidCriteriaException.java
│ │ ├── InvalidJsonException.java
│ │ ├── InvalidModificationException.java
│ │ ├── InvalidPathException.java
│ │ ├── JsonPath.java
│ │ ├── JsonPathException.java
│ │ ├── MapFunction.java
│ │ ├── Option.java
│ │ ├── ParseContext.java
│ │ ├── PathNotFoundException.java
│ │ ├── Predicate.java
│ │ ├── ReadContext.java
│ │ ├── TypeRef.java
│ │ ├── ValueCompareException.java
│ │ ├── WriteContext.java
│ │ ├── internal/
│ │ │ ├── CharacterIndex.java
│ │ │ ├── DefaultsImpl.java
│ │ │ ├── EvaluationAbortException.java
│ │ │ ├── EvaluationContext.java
│ │ │ ├── JsonContext.java
│ │ │ ├── JsonFormatter.java
│ │ │ ├── ParseContextImpl.java
│ │ │ ├── Path.java
│ │ │ ├── PathRef.java
│ │ │ ├── Utils.java
│ │ │ ├── filter/
│ │ │ │ ├── Evaluator.java
│ │ │ │ ├── EvaluatorFactory.java
│ │ │ │ ├── ExpressionNode.java
│ │ │ │ ├── FilterCompiler.java
│ │ │ │ ├── LogicalExpressionNode.java
│ │ │ │ ├── LogicalOperator.java
│ │ │ │ ├── PatternFlag.java
│ │ │ │ ├── RelationalExpressionNode.java
│ │ │ │ ├── RelationalOperator.java
│ │ │ │ ├── ValueNode.java
│ │ │ │ └── ValueNodes.java
│ │ │ ├── function/
│ │ │ │ ├── ParamType.java
│ │ │ │ ├── Parameter.java
│ │ │ │ ├── PassthruPathFunction.java
│ │ │ │ ├── PathFunction.java
│ │ │ │ ├── PathFunctionFactory.java
│ │ │ │ ├── json/
│ │ │ │ │ ├── Append.java
│ │ │ │ │ └── KeySetFunction.java
│ │ │ │ ├── latebinding/
│ │ │ │ │ ├── ILateBindingValue.java
│ │ │ │ │ ├── JsonLateBindingValue.java
│ │ │ │ │ └── PathLateBindingValue.java
│ │ │ │ ├── numeric/
│ │ │ │ │ ├── AbstractAggregation.java
│ │ │ │ │ ├── Average.java
│ │ │ │ │ ├── Max.java
│ │ │ │ │ ├── Min.java
│ │ │ │ │ ├── StandardDeviation.java
│ │ │ │ │ └── Sum.java
│ │ │ │ ├── sequence/
│ │ │ │ │ ├── AbstractSequenceAggregation.java
│ │ │ │ │ ├── First.java
│ │ │ │ │ ├── Index.java
│ │ │ │ │ └── Last.java
│ │ │ │ └── text/
│ │ │ │ ├── Concatenate.java
│ │ │ │ └── Length.java
│ │ │ └── path/
│ │ │ ├── ArrayIndexOperation.java
│ │ │ ├── ArrayIndexToken.java
│ │ │ ├── ArrayPathToken.java
│ │ │ ├── ArraySliceOperation.java
│ │ │ ├── ArraySliceToken.java
│ │ │ ├── CompiledPath.java
│ │ │ ├── EvaluationContextImpl.java
│ │ │ ├── FunctionPathToken.java
│ │ │ ├── PathCompiler.java
│ │ │ ├── PathToken.java
│ │ │ ├── PathTokenAppender.java
│ │ │ ├── PathTokenFactory.java
│ │ │ ├── PredicateContextImpl.java
│ │ │ ├── PredicatePathToken.java
│ │ │ ├── PropertyPathToken.java
│ │ │ ├── RootPathToken.java
│ │ │ ├── ScanPathToken.java
│ │ │ └── WildcardPathToken.java
│ │ └── spi/
│ │ ├── cache/
│ │ │ ├── Cache.java
│ │ │ ├── CacheProvider.java
│ │ │ ├── LRUCache.java
│ │ │ └── NOOPCache.java
│ │ ├── json/
│ │ │ ├── AbstractJsonProvider.java
│ │ │ ├── GsonJsonProvider.java
│ │ │ ├── Jackson3JsonNodeJsonProvider.java
│ │ │ ├── Jackson3JsonProvider.java
│ │ │ ├── JacksonJsonNodeJsonProvider.java
│ │ │ ├── JacksonJsonProvider.java
│ │ │ ├── JakartaJsonProvider.java
│ │ │ ├── JettisonProvider.java
│ │ │ ├── JsonOrgJsonProvider.java
│ │ │ ├── JsonProvider.java
│ │ │ ├── JsonSmartJsonProvider.java
│ │ │ └── TapestryJsonProvider.java
│ │ └── mapper/
│ │ ├── GsonMappingProvider.java
│ │ ├── Jackson3MappingProvider.java
│ │ ├── JacksonMappingProvider.java
│ │ ├── JakartaMappingProvider.java
│ │ ├── JsonOrgMappingProvider.java
│ │ ├── JsonSmartMappingProvider.java
│ │ ├── MappingException.java
│ │ ├── MappingProvider.java
│ │ └── TapestryMappingProvider.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── jayway/
│ │ └── jsonpath/
│ │ ├── BaseTest.java
│ │ ├── Configurations.java
│ │ ├── DeepScanTest.java
│ │ ├── EscapeTest.java
│ │ ├── EvaluationListenerTest.java
│ │ ├── FilterCompilerTest.java
│ │ ├── FilterParseTest.java
│ │ ├── FilterTest.java
│ │ ├── GsonJsonProviderTest.java
│ │ ├── InlineFilterTest.java
│ │ ├── Issue_487.java
│ │ ├── Issue_537.java
│ │ ├── Issue_721.java
│ │ ├── Issue_762.java
│ │ ├── Issue_786.java
│ │ ├── Issue_970.java
│ │ ├── Issue_973.java
│ │ ├── Jackson3JsonNodeJsonProviderMapperSupportTest.java
│ │ ├── Jackson3JsonNodeJsonProviderTest.java
│ │ ├── Jackson3Test.java
│ │ ├── JacksonJsonNodeJsonProviderMapperSupportTest.java
│ │ ├── JacksonJsonNodeJsonProviderTest.java
│ │ ├── JacksonTest.java
│ │ ├── JakartaJsonProviderTest.java
│ │ ├── JsonOrgJsonProviderTest.java
│ │ ├── JsonProviderTest.java
│ │ ├── JsonProviderTestObjectMapping.java
│ │ ├── MapperTest.java
│ │ ├── MultiPropTest.java
│ │ ├── OptionsTest.java
│ │ ├── PathCompilerTest.java
│ │ ├── PredicateTest.java
│ │ ├── ProviderInTest.java
│ │ ├── ReadContextTest.java
│ │ ├── ReturnTypeTest.java
│ │ ├── ScientificNotationTest.java
│ │ ├── TapestryJsonProviderTest.java
│ │ ├── TestSuppressExceptions.java
│ │ ├── TestUtils.java
│ │ ├── WriteTest.java
│ │ ├── internal/
│ │ │ ├── JsonContextTest.java
│ │ │ ├── UtilsTest.java
│ │ │ ├── filter/
│ │ │ │ ├── PatternFlagTest.java
│ │ │ │ ├── RegexpEvaluatorTest.java
│ │ │ │ └── RelationalOperatorTest.java
│ │ │ ├── function/
│ │ │ │ ├── BaseFunctionTest.java
│ │ │ │ ├── Issue191.java
│ │ │ │ ├── Issue234.java
│ │ │ │ ├── Issue273.java
│ │ │ │ ├── Issue612.java
│ │ │ │ ├── Issue629.java
│ │ │ │ ├── Issue680.java
│ │ │ │ ├── JSONEntityPathFunctionTest.java
│ │ │ │ ├── KeySetFunctionTest.java
│ │ │ │ ├── NestedFunctionTest.java
│ │ │ │ ├── NumericPathFunctionTest.java
│ │ │ │ └── SequentialPathFunctionTest.java
│ │ │ └── path/
│ │ │ └── PathTokenTest.java
│ │ ├── issue_613.java
│ │ └── old/
│ │ ├── ArraySlicingTest.java
│ │ ├── ComplianceTest.java
│ │ ├── FilterTest.java
│ │ ├── IssuesTest.java
│ │ ├── JsonPathTest.java
│ │ ├── JsonProviderTest.java
│ │ ├── NullHandlingTest.java
│ │ └── internal/
│ │ ├── ArrayIndexFilterTest.java
│ │ ├── ArrayPathTokenTest.java
│ │ ├── PredicatePathTokenTest.java
│ │ ├── PropertyPathTokenTest.java
│ │ ├── ScanPathTokenTest.java
│ │ ├── TestBase.java
│ │ └── TestInternal3.java
│ └── resources/
│ ├── issue_191.json
│ ├── issue_24.json
│ ├── issue_76.json
│ ├── issue_76_2.json
│ ├── json-test-doc.json
│ ├── json_array.json
│ ├── json_array_multiple_delete.json
│ ├── keyset.json
│ └── simplelogger.properties
├── json-path-assert/
│ ├── README.md
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── jayway/
│ │ ├── jsonassert/
│ │ │ ├── JsonAssert.java
│ │ │ ├── JsonAsserter.java
│ │ │ └── impl/
│ │ │ ├── JsonAsserterImpl.java
│ │ │ └── matcher/
│ │ │ ├── CollectionMatcher.java
│ │ │ ├── IsCollectionWithSize.java
│ │ │ ├── IsEmptyCollection.java
│ │ │ ├── IsMapContainingKey.java
│ │ │ ├── IsMapContainingValue.java
│ │ │ └── MapTypeSafeMatcher.java
│ │ └── jsonpath/
│ │ └── matchers/
│ │ ├── IsJson.java
│ │ ├── JsonPathMatchers.java
│ │ ├── WithJsonPath.java
│ │ └── WithoutJsonPath.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── jayway/
│ │ ├── jsonassert/
│ │ │ └── JsonAssertTest.java
│ │ └── jsonpath/
│ │ └── matchers/
│ │ ├── DemoTest.java
│ │ ├── HasNoJsonPathTest.java
│ │ ├── IsJsonFileTest.java
│ │ ├── IsJsonStringTest.java
│ │ ├── IsJsonTest.java
│ │ ├── JsonPathMatchersTest.java
│ │ ├── WithJsonPathTest.java
│ │ ├── WithoutJsonPathTest.java
│ │ └── helpers/
│ │ ├── ResourceHelpers.java
│ │ ├── StrictParsingConfiguration.java
│ │ └── TestingMatchers.java
│ └── resources/
│ ├── books.json
│ ├── example.json
│ ├── invalid.json
│ ├── links.json
│ └── lotto.json
├── settings.gradle
└── system.properties
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/ci.yml
================================================
---
name: Java CI
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 17, 21 ]
fail-fast: false
max-parallel: 4
name: JDK ${{ matrix.java }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java }}
distribution: temurin
cache: 'gradle'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build --warning-mode all
- name: Run Tests
run: ./gradlew check
- name: Maven Install
run: ./gradlew clean publishToMavenLocal
...
================================================
FILE: .gitignore
================================================
.idea/
target
*.iws
*.ipr
*.iml
.classpath
.project
.settings
.springBeans
.DS_Store
.gradle
.java-version
TODO
gradle.properties
build
bin/
out/
================================================
FILE: .travis.yml
================================================
language: java
sudo: false
jdk:
- openjdk17
cache:
directories:
- $HOME/.gradle
arch:
- amd64
- ppc64le
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2017 Jayway
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.
================================================
FILE: Procfile
================================================
web: java $JAVA_OPTS -Dserver.http.port=$PORT -DresourceBase=json-path-web-test/build/resources/main/webapp/ -jar json-path-web-test/build/libs/json-path-web-test-*-all.jar
================================================
FILE: README.md
================================================
Jayway JsonPath
=====================
**A Java DSL for reading JSON documents.**
[](https://travis-ci.org/json-path/JsonPath)
[](https://maven-badges.herokuapp.com/maven-central/com.jayway.jsonpath/json-path)
[](http://www.javadoc.io/doc/com.jayway.jsonpath/json-path)
Jayway JsonPath is a Java port of [Stefan Goessner JsonPath implementation](http://goessner.net/articles/JsonPath/).
Getting Started
---------------
JsonPath is available at the Central Maven Repository. Maven users add this to your POM.
> [!NOTE]
> Version 3.0.0 Uses Java 17 baseline to support Jackson 3
```xml
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>3.0.0</version>
</dependency>
```
If you need help ask questions at [Stack Overflow](http://stackoverflow.com/questions/tagged/jsonpath). Tag the
question 'jsonpath' and 'java'.
JsonPath expressions always refer to a JSON structure in the same way as XPath expression are used in combination
with an XML document. The "root member object" in JsonPath is always referred to as `$` regardless if it is an
object or array.
JsonPath expressions can use the dot–notation
`$.store.book[0].title`
or the bracket–notation
`$['store']['book'][0]['title']`
Operators
---------
| Operator | Description |
|:--------------------------|:----------------------------------------------------------------|
| `$` | The root element to query. This starts all path expressions. |
| `@` | The current node being processed by a filter predicate. |
| `*` | Wildcard. Available anywhere a name or numeric are required. |
| `..` | Deep scan. Available anywhere a name is required. |
| `.<name>` | Dot-notated child |
| `['<name>' (, '<name>')]` | Bracket-notated child or children |
| `[<number> (, <number>)]` | Array index or indexes |
| `[start:end]` | Array slice operator |
| `[?(<expression>)]` | Filter expression. Expression must evaluate to a boolean value. |
Functions
---------
Functions can be invoked at the tail end of a path - the input to a function is the output of the path expression.
The function output is dictated by the function itself.
| Function | Description | Output type |
|:------------|:-------------------------------------------------------------------------------------|:---------------------|
| `min()` | Provides the min value of an array of numbers | Double |
| `max()` | Provides the max value of an array of numbers | Double |
| `avg()` | Provides the average value of an array of numbers | Double |
| `stddev()` | Provides the standard deviation value of an array of numbers | Double |
| `length()` | Provides the length of an array | Integer |
| `sum()` | Provides the sum value of an array of numbers | Double |
| `keys()` | Provides the property keys (An alternative for terminal tilde `~`) | `Set<E>` |
| `concat(X)` | Provides a concatinated version of the path output with a new item | like input |
| `append(X)` | add an item to the json path output array | like input |
| `first()` | Provides the first item of an array | Depends on the array |
| `last()` | Provides the last item of an array | Depends on the array |
| `index(X)` | Provides the item of an array of index: X, if the X is negative, take from backwards | Depends on the array |
Filter Operators
-----------------
Filters are logical expressions used to filter arrays. A typical filter would be `[?(@.age > 18)]` where `@` represents
the current item being processed. More complex filters can be created with logical operators `&&` and `||`. String
literals must be enclosed by single or double quotes (`[?(@.color == 'blue')]` or `[?(@.color == "blue")]`).
| Operator | Description |
|:-----------|:-------------------------------------------------------------------|
| `==` | left is equal to right (note that 1 is not equal to '1') |
| `!=` | left is not equal to right |
| `<` | left is less than right |
| `<=` | left is less or equal to right |
| `>` | left is greater than right |
| `>=` | left is greater than or equal to right |
| `=~` | left matches regular expression [?(@.name =~ /foo.*?/i)] |
| `in` | left exists in right [?(@.size in ['S', 'M'])] |
| `nin` | left does not exists in right |
| `subsetof` | left is a subset of right [?(@.sizes subsetof ['S', 'M', 'L'])] |
| `anyof` | left has an intersection with right [?(@.sizes anyof ['M', 'L'])] |
| `noneof` | left has no intersection with right [?(@.sizes noneof ['M', 'L'])] |
| `size` | size of left (array or string) should match right |
| `empty` | left (array or string) should be empty |
Path Examples
-------------
Given the json
```javascript
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
```
| JsonPath | Result |
|:----------------------------------------|:-------------------------------------------------------------|
| `$.store.book[*].author` | The authors of all books |
| `$..author` | All authors |
| `$.store.*` | All things, both books and bicycles |
| `$.store..price` | The price of everything |
| `$..book[2]` | The third book |
| `$..book[-2]` | The second to last book |
| `$..book[0,1]` | The first two books |
| `$..book[:2]` | All books from index 0 (inclusive) until index 2 (exclusive) |
| `$..book[1:2]` | All books from index 1 (inclusive) until index 2 (exclusive) |
| `$..book[-2:]` | Last two books |
| `$..book[2:]` | All books from index 2 (inclusive) to last |
| `$..book[?(@.isbn)]` | All books with an ISBN number |
| `$.store.book[?(@.price < 10)]` | All books in store cheaper than 10 |
| `$..book[?(@.price <= $['expensive'])]` | All books in store that are not "expensive" |
| `$..book[?(@.author =~ /.*REES/i)]` | All books matching regex (ignore case) |
| `$..*` | Give me every thing
| `$..book.length()` | The number of books |
Reading a Document
------------------
The simplest most straight forward way to use JsonPath is via the static read API.
```java
String json = "...";
List<String> authors = JsonPath.read(json, "$.store.book[*].author");
```
If you only want to read once this is OK. In case you need to read an other path as well this is not the way
to go since the document will be parsed every time you call JsonPath.read(...). To avoid the problem you can
parse the json first.
```java
String json = "...";
Object document = Configuration.defaultConfiguration().jsonProvider().parse(json);
String author0 = JsonPath.read(document, "$.store.book[0].author");
String author1 = JsonPath.read(document, "$.store.book[1].author");
```
JsonPath also provides a fluent API. This is also the most flexible one.
```java
String json = "...";
ReadContext ctx = JsonPath.parse(json);
List<String> authorsOfBooksWithISBN = ctx.read("$.store.book[?(@.isbn)].author");
List<Map<String, Object>> expensiveBooks = JsonPath
.using(configuration)
.parse(json)
.read("$.store.book[?(@.price > 10)]", List.class);
```
What is Returned When?
----------------------
When using JsonPath in java its important to know what type you expect in your result. JsonPath will automatically
try to cast the result to the type expected by the invoker.
```java
//Will throw an java.lang.ClassCastException
List<String> list = JsonPath.parse(json).read("$.store.book[0].author");
//Works fine
String author = JsonPath.parse(json).read("$.store.book[0].author");
```
When evaluating a path you need to understand the concept of when a path is `definite`. A path is `indefinite` if it
contains:
* `..` - a deep scan operator
* `?(<expression>)` - an expression
* `[<number>, <number> (, <number>)]` - multiple array indexes
`Indefinite` paths always returns a list (as represented by current JsonProvider).
By default a simple object mapper is provided by the MappingProvider SPI. This allows you to specify the return type you
want and the MappingProvider will
try to perform the mapping. In the example below mapping between `Long` and `Date` is demonstrated.
```java
String json = "{\"date_as_long\" : 1411455611975}";
Date date = JsonPath.parse(json).read("$['date_as_long']", Date.class);
```
If you configure JsonPath to use `JacksonMappingProvider`, `Jackson3MappingProvider`, `GsonMappingProvider`,
or `JakartaJsonProvider` you can even
map your JsonPath output directly into POJO's.
```java
Book book = JsonPath.parse(json).read("$.store.book[0]", Book.class);
```
To obtain full generics type information, use TypeRef.
```java
TypeRef<List<String>> typeRef = new TypeRef<List<String>>() {
};
List<String> titles = JsonPath.parse(JSON_DOCUMENT).read("$.store.book[*].title", typeRef);
```
Predicates
----------
There are three different ways to create filter predicates in JsonPath.
### Inline Predicates
Inline predicates are the ones defined in the path.
```java
List<Map<String, Object>> books = JsonPath.parse(json)
.read("$.store.book[?(@.price < 10)]");
```
You can use `&&` and `||` to combine multiple predicates `[?(@.price < 10 && @.category == 'fiction')]` ,
`[?(@.category == 'reference' || @.price > 10)]`.
You can use `!` to negate a predicate `[?(!(@.price < 10 && @.category == 'fiction'))]`.
### Filter Predicates
Predicates can be built using the Filter API as shown below:
```java
import static com.jayway.jsonpath.JsonPath.parse;
import static com.jayway.jsonpath.Criteria.where;
import static com.jayway.jsonpath.Filter.filter;
...
...
Filter cheapFictionFilter = filter(
where("category").is("fiction").and("price").lte(10D)
);
List<Map<String, Object>> books =
parse(json).read("$.store.book[?]", cheapFictionFilter);
```
Notice the placeholder `?` for the filter in the path. When multiple filters are provided they are applied in order
where the number of placeholders must match
the number of provided filters. You can specify multiple predicate placeholders in one filter operation `[?, ?]`, both
predicates must match.
Filters can also be combined with 'OR' and 'AND'
```java
Filter fooOrBar = filter(
where("foo").exists(true)).or(where("bar").exists(true)
);
Filter fooAndBar = filter(
where("foo").exists(true)).and(where("bar").exists(true)
);
```
### Roll Your Own
Third option is to implement your own predicates
```java
Predicate booksWithISBN = new Predicate() {
@Override
public boolean apply(PredicateContext ctx) {
return ctx.item(Map.class).containsKey("isbn");
}
};
List<Map<String, Object>> books =
reader.read("$.store.book[?].isbn", List.class, booksWithISBN);
```
Path vs Value
-------------
In the Goessner implementation a JsonPath can return either `Path` or `Value`. `Value` is the default and what all the
examples above are returning. If you rather have the path of the elements our query is hitting this can be achieved with
an option.
```java
Configuration conf = Configuration.builder()
.options(Option.AS_PATH_LIST).build();
List<String> pathList = using(conf).parse(json).read("$..author");
assertThat(pathList).
containsExactly(
"$['store']['book'][0]['author']",
"$['store']['book'][1]['author']",
"$['store']['book'][2]['author']",
"$['store']['book'][3]['author']");
```
Set a value
-----------
The library offers the possibility to set a value.
```java
String newJson = JsonPath.parse(json).set("$['store']['book'][0]['author']", "Paul").jsonString();
```
Tweaking Configuration
----------------------
### Options
When creating your Configuration there are a few option flags that can alter the default behaviour.
**DEFAULT_PATH_LEAF_TO_NULL**
<br/>
This option makes JsonPath return null for missing leafs. Consider the following json
```javascript
[
{
"name" : "john",
"gender" : "male"
},
{
"name" : "ben"
}
]
```
```java
Configuration conf = Configuration.defaultConfiguration();
//Works fine
String gender0 = JsonPath.using(conf).parse(json).read("$[0]['gender']");
//PathNotFoundException thrown
String gender1 = JsonPath.using(conf).parse(json).read("$[1]['gender']");
Configuration conf2 = conf.addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL);
//Works fine
String gender0 = JsonPath.using(conf2).parse(json).read("$[0]['gender']");
//Works fine (null is returned)
String gender1 = JsonPath.using(conf2).parse(json).read("$[1]['gender']");
```
**ALWAYS_RETURN_LIST**
<br/>
This option configures JsonPath to return a list even when the path is `definite`.
```java
Configuration conf = Configuration.defaultConfiguration();
//ClassCastException thrown
List<String> genders0 = JsonPath.using(conf).parse(json).read("$[0]['gender']");
Configuration conf2 = conf.addOptions(Option.ALWAYS_RETURN_LIST);
//Works fine
List<String> genders0 = JsonPath.using(conf2).parse(json).read("$[0]['gender']");
```
**SUPPRESS_EXCEPTIONS**
<br/>
This option makes sure no exceptions are propagated from path evaluation. It follows these simple rules:
* If option `ALWAYS_RETURN_LIST` is present an empty list will be returned
* If option `ALWAYS_RETURN_LIST` is **NOT** present null returned
**REQUIRE_PROPERTIES**
</br>
This option configures JsonPath to require properties defined in path when an `indefinite` path is evaluated.
```java
Configuration conf = Configuration.defaultConfiguration();
//Works fine
List<String> genders = JsonPath.using(conf).parse(json).read("$[*]['gender']");
Configuration conf2 = conf.addOptions(Option.REQUIRE_PROPERTIES);
//PathNotFoundException thrown
List<String> genders = JsonPath.using(conf2).parse(json).read("$[*]['gender']");
```
### JsonProvider SPI
JsonPath is shipped with five different JsonProviders:
* [JsonSmartJsonProvider](https://github.com/netplex/json-smart-v2) (default)
* [JacksonJsonProvider](https://github.com/FasterXML/jackson)
* [JacksonJsonNodeJsonProvider](https://github.com/FasterXML/jackson)
* [JacksonJson3Provider](https://github.com/FasterXML/jackson)
* [JacksonJson3NodeJsonProvider](https://github.com/FasterXML/jackson)
* [GsonJsonProvider](https://code.google.com/p/google-gson/)
* [JsonOrgJsonProvider](https://github.com/stleary/JSON-java)
* [JakartaJsonProvider](https://javaee.github.io/jsonp/)
Changing the configuration defaults as demonstrated should only be done when your application is being initialized.
Changes during runtime is strongly discouraged, especially in multi threaded applications.
```java
Configuration.setDefaults(new Configuration.Defaults() {
private final JsonProvider jsonProvider = new JacksonJsonProvider();
private final MappingProvider mappingProvider = new JacksonMappingProvider();
@Override
public JsonProvider jsonProvider () {
return jsonProvider;
}
@Override
public MappingProvider mappingProvider () {
return mappingProvider;
}
@Override
public Set<Option> options () {
return EnumSet.noneOf(Option.class);
}
});
```
Note that the JacksonJsonProvider requires `com.fasterxml.jackson.core:jackson-databind:2.20.1`, the
Jackson3JsonProvider requires `tools.jackson.core:jackson-databind:3.0.3` and the GsonJsonProvider
requires `com.google.code.gson:gson:2.3.1` on your classpath.
Both of Jakarta EE 9 [JSON-P (JSR-342)](https://javaee.github.io/jsonp/) and [JSON-B (JSR-367)](http://json-b.net/)
providers expect at least Java 8 and require compatible JSON API implementations (such
as [Eclipse Glassfish](https://projects.eclipse.org/projects/ee4j.jsonp)
and [Eclipse Yasson](https://projects.eclipse.org/projects/ee4j.yasson)) on application runtime classpath; such
implementations may also be provided by Java EE application container. Please also note that Apache Johnzon is not
classpath-compatible with Jakarta EE 9 specification yet, and if JSON-B mapping provider is chosen then JSON-P provider
must be configured and used, too.
One peculiarity of Jakarta EE 9 specifications for JSON processing and databinding (mapping) is immutability of Json
arrays and objects as soon as they are fully parsed or written to. To respect the API specification, but allow JsonPath
to modify Json documents through add, set/put, replace, and delete operations, `JakartaJsonProvider` has to be
initiliazed with optional `true` argument:
* `JsonProvider jsonProvider = new JakartaJsonProvider(true)` (enable mutable Json arrays and objects)
* `JsonProvider jsonProvider = new JakartaJsonProvider()` (default, strict JSON-P API compliance)
All lookup and read operations with JsonPath are supported regardless of initilization mode. Default mode also needs
less memory and is more performant.
### Cache SPI
In JsonPath 2.1.0 a new Cache SPI was introduced. This allows API consumers to configure path caching in a way that
suits their needs. The cache must be configured before it is accesses for the first time or a JsonPathException is
thrown. JsonPath ships with two cache implementations
* `com.jayway.jsonpath.spi.cache.LRUCache` (default, thread safe)
* `com.jayway.jsonpath.spi.cache.NOOPCache` (no cache)
If you want to implement your own cache the API is simple.
```java
CacheProvider.setCache(new Cache() {
//Not thread safe simple cache
private Map<String, JsonPath> map = new HashMap<String, JsonPath>();
@Override
public JsonPath get (String key){
return map.get(key);
}
@Override
public void put (String key, JsonPath jsonPath){
map.put(key, jsonPath);
}
});
```
[](https://github.com/igrigorik/ga-beacon)
================================================
FILE: build.gradle
================================================
buildscript {
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:6.1.0'
}
}
ext {
libs = [
jsonSmart : 'net.minidev:json-smart:2.6.0',
slf4jApi : 'org.slf4j:slf4j-api:2.0.17',
gson : 'com.google.code.gson:gson:2.13.2',
hamcrest : 'org.hamcrest:hamcrest:3.0',
jacksonDatabind : 'com.fasterxml.jackson.core:jackson-databind:2.20.1',
jacksonDatabind3: 'tools.jackson.core:jackson-databind:3.0.4',
jettison : 'org.codehaus.jettison:jettison:1.5.4',
jsonOrg : 'org.json:json:20250517',
tapestryJson : 'org.apache.tapestry:tapestry-json:5.9.0',
jakartaJsonP : 'jakarta.json:jakarta.json-api:2.1.3',
jakartaJsonB : 'jakarta.json.bind:jakarta.json.bind-api:2.0.0',
test : [
'commons-io:commons-io:2.20.0',
'org.junit.jupiter:junit-jupiter:5.10.1',
'org.assertj:assertj-core:3.25.1',
'org.hamcrest:hamcrest:3.0',
'org.glassfish:jakarta.json:2.0.1',
'org.eclipse:yasson:2.0.4',
'org.slf4j:slf4j-simple:2.0.17',
'com.google.code.gson:gson:2.13.2',
'org.hamcrest:hamcrest:3.0',
'com.fasterxml.jackson.core:jackson-databind:2.20.1',
'tools.jackson.core:jackson-databind:3.0.3',
'org.codehaus.jettison:jettison:1.5.4',
'org.json:json:20250517',
'org.apache.tapestry:tapestry-json:5.9.0',
'jakarta.json:jakarta.json-api:2.1.3',
'jakarta.json.bind:jakarta.json.bind-api:2.0.0'
]
]
snapshotVersion = false
}
allprojects {
ext.displayName = null
ext.buildTimestamp = new Date().format('yyyy-MM-dd HH:mm:ss')
group = 'com.jayway.jsonpath'
version = '3.0.0' + (snapshotVersion ? "-SNAPSHOT" : "")
}
subprojects {
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'biz.aQute.bnd.builder'
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
repositories {
mavenCentral()
}
java {
withJavadocJar()
withSourcesJar()
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
signing {
sign publishing.publications
required { !snapshotVersion && gradle.taskGraph.hasTask("publish") }
}
javadoc {
if (JavaVersion.current().isJava8Compatible()) {
options.addStringOption('Xdoclint:none', '-quiet')
}
if (JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}
publishing {
repositories {
maven {
name = 'ossrh-staging-api'
url = 'https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/'
credentials {
username = project.hasProperty('sonatypeOssUsername') ? sonatypeOssUsername : "Unknown user"
password = project.hasProperty('sonatypeOssPassword') ? sonatypeOssPassword : "Unknown password"
}
}
}
publications {
mavenJava(MavenPublication) {
from components.java
artifactId = project.name
//artifactId = jar.archiveBaseName
pom {
name = project.name
description = 'A library to query and verify JSON'
url = 'https://github.com/jayway/JsonPath'
licenses {
license {
name = "The Apache Software License, Version 2.0"
url = "https://www.apache.org/licenses/LICENSE-2.0.txt"
distribution = "repo"
}
}
scm {
url = 'scm:git:git://github.com/jayway/JsonPath.git'
connection = 'scm:git:git://github.com/jayway/JsonPath.git'
developerConnection = 'scm:git:git://github.com/jayway/JsonPath.git'
}
developers {
developer {
id = 'kalle.stenflo'
name = 'Kalle Stenflo'
email = 'kalle.stenflo (a) gmail.com'
}
}
}
}
}
}
}
wrapper {
gradleVersion = '8.5'
}
================================================
FILE: changelog.md
================================================
2.2.0 (2016-02-29)
===========
* Upgraded dependency versions
* Hamcrest-matcher support in json-path-assert
* Bug fixes and improvements
2.1.0 (2015-11-22)
===========
* Upgraded dependency versions
* Introduced Cache SPI
* Introduced path functions
* Introduced JsonOrgJsonProvider
* OSGI improvements
* Inline filters supports same operators as Filter builders
* Improved filter evaluation
* Internal makeovers
* New write operations : map(...) and renameKey(...)
2.0.0 (2015-03-19)
=================
* Upgraded dependency versions
* Moved JsonProvider and MappingProvider implementations out of the interal package **OSGi**
* Removed HTTP provider and methods
* Add an unwrap(Object) method to JsonProvider, use it when extracting values for Criteria evaluation **breaks JsonProvider SPI**
* Fixed issue #71 - esacpe character in inline predicates
`JsonPath.read(json, "$.logs[?(@.message == 'it\\'s here')].message");`
* New method `jsonString()` added to `ReadContext` and `WriteContext` to extract json model as a string
* Path does not have to be definite in filter API `filter(where("authors[*].lastName").contains("Waugh"))`
1.2.0 (2014-11-11)
==================
* Added EvaluationListener interface that allows abortion of evaluation if criteria is fulfilled.
this makes it possible to limit the number of results to fetch when a document is scanned. Also
added utility method to limit results `JsonPath.parse(json).limit(1).read("$..title", List.class);`
* Added support for OR in inline filters `[?(@.foo == 'bar' || @.foo == 'baz')]`
* Upgrade json-smart to 2.1.0
* Support for Update and Delete by path. **breaks JsonProvider SPI**
`parse(JSON_DOCUMENT).set("$.store.book[*].display-price", 1)`
`parse(JSON_DOCUMENT).put("$.store.book[1]", "new-key", "new-val")`
`parse(JSON_DOCUMENT).add("$.store.book", newBook)`
`parse(JSON_DOCUMENT).delete("$.store.book[1].display-price")`
* Support regex in inline filters (ruby syntax)
`parse(JSON_DOCUMENT).read("$.store.book[?(@.category =~ /reference/)].author")`
`parse(JSON_DOCUMENT).read("$.store.book[?(@.category =~ /REFERENCE/i)].author")`
* Inline filter does not require path statement on left side of operator
`parse(JSON_DOCUMENT).read("$.store.book[?(@.category == 'reference')].author")`
`parse(JSON_DOCUMENT).read("$.store.book[?('reference' == @.category)].author")`
* Negate exist checks in inline filters (not defined or null)
`parse(JSON_DOCUMENT).read("$.store.book[?(!@.isbn)]")`
* Improved object mapping with Jackson and Gson (now handles generic types)
* JacksonJsonNodeJsonProvider supporting path operations on `com.fasterxml.jackson.databind.JsonNode`
* Exceptions thrown by JsonPath.compile are now wrapped in an InvalidPathException
* Fixed Deep scanning issue (#60)
1.1.0 (2014-10-01)
==================
* Reintroduced method JsonProvider.createMap(). This should never have been removed. **NOTE: This is a breaking change if you implemented your own JsonProvider based on the 1.0.0 API**
* Filters threw exception if an item being filtered did not contain the path being filtered upon.
* Multi-property selects works as it did in 0.9. e.g. `$[*]['category', 'price']`
* Cache results when predicates refer to path in document e.g. `$[*][?(@.price <= $.max-price)]` will only evaluate `$.max-price` once.
1.0.0 (2014-09-26)
==================
* Complete rewrite of internals. Major API changes.
* Better compliance with the Goessner implementation
Release history
===============
* 0.9.0 (2013-09-26)
* 0.8.1 (2012-04-16)
* 0.8.0 (2012-03-08)
* 0.5.6 (2012-02-09)
* 0.5.5 (2011-07-15)
* 0.5.4 (2011-06-26)
* 0.5.3 (2011-02-18)
* 0.5.2 (2011-02-08)
================================================
FILE: gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: gradlew
================================================
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# 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
#
# https://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.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
================================================
FILE: gradlew.bat
================================================
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: json-path/build.gradle
================================================
description = "Java port of Stefan Goessner JsonPath."
jar {
bnd(
'Automatic-Module-Name': 'json.path',
'Implementation-Title': 'json-path', 'Implementation-Version': archiveVersion,
'Import-Package': 'org.json.*;resolution:=optional, com.google.gson.*;resolution:=optional, com.fasterxml.jackson.*;resolution:=optional, org.apache.tapestry5.json.*;resolution:=optional, org.codehaus.jettison.*;resolution:=optional, jakarta.json.*;resolution:=optional, *',
'Export-Package': 'com.jayway.jsonpath,com.jayway.jsonpath.spi,com.jayway.jsonpath.spi.cache,com.jayway.jsonpath.spi.json,com.jayway.jsonpath.spi.mapper'
)
}
dependencies {
implementation libs.jsonSmart
implementation libs.slf4jApi
compileOnly libs.jacksonDatabind // , optional
compileOnly libs.jacksonDatabind3 // , optional
compileOnly libs.gson// , optional
compileOnly libs.jsonOrg// , optional
compileOnly libs.tapestryJson// , optional
compileOnly libs.jettison// , optional
compileOnly libs.jakartaJsonP// , optional
compileOnly libs.jakartaJsonB// , optional
testImplementation libs.test
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/Configuration.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import com.jayway.jsonpath.internal.DefaultsImpl;
import com.jayway.jsonpath.spi.json.JsonProvider;
import com.jayway.jsonpath.spi.mapper.MappingProvider;
import java.util.*;
import static com.jayway.jsonpath.internal.Utils.notNull;
import static java.util.Arrays.asList;
/**
* Immutable configuration object
*/
public class Configuration {
private static Defaults DEFAULTS = null;
/**
* Set Default configuration
* @param defaults default configuration settings
*/
public static synchronized void setDefaults(Defaults defaults){
DEFAULTS = defaults;
}
private static Defaults getEffectiveDefaults(){
if (DEFAULTS == null) {
return DefaultsImpl.INSTANCE;
} else {
return DEFAULTS;
}
}
private final JsonProvider jsonProvider;
private final MappingProvider mappingProvider;
private final Set<Option> options;
private final Collection<EvaluationListener> evaluationListeners;
private Configuration(JsonProvider jsonProvider, MappingProvider mappingProvider, EnumSet<Option> options, Collection<EvaluationListener> evaluationListeners) {
notNull(jsonProvider, "jsonProvider can not be null");
notNull(mappingProvider, "mappingProvider can not be null");
notNull(options, "setOptions can not be null");
notNull(evaluationListeners, "evaluationListeners can not be null");
this.jsonProvider = jsonProvider;
this.mappingProvider = mappingProvider;
this.options = Collections.unmodifiableSet(options);
this.evaluationListeners = Collections.unmodifiableCollection(evaluationListeners);
}
/**
* Creates a new Configuration by the provided evaluation listeners to the current listeners
* @param evaluationListener listeners
* @return a new configuration
*/
public Configuration addEvaluationListeners(EvaluationListener... evaluationListener){
return Configuration.builder().jsonProvider(jsonProvider).mappingProvider(mappingProvider).options(options).evaluationListener(evaluationListener).build();
}
/**
* Creates a new Configuration with the provided evaluation listeners
* @param evaluationListener listeners
* @return a new configuration
*/
public Configuration setEvaluationListeners(EvaluationListener... evaluationListener){
return Configuration.builder().jsonProvider(jsonProvider).mappingProvider(mappingProvider).options(options).evaluationListener(evaluationListener).build();
}
/**
* Returns the evaluation listeners registered in this configuration
* @return the evaluation listeners
*/
public Collection<EvaluationListener> getEvaluationListeners(){
return evaluationListeners;
}
/**
* Creates a new Configuration based on the given {@link com.jayway.jsonpath.spi.json.JsonProvider}
* @param newJsonProvider json provider to use in new configuration
* @return a new configuration
*/
public Configuration jsonProvider(JsonProvider newJsonProvider) {
return Configuration.builder().jsonProvider(newJsonProvider).mappingProvider(mappingProvider).options(options).evaluationListener(evaluationListeners).build();
}
/**
* Returns {@link com.jayway.jsonpath.spi.json.JsonProvider} used by this configuration
* @return jsonProvider used
*/
public JsonProvider jsonProvider() {
return jsonProvider;
}
/**
* Creates a new Configuration based on the given {@link com.jayway.jsonpath.spi.mapper.MappingProvider}
* @param newMappingProvider mapping provider to use in new configuration
* @return a new configuration
*/
public Configuration mappingProvider(MappingProvider newMappingProvider) {
return Configuration.builder().jsonProvider(jsonProvider).mappingProvider(newMappingProvider).options(options).evaluationListener(evaluationListeners).build();
}
/**
* Returns {@link com.jayway.jsonpath.spi.mapper.MappingProvider} used by this configuration
* @return mappingProvider used
*/
public MappingProvider mappingProvider() {
return mappingProvider;
}
/**
* Creates a new configuration by adding the new options to the options used in this configuration.
* @param options options to add
* @return a new configuration
*/
public Configuration addOptions(Option... options) {
EnumSet<Option> opts = EnumSet.noneOf(Option.class);
opts.addAll(this.options);
opts.addAll(asList(options));
return Configuration.builder().jsonProvider(jsonProvider).mappingProvider(mappingProvider).options(opts).evaluationListener(evaluationListeners).build();
}
/**
* Creates a new configuration with the provided options. Options in this configuration are discarded.
* @param options
* @return the new configuration instance
*/
public Configuration setOptions(Option... options) {
return Configuration.builder().jsonProvider(jsonProvider).mappingProvider(mappingProvider).options(options).evaluationListener(evaluationListeners).build();
}
/**
* Returns the options used by this configuration
* @return the new configuration instance
*/
public Set<Option> getOptions() {
return options;
}
/**
* Check if this configuration contains the given option
* @param option option to check
* @return true if configurations contains option
*/
public boolean containsOption(Option option){
return options.contains(option);
}
/**
* Creates a new configuration based on default values
* @return a new configuration based on defaults
*/
public static Configuration defaultConfiguration() {
Defaults defaults = getEffectiveDefaults();
return Configuration.builder().jsonProvider(defaults.jsonProvider()).options(defaults.options()).build();
}
/**
* Returns a new ConfigurationBuilder
* @return a builder
*/
public static ConfigurationBuilder builder() {
return new ConfigurationBuilder();
}
/**
* Configuration builder
*/
public static class ConfigurationBuilder {
private JsonProvider jsonProvider;
private MappingProvider mappingProvider;
private EnumSet<Option> options = EnumSet.noneOf(Option.class);
private Collection<EvaluationListener> evaluationListener = new ArrayList<EvaluationListener>();
public ConfigurationBuilder jsonProvider(JsonProvider provider) {
this.jsonProvider = provider;
return this;
}
public ConfigurationBuilder mappingProvider(MappingProvider provider) {
this.mappingProvider = provider;
return this;
}
public ConfigurationBuilder options(Option... flags) {
if(flags.length > 0) {
this.options.addAll(asList(flags));
}
return this;
}
public ConfigurationBuilder options(Set<Option> options) {
this.options.addAll(options);
return this;
}
public ConfigurationBuilder evaluationListener(EvaluationListener... listener){
this.evaluationListener = Arrays.asList(listener);
return this;
}
public ConfigurationBuilder evaluationListener(Collection<EvaluationListener> listeners){
this.evaluationListener = listeners == null ? Collections.<EvaluationListener>emptyList() : listeners;
return this;
}
public Configuration build() {
if (jsonProvider == null || mappingProvider == null) {
final Defaults defaults = getEffectiveDefaults();
if (jsonProvider == null) {
jsonProvider = defaults.jsonProvider();
}
if (mappingProvider == null){
mappingProvider = defaults.mappingProvider();
}
}
return new Configuration(jsonProvider, mappingProvider, options, evaluationListener);
}
}
public interface Defaults {
/**
* Returns the default {@link com.jayway.jsonpath.spi.json.JsonProvider}
* @return default json provider
*/
JsonProvider jsonProvider();
/**
* Returns default setOptions
* @return setOptions
*/
Set<Option> options();
/**
* Returns the default {@link com.jayway.jsonpath.spi.mapper.MappingProvider}
*
* @return default mapping provider
*/
MappingProvider mappingProvider();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Configuration that = (Configuration) o;
return jsonProvider.getClass() == that.jsonProvider.getClass() &&
mappingProvider.getClass() == that.mappingProvider.getClass() &&
Objects.equals(options, that.options);
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/Criteria.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import com.jayway.jsonpath.internal.Path;
import com.jayway.jsonpath.internal.Utils;
import com.jayway.jsonpath.internal.filter.RelationalExpressionNode;
import com.jayway.jsonpath.internal.filter.RelationalOperator;
import com.jayway.jsonpath.internal.filter.ValueNode;
import com.jayway.jsonpath.internal.filter.ValueNodes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;
import static com.jayway.jsonpath.internal.Utils.notNull;
import static com.jayway.jsonpath.internal.filter.ValueNodes.PredicateNode;
import static com.jayway.jsonpath.internal.filter.ValueNodes.ValueListNode;
/**
*
*/
@SuppressWarnings("unchecked")
public class Criteria implements Predicate {
private final List<Criteria> criteriaChain;
private ValueNode left;
private RelationalOperator criteriaType;
private ValueNode right;
private Criteria(List<Criteria> criteriaChain, ValueNode left) {
this.left = left;
this.criteriaChain = criteriaChain;
this.criteriaChain.add(this);
}
private Criteria(ValueNode left) {
this(new LinkedList<Criteria>(), left);
}
@Override
public boolean apply(PredicateContext ctx) {
for (RelationalExpressionNode expressionNode : toRelationalExpressionNodes()) {
if(!expressionNode.apply(ctx)){
return false;
}
}
return true;
}
@Override
public String toString() {
return Utils.join(" && ", toRelationalExpressionNodes());
}
private Collection<RelationalExpressionNode> toRelationalExpressionNodes(){
List<RelationalExpressionNode> nodes = new ArrayList<RelationalExpressionNode>(criteriaChain.size());
for (Criteria criteria : criteriaChain) {
nodes.add(new RelationalExpressionNode(criteria.left, criteria.criteriaType, criteria.right));
}
return nodes;
}
/**
* Static factory method to create a Criteria using the provided key
*
* @param key filed name
* @return the new criteria
*/
@Deprecated
//This should be private.It exposes internal classes
public static Criteria where(Path key) {
return new Criteria(ValueNode.createPathNode(key));
}
/**
* Static factory method to create a Criteria using the provided key
*
* @param key filed name
* @return the new criteria
*/
public static Criteria where(String key) {
return new Criteria(ValueNode.toValueNode(prefixPath(key)));
}
/**
* Static factory method to create a Criteria using the provided key
*
* @param key ads new filed to criteria
* @return the criteria builder
*/
public Criteria and(String key) {
checkComplete();
return new Criteria(this.criteriaChain, ValueNode.toValueNode(prefixPath(key)));
}
/**
* Creates a criterion using equality
*
* @param o
* @return the criteria
*/
public Criteria is(Object o) {
this.criteriaType = RelationalOperator.EQ;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* Creates a criterion using equality
*
* @param o
* @return the criteria
*/
public Criteria eq(Object o) {
return is(o);
}
/**
* Creates a criterion using the <b>!=</b> operator
*
* @param o
* @return the criteria
*/
public Criteria ne(Object o) {
this.criteriaType = RelationalOperator.NE;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* Creates a criterion using the <b><</b> operator
*
* @param o
* @return the criteria
*/
public Criteria lt(Object o) {
this.criteriaType = RelationalOperator.LT;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* Creates a criterion using the <b><=</b> operator
*
* @param o
* @return the criteria
*/
public Criteria lte(Object o) {
this.criteriaType = RelationalOperator.LTE;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* Creates a criterion using the <b>></b> operator
*
* @param o
* @return the criteria
*/
public Criteria gt(Object o) {
this.criteriaType = RelationalOperator.GT;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* Creates a criterion using the <b>>=</b> operator
*
* @param o
* @return the criteria
*/
public Criteria gte(Object o) {
this.criteriaType = RelationalOperator.GTE;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* Creates a criterion using a Regex
*
* @param pattern
* @return the criteria
*/
public Criteria regex(Pattern pattern) {
notNull(pattern, "pattern can not be null");
this.criteriaType = RelationalOperator.REGEX;
this.right = ValueNode.toValueNode(pattern);
return this;
}
/**
* The <code>in</code> operator is analogous to the SQL IN modifier, allowing you
* to specify an array of possible matches.
*
* @param o the values to match against
* @return the criteria
*/
public Criteria in(Object... o) {
return in(Arrays.asList(o));
}
/**
* The <code>in</code> operator is analogous to the SQL IN modifier, allowing you
* to specify an array of possible matches.
*
* @param c the collection containing the values to match against
* @return the criteria
*/
public Criteria in(Collection<?> c) {
notNull(c, "collection can not be null");
this.criteriaType = RelationalOperator.IN;
this.right = new ValueListNode(c);
return this;
}
/**
* The <code>contains</code> operator asserts that the provided object is contained
* in the result. The object that should contain the input can be either an object or a String.
*
* @param o that should exists in given collection or
* @return the criteria
*/
public Criteria contains(Object o) {
this.criteriaType = RelationalOperator.CONTAINS;
this.right = ValueNode.toValueNode(o);
return this;
}
/**
* The <code>nin</code> operator is similar to $in except that it selects objects for
* which the specified field does not have any value in the specified array.
*
* @param o the values to match against
* @return the criteria
*/
public Criteria nin(Object... o) {
return nin(Arrays.asList(o));
}
/**
* The <code>nin</code> operator is similar to $in except that it selects objects for
* which the specified field does not have any value in the specified array.
*
* @param c the values to match against
* @return the criteria
*/
public Criteria nin(Collection<?> c) {
notNull(c, "collection can not be null");
this.criteriaType = RelationalOperator.NIN;
this.right = new ValueListNode(c);
return this;
}
/**
* The <code>subsetof</code> operator selects objects for which the specified field is
* an array whose elements comprise a subset of the set comprised by the elements of
* the specified array.
*
* @param o the values to match against
* @return the criteria
*/
public Criteria subsetof(Object... o) {
return subsetof(Arrays.asList(o));
}
/**
* The <code>subsetof</code> operator selects objects for which the specified field is
* an array whose elements comprise a subset of the set comprised by the elements of
* the specified array.
*
* @param c the values to match against
* @return the criteria
*/
public Criteria subsetof(Collection<?> c) {
notNull(c, "collection can not be null");
this.criteriaType = RelationalOperator.SUBSETOF;
this.right = new ValueListNode(c);
return this;
}
/**
* The <code>anyof</code> operator selects objects for which the specified field is
* an array that contain at least an element in the specified array.
*
* @param o the values to match against
* @return the criteria
*/
public Criteria anyof(Object... o) {
return subsetof(Arrays.asList(o));
}
/**
* The <code>anyof</code> operator selects objects for which the specified field is
* an array that contain at least an element in the specified array.
*
* @param c the values to match against
* @return the criteria
*/
public Criteria anyof(Collection<?> c) {
notNull(c, "collection can not be null");
this.criteriaType = RelationalOperator.ANYOF;
this.right = new ValueListNode(c);
return this;
}
/**
* The <code>noneof</code> operator selects objects for which the specified field is
* an array that does not contain any of the elements of the specified array.
*
* @param o the values to match against
* @return the criteria
*/
public Criteria noneof(Object... o) {
return noneof(Arrays.asList(o));
}
/**
* The <code>noneof</code> operator selects objects for which the specified field is
* an array that does not contain any of the elements of the specified array.
*
* @param c the values to match against
* @return the criteria
*/
public Criteria noneof(Collection<?> c) {
notNull(c, "collection can not be null");
this.criteriaType = RelationalOperator.NONEOF;
this.right = new ValueListNode(c);
return this;
}
/**
* The <code>all</code> operator is similar to $in, but instead of matching any value
* in the specified array all values in the array must be matched.
*
* @param o
* @return the criteria
*/
public Criteria all(Object... o) {
return all(Arrays.asList(o));
}
/**
* The <code>all</code> operator is similar to $in, but instead of matching any value
* in the specified array all values in the array must be matched.
*
* @param c
* @return the criteria
*/
public Criteria all(Collection<?> c) {
notNull(c, "collection can not be null");
this.criteriaType = RelationalOperator.ALL;
this.right = new ValueListNode(c);
return this;
}
/**
* The <code>size</code> operator matches:
* <p/>
* <ol>
* <li>array with the specified number of elements.</li>
* <li>string with given length.</li>
* </ol>
*
* @param size
* @return the criteria
*/
public Criteria size(int size) {
this.criteriaType = RelationalOperator.SIZE;
this.right = ValueNode.toValueNode(size);
return this;
}
/**
* The $type operator matches values based on their Java JSON type.
*
* Supported types are:
*
* List.class
* Map.class
* String.class
* Number.class
* Boolean.class
*
* Other types evaluates to false
*
* @param clazz
* @return the criteria
*/
public Criteria type(Class<?> clazz) {
this.criteriaType = RelationalOperator.TYPE;
this.right = ValueNode.createClassNode(clazz);
return this;
}
/**
* Check for existence (or lack thereof) of a field.
*
* @param shouldExist
* @return the criteria
*/
public Criteria exists(boolean shouldExist) {
this.criteriaType = RelationalOperator.EXISTS;
this.right = ValueNode.toValueNode(shouldExist);
this.left = left.asPathNode().asExistsCheck(shouldExist);
return this;
}
/**
* The <code>notEmpty</code> operator checks that an array or String is not empty.
*
* @return the criteria
*/
@Deprecated
public Criteria notEmpty() {
return empty(false);
}
/**
* The <code>notEmpty</code> operator checks that an array or String is empty.
*
* @param empty should be empty
* @return the criteria
*/
public Criteria empty(boolean empty) {
this.criteriaType = RelationalOperator.EMPTY;
this.right = empty ? ValueNodes.TRUE : ValueNodes.FALSE;
return this;
}
/**
* The <code>matches</code> operator checks that an object matches the given predicate.
*
* @param p
* @return the criteria
*/
public Criteria matches(Predicate p) {
this.criteriaType = RelationalOperator.MATCHES;
this.right = new PredicateNode(p);
return this;
}
/**
* Parse the provided criteria
*
* Deprecated use {@link Filter#parse(String)}
*
* @param criteria
* @return a criteria
*/
@Deprecated
public static Criteria parse(String criteria) {
if(criteria == null){
throw new InvalidPathException("Criteria can not be null");
}
String[] split = criteria.trim().split(" ");
if(split.length == 3){
return create(split[0], split[1], split[2]);
} else if(split.length == 1){
return create(split[0], "EXISTS", "true");
} else {
throw new InvalidPathException("Could not parse criteria");
}
}
/**
* Creates a new criteria
* @param left path to evaluate in criteria
* @param operator operator
* @param right expected value
* @return a new Criteria
*/
@Deprecated
public static Criteria create(String left, String operator, String right) {
Criteria criteria = new Criteria(ValueNode.toValueNode(left));
criteria.criteriaType = RelationalOperator.fromString(operator);
criteria.right = ValueNode.toValueNode(right);
return criteria;
}
private static String prefixPath(String key){
if (!key.startsWith("$") && !key.startsWith("@")) {
key = "@." + key;
}
return key;
}
private void checkComplete(){
boolean complete = (left != null && criteriaType != null && right != null);
if(!complete){
throw new JsonPathException("Criteria build exception. Complete on criteria before defining next.");
}
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/DocumentContext.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public interface DocumentContext extends ReadContext, WriteContext {
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/EvaluationListener.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
/**
* A listener that can be registered on a {@link com.jayway.jsonpath.Configuration} that is notified when a
* result is added to the result of this path evaluation.
*/
public interface EvaluationListener {
/**
* Callback invoked when result is found
* @param found the found result
* @return continuation instruction
*/
EvaluationContinuation resultFound(FoundResult found);
enum EvaluationContinuation {
/**
* Evaluation continues
*/
CONTINUE,
/**
* Current result is included but no further evaluation will be performed.
*/
ABORT
}
/**
*
*/
interface FoundResult {
/**
* the index of this result. First result i 0
* @return index
*/
int index();
/**
* The path of this result
* @return path
*/
String path();
/**
* The result object
* @return the result object
*/
Object result();
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/Filter.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import com.jayway.jsonpath.internal.filter.FilterCompiler;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import static java.util.Arrays.asList;
/**
*
*/
public abstract class Filter implements Predicate {
/**
* Creates a new Filter based on given criteria
* @param predicate criteria
* @return a new Filter
*/
public static Filter filter(Predicate predicate) {
return new SingleFilter(predicate);
}
/**
* Create a new Filter based on given list of criteria.
* @param predicates list of criteria all needs to evaluate to true
* @return the filter
*/
public static Filter filter(Collection<Predicate> predicates) {
return new AndFilter(predicates);
}
@Override
public abstract boolean apply(PredicateContext ctx);
public Filter or(final Predicate other){
return new OrFilter(this, other);
}
public Filter and(final Predicate other){
return new AndFilter(this, other);
}
/**
* Parses a filter. The filter must match <code>[?(<filter>)]</code>, white spaces are ignored.
* @param filter filter string to parse
* @return the filter
*/
public static Filter parse(String filter){
return FilterCompiler.compile(filter);
}
private static final class SingleFilter extends Filter {
private final Predicate predicate;
private SingleFilter(Predicate predicate) {
this.predicate = predicate;
}
@Override
public boolean apply(PredicateContext ctx) {
return predicate.apply(ctx);
}
@Override
public String toString() {
String predicateString = predicate.toString();
if(predicateString.startsWith("(")){
return "[?" + predicateString + "]";
} else {
return "[?(" + predicateString + ")]";
}
}
}
private static final class AndFilter extends Filter {
private final Collection<Predicate> predicates;
private AndFilter(Collection<Predicate> predicates) {
this.predicates = predicates;
}
private AndFilter(Predicate left, Predicate right) {
this(asList(left, right));
}
public Filter and(final Predicate other){
Collection<Predicate> newPredicates = new ArrayList<Predicate>(predicates);
newPredicates.add(other);
return new AndFilter(newPredicates);
}
@Override
public boolean apply(PredicateContext ctx) {
for (Predicate predicate : predicates) {
if(!predicate.apply(ctx)){
return false;
}
}
return true;
}
@Override
public String toString() {
Iterator<Predicate> i = predicates.iterator();
StringBuilder sb = new StringBuilder();
sb.append("[?(");
while (i.hasNext()){
String p = i.next().toString();
if(p.startsWith("[?(")){
p = p.substring(3, p.length() - 2);
}
sb.append(p);
if(i.hasNext()){
sb.append(" && ");
}
}
sb.append(")]");
return sb.toString();
}
}
private static final class OrFilter extends Filter {
private final Predicate left;
private final Predicate right;
private OrFilter(Predicate left, Predicate right) {
this.left = left;
this.right = right;
}
public Filter and(final Predicate other){
return new OrFilter(left, new AndFilter(right, other));
}
@Override
public boolean apply(PredicateContext ctx) {
boolean a = left.apply(ctx);
return a || right.apply(ctx);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("[?(");
String l = left.toString();
String r = right.toString();
if(l.startsWith("[?(")){
l = l.substring(3, l.length() - 2);
}
if(r.startsWith("[?(")){
r = r.substring(3, r.length() - 2);
}
sb.append(l).append(" || ").append(r);
sb.append(")]");
return sb.toString();
}
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidCriteriaException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
@SuppressWarnings("serial")
public class InvalidCriteriaException extends JsonPathException {
public InvalidCriteriaException() {
}
public InvalidCriteriaException(String message) {
super(message);
}
public InvalidCriteriaException(String message, Throwable cause) {
super(message, cause);
}
public InvalidCriteriaException(Throwable cause) {
super(cause);
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidJsonException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
@SuppressWarnings("serial")
public class InvalidJsonException extends JsonPathException {
/**
* Problematic JSON if available.
*/
private final String json;
public InvalidJsonException() {
json = null;
}
public InvalidJsonException(String message) {
super(message);
json = null;
}
public InvalidJsonException(String message, Throwable cause) {
super(message, cause);
json = null;
}
public InvalidJsonException(Throwable cause) {
super(cause);
json = null;
}
/**
* Rethrow the exception with the problematic JSON captured.
*/
public InvalidJsonException(final Throwable cause, final String json) {
super(cause);
this.json = json;
}
/**
* @return the problematic JSON if available.
*/
public String getJson() {
return json;
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidModificationException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public class InvalidModificationException extends JsonPathException {
public InvalidModificationException(String message) {
super(message);
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidPathException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
@SuppressWarnings("serial")
public class InvalidPathException extends JsonPathException {
public InvalidPathException() {
}
public InvalidPathException(String message) {
super(message);
}
public InvalidPathException(String message, Throwable cause) {
super(message, cause);
}
public InvalidPathException(Throwable cause) {
super(cause);
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/JsonPath.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import com.jayway.jsonpath.internal.*;
import com.jayway.jsonpath.internal.path.PathCompiler;
import com.jayway.jsonpath.spi.json.JsonProvider;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import static com.jayway.jsonpath.Option.ALWAYS_RETURN_LIST;
import static com.jayway.jsonpath.Option.AS_PATH_LIST;
import static com.jayway.jsonpath.internal.Utils.*;
/**
* <p/>
* JsonPath is to JSON what XPATH is to XML, a simple way to extract parts of a given document. JsonPath is
* available in many programming languages such as Javascript, Python and PHP.
* <p/>
* JsonPath allows you to compile a json path string to use it many times or to compile and apply in one
* single on demand operation.
* <p/>
* Given the Json document:
* <p/>
* <pre>
* String json =
* "{
* "store":
* {
* "book":
* [
* {
* "category": "reference",
* "author": "Nigel Rees",
* "title": "Sayings of the Century",
* "price": 8.95
* },
* {
* "category": "fiction",
* "author": "Evelyn Waugh",
* "title": "Sword of Honour",
* "price": 12.99
* }
* ],
* "bicycle":
* {
* "color": "red",
* "price": 19.95
* }
* }
* }";
* </pre>
* <p/>
* A JsonPath can be compiled and used as shown:
* <p/>
* <code>
* JsonPath path = JsonPath.compile("$.store.book[1]");
* <br/>
* List<Object> books = path.read(json);
* </code>
* </p>
* Or:
* <p/>
* <code>
* List<Object> authors = JsonPath.read(json, "$.store.book[*].author")
* </code>
* <p/>
* If the json path returns a single value (is definite):
* </p>
* <code>
* String author = JsonPath.read(json, "$.store.book[1].author")
* </code>
*/
public class JsonPath {
private final Path path;
private JsonPath(String jsonPath, Predicate[] filters) {
notNull(jsonPath, "path can not be null");
this.path = PathCompiler.compile(jsonPath, filters);
}
/**
* Returns the string representation of this JsonPath
*
* @return path as String
*/
public String getPath() {
return this.path.toString();
}
/**
* @see JsonPath#isDefinite()
*/
public static boolean isPathDefinite(String path) {
return compile(path).isDefinite();
}
/**
* Checks if a path points to a single item or if it potentially returns multiple items
* <p/>
* a path is considered <strong>not</strong> definite if it contains a scan fragment ".."
* or an array position fragment that is not based on a single index
* <p/>
* <p/>
* definite path examples are:
* <p/>
* $store.book
* $store.book[1].title
* <p/>
* not definite path examples are:
* <p/>
* $..book
* $.store.book[*]
* $.store.book[1,2]
* $.store.book[?(@.category = 'fiction')]
*
* @return true if path is definite (points to single item)
*/
public boolean isDefinite() {
return path.isDefinite();
}
/**
* Applies this JsonPath to the provided json document.
* Note that the document must be identified as either a List or Map by
* the {@link JsonProvider}
*
* @param jsonObject a container Object
* @param <T> expected return type
* @return object(s) matched by the given path
*/
@SuppressWarnings({"unchecked"})
public <T> T read(Object jsonObject) {
return read(jsonObject, Configuration.defaultConfiguration());
}
/**
* Applies this JsonPath to the provided json document.
* Note that the document must be identified as either a List or Map by
* the {@link JsonProvider}
*
* @param jsonObject a container Object
* @param configuration configuration to use
* @param <T> expected return type
* @return object(s) matched by the given path
*/
@SuppressWarnings("unchecked")
public <T> T read(Object jsonObject, Configuration configuration) {
boolean optAsPathList = configuration.containsOption(AS_PATH_LIST);
boolean optAlwaysReturnList = configuration.containsOption(Option.ALWAYS_RETURN_LIST);
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (path.isFunctionPath()) {
if (optAsPathList || optAlwaysReturnList) {
if (optSuppressExceptions) {
return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
}
throw new JsonPathException("Options " + AS_PATH_LIST + " and " + ALWAYS_RETURN_LIST + " are not allowed when using path functions!");
}
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
if (optSuppressExceptions && evaluationContext.getPathList().isEmpty()) {
return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
}
return evaluationContext.getValue(true);
} else if (optAsPathList) {
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
if (optSuppressExceptions && evaluationContext.getPathList().isEmpty()) {
return (T) configuration.jsonProvider().createArray();
}
return (T) evaluationContext.getPath();
} else {
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration);
if (optSuppressExceptions && evaluationContext.getPathList().isEmpty()) {
if (optAlwaysReturnList) {
return (T) configuration.jsonProvider().createArray();
} else {
return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
}
}
Object res = evaluationContext.getValue(false);
if (optAlwaysReturnList && path.isDefinite()) {
Object array = configuration.jsonProvider().createArray();
configuration.jsonProvider().setArrayIndex(array, 0, res);
return (T) array;
} else {
return (T) res;
}
}
}
/**
* Set the value this path points to in the provided jsonObject
*
* @param jsonObject a json object
* @param configuration configuration to use
* @param <T> expected return type
* @return the updated jsonObject or the path list to updated objects if option AS_PATH_LIST is set.
*/
public <T> T set(Object jsonObject, Object newVal, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
return handleMissingPathInContext(configuration);
} else {
throw new PathNotFoundException();
}
}
for (PathRef updateOperation : evaluationContext.updateOperations()) {
updateOperation.set(newVal, configuration);
}
return resultByConfiguration(jsonObject, configuration, evaluationContext);
}
/**
* Replaces the value on the given path with the result of the {@link MapFunction}.
*
* @param jsonObject a json object
* @param mapFunction Converter object to be invoked
* @param configuration configuration to use
* @return the updated jsonObject or the path list to updated objects if option AS_PATH_LIST is set.
*/
public <T> T map(Object jsonObject, MapFunction mapFunction, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
notNull(mapFunction, "mapFunction can not be null");
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
return handleMissingPathInContext(configuration);
} else {
throw new PathNotFoundException();
}
}
for (PathRef updateOperation : evaluationContext.updateOperations()) {
updateOperation.convert(mapFunction, configuration);
}
return resultByConfiguration(jsonObject, configuration, evaluationContext);
}
/**
* Deletes the object this path points to in the provided jsonObject
*
* @param jsonObject a json object
* @param configuration configuration to use
* @param <T> expected return type
* @return the updated jsonObject or the path list to deleted objects if option AS_PATH_LIST is set.
*/
public <T> T delete(Object jsonObject, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
return handleMissingPathInContext(configuration);
} else {
throw new PathNotFoundException();
}
}
for (PathRef updateOperation : evaluationContext.updateOperations()) {
updateOperation.delete(configuration);
}
return resultByConfiguration(jsonObject, configuration, evaluationContext);
}
/**
* Adds a new value to the Array this path points to in the provided jsonObject
*
* @param jsonObject a json object
* @param value the value to add
* @param configuration configuration to use
* @param <T> expected return type
* @return the updated jsonObject or the path list to updated object if option AS_PATH_LIST is set.
*/
public <T> T add(Object jsonObject, Object value, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notNull(configuration, "configuration can not be null");
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
return handleMissingPathInContext(configuration);
} else {
throw new PathNotFoundException();
}
}
for (PathRef updateOperation : evaluationContext.updateOperations()) {
updateOperation.add(value, configuration);
}
return resultByConfiguration(jsonObject, configuration, evaluationContext);
}
/**
* Adds or updates the Object this path points to in the provided jsonObject with a key with a value
*
* @param jsonObject a json object
* @param key the key to add or update
* @param value the new value
* @param configuration configuration to use
* @param <T> expected return type
* @return the updated jsonObject or the path list to updated objects if option AS_PATH_LIST is set.
*/
public <T> T put(Object jsonObject, String key, Object value, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notEmpty(key, "key can not be null or empty");
notNull(configuration, "configuration can not be null");
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
if (evaluationContext.getPathList().isEmpty()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
if (optSuppressExceptions) {
return handleMissingPathInContext(configuration);
} else {
throw new PathNotFoundException();
}
}
for (PathRef updateOperation : evaluationContext.updateOperations()) {
updateOperation.put(key, value, configuration);
}
return resultByConfiguration(jsonObject, configuration, evaluationContext);
}
public <T> T renameKey(Object jsonObject, String oldKeyName, String newKeyName, Configuration configuration) {
notNull(jsonObject, "json can not be null");
notEmpty(newKeyName, "newKeyName can not be null or empty");
notNull(configuration, "configuration can not be null");
EvaluationContext evaluationContext = path.evaluate(jsonObject, jsonObject, configuration, true);
for (PathRef updateOperation : evaluationContext.updateOperations()) {
boolean optSuppressExceptions = configuration.containsOption(Option.SUPPRESS_EXCEPTIONS);
try {
updateOperation.renameKey(oldKeyName, newKeyName, configuration);
} catch (RuntimeException e) {
if(!optSuppressExceptions){
throw e;
}else{
// With option SUPPRESS_EXCEPTIONS,
// the PathNotFoundException should be ignored and the other updateOperation should be continued.
}
}
}
return resultByConfiguration(jsonObject, configuration, evaluationContext);
}
/**
* Applies this JsonPath to the provided json string
*
* @param json a json string
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
public <T> T read(String json) {
return read(json, Configuration.defaultConfiguration());
}
/**
* Applies this JsonPath to the provided json string
*
* @param json a json string
* @param configuration configuration to use
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
public <T> T read(String json, Configuration configuration) {
notEmpty(json, "json can not be null or empty");
notNull(configuration, "jsonProvider can not be null");
return read(configuration.jsonProvider().parse(json), configuration);
}
/**
* Applies this JsonPath to the provided json URL
*
* @param jsonURL url to read from
* @param <T> expected return type
* @return list of objects matched by the given path
* @throws IOException
*/
@SuppressWarnings({"unchecked"})
public <T> T read(URL jsonURL) throws IOException {
return read(jsonURL, Configuration.defaultConfiguration());
}
/**
* Applies this JsonPath to the provided json file
*
* @param jsonFile file to read from
* @param <T> expected return type
* @return list of objects matched by the given path
* @throws IOException
*/
@SuppressWarnings({"unchecked"})
public <T> T read(File jsonFile) throws IOException {
return read(jsonFile, Configuration.defaultConfiguration());
}
/**
* Applies this JsonPath to the provided json file
*
* @param jsonFile file to read from
* @param configuration configuration to use
* @param <T> expected return type
* @return list of objects matched by the given path
* @throws IOException
*/
@SuppressWarnings({"unchecked"})
public <T> T read(File jsonFile, Configuration configuration) throws IOException {
notNull(jsonFile, "json file can not be null");
isTrue(jsonFile.exists(), "json file does not exist");
notNull(configuration, "jsonProvider can not be null");
FileInputStream fis = null;
try {
fis = new FileInputStream(jsonFile);
return read(fis, configuration);
} finally {
Utils.closeQuietly(fis);
}
}
/**
* Applies this JsonPath to the provided json input stream
*
* @param jsonInputStream input stream to read from
* @param <T> expected return type
* @return list of objects matched by the given path
* @throws IOException
*/
@SuppressWarnings({"unchecked"})
public <T> T read(InputStream jsonInputStream) throws IOException {
return read(jsonInputStream, Configuration.defaultConfiguration());
}
/**
* Applies this JsonPath to the provided json input stream
*
* @param jsonInputStream input stream to read from
* @param configuration configuration to use
* @param <T> expected return type
* @return list of objects matched by the given path
* @throws IOException
*/
@SuppressWarnings({"unchecked"})
public <T> T read(InputStream jsonInputStream, Configuration configuration) throws IOException {
notNull(jsonInputStream, "json input stream can not be null");
notNull(configuration, "configuration can not be null");
return read(jsonInputStream, "UTF-8", configuration);
}
/**
* Applies this JsonPath to the provided json input stream
*
* @param jsonInputStream input stream to read from
* @param configuration configuration to use
* @param <T> expected return type
* @return list of objects matched by the given path
* @throws IOException
*/
@SuppressWarnings({"unchecked"})
public <T> T read(InputStream jsonInputStream, String charset, Configuration configuration) throws IOException {
notNull(jsonInputStream, "json input stream can not be null");
notNull(charset, "charset can not be null");
notNull(configuration, "configuration can not be null");
try {
return read(configuration.jsonProvider().parse(jsonInputStream, charset), configuration);
} finally {
Utils.closeQuietly(jsonInputStream);
}
}
// --------------------------------------------------------
//
// Static factory methods
//
// --------------------------------------------------------
/**
* Compiles a JsonPath
*
* @param jsonPath to compile
* @param filters filters to be applied to the filter place holders [?] in the path
* @return compiled JsonPath
*/
public static JsonPath compile(String jsonPath, Predicate... filters) {
notEmpty(jsonPath, "json can not be null or empty");
return new JsonPath(jsonPath, filters);
}
// --------------------------------------------------------
//
// Static utility functions
//
// --------------------------------------------------------
/**
* Creates a new JsonPath and applies it to the provided Json object
*
* @param json a json object
* @param jsonPath the json path
* @param filters filters to be applied to the filter place holders [?] in the path
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
public static <T> T read(Object json, String jsonPath, Predicate... filters) {
return parse(json).read(jsonPath, filters);
}
/**
* Creates a new JsonPath and applies it to the provided Json string
*
* @param json a json string
* @param jsonPath the json path
* @param filters filters to be applied to the filter place holders [?] in the path
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
public static <T> T read(String json, String jsonPath, Predicate... filters) {
return new ParseContextImpl().parse(json).read(jsonPath, filters);
}
/**
* Creates a new JsonPath and applies it to the provided Json object
*
* @param jsonURL url pointing to json doc
* @param jsonPath the json path
* @param filters filters to be applied to the filter place holders [?] in the path
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
@Deprecated
public static <T> T read(URL jsonURL, String jsonPath, Predicate... filters) throws IOException {
return new ParseContextImpl().parse(jsonURL).read(jsonPath, filters);
}
/**
* Creates a new JsonPath and applies it to the provided Json object
*
* @param jsonFile json file
* @param jsonPath the json path
* @param filters filters to be applied to the filter place holders [?] in the path
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
public static <T> T read(File jsonFile, String jsonPath, Predicate... filters) throws IOException {
return new ParseContextImpl().parse(jsonFile).read(jsonPath, filters);
}
/**
* Creates a new JsonPath and applies it to the provided Json object
*
* @param jsonInputStream json input stream
* @param jsonPath the json path
* @param filters filters to be applied to the filter place holders [?] in the path
* @param <T> expected return type
* @return list of objects matched by the given path
*/
@SuppressWarnings({"unchecked"})
public static <T> T read(InputStream jsonInputStream, String jsonPath, Predicate... filters) throws IOException {
return new ParseContextImpl().parse(jsonInputStream).read(jsonPath, filters);
}
// --------------------------------------------------------
//
// Static Fluent API
//
// --------------------------------------------------------
/**
* Creates a {@link ParseContext} that can be used to parse JSON input. The parse context
* is as thread safe as the underlying {@link JsonProvider}. Note that not all JsonProvider are
* thread safe.
*
* @param configuration configuration to use when parsing JSON
* @return a parsing context based on given configuration
*/
public static ParseContext using(Configuration configuration) {
return new ParseContextImpl(configuration);
}
/**
* Creates a {@link ParseContext} that will parse a given JSON input.
*
* @param provider jsonProvider to use when parsing JSON
* @return a parsing context based on given jsonProvider
*/
@Deprecated
public static ParseContext using(JsonProvider provider) {
return new ParseContextImpl(Configuration.builder().jsonProvider(provider).build());
}
/**
* Parses the given JSON input using the default {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json input
* @return a read context
*/
public static DocumentContext parse(Object json) {
return new ParseContextImpl().parse(json);
}
/**
* Parses the given JSON input using the default {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json string
* @return a read context
*/
public static DocumentContext parse(String json) {
return new ParseContextImpl().parse(json);
}
/**
* Parses the given JSON input using the default {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json stream
* @return a read context
*/
public static DocumentContext parse(InputStream json) {
return new ParseContextImpl().parse(json);
}
/**
* Parses the given JSON input using the default {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json file
* @return a read context
*/
public static DocumentContext parse(File json) throws IOException {
return new ParseContextImpl().parse(json);
}
/**
* Parses the given JSON input using the default {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json url
* @return a read context
*/
@Deprecated
public static DocumentContext parse(URL json) throws IOException {
return new ParseContextImpl().parse(json);
}
/**
* Parses the given JSON input using the provided {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json input
* @return a read context
*/
public static DocumentContext parse(Object json, Configuration configuration) {
return new ParseContextImpl(configuration).parse(json);
}
/**
* Parses the given JSON input using the provided {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json input
* @return a read context
*/
public static DocumentContext parse(String json, Configuration configuration) {
return new ParseContextImpl(configuration).parse(json);
}
/**
* Parses the given JSON input using the provided {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json input
* @return a read context
*/
public static DocumentContext parse(InputStream json, Configuration configuration) {
return new ParseContextImpl(configuration).parse(json);
}
/**
* Parses the given JSON input using the provided {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json input
* @return a read context
*/
public static DocumentContext parse(File json, Configuration configuration) throws IOException {
return new ParseContextImpl(configuration).parse(json);
}
/**
* Parses the given JSON input using the provided {@link Configuration} and
* returns a {@link DocumentContext} for path evaluation
*
* @param json input
* @return a read context
*/
@Deprecated
public static DocumentContext parse(URL json, Configuration configuration) throws IOException {
return new ParseContextImpl(configuration).parse(json);
}
private <T> T resultByConfiguration(Object jsonObject, Configuration configuration, EvaluationContext evaluationContext) {
if(configuration.containsOption(AS_PATH_LIST)){
return (T)evaluationContext.getPathList();
} else {
return (T) jsonObject;
}
}
private <T> T handleMissingPathInContext(final Configuration configuration) {
boolean optAsPathList = configuration.containsOption(AS_PATH_LIST);
boolean optAlwaysReturnList = configuration.containsOption(Option.ALWAYS_RETURN_LIST);
if (optAsPathList) {
return (T) configuration.jsonProvider().createArray();
} else {
if (optAlwaysReturnList) {
return (T) configuration.jsonProvider().createArray();
} else {
return (T) (path.isDefinite() ? null : configuration.jsonProvider().createArray());
}
}
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/JsonPathException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public class JsonPathException extends RuntimeException {
public JsonPathException() {
}
public JsonPathException(String message) {
super(message);
}
public JsonPathException(String message, Throwable cause) {
super(message, cause);
}
public JsonPathException(Throwable cause) {
super(cause);
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/MapFunction.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
/**
* Returns a new representation for the input value.
*/
public interface MapFunction {
Object map(Object currentValue, Configuration configuration);
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/Option.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public enum Option {
/**
* returns <code>null</code> for missing leaf.
*
* <pre>
* [
* {
* "foo" : "foo1",
* "bar" : "bar1"
* }
* {
* "foo" : "foo2"
* }
* ]
*</pre>
*
* the path :
*
* "$[*].bar"
*
* Without flag ["bar1"] is returned
* With flag ["bar1", null] is returned
*
*
*/
DEFAULT_PATH_LEAF_TO_NULL,
/**
* Makes this implementation more compliant to the Goessner spec. All results are returned as Lists.
*/
ALWAYS_RETURN_LIST,
/**
* Returns a list of path strings representing the path of the evaluation hits
*/
AS_PATH_LIST,
/**
* Suppress all exceptions when evaluating path.
* <br/>
* If an exception is thrown and the option {@link Option#ALWAYS_RETURN_LIST} an empty list is returned.
* If an exception is thrown and the option {@link Option#ALWAYS_RETURN_LIST} is not present null is returned.
*/
SUPPRESS_EXCEPTIONS,
/**
* Configures JsonPath to require properties defined in path when an <bold>indefinite</bold> path is evaluated.
*
*
* Given:
*
* <pre>
* [
* {
* "a" : "a-val",
* "b" : "b-val"
* },
* {
* "a" : "a-val",
* }
* ]
* </pre>
*
* evaluating the path "$[*].b"
*
* If REQUIRE_PROPERTIES option is present PathNotFoundException is thrown.
* If REQUIRE_PROPERTIES option is not present ["b-val"] is returned.
*/
REQUIRE_PROPERTIES
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/ParseContext.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
/**
* Parses JSON as specified by the used {@link com.jayway.jsonpath.spi.json.JsonProvider}.
*/
public interface ParseContext {
DocumentContext parse(String json);
DocumentContext parse(Object json);
DocumentContext parse(InputStream json);
DocumentContext parse(InputStream json, String charset);
DocumentContext parse(File json) throws IOException;
DocumentContext parseUtf8(byte[] json);
@Deprecated
DocumentContext parse(URL json) throws IOException;
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/PathNotFoundException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public class PathNotFoundException extends InvalidPathException {
public PathNotFoundException() {
}
public PathNotFoundException(String message) {
super(message);
}
public PathNotFoundException(String message, Throwable cause) {
super(message, cause);
}
public PathNotFoundException(Throwable cause) {
super(cause);
}
@Override
public synchronized Throwable fillInStackTrace() {
return this;
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/Predicate.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import com.jayway.jsonpath.spi.mapper.MappingException;
/**
*
*/
public interface Predicate {
boolean apply(PredicateContext ctx);
public interface PredicateContext {
/**
* Returns the current item being evaluated by this predicate
* @return current document
*/
Object item();
/**
* Returns the current item being evaluated by this predicate. It will be mapped
* to the provided class
* @return current document
*/
<T> T item(Class<T> clazz) throws MappingException;
/**
* Returns the root document (the complete JSON)
* @return root document
*/
Object root();
/**
* Configuration to use when evaluating
* @return configuration
*/
Configuration configuration();
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/ReadContext.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public interface ReadContext {
/**
* Returns the configuration used for reading
*
* @return an immutable configuration
*/
Configuration configuration();
/**
* Returns the JSON model that this context is operating on
*
* @return json model
*/
<T> T json();
/**
* Returns the JSON model that this context is operating on as a JSON string
*
* @return json model as string
*/
String jsonString();
/**
* Reads the given path from this context
*
* @param path path to read
* @param filters filters
* @param <T>
* @return result
*/
<T> T read(String path, Predicate... filters);
/**
* Reads the given path from this context
*
* @param path path to read
* @param type expected return type (will try to map)
* @param filters filters
* @param <T>
* @return result
*/
<T> T read(String path, Class<T> type, Predicate... filters);
/**
* Reads the given path from this context
*
* @param path path to apply
* @param <T>
* @return result
*/
<T> T read(JsonPath path);
/**
* Reads the given path from this context
*
* @param path path to apply
* @param type expected return type (will try to map)
* @param <T>
* @return result
*/
<T> T read(JsonPath path, Class<T> type);
/**
* Reads the given path from this context
*
* Sample code to create a TypeRef
* <code>
* TypeRef ref = new TypeRef<List<Integer>>() {};
* </code>
*
* @param path path to apply
* @param typeRef expected return type (will try to map)
* @param <T>
* @return result
*/
<T> T read(JsonPath path, TypeRef<T> typeRef);
/**
* Reads the given path from this context
*
* Sample code to create a TypeRef
* <code>
* TypeRef ref = new TypeRef<List<Integer>>() {};
* </code>
*
* @param path path to apply
* @param typeRef expected return type (will try to map)
* @param <T>
* @return result
*/
<T> T read(String path, TypeRef<T> typeRef);
/**
* Stops evaluation when maxResults limit has been reached
* @param maxResults
* @return the read context
*/
ReadContext limit(int maxResults);
/**
* Adds listener to the evaluation of this path
* @param listener listeners to add
* @return the read context
*/
ReadContext withListeners(EvaluationListener... listener);
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/TypeRef.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* Used to specify generic type information in {@link com.jayway.jsonpath.ReadContext}
*
* <code>
* TypeRef ref = new TypeRef<List<Integer>>() { };
* </code>
*
* @param <T>
*/
public abstract class TypeRef<T> implements Comparable<TypeRef<T>> {
protected final Type type;
protected TypeRef()
{
Type superClass = getClass().getGenericSuperclass();
if (superClass instanceof Class<?>) {
throw new IllegalArgumentException("No type info in TypeRef");
}
type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
}
public Type getType() { return type; }
/**
* The only reason we define this method (and require implementation
* of <code>Comparable</code>) is to prevent constructing a
* reference without type information.
*/
@Override
public int compareTo(TypeRef<T> o) {
return 0;
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/ValueCompareException.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public class ValueCompareException extends JsonPathException {
public ValueCompareException() {
}
/**
* Construct the exception with message capturing the classes for two objects.
*
* @param left first object
* @param right second object
*/
public ValueCompareException(final Object left, final Object right) {
super(String.format("Can not compare a %1s with a %2s", left.getClass().getName(), right.getClass().getName()));
}
public ValueCompareException(String message) {
super(message);
}
public ValueCompareException(String message, Throwable cause) {
super(message, cause);
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/WriteContext.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath;
public interface WriteContext {
/**
* Returns the configuration used for reading
*
* @return an immutable configuration
*/
Configuration configuration();
/**
* Returns the JSON model that this context is operating on
*
* @return json model
*/
<T> T json();
/**
* Returns the JSON model that this context is operating on as a JSON string
*
* @return json model as string
*/
String jsonString();
/**
* Set the value a the given path
*
* @param path path to set
* @param newValue new value
* @param filters filters
* @return a document context
*/
DocumentContext set(String path, Object newValue, Predicate... filters);
/**
* Set the value a the given path
*
* @param path path to set
* @param newValue new value
* @return a document context
*/
DocumentContext set(JsonPath path, Object newValue);
/**
* Replaces the value on the given path with the result of the {@link MapFunction}.
*
* @param path path to be converted set
* @param mapFunction Converter object to be invoked
* @param filters filters
* @return a document context
*/
DocumentContext map(String path, MapFunction mapFunction, Predicate... filters);
/**
* Replaces the value on the given path with the result of the {@link MapFunction}.
*
* @param path path to be converted set
* @param mapFunction Converter object to be invoked (or lambda:))
* @return a document context
*/
DocumentContext map(JsonPath path, MapFunction mapFunction);
/**
* Deletes the given path
*
* @param path path to delete
* @param filters filters
* @return a document context
*/
DocumentContext delete(String path, Predicate... filters);
/**
* Deletes the given path
*
* @param path path to delete
* @return a document context
*/
DocumentContext delete(JsonPath path);
/**
* Add value to array
*
* <pre>
* <code>
* List<Integer> array = new ArrayList<Integer>(){{
* add(0);
* add(1);
* }};
*
* JsonPath.parse(array).add("$", 2);
*
* assertThat(array).containsExactly(0,1,2);
* </code>
* </pre>
*
* @param path path to array
* @param value value to add
* @param filters filters
* @return a document context
*/
DocumentContext add(String path, Object value, Predicate... filters);
/**
* Add value to array at the given path
*
* @param path path to array
* @param value value to add
* @return a document context
*/
DocumentContext add(JsonPath path, Object value);
/**
* Add or update the key with a the given value at the given path
*
* @param path path to object
* @param key key to add
* @param value value of key
* @param filters filters
* @return a document context
*/
DocumentContext put(String path, String key, Object value, Predicate... filters);
/**
* Add or update the key with a the given value at the given path
*
* @param path path to array
* @param key key to add
* @param value value of key
* @return a document context
*/
DocumentContext put(JsonPath path, String key, Object value);
/**
* Renames the last key element of a given path.
* @param path The path to the old key. Should be resolved to a map
* or an array including map items.
* @param oldKeyName The old key name.
* @param newKeyName The new key name.
* @param filters filters.
* @return a document content.
*/
DocumentContext renameKey(String path, String oldKeyName, String newKeyName, Predicate... filters);
/**
* Renames the last key element of a given path.
* @param path The path to the old key. Should be resolved to a map
* or an array including map items.
* @param oldKeyName The old key name.
* @param newKeyName The new key name.
* @return a document content.
*/
DocumentContext renameKey(JsonPath path, String oldKeyName, String newKeyName);
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/CharacterIndex.java
================================================
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.InvalidPathException;
public class CharacterIndex {
private static final char OPEN_PARENTHESIS = '(';
private static final char CLOSE_PARENTHESIS = ')';
private static final char CLOSE_SQUARE_BRACKET = ']';
private static final char SPACE = ' ';
private static final char ESCAPE = '\\';
private static final char SINGLE_QUOTE = '\'';
private static final char DOUBLE_QUOTE = '"';
private static final char MINUS = '-';
private static final char PERIOD = '.';
private static final char REGEX = '/';
//workaround for issue: https://github.com/json-path/JsonPath/issues/590
private static final char SCI_E = 'E';
private static final char SCI_e = 'e';
private final CharSequence charSequence;
private int position;
private int endPosition;
public CharacterIndex(CharSequence charSequence) {
this.charSequence = charSequence;
this.position = 0;
this.endPosition = charSequence.length() - 1;
}
public int length() {
return endPosition + 1;
}
public char charAt(int idx) {
return charSequence.charAt(idx);
}
public char currentChar() {
return charSequence.charAt(position);
}
public boolean currentCharIs(char c) {
return (charSequence.charAt(position) == c);
}
public boolean lastCharIs(char c) {
return charSequence.charAt(endPosition) == c;
}
public boolean nextCharIs(char c) {
return inBounds(position + 1) && (charSequence.charAt(position + 1) == c);
}
public int incrementPosition(int charCount) {
return setPosition(position + charCount);
}
public int decrementEndPosition(int charCount) {
return setEndPosition(endPosition - charCount);
}
public int setPosition(int newPosition) {
//position = min(newPosition, charSequence.length() - 1);
position = newPosition;
return position;
}
private int setEndPosition(int newPosition) {
endPosition = newPosition;
return endPosition;
}
public int position(){
return position;
}
public int indexOfClosingSquareBracket(int startPosition) {
int readPosition = startPosition;
while (inBounds(readPosition)) {
if(charAt(readPosition) == CLOSE_SQUARE_BRACKET){
return readPosition;
}
readPosition++;
}
return -1;
}
public int indexOfMatchingCloseChar(int startPosition, char openChar, char closeChar, boolean skipStrings, boolean skipRegex) {
if(charAt(startPosition) != openChar){
throw new InvalidPathException("Expected " + openChar + " but found " + charAt(startPosition));
}
int opened = 1;
int readPosition = startPosition + 1;
while (inBounds(readPosition)) {
if (skipStrings) {
char quoteChar = charAt(readPosition);
if (quoteChar == SINGLE_QUOTE || quoteChar == DOUBLE_QUOTE){
readPosition = nextIndexOfUnescaped(readPosition, quoteChar);
if(readPosition == -1){
throw new InvalidPathException("Could not find matching close quote for " + quoteChar + " when parsing : " + charSequence);
}
readPosition++;
}
}
if (skipRegex) {
if (charAt(readPosition) == REGEX) {
readPosition = nextIndexOfUnescaped(readPosition, REGEX);
if(readPosition == -1){
throw new InvalidPathException("Could not find matching close for " + REGEX + " when parsing regex in : " + charSequence);
}
readPosition++;
}
}
if (charAt(readPosition) == openChar) {
opened++;
}
if (charAt(readPosition) == closeChar) {
opened--;
if (opened == 0) {
return readPosition;
}
}
readPosition++;
}
return -1;
}
public int indexOfClosingBracket(int startPosition, boolean skipStrings, boolean skipRegex) {
return indexOfMatchingCloseChar(startPosition, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, skipStrings, skipRegex);
}
public int indexOfNextSignificantChar(char c) {
return indexOfNextSignificantChar(position, c);
}
public int indexOfNextSignificantChar(int startPosition, char c) {
int readPosition = startPosition + 1;
while (!isOutOfBounds(readPosition) && charAt(readPosition) == SPACE) {
readPosition++;
}
if (charAt(readPosition) == c) {
return readPosition;
} else {
return -1;
}
}
public int nextIndexOf(char c) {
return nextIndexOf(position + 1, c);
}
public int nextIndexOf(int startPosition, char c) {
int readPosition = startPosition;
while (!isOutOfBounds(readPosition)) {
if (charAt(readPosition) == c) {
return readPosition;
}
readPosition++;
}
return -1;
}
public int nextIndexOfUnescaped(char c) {
return nextIndexOfUnescaped(position, c);
}
public int nextIndexOfUnescaped(int startPosition, char c) {
int readPosition = startPosition + 1;
boolean inEscape = false;
while (!isOutOfBounds(readPosition)) {
if(inEscape){
inEscape = false;
} else if('\\' == charAt(readPosition)){
inEscape = true;
} else if (c == charAt(readPosition)){
return readPosition;
}
readPosition ++;
}
return -1;
}
public char charAtOr(int postition, char defaultChar){
if(!inBounds(postition)) return defaultChar;
else return charAt(postition);
}
public boolean nextSignificantCharIs(int startPosition, char c) {
int readPosition = startPosition + 1;
while (!isOutOfBounds(readPosition) && charAt(readPosition) == SPACE) {
readPosition++;
}
return !isOutOfBounds(readPosition) && charAt(readPosition) == c;
}
public boolean nextSignificantCharIs(char c) {
return nextSignificantCharIs(position, c);
}
public char nextSignificantChar() {
return nextSignificantChar(position);
}
public char nextSignificantChar(int startPosition) {
int readPosition = startPosition + 1;
while (!isOutOfBounds(readPosition) && charAt(readPosition) == SPACE) {
readPosition++;
}
if (!isOutOfBounds(readPosition)) {
return charAt(readPosition);
} else {
return ' ';
}
}
public void readSignificantChar(char c) {
if (skipBlanks().currentChar() != c) {
throw new InvalidPathException(String.format("Expected character: %c", c));
}
incrementPosition(1);
}
public boolean hasSignificantSubSequence(CharSequence s) {
skipBlanks();
if (! inBounds(position + s.length() - 1)) {
return false;
}
if (! subSequence(position, position + s.length()).equals(s)) {
return false;
}
incrementPosition(s.length());
return true;
}
public int indexOfPreviousSignificantChar(int startPosition){
int readPosition = startPosition - 1;
while (!isOutOfBounds(readPosition) && charAt(readPosition) == SPACE) {
readPosition--;
}
if (!isOutOfBounds(readPosition)) {
return readPosition;
} else {
return -1;
}
}
public int indexOfPreviousSignificantChar(){
return indexOfPreviousSignificantChar(position);
}
public char previousSignificantChar(int startPosition) {
int previousSignificantCharIndex = indexOfPreviousSignificantChar(startPosition);
if(previousSignificantCharIndex == -1) return ' ';
else return charAt(previousSignificantCharIndex);
}
public char previousSignificantChar() {
return previousSignificantChar(position);
}
public boolean currentIsTail() {
return position >= endPosition;
}
public boolean hasMoreCharacters() {
return inBounds(position + 1);
}
public boolean inBounds(int idx) {
return (idx >= 0) && (idx <= endPosition);
}
public boolean inBounds() {
return inBounds(position);
}
public boolean isOutOfBounds(int idx) {
return !inBounds(idx);
}
public CharSequence subSequence(int start, int end) {
return charSequence.subSequence(start, end);
}
public CharSequence charSequence() {
return charSequence;
}
@Override
public String toString() {
return charSequence.toString();
}
public boolean isNumberCharacter(int readPosition) {
char c = charAt(readPosition);
//workaround for issue: https://github.com/json-path/JsonPath/issues/590
return Character.isDigit(c) || c == MINUS || c == PERIOD || c == SCI_E || c == SCI_e;
}
public CharacterIndex skipBlanks() {
while (inBounds() && position < endPosition && currentChar() == SPACE){
incrementPosition(1);
}
return this;
}
private CharacterIndex skipBlanksAtEnd() {
while (inBounds() && position < endPosition && lastCharIs(SPACE)){
decrementEndPosition(1);
}
return this;
}
public CharacterIndex trim() {
skipBlanks();
skipBlanksAtEnd();
return this;
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/DefaultsImpl.java
================================================
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.Configuration.Defaults;
import com.jayway.jsonpath.Option;
import com.jayway.jsonpath.spi.json.JsonProvider;
import com.jayway.jsonpath.spi.json.JsonSmartJsonProvider;
import com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider;
import com.jayway.jsonpath.spi.mapper.MappingProvider;
import java.util.EnumSet;
import java.util.Set;
public final class DefaultsImpl implements Defaults {
public static final DefaultsImpl INSTANCE = new DefaultsImpl();
private final MappingProvider mappingProvider = new JsonSmartMappingProvider();
@Override
public JsonProvider jsonProvider() {
return new JsonSmartJsonProvider();
}
@Override
public Set<Option> options() {
return EnumSet.noneOf(Option.class);
}
@Override
public MappingProvider mappingProvider() {
return mappingProvider;
}
private DefaultsImpl() {
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/EvaluationAbortException.java
================================================
package com.jayway.jsonpath.internal;
public class EvaluationAbortException extends RuntimeException {
private static final long serialVersionUID = 4419305302960432348L;
// this is just a marker exception to abort evaluation, we don't care about
// the stack
@Override
public Throwable fillInStackTrace() {
return this;
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/EvaluationContext.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.Configuration;
import java.util.Collection;
import java.util.List;
public interface EvaluationContext {
/**
*
* @return the configuration used for this evaluation
*/
Configuration configuration();
/**
* The json document that is evaluated
*
* @return the document
*/
Object rootDocument();
/**
* This method does not adhere to configuration settings. It will return a single object (not wrapped in a List) even if the
* configuration contains the {@link com.jayway.jsonpath.Option#ALWAYS_RETURN_LIST}
*
* @param <T> expected return type
* @return evaluation result
*/
<T> T getValue();
/**
* See {@link com.jayway.jsonpath.internal.EvaluationContext#getValue()}
*
* @param unwrap tells th underlying json provider if primitives should be unwrapped
* @param <T> expected return type
* @return evaluation result
*/
<T> T getValue(boolean unwrap);
/**
* Returns the list of formalized paths that represent the result of the evaluation
* @param <T>
* @return list of paths
*/
<T> T getPath();
/**
* Convenience method to get list of hits as String path representations
*
* @return list of path representations
*/
List<String> getPathList();
Collection<PathRef> updateOperations();
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.EvaluationListener;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.MapFunction;
import com.jayway.jsonpath.Option;
import com.jayway.jsonpath.Predicate;
import com.jayway.jsonpath.ReadContext;
import com.jayway.jsonpath.TypeRef;
import com.jayway.jsonpath.spi.cache.Cache;
import com.jayway.jsonpath.spi.cache.CacheProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
import static com.jayway.jsonpath.JsonPath.compile;
import static com.jayway.jsonpath.internal.Utils.notEmpty;
import static com.jayway.jsonpath.internal.Utils.notNull;
public class JsonContext implements DocumentContext {
private static final Logger logger = LoggerFactory.getLogger(JsonContext.class);
private final Configuration configuration;
private final Object json;
JsonContext(Object json, Configuration configuration) {
notNull(json, "json can not be null");
notNull(configuration, "configuration can not be null");
this.configuration = configuration;
this.json = json;
}
@Override
public Configuration configuration() {
return configuration;
}
//------------------------------------------------
//
// ReadContext impl
//
//------------------------------------------------
@Override
public Object json() {
return json;
}
@Override
public String jsonString() {
return configuration.jsonProvider().toJson(json);
}
@Override
public <T> T read(String path, Predicate... filters) {
notEmpty(path, "path can not be null or empty");
return read(pathFromCache(path, filters));
}
@Override
public <T> T read(String path, Class<T> type, Predicate... filters) {
return convert(read(path, filters), type, configuration);
}
@Override
public <T> T read(JsonPath path) {
notNull(path, "path can not be null");
return path.read(json, configuration);
}
@Override
public <T> T read(JsonPath path, Class<T> type) {
return convert(read(path), type, configuration);
}
@Override
public <T> T read(JsonPath path, TypeRef<T> type) {
return convert(read(path), type, configuration);
}
@Override
public <T> T read(String path, TypeRef<T> type) {
return convert(read(path), type, configuration);
}
@Override
public ReadContext limit(int maxResults) {
return withListeners(new LimitingEvaluationListener(maxResults));
}
@Override
public ReadContext withListeners(EvaluationListener... listener) {
return new JsonContext(json, configuration.setEvaluationListeners(listener));
}
private <T> T convert(Object obj, Class<T> targetType, Configuration configuration) {
return configuration.mappingProvider().map(obj, targetType, configuration);
}
private <T> T convert(Object obj, TypeRef<T> targetType, Configuration configuration) {
return configuration.mappingProvider().map(obj, targetType, configuration);
}
@Override
public DocumentContext set(String path, Object newValue, Predicate... filters) {
return set(pathFromCache(path, filters), newValue);
}
@Override
public DocumentContext set(JsonPath path, Object newValue) {
List<String> modified = path.set(json, newValue, configuration.addOptions(Option.AS_PATH_LIST));
if (logger.isDebugEnabled()) {
for (String p : modified) {
logger.debug("Set path {} new value {}", p, newValue);
}
}
return this;
}
@Override
public DocumentContext map(String path, MapFunction mapFunction, Predicate... filters) {
map(pathFromCache(path, filters), mapFunction);
return this;
}
@Override
public DocumentContext map(JsonPath path, MapFunction mapFunction) {
Object obj = path.map(json, mapFunction, configuration);
return obj==null ? null:this;
}
@Override
public DocumentContext delete(String path, Predicate... filters) {
return delete(pathFromCache(path, filters));
}
@Override
public DocumentContext delete(JsonPath path) {
List<String> modified = path.delete(json, configuration.addOptions(Option.AS_PATH_LIST));
if (logger.isDebugEnabled()) {
for (String p : modified) {
logger.debug("Delete path {}", p);
}
}
return this;
}
@Override
public DocumentContext add(String path, Object value, Predicate... filters) {
return add(pathFromCache(path, filters), value);
}
@Override
public DocumentContext add(JsonPath path, Object value) {
List<String> modified = path.add(json, value, configuration.addOptions(Option.AS_PATH_LIST));
if (logger.isDebugEnabled()) {
for (String p : modified) {
logger.debug("Add path {} new value {}", p, value);
}
}
return this;
}
@Override
public DocumentContext put(String path, String key, Object value, Predicate... filters) {
return put(pathFromCache(path, filters), key, value);
}
@Override
public DocumentContext renameKey(String path, String oldKeyName, String newKeyName, Predicate... filters) {
return renameKey(pathFromCache(path, filters), oldKeyName, newKeyName);
}
@Override
public DocumentContext renameKey(JsonPath path, String oldKeyName, String newKeyName) {
List<String> modified = path.renameKey(json, oldKeyName, newKeyName, configuration.addOptions(Option.AS_PATH_LIST));
if (logger.isDebugEnabled()) {
for (String p : modified) {
logger.debug("Rename path {} new value {}", p, newKeyName);
}
}
return this;
}
@Override
public DocumentContext put(JsonPath path, String key, Object value) {
List<String> modified = path.put(json, key, value, configuration.addOptions(Option.AS_PATH_LIST));
if (logger.isDebugEnabled()) {
for (String p : modified) {
logger.debug("Put path {} key {} value {}", p, key, value);
}
}
return this;
}
private JsonPath pathFromCache(String path, Predicate[] filters) {
Cache cache = CacheProvider.getCache();
String cacheKey = filters == null || filters.length == 0
? path : Utils.concat(path, Arrays.toString(filters));
JsonPath jsonPath = cache.get(cacheKey);
if (jsonPath == null) {
jsonPath = compile(path, filters);
cache.put(cacheKey, jsonPath);
}
return jsonPath;
}
private final static class LimitingEvaluationListener implements EvaluationListener {
final int limit;
private LimitingEvaluationListener(int limit) {
this.limit = limit;
}
@Override
public EvaluationContinuation resultFound(FoundResult found) {
if (found.index() == limit - 1) {
return EvaluationContinuation.ABORT;
} else {
return EvaluationContinuation.CONTINUE;
}
}
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/JsonFormatter.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath.internal;
public class JsonFormatter {
private static final String INDENT = " ";
private static final String NEW_LINE = System.getProperty("line.separator");
private static final int MODE_SINGLE = 100;
private static final int MODE_DOUBLE = 101;
private static final int MODE_ESCAPE_SINGLE = 102;
private static final int MODE_ESCAPE_DOUBLE = 103;
private static final int MODE_BETWEEN = 104;
private static void appendIndent(StringBuilder sb, int count) {
for (; count > 0; --count) sb.append(INDENT);
}
public static String prettyPrint(String input) {
input = input.replaceAll("[\\r\\n]", "");
StringBuilder output = new StringBuilder(input.length() * 2);
int mode = MODE_BETWEEN;
int depth = 0;
for (int i = 0; i < input.length(); ++i) {
char ch = input.charAt(i);
switch (mode) {
case MODE_BETWEEN:
switch (ch) {
case '{':
case '[':
output.append(ch);
output.append(NEW_LINE);
appendIndent(output, ++depth);
break;
case '}':
case ']':
output.append(NEW_LINE);
appendIndent(output, --depth);
output.append(ch);
break;
case ',':
output.append(ch);
output.append(NEW_LINE);
appendIndent(output, depth);
break;
case ':':
output.append(" : ");
break;
case '\'':
output.append(ch);
mode = MODE_SINGLE;
break;
case '"':
output.append(ch);
mode = MODE_DOUBLE;
break;
case ' ':
break;
default:
output.append(ch);
break;
}
break;
case MODE_ESCAPE_SINGLE:
output.append(ch);
mode = MODE_SINGLE;
break;
case MODE_ESCAPE_DOUBLE:
output.append(ch);
mode = MODE_DOUBLE;
break;
case MODE_SINGLE:
output.append(ch);
switch (ch) {
case '\'':
mode = MODE_BETWEEN;
break;
case '\\':
mode = MODE_ESCAPE_SINGLE;
break;
}
break;
case MODE_DOUBLE:
output.append(ch);
switch (ch) {
case '"':
mode = MODE_BETWEEN;
break;
case '\\':
mode = MODE_ESCAPE_DOUBLE;
break;
}
break;
}
}
return output.toString();
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/ParseContextImpl.java
================================================
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.ParseContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import static com.jayway.jsonpath.internal.Utils.notEmpty;
import static com.jayway.jsonpath.internal.Utils.notNull;
public class ParseContextImpl implements ParseContext {
private final Configuration configuration;
public ParseContextImpl() {
this(Configuration.defaultConfiguration());
}
public ParseContextImpl(Configuration configuration) {
this.configuration = configuration;
}
@Override
public DocumentContext parse(Object json) {
notNull(json, "json object can not be null");
return new JsonContext(json, configuration);
}
@Override
public DocumentContext parse(String json) {
notEmpty(json, "json string can not be null or empty");
Object obj = configuration.jsonProvider().parse(json);
return new JsonContext(obj, configuration);
}
@Override
public DocumentContext parseUtf8(byte[] json) {
notEmpty(json, "json bytes can not be null or empty");
Object obj = configuration.jsonProvider().parse(json);
return new JsonContext(obj, configuration);
}
@Override
public DocumentContext parse(InputStream json) {
return parse(json, "UTF-8");
}
@Override
public DocumentContext parse(InputStream json, String charset) {
notNull(json, "json input stream can not be null");
notNull(charset, "charset can not be null");
try {
Object obj = configuration.jsonProvider().parse(json, charset);
return new JsonContext(obj, configuration);
} finally {
Utils.closeQuietly(json);
}
}
@Override
public DocumentContext parse(File json) throws IOException {
notNull(json, "json file can not be null");
FileInputStream fis = null;
try {
fis = new FileInputStream(json);
return parse(fis);
} finally {
Utils.closeQuietly(fis);
}
}
@Override
@Deprecated
public DocumentContext parse(URL url) throws IOException {
notNull(url, "url can not be null");
InputStream fis = null;
try {
fis = url.openStream();
return parse(fis);
} finally {
Utils.closeQuietly(fis);
}
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/Path.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.Configuration;
/**
*
*/
public interface Path {
/**
* Evaluates this path
*
* @param document the json document to apply the path on
* @param rootDocument the root json document that started this evaluation
* @param configuration configuration to use
* @return EvaluationContext containing results of evaluation
*/
EvaluationContext evaluate(Object document, Object rootDocument, Configuration configuration);
/**
* Evaluates this path
*
* @param document the json document to apply the path on
* @param rootDocument the root json document that started this evaluation
* @param configuration configuration to use
* @param forUpdate is this a read or a write operation
* @return EvaluationContext containing results of evaluation
*/
EvaluationContext evaluate(Object document, Object rootDocument, Configuration configuration, boolean forUpdate);
/**
*
* @return true id this path is definite
*/
boolean isDefinite();
/**
*
* @return true id this path is a function
*/
boolean isFunctionPath();
/**
*
* @return true id this path is starts with '$' and false if the path starts with '@'
*/
boolean isRootPath();
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/PathRef.java
================================================
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.InvalidModificationException;
import com.jayway.jsonpath.MapFunction;
import com.jayway.jsonpath.PathNotFoundException;
import com.jayway.jsonpath.spi.json.JsonProvider;
import java.util.Collection;
public abstract class PathRef implements Comparable<PathRef> {
public static final PathRef NO_OP = new PathRef(null){
@Override
public Object getAccessor() {
return null;
}
@Override
public void set(Object newVal, Configuration configuration) {}
@Override
public void convert(MapFunction mapFunction, Configuration configuration) {}
@Override
public void delete(Configuration configuration) {}
@Override
public void add(Object newVal, Configuration configuration) {}
@Override
public void put(String key, Object newVal, Configuration configuration) {}
@Override
public void renameKey(String oldKeyName, String newKeyName, Configuration configuration) {}
};
protected Object parent;
private PathRef(Object parent) {
this.parent = parent;
}
abstract Object getAccessor();
public abstract void set(Object newVal, Configuration configuration);
public abstract void convert(MapFunction mapFunction, Configuration configuration);
public abstract void delete(Configuration configuration);
public abstract void add(Object newVal, Configuration configuration);
public abstract void put(String key, Object newVal, Configuration configuration);
public abstract void renameKey(String oldKey,String newKeyName, Configuration configuration);
protected void renameInMap(Object targetMap, String oldKeyName, String newKeyName, Configuration configuration){
if(configuration.jsonProvider().isMap(targetMap)){
if(configuration.jsonProvider().getMapValue(targetMap, oldKeyName) == JsonProvider.UNDEFINED){
throw new PathNotFoundException("No results for Key "+oldKeyName+" found in map!");
}
configuration.jsonProvider().setProperty(targetMap, newKeyName, configuration.jsonProvider().getMapValue(targetMap, oldKeyName));
configuration.jsonProvider().removeProperty(targetMap, oldKeyName);
} else {
throw new InvalidModificationException("Can only rename properties in a map");
}
}
protected boolean targetInvalid(Object target){
return target == JsonProvider.UNDEFINED || target == null;
}
@Override
public int compareTo(PathRef o) {
return this.getAccessor().toString().compareTo(o.getAccessor().toString()) * -1;
}
public static PathRef create(Object obj, String property){
return new ObjectPropertyPathRef(obj, property);
}
public static PathRef create(Object obj, Collection<String> properties){
return new ObjectMultiPropertyPathRef(obj, properties);
}
public static PathRef create(Object array, int index){
return new ArrayIndexPathRef(array, index);
}
public static PathRef createRoot(Object root){
return new RootPathRef(root);
}
private static class RootPathRef extends PathRef {
private RootPathRef(Object parent) {
super(parent);
}
@Override
Object getAccessor() {
return "$";
}
@Override
public void set(Object newVal, Configuration configuration) {
throw new InvalidModificationException("Invalid set operation");
}
public void convert(MapFunction mapFunction, Configuration configuration){
throw new InvalidModificationException("Invalid map operation");
}
@Override
public void delete(Configuration configuration) {
throw new InvalidModificationException("Invalid delete operation");
}
@Override
public void add(Object newVal, Configuration configuration) {
if(configuration.jsonProvider().isArray(parent)){
configuration.jsonProvider().setArrayIndex(parent, configuration.jsonProvider().length(parent), newVal);
} else {
throw new InvalidModificationException("Invalid add operation. $ is not an array");
}
}
@Override
public void put(String key, Object newVal, Configuration configuration) {
if(configuration.jsonProvider().isMap(parent)){
configuration.jsonProvider().setProperty(parent, key, newVal);
} else {
throw new InvalidModificationException("Invalid put operation. $ is not a map");
}
}
@Override
public void renameKey(String oldKeyName, String newKeyName, Configuration configuration) {
Object target = parent;
if(targetInvalid(target)){
return;
}
renameInMap(target, oldKeyName, newKeyName, configuration);
}
}
private static class ArrayIndexPathRef extends PathRef {
private int index;
private ArrayIndexPathRef(Object parent, int index) {
super(parent);
this.index = index;
}
public void set(Object newVal, Configuration configuration){
configuration.jsonProvider().setArrayIndex(parent, index, newVal);
}
public void convert(MapFunction mapFunction, Configuration configuration){
Object currentValue = configuration.jsonProvider().getArrayIndex(parent, index);
configuration.jsonProvider().setArrayIndex(parent, index, mapFunction.map(currentValue, configuration));
}
public void delete(Configuration configuration){
configuration.jsonProvider().removeProperty(parent, index);
}
public void add(Object value, Configuration configuration){
Object target = configuration.jsonProvider().getArrayIndex(parent, index);
if(targetInvalid(target)){
return;
}
if(configuration.jsonProvider().isArray(target)){
configuration.jsonProvider().setProperty(target, null, value);
} else {
throw new InvalidModificationException("Can only add to an array");
}
}
public void put(String key, Object value, Configuration configuration){
Object target = configuration.jsonProvider().getArrayIndex(parent, index);
if(targetInvalid(target)){
return;
}
if(configuration.jsonProvider().isMap(target)){
configuration.jsonProvider().setProperty(target, key, value);
} else {
throw new InvalidModificationException("Can only add properties to a map");
}
}
@Override
public void renameKey(String oldKeyName, String newKeyName, Configuration configuration) {
Object target = configuration.jsonProvider().getArrayIndex(parent, index);
if(targetInvalid(target)){
return;
}
renameInMap(target, oldKeyName, newKeyName, configuration);
}
@Override
public Object getAccessor() {
return index;
}
@Override
public int compareTo(PathRef o) {
if(o instanceof ArrayIndexPathRef){
ArrayIndexPathRef pf = (ArrayIndexPathRef) o;
return Integer.compare(pf.index, this.index);
}
return super.compareTo(o);
}
}
private static class ObjectPropertyPathRef extends PathRef {
private String property;
private ObjectPropertyPathRef(Object parent, String property) {
super(parent);
this.property = property;
}
public void set(Object newVal, Configuration configuration){
configuration.jsonProvider().setProperty(parent, property, newVal);
}
@Override
public void convert(MapFunction mapFunction, Configuration configuration) {
Object currentValue = configuration.jsonProvider().getMapValue(parent, property);
configuration.jsonProvider().setProperty(parent, property, mapFunction.map(currentValue, configuration));
}
public void delete(Configuration configuration){
configuration.jsonProvider().removeProperty(parent, property);
}
public void add(Object value, Configuration configuration){
Object target = configuration.jsonProvider().getMapValue(parent, property);
if(targetInvalid(target)){
return;
}
if(configuration.jsonProvider().isArray(target)){
configuration.jsonProvider().setArrayIndex(target, configuration.jsonProvider().length(target), value);
} else {
throw new InvalidModificationException("Can only add to an array");
}
}
public void put(String key, Object value, Configuration configuration){
Object target = configuration.jsonProvider().getMapValue(parent, property);
if(targetInvalid(target)){
return;
}
if(configuration.jsonProvider().isMap(target)){
configuration.jsonProvider().setProperty(target, key, value);
} else {
throw new InvalidModificationException("Can only add properties to a map");
}
}
@Override
public void renameKey(String oldKeyName, String newKeyName, Configuration configuration) {
Object target = configuration.jsonProvider().getMapValue(parent, property);
if(targetInvalid(target)){
return;
}
renameInMap(target, oldKeyName, newKeyName, configuration);
}
@Override
public Object getAccessor() {
return property;
}
}
private static class ObjectMultiPropertyPathRef extends PathRef {
private Collection<String> properties;
private ObjectMultiPropertyPathRef(Object parent, Collection<String> properties) {
super(parent);
this.properties = properties;
}
public void set(Object newVal, Configuration configuration){
for (String property : properties) {
configuration.jsonProvider().setProperty(parent, property, newVal);
}
}
public void convert(MapFunction mapFunction, Configuration configuration) {
for (String property : properties) {
Object currentValue = configuration.jsonProvider().getMapValue(parent, property);
if (currentValue != JsonProvider.UNDEFINED) {
configuration.jsonProvider().setProperty(parent, property, mapFunction.map(currentValue, configuration));
}
}
}
public void delete(Configuration configuration){
for (String property : properties) {
configuration.jsonProvider().removeProperty(parent, property);
}
}
@Override
public void add(Object newVal, Configuration configuration) {
throw new InvalidModificationException("Add can not be performed to multiple properties");
}
@Override
public void put(String key, Object newVal, Configuration configuration) {
throw new InvalidModificationException("Put can not be performed to multiple properties");
}
@Override
public void renameKey(String oldKeyName, String newKeyName, Configuration configuration) {
throw new InvalidModificationException("Rename can not be performed to multiple properties");
}
@Override
public Object getAccessor() {
return Utils.join("&&", properties);
}
}
}
================================================
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java
================================================
/*
* Copyright 2011 the original author or authors.
* 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.
*/
package com.jayway.jsonpath.internal;
import com.jayway.jsonpath.JsonPathException;
import java.io.Closeable;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Iterator;
public final class Utils {
// accept a collection of objects, since all objects have toString()
public static String join(String delimiter, String wrap, Iterable<?> objs) {
Iterator<?> iter = objs.iterator();
if (!iter.hasNext()) {
return "";
}
StringBuilder buffer = new StringBuilder();
buffer.append(wrap).append(iter.next()).append(wrap);
while (iter.hasNext()) {
buffer.append(delimiter).append(wrap).append(iter.next()).append(wrap);
}
return buffer.toString();
}
// accept a collection of objects, since all objects have toString()
public static String join(String delimiter, Iterable<?> objs) {
return join(delimiter, "", objs);
}
public static String concat(CharSequence... strings) {
if (strings.length == 0) {
return "";
}
if (strings.length == 1) {
return strings[0].toString();
}
int length = 0;
// -1 = no result, -2 = multiple results
int indexOfSingleNonEmptyString = -1;
for (int i = 0; i < strings.length; i++) {
CharSequence charSequence = strings[i];
int len = charSequence.length();
length += len;
if (indexOfSingleNonEmptyString != -2 && len > 0) {
if (indexOfSingleNonEmptyString == -1) {
indexOfSingleNonEmptyString = i;
} else {
indexOfSingleNonEmptyString = -2;
}
}
}
if (length == 0) {
return "";
}
if (indexOfSingleNonEmptyString > 0) {
return strings[indexOfSingleNonEmptyString].toString();
}
StringBuilder sb = new StringBuilder(length);
for (CharSequence charSequence : strings) {
sb.append(charSequence);
}
return sb.toString();
}
//---------------------------------------------------------
//
// IO
//
//---------------------------------------------------------
public static void closeQuietly(Closeable closeable) {
try {
if (closeable != null) {
closeable.close();
}
} catch (IOException ignore) {
}
}
public static String escape(String str, boolean escapeSingleQuote) {
if (str == null) {
return null;
}
int len = str.length();
StringWriter writer = new StringWriter(len * 2);
for (int i = 0; i < len; i++) {
char ch = str.charAt(i);
// handle unicode
if (ch > 0xfff) {
writer.write("\\u" + hex(ch));
} else if (ch > 0xff) {
writer.write("\\u0" + hex(ch));
} else if (ch > 0x7f) {
writer.write("\\u00" + hex(ch));
} else if (ch < 32) {
switch (ch) {
case '\b':
writer.write('\\');
writer.write('b');
break;
case '\n':
writer.write('\\');
writer.write('n');
break;
case '\t':
writer.write('\\');
writer.write('t');
break;
case '\f':
writer.write('\\');
writer.write('f');
break;
case '\r':
writer.write('\\');
writer.write('r');
break;
default :
if (ch > 0xf) {
writer.write("\\u00" + hex(ch));
} else {
writer.write("\\u000" + hex(ch));
}
break;
}
} else {
switch (ch) {
case '\'':
if (escapeSingleQuote) {
writer.write('\\');
}
writer.write('\'');
break;
case '"':
writer.write('\\');
writer.write('"');
break;
case '\\':
writer.write('\\');
writer.write('\\');
break;
case '/':
writer.write('\\');
writer.write('/');
break;
default :
writer.write(ch);
break;
}
}
}
return writer.toString();
}
public static String unescape(String str) {
if (str == null) {
return null;
}
int len = str.length();
StringWriter writer = new StringWriter(len);
StringBuilder unicode = new StringBuilder(4);
boolean hadSlash = false;
boolean inUnicode = false;
for (int i = 0; i < len; i++) {
char ch = str.charAt(i);
if (inUnicode) {
unicode.append(ch);
if (unicode.length() == 4) {
try {
int value = Integer.parseInt(unicode.toString(), 16);
writer.write((char) value);
unicode.setLength(0);
inUnicode = false;
hadSlash = false;
} catch (NumberFormatException nfe) {
throw new JsonPathException("Unable to parse unicode value: " + unicode, nfe);
}
}
continue;
}
if (hadSlash) {
hadSlash = false;
switch (ch) {
case '\\':
writer.write('\\');
break;
case '\'':
writer.write('\'');
break;
case '\"':
writer.write('"');
break;
case 'r':
writer.write('\r');
break;
case 'f':
writer.write('\f');
break;
case 't':
writer.write('\t');
break;
case 'n':
writer.write('\n');
break;
case 'b':
writer.write('\b');
break;
case 'u':
{
inUnicode = true;
break;
}
default :
writer.write(ch);
break;
}
continue;
} else if (ch == '\\') {
hadSlash = true;
continue;
}
writer.write(ch);
}
if (hadSlash) {
writer.write('\\');
}
return writer.toString();
}
/**
* Returns an upper case hexadecimal <code>String</code> for the given
* character.
*
* @param ch The character to map.
* @return An upper case hexadecimal <code>String</code>
*/
public static String hex(char ch) {
return Integer.toHexString(ch).toUpperCase();
}
/**
* <p>Checks if a CharSequence is empty ("") or null.</p>
* <p/>
* <pre>
* StringUtils.isEmpty(null) = true
* StringUtils.isEmpty("") = true
* StringUtils.isEmpty(" ") = false
* StringUtils.isEmpty("bob") = false
* StringUtils.isEmpty(" bob ") = false
* </pre>
* <p/>
* <p>NOTE: This method changed in Lang version 2.0.
* It no longer trims the CharSequence.
* That functionality is available in isBlank().</p>
*
* @param cs the CharSequence to check, may be null
* @return {@code true} if the CharSequence is empty or null
* @since 3.0 Changed signature from isEmpty(String) to isEmpty(CharSequence)
*/
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
/**
* Used by the indexOf(CharSequence methods) as a green implementation of indexOf.
*
* @param cs the {@code CharSequence} to be processed
* @param searchChar the {@code CharSequence} to be searched for
* @param start the start index
* @return the index where the search sequence was found
*/
static int indexOf(CharSequence cs, CharSequence searchChar, int start) {
return cs.toString().indexOf(searchChar.toString(), start);
}
//---------------------------------------------------------
//
// Validators
//
//---------------------------------------------------------
/**
* <p>Validate that the specified argument is not {@code null};
* otherwise throwing an exception with the specified message.
* <p/>
* <pre>Validate.notNull(myObject, "The object must not be null");</pre>
*
* @param <T> the object type
* @param object the object to check
* @param message the {@link String#format(String, Object...)} exception message if invalid, not null
* @return the validated object (never {@code null} for method chaining)
* @throws NullPointerException if the object is {@code null}
*/
public static <T> T notNull(T object, String message) {
if (object == null) {
throw new IllegalArgumentException(message);
}
return object;
}
/**
* <p>Validate that the specified argument is not {@code null};
* otherwise throwing an exception with the specified message.
* <p/>
* <pre>Validate.notNull(myObject, "The object must not be null");</pre>
*
* @param <T> the object type
* @param object the object to check
* @param message the {@link String#format(String, Object...)} exception message if invalid, not null
* @param values the optional values for the formatted exception message
* @return the validated object (never {@code null} for method chaining)
* @throws NullPointerException if the object is {@code null}
*/
public static <T> T notNull(T object, String message, Object... values) {
if (object == null) {
throw new IllegalArgumentException(String.format(message, values));
}
return object;
}
/**
* <p>Validate that the argument condition is {@code true}; otherwise
* throwing an exception with the specified message. This method is useful when
* validating according to an arbitrary
gitextract_5g0slvqk/ ├── .github/ │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── Procfile ├── README.md ├── build.gradle ├── changelog.md ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── json-path/ │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── jayway/ │ │ └── jsonpath/ │ │ ├── Configuration.java │ │ ├── Criteria.java │ │ ├── DocumentContext.java │ │ ├── EvaluationListener.java │ │ ├── Filter.java │ │ ├── InvalidCriteriaException.java │ │ ├── InvalidJsonException.java │ │ ├── InvalidModificationException.java │ │ ├── InvalidPathException.java │ │ ├── JsonPath.java │ │ ├── JsonPathException.java │ │ ├── MapFunction.java │ │ ├── Option.java │ │ ├── ParseContext.java │ │ ├── PathNotFoundException.java │ │ ├── Predicate.java │ │ ├── ReadContext.java │ │ ├── TypeRef.java │ │ ├── ValueCompareException.java │ │ ├── WriteContext.java │ │ ├── internal/ │ │ │ ├── CharacterIndex.java │ │ │ ├── DefaultsImpl.java │ │ │ ├── EvaluationAbortException.java │ │ │ ├── EvaluationContext.java │ │ │ ├── JsonContext.java │ │ │ ├── JsonFormatter.java │ │ │ ├── ParseContextImpl.java │ │ │ ├── Path.java │ │ │ ├── PathRef.java │ │ │ ├── Utils.java │ │ │ ├── filter/ │ │ │ │ ├── Evaluator.java │ │ │ │ ├── EvaluatorFactory.java │ │ │ │ ├── ExpressionNode.java │ │ │ │ ├── FilterCompiler.java │ │ │ │ ├── LogicalExpressionNode.java │ │ │ │ ├── LogicalOperator.java │ │ │ │ ├── PatternFlag.java │ │ │ │ ├── RelationalExpressionNode.java │ │ │ │ ├── RelationalOperator.java │ │ │ │ ├── ValueNode.java │ │ │ │ └── ValueNodes.java │ │ │ ├── function/ │ │ │ │ ├── ParamType.java │ │ │ │ ├── Parameter.java │ │ │ │ ├── PassthruPathFunction.java │ │ │ │ ├── PathFunction.java │ │ │ │ ├── PathFunctionFactory.java │ │ │ │ ├── json/ │ │ │ │ │ ├── Append.java │ │ │ │ │ └── KeySetFunction.java │ │ │ │ ├── latebinding/ │ │ │ │ │ ├── ILateBindingValue.java │ │ │ │ │ ├── JsonLateBindingValue.java │ │ │ │ │ └── PathLateBindingValue.java │ │ │ │ ├── numeric/ │ │ │ │ │ ├── AbstractAggregation.java │ │ │ │ │ ├── Average.java │ │ │ │ │ ├── Max.java │ │ │ │ │ ├── Min.java │ │ │ │ │ ├── StandardDeviation.java │ │ │ │ │ └── Sum.java │ │ │ │ ├── sequence/ │ │ │ │ │ ├── AbstractSequenceAggregation.java │ │ │ │ │ ├── First.java │ │ │ │ │ ├── Index.java │ │ │ │ │ └── Last.java │ │ │ │ └── text/ │ │ │ │ ├── Concatenate.java │ │ │ │ └── Length.java │ │ │ └── path/ │ │ │ ├── ArrayIndexOperation.java │ │ │ ├── ArrayIndexToken.java │ │ │ ├── ArrayPathToken.java │ │ │ ├── ArraySliceOperation.java │ │ │ ├── ArraySliceToken.java │ │ │ ├── CompiledPath.java │ │ │ ├── EvaluationContextImpl.java │ │ │ ├── FunctionPathToken.java │ │ │ ├── PathCompiler.java │ │ │ ├── PathToken.java │ │ │ ├── PathTokenAppender.java │ │ │ ├── PathTokenFactory.java │ │ │ ├── PredicateContextImpl.java │ │ │ ├── PredicatePathToken.java │ │ │ ├── PropertyPathToken.java │ │ │ ├── RootPathToken.java │ │ │ ├── ScanPathToken.java │ │ │ └── WildcardPathToken.java │ │ └── spi/ │ │ ├── cache/ │ │ │ ├── Cache.java │ │ │ ├── CacheProvider.java │ │ │ ├── LRUCache.java │ │ │ └── NOOPCache.java │ │ ├── json/ │ │ │ ├── AbstractJsonProvider.java │ │ │ ├── GsonJsonProvider.java │ │ │ ├── Jackson3JsonNodeJsonProvider.java │ │ │ ├── Jackson3JsonProvider.java │ │ │ ├── JacksonJsonNodeJsonProvider.java │ │ │ ├── JacksonJsonProvider.java │ │ │ ├── JakartaJsonProvider.java │ │ │ ├── JettisonProvider.java │ │ │ ├── JsonOrgJsonProvider.java │ │ │ ├── JsonProvider.java │ │ │ ├── JsonSmartJsonProvider.java │ │ │ └── TapestryJsonProvider.java │ │ └── mapper/ │ │ ├── GsonMappingProvider.java │ │ ├── Jackson3MappingProvider.java │ │ ├── JacksonMappingProvider.java │ │ ├── JakartaMappingProvider.java │ │ ├── JsonOrgMappingProvider.java │ │ ├── JsonSmartMappingProvider.java │ │ ├── MappingException.java │ │ ├── MappingProvider.java │ │ └── TapestryMappingProvider.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── jayway/ │ │ └── jsonpath/ │ │ ├── BaseTest.java │ │ ├── Configurations.java │ │ ├── DeepScanTest.java │ │ ├── EscapeTest.java │ │ ├── EvaluationListenerTest.java │ │ ├── FilterCompilerTest.java │ │ ├── FilterParseTest.java │ │ ├── FilterTest.java │ │ ├── GsonJsonProviderTest.java │ │ ├── InlineFilterTest.java │ │ ├── Issue_487.java │ │ ├── Issue_537.java │ │ ├── Issue_721.java │ │ ├── Issue_762.java │ │ ├── Issue_786.java │ │ ├── Issue_970.java │ │ ├── Issue_973.java │ │ ├── Jackson3JsonNodeJsonProviderMapperSupportTest.java │ │ ├── Jackson3JsonNodeJsonProviderTest.java │ │ ├── Jackson3Test.java │ │ ├── JacksonJsonNodeJsonProviderMapperSupportTest.java │ │ ├── JacksonJsonNodeJsonProviderTest.java │ │ ├── JacksonTest.java │ │ ├── JakartaJsonProviderTest.java │ │ ├── JsonOrgJsonProviderTest.java │ │ ├── JsonProviderTest.java │ │ ├── JsonProviderTestObjectMapping.java │ │ ├── MapperTest.java │ │ ├── MultiPropTest.java │ │ ├── OptionsTest.java │ │ ├── PathCompilerTest.java │ │ ├── PredicateTest.java │ │ ├── ProviderInTest.java │ │ ├── ReadContextTest.java │ │ ├── ReturnTypeTest.java │ │ ├── ScientificNotationTest.java │ │ ├── TapestryJsonProviderTest.java │ │ ├── TestSuppressExceptions.java │ │ ├── TestUtils.java │ │ ├── WriteTest.java │ │ ├── internal/ │ │ │ ├── JsonContextTest.java │ │ │ ├── UtilsTest.java │ │ │ ├── filter/ │ │ │ │ ├── PatternFlagTest.java │ │ │ │ ├── RegexpEvaluatorTest.java │ │ │ │ └── RelationalOperatorTest.java │ │ │ ├── function/ │ │ │ │ ├── BaseFunctionTest.java │ │ │ │ ├── Issue191.java │ │ │ │ ├── Issue234.java │ │ │ │ ├── Issue273.java │ │ │ │ ├── Issue612.java │ │ │ │ ├── Issue629.java │ │ │ │ ├── Issue680.java │ │ │ │ ├── JSONEntityPathFunctionTest.java │ │ │ │ ├── KeySetFunctionTest.java │ │ │ │ ├── NestedFunctionTest.java │ │ │ │ ├── NumericPathFunctionTest.java │ │ │ │ └── SequentialPathFunctionTest.java │ │ │ └── path/ │ │ │ └── PathTokenTest.java │ │ ├── issue_613.java │ │ └── old/ │ │ ├── ArraySlicingTest.java │ │ ├── ComplianceTest.java │ │ ├── FilterTest.java │ │ ├── IssuesTest.java │ │ ├── JsonPathTest.java │ │ ├── JsonProviderTest.java │ │ ├── NullHandlingTest.java │ │ └── internal/ │ │ ├── ArrayIndexFilterTest.java │ │ ├── ArrayPathTokenTest.java │ │ ├── PredicatePathTokenTest.java │ │ ├── PropertyPathTokenTest.java │ │ ├── ScanPathTokenTest.java │ │ ├── TestBase.java │ │ └── TestInternal3.java │ └── resources/ │ ├── issue_191.json │ ├── issue_24.json │ ├── issue_76.json │ ├── issue_76_2.json │ ├── json-test-doc.json │ ├── json_array.json │ ├── json_array_multiple_delete.json │ ├── keyset.json │ └── simplelogger.properties ├── json-path-assert/ │ ├── README.md │ ├── build.gradle │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── jayway/ │ │ ├── jsonassert/ │ │ │ ├── JsonAssert.java │ │ │ ├── JsonAsserter.java │ │ │ └── impl/ │ │ │ ├── JsonAsserterImpl.java │ │ │ └── matcher/ │ │ │ ├── CollectionMatcher.java │ │ │ ├── IsCollectionWithSize.java │ │ │ ├── IsEmptyCollection.java │ │ │ ├── IsMapContainingKey.java │ │ │ ├── IsMapContainingValue.java │ │ │ └── MapTypeSafeMatcher.java │ │ └── jsonpath/ │ │ └── matchers/ │ │ ├── IsJson.java │ │ ├── JsonPathMatchers.java │ │ ├── WithJsonPath.java │ │ └── WithoutJsonPath.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── jayway/ │ │ ├── jsonassert/ │ │ │ └── JsonAssertTest.java │ │ └── jsonpath/ │ │ └── matchers/ │ │ ├── DemoTest.java │ │ ├── HasNoJsonPathTest.java │ │ ├── IsJsonFileTest.java │ │ ├── IsJsonStringTest.java │ │ ├── IsJsonTest.java │ │ ├── JsonPathMatchersTest.java │ │ ├── WithJsonPathTest.java │ │ ├── WithoutJsonPathTest.java │ │ └── helpers/ │ │ ├── ResourceHelpers.java │ │ ├── StrictParsingConfiguration.java │ │ └── TestingMatchers.java │ └── resources/ │ ├── books.json │ ├── example.json │ ├── invalid.json │ ├── links.json │ └── lotto.json ├── settings.gradle └── system.properties
SYMBOL INDEX (2357 symbols across 204 files)
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/JsonAssert.java
class JsonAssert (line 23) | public class JsonAssert {
method with (line 32) | public static JsonAsserter with(String json) {
method with (line 43) | public static JsonAsserter with(Reader reader) throws IOException {
method with (line 55) | public static JsonAsserter with(InputStream is) throws IOException {
method collectionWithSize (line 62) | public static CollectionMatcher collectionWithSize(Matcher<? super Int...
method mapContainingKey (line 66) | public static Matcher<Map<String, ?>> mapContainingKey(Matcher<String>...
method mapContainingValue (line 70) | public static <V> Matcher<? super Map<?, V>> mapContainingValue(Matche...
method emptyCollection (line 74) | public static Matcher<Collection<Object>> emptyCollection() {
method convertReaderToString (line 78) | private static String convertReaderToString(Reader reader)
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/JsonAsserter.java
type JsonAsserter (line 5) | public interface JsonAsserter {
method assertThat (line 22) | <T> JsonAsserter assertThat(String path, Matcher<T> matcher);
method assertThat (line 31) | <T> JsonAsserter assertThat(String path, Matcher<T> matcher, String me...
method assertEquals (line 42) | <T> JsonAsserter assertEquals(String path, T expected);
method assertEquals (line 44) | <T> JsonAsserter assertEquals(String path, T expected, String message);
method assertNotDefined (line 53) | JsonAsserter assertNotDefined(String path);
method assertNotDefined (line 55) | JsonAsserter assertNotDefined(String path, String message);
method assertNull (line 65) | JsonAsserter assertNull(String path);
method assertNull (line 66) | JsonAsserter assertNull(String path, String message);
method assertNotNull (line 75) | <T> JsonAsserter assertNotNull(String path);
method assertNotNull (line 77) | <T> JsonAsserter assertNotNull(String path, String message);
method and (line 89) | JsonAsserter and();
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/JsonAsserterImpl.java
class JsonAsserterImpl (line 13) | public class JsonAsserterImpl implements JsonAsserter {
method JsonAsserterImpl (line 22) | public JsonAsserterImpl(Object jsonObject) {
method assertThat (line 29) | @SuppressWarnings("unchecked")
method assertThat (line 51) | @SuppressWarnings("unchecked")
method assertEquals (line 63) | public <T> JsonAsserter assertEquals(String path, T expected) {
method assertNotDefined (line 70) | public JsonAsserter assertNotDefined(String path) {
method assertNotDefined (line 82) | @Override
method assertNull (line 98) | public JsonAsserter assertNull(String path) {
method assertNull (line 102) | @Override
method assertEquals (line 107) | @Override
method assertNotNull (line 115) | public <T> JsonAsserter assertNotNull(String path) {
method assertNotNull (line 119) | @Override
method and (line 127) | public JsonAsserter and() {
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/matcher/CollectionMatcher.java
class CollectionMatcher (line 36) | public abstract class CollectionMatcher<C extends Collection<?>> extends...
method matches (line 37) | @SuppressWarnings("unchecked")
method matchesSafely (line 45) | protected abstract boolean matchesSafely(C collection);
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/matcher/IsCollectionWithSize.java
class IsCollectionWithSize (line 42) | public class IsCollectionWithSize<E> extends CollectionMatcher<Collectio...
method IsCollectionWithSize (line 45) | public IsCollectionWithSize(Matcher<? super Integer> sizeMatcher) {
method matchesSafely (line 49) | @Override
method describeTo (line 54) | @Override
method hasSize (line 63) | public static <E> Matcher<? super Collection<? extends E>> hasSize(Mat...
method hasSize (line 73) | public static <E> Matcher<? super Collection<? extends E>> hasSize(int...
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/matcher/IsEmptyCollection.java
class IsEmptyCollection (line 40) | public class IsEmptyCollection<E> extends CollectionMatcher<Collection<E...
method matchesSafely (line 42) | @Override
method describeTo (line 47) | @Override
method empty (line 55) | public static <E> Matcher<Collection<E>> empty() {
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/matcher/IsMapContainingKey.java
class IsMapContainingKey (line 39) | public class IsMapContainingKey<K> extends MapTypeSafeMatcher<Map<K,?>> {
method IsMapContainingKey (line 42) | public IsMapContainingKey(Matcher<K> keyMatcher) {
method matchesSafely (line 46) | @Override
method describeTo (line 56) | @Override
method hasKey (line 62) | public static <K> Matcher<Map<K,?>> hasKey(K key) {
method hasKey (line 66) | public static <K> Matcher<Map<K,?>> hasKey(Matcher<K> keyMatcher) {
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/matcher/IsMapContainingValue.java
class IsMapContainingValue (line 39) | public class IsMapContainingValue<V> extends MapTypeSafeMatcher<Map<?,V>>{
method IsMapContainingValue (line 42) | public IsMapContainingValue(Matcher<? super V> valueMatcher) {
method matchesSafely (line 46) | @Override
method describeTo (line 56) | @Override
method hasValue (line 62) | public static <V> Matcher<? super Map<?,V>> hasValue(V value) {
method hasValue (line 66) | public static <V> Matcher<? super Map<?,V>> hasValue(Matcher<? super V...
FILE: json-path-assert/src/main/java/com/jayway/jsonassert/impl/matcher/MapTypeSafeMatcher.java
class MapTypeSafeMatcher (line 36) | public abstract class MapTypeSafeMatcher<M extends Map<?, ?>> extends Ba...
method matches (line 37) | @SuppressWarnings("unchecked")
method matchesSafely (line 42) | protected abstract boolean matchesSafely(M map);
FILE: json-path-assert/src/main/java/com/jayway/jsonpath/matchers/IsJson.java
class IsJson (line 13) | public class IsJson<T> extends TypeSafeMatcher<T> {
method IsJson (line 16) | public IsJson(Matcher<? super ReadContext> jsonMatcher) {
method matchesSafely (line 20) | @Override
method describeTo (line 32) | public void describeTo(Description description) {
method describeMismatchSafely (line 36) | @Override
method buildMismatchDescription (line 48) | private static void buildMismatchDescription(Object json, Description ...
method parse (line 56) | private static ReadContext parse(Object object) throws IOException {
FILE: json-path-assert/src/main/java/com/jayway/jsonpath/matchers/JsonPathMatchers.java
class JsonPathMatchers (line 14) | public class JsonPathMatchers {
method JsonPathMatchers (line 16) | private JsonPathMatchers() {
method hasJsonPath (line 20) | public static Matcher<? super Object> hasJsonPath(String jsonPath) {
method hasJsonPath (line 26) | public static <T> Matcher<? super Object> hasJsonPath(String jsonPath,...
method hasNoJsonPath (line 30) | public static Matcher<? super Object> hasNoJsonPath(String jsonPath) {
method isJson (line 34) | public static Matcher<Object> isJson() {
method isJson (line 38) | public static Matcher<Object> isJson(Matcher<? super ReadContext> matc...
method isJsonString (line 42) | public static Matcher<String> isJsonString(Matcher<? super ReadContext...
method isJsonFile (line 46) | public static Matcher<File> isJsonFile(Matcher<? super ReadContext> ma...
method withJsonPath (line 50) | public static Matcher<? super ReadContext> withJsonPath(String jsonPat...
method withJsonPath (line 54) | public static Matcher<? super ReadContext> withJsonPath(JsonPath jsonP...
method withoutJsonPath (line 60) | public static Matcher<? super ReadContext> withoutJsonPath(String json...
method withoutJsonPath (line 64) | public static Matcher<? super ReadContext> withoutJsonPath(JsonPath js...
method withJsonPath (line 68) | public static <T> Matcher<? super ReadContext> withJsonPath(String jso...
method withJsonPath (line 72) | public static <T> Matcher<? super ReadContext> withJsonPath(JsonPath j...
FILE: json-path-assert/src/main/java/com/jayway/jsonpath/matchers/WithJsonPath.java
class WithJsonPath (line 11) | public class WithJsonPath<T> extends TypeSafeMatcher<ReadContext> {
method WithJsonPath (line 15) | public WithJsonPath(JsonPath jsonPath, Matcher<T> resultMatcher) {
method matchesSafely (line 20) | @Override
method describeTo (line 30) | public void describeTo(Description description) {
method describeMismatchSafely (line 38) | @Override
FILE: json-path-assert/src/main/java/com/jayway/jsonpath/matchers/WithoutJsonPath.java
class WithoutJsonPath (line 9) | public class WithoutJsonPath extends TypeSafeDiagnosingMatcher<ReadConte...
method WithoutJsonPath (line 12) | public WithoutJsonPath(JsonPath jsonPath) {
method matchesSafely (line 16) | @Override
method describeTo (line 30) | @Override
FILE: json-path-assert/src/test/java/com/jayway/jsonassert/JsonAssertTest.java
class JsonAssertTest (line 11) | public class JsonAssertTest {
method invalid_path (line 50) | @Test
method has_path (line 56) | @Test
method assert_gears (line 62) | @Test
method failed_error_message (line 70) | @Test
method links_document (line 76) | @Test
method a_document_can_be_expected_not_to_contain_a_path (line 87) | @Test
method a_value_can_asserted_to_be_null (line 92) | @Test
method ends_with_evalueates (line 97) | @Test
method a_path_can_be_asserted_with_matcher (line 102) | @Test
method list_content_can_be_asserted_with_matcher (line 109) | @Test
method list_content_can_be_asserted_with_nested_matcher (line 118) | @Test
method map_content_can_be_asserted_with_matcher (line 123) | @Test
method an_empty_collection (line 145) | @Test
method a_path_can_be_asserted_equal_to (line 150) | @Test
method path_including_wildcard_path_followed_by_another_path_concatenates_results_to_list (line 160) | @Test
method testNotDefined (line 165) | @Test
method assert_that_invalid_path_is_thrown (line 172) | @Test
method testAssertEqualsInteger (line 179) | @Test
method testAssertEqualsIntegerInvalidExpected (line 184) | @Test
method testAssertEqualsIntegerInvalidField (line 189) | @Test
method getResourceAsStream (line 194) | private InputStream getResourceAsStream(String resourceName) {
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/DemoTest.java
class DemoTest (line 14) | @Disabled
method shouldFailOnJsonString (line 16) | @Test
method shouldFailOnJsonFile (line 22) | @Test
method shouldFailOnInvalidJsonString (line 28) | @Test
method shouldFailOnInvalidJsonFile (line 34) | @Test
method shouldFailOnTypedJsonString (line 40) | @Test
method shouldFailOnTypedJsonFile (line 46) | @Test
method shouldFailOnTypedInvalidJsonString (line 52) | @Test
method shouldFailOnTypedInvalidJsonFile (line 58) | @Test
method shouldFailOnNonExistingJsonPath (line 64) | @Test
method shouldFailOnExistingJsonPath (line 70) | @Test
method shouldFailOnExistingJsonPathAlternative (line 76) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/HasNoJsonPathTest.java
class HasNoJsonPathTest (line 9) | public class HasNoJsonPathTest {
method shouldMatchMissingJsonPath (line 15) | @Test
method shouldNotMatchExistingJsonPath (line 20) | @Test
method shouldNotMatchExplicitNull (line 25) | @Test
method shouldBeDescriptive (line 30) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/IsJsonFileTest.java
class IsJsonFileTest (line 20) | public class IsJsonFileTest {
method setupStrictJsonParsing (line 24) | @BeforeAll
method setupDefaultJsonParsing (line 29) | @AfterAll
method shouldMatchJsonFileEvaluatedToTrue (line 34) | @Test
method shouldNotMatchJsonFileEvaluatedToFalse (line 39) | @Test
method shouldNotMatchInvalidJsonFile (line 44) | @Test
method shouldBeDescriptive (line 50) | @Test
method shouldDescribeMismatchOfValidJson (line 59) | @Test
method shouldDescribeMismatchOfInvalidJson (line 67) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/IsJsonStringTest.java
class IsJsonStringTest (line 18) | public class IsJsonStringTest {
method setupStrictJsonParsing (line 21) | @BeforeAll
method setupDefaultJsonParsing (line 26) | @AfterAll
method shouldMatchJsonStringEvaluatedToTrue (line 31) | @Test
method shouldNotMatchJsonStringEvaluatedToFalse (line 36) | @Test
method shouldNotMatchInvalidJsonString (line 41) | @Test
method shouldBeDescriptive (line 47) | @Test
method shouldDescribeMismatchOfValidJson (line 56) | @Test
method shouldDescribeMismatchOfInvalidJson (line 64) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/IsJsonTest.java
class IsJsonTest (line 22) | public class IsJsonTest {
method setupStrictJsonParsing (line 29) | @BeforeAll
method setupDefaultJsonParsing (line 34) | @AfterAll
method shouldMatchOnEmptyJsonObject (line 39) | @Test
method shouldMatchOnJsonObject (line 44) | @Test
method shouldMatchOnEmptyJsonArray (line 49) | @Test
method shouldMatchOnJsonArray (line 54) | @Test
method shouldMatchValidJson (line 59) | @Test
method shouldNotMatchInvalidJson (line 65) | @Test
method shouldMatchJsonObjectEvaluatedToTrue (line 77) | @Test
method shouldNotMatchJsonObjectEvaluatedToFalse (line 82) | @Test
method shouldMatchJsonStringEvaluatedToTrue (line 87) | @Test
method shouldNotMatchJsonStringEvaluatedToFalse (line 92) | @Test
method shouldMatchJsonFileEvaluatedToTrue (line 97) | @Test
method shouldNotMatchJsonFileEvaluatedToFalse (line 102) | @Test
method shouldNotMatchNonExistingJsonFile (line 107) | @Test
method shouldBeDescriptive (line 113) | @Test
method shouldDescribeMismatchOfValidJson (line 122) | @Test
method shouldDescribeMismatchOfInvalidJson (line 130) | @Test
method parseJson (line 138) | private static Object parseJson(String json) {
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/JsonPathMatchersTest.java
class JsonPathMatchersTest (line 21) | public class JsonPathMatchersTest {
method setupStrictJsonParsing (line 26) | @BeforeAll
method setupDefaultJsonParsing (line 32) | @AfterAll
method shouldMatchJsonPathToStringValue (line 37) | @Test
method shouldMatchJsonPathToIntegerValue (line 50) | @Test
method shouldMatchJsonPathToDoubleValue (line 63) | @Test
method shouldMatchJsonPathToBooleanValue (line 76) | @Test
method shouldMatchJsonPathToJsonObject (line 89) | @Test
method shouldMatchJsonPathToEmptyJsonObject (line 102) | @Test
method shouldMatchJsonPathToJsonArray (line 115) | @Test
method shouldMatchJsonPathToEmptyJsonArray (line 130) | @Test
method willMatchIndefiniteJsonPathsEvaluatedToEmptyLists (line 145) | @Test
method shouldMatchJsonPathToNullValue (line 157) | @Test
method shouldNotMatchNonExistingJsonPath (line 170) | @Test
method shouldNotMatchInvalidJsonWithPath (line 184) | @Test
method shouldNotMatchInvalidJsonWithPathAndValue (line 191) | @Test
method shouldMatchJsonPathOnFile (line 198) | @Test
method shouldNotMatchJsonPathOnNonExistingFile (line 203) | @Test
method shouldMatchJsonPathOnParsedJsonObject (line 209) | @Test
method shouldMatchJsonPathOnReadContext (line 215) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/WithJsonPathTest.java
class WithJsonPathTest (line 21) | public class WithJsonPathTest {
method shouldMatchExistingCompiledJsonPath (line 24) | @Test
method shouldMatchExistingStringJsonPath (line 32) | @Test
method shouldNotMatchNonExistingJsonPath (line 40) | @Test
method shouldNotMatchNonExistingStringJsonPath (line 47) | @Test
method shouldMatchJsonPathEvaluatedToStringValue (line 54) | @Test
method shouldMatchJsonPathEvaluatedToIntegerValue (line 62) | @Test
method shouldMatchJsonPathEvaluatedToDoubleValue (line 68) | @Test
method shouldMatchJsonPathEvaluatedToCollectionValue (line 74) | @Test
method shouldFailOnInvalidJsonPath (line 86) | @Test
method shouldNotMatchOnInvalidJson (line 91) | @Test
method shouldBeDescriptive (line 97) | @Test
method shouldDescribeMismatchOfEvaluation (line 106) | @Test
method shouldDescribeMismatchOfPathNotFound (line 115) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/WithoutJsonPathTest.java
class WithoutJsonPathTest (line 12) | public class WithoutJsonPathTest {
method shouldMatchNonExistingJsonPath (line 22) | @Test
method shouldNotMatchExistingJsonPath (line 28) | @Test
method shouldBeDescriptive (line 38) | @Test
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/helpers/ResourceHelpers.java
class ResourceHelpers (line 13) | public class ResourceHelpers {
method resource (line 14) | public static String resource(String resource) {
method resourceAsFile (line 22) | public static File resourceAsFile(String resource) {
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/helpers/StrictParsingConfiguration.java
class StrictParsingConfiguration (line 14) | public class StrictParsingConfiguration implements Configuration.Defaults {
method jsonProvider (line 19) | public JsonProvider jsonProvider() {
method mappingProvider (line 23) | public MappingProvider mappingProvider() {
method options (line 27) | public Set<Option> options() {
FILE: json-path-assert/src/test/java/com/jayway/jsonpath/matchers/helpers/TestingMatchers.java
class TestingMatchers (line 11) | public class TestingMatchers {
method withPathEvaluatedTo (line 16) | public static Matcher<ReadContext> withPathEvaluatedTo(final boolean r...
FILE: json-path/src/main/java/com/jayway/jsonpath/Configuration.java
class Configuration (line 29) | public class Configuration {
method setDefaults (line 37) | public static synchronized void setDefaults(Defaults defaults){
method getEffectiveDefaults (line 41) | private static Defaults getEffectiveDefaults(){
method Configuration (line 54) | private Configuration(JsonProvider jsonProvider, MappingProvider mappi...
method addEvaluationListeners (line 70) | public Configuration addEvaluationListeners(EvaluationListener... eval...
method setEvaluationListeners (line 79) | public Configuration setEvaluationListeners(EvaluationListener... eval...
method getEvaluationListeners (line 87) | public Collection<EvaluationListener> getEvaluationListeners(){
method jsonProvider (line 96) | public Configuration jsonProvider(JsonProvider newJsonProvider) {
method jsonProvider (line 104) | public JsonProvider jsonProvider() {
method mappingProvider (line 113) | public Configuration mappingProvider(MappingProvider newMappingProvide...
method mappingProvider (line 121) | public MappingProvider mappingProvider() {
method addOptions (line 130) | public Configuration addOptions(Option... options) {
method setOptions (line 142) | public Configuration setOptions(Option... options) {
method getOptions (line 150) | public Set<Option> getOptions() {
method containsOption (line 159) | public boolean containsOption(Option option){
method defaultConfiguration (line 167) | public static Configuration defaultConfiguration() {
method builder (line 176) | public static ConfigurationBuilder builder() {
class ConfigurationBuilder (line 183) | public static class ConfigurationBuilder {
method jsonProvider (line 190) | public ConfigurationBuilder jsonProvider(JsonProvider provider) {
method mappingProvider (line 195) | public ConfigurationBuilder mappingProvider(MappingProvider provider) {
method options (line 200) | public ConfigurationBuilder options(Option... flags) {
method options (line 207) | public ConfigurationBuilder options(Set<Option> options) {
method evaluationListener (line 212) | public ConfigurationBuilder evaluationListener(EvaluationListener......
method evaluationListener (line 217) | public ConfigurationBuilder evaluationListener(Collection<Evaluation...
method build (line 222) | public Configuration build() {
type Defaults (line 236) | public interface Defaults {
method jsonProvider (line 241) | JsonProvider jsonProvider();
method options (line 247) | Set<Option> options();
method mappingProvider (line 254) | MappingProvider mappingProvider();
method equals (line 258) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/Criteria.java
class Criteria (line 38) | @SuppressWarnings("unchecked")
method Criteria (line 46) | private Criteria(List<Criteria> criteriaChain, ValueNode left) {
method Criteria (line 52) | private Criteria(ValueNode left) {
method apply (line 56) | @Override
method toString (line 66) | @Override
method toRelationalExpressionNodes (line 71) | private Collection<RelationalExpressionNode> toRelationalExpressionNod...
method where (line 85) | @Deprecated
method where (line 99) | public static Criteria where(String key) {
method and (line 109) | public Criteria and(String key) {
method is (line 120) | public Criteria is(Object o) {
method eq (line 132) | public Criteria eq(Object o) {
method ne (line 142) | public Criteria ne(Object o) {
method lt (line 154) | public Criteria lt(Object o) {
method lte (line 166) | public Criteria lte(Object o) {
method gt (line 178) | public Criteria gt(Object o) {
method gte (line 190) | public Criteria gte(Object o) {
method regex (line 202) | public Criteria regex(Pattern pattern) {
method in (line 216) | public Criteria in(Object... o) {
method in (line 227) | public Criteria in(Collection<?> c) {
method contains (line 241) | public Criteria contains(Object o) {
method nin (line 254) | public Criteria nin(Object... o) {
method nin (line 265) | public Criteria nin(Collection<?> c) {
method subsetof (line 280) | public Criteria subsetof(Object... o) {
method subsetof (line 292) | public Criteria subsetof(Collection<?> c) {
method anyof (line 306) | public Criteria anyof(Object... o) {
method anyof (line 317) | public Criteria anyof(Collection<?> c) {
method noneof (line 331) | public Criteria noneof(Object... o) {
method noneof (line 342) | public Criteria noneof(Collection<?> c) {
method all (line 356) | public Criteria all(Object... o) {
method all (line 367) | public Criteria all(Collection<?> c) {
method size (line 385) | public Criteria size(int size) {
method type (line 407) | public Criteria type(Class<?> clazz) {
method exists (line 419) | public Criteria exists(boolean shouldExist) {
method notEmpty (line 431) | @Deprecated
method empty (line 442) | public Criteria empty(boolean empty) {
method matches (line 454) | public Criteria matches(Predicate p) {
method parse (line 468) | @Deprecated
method create (line 490) | @Deprecated
method prefixPath (line 499) | private static String prefixPath(String key){
method checkComplete (line 506) | private void checkComplete(){
FILE: json-path/src/main/java/com/jayway/jsonpath/DocumentContext.java
type DocumentContext (line 17) | public interface DocumentContext extends ReadContext, WriteContext {
FILE: json-path/src/main/java/com/jayway/jsonpath/EvaluationListener.java
type EvaluationListener (line 21) | public interface EvaluationListener {
method resultFound (line 28) | EvaluationContinuation resultFound(FoundResult found);
type EvaluationContinuation (line 30) | enum EvaluationContinuation {
type FoundResult (line 44) | interface FoundResult {
method index (line 49) | int index();
method path (line 55) | String path();
method result (line 61) | Object result();
FILE: json-path/src/main/java/com/jayway/jsonpath/Filter.java
class Filter (line 28) | public abstract class Filter implements Predicate {
method filter (line 35) | public static Filter filter(Predicate predicate) {
method filter (line 44) | public static Filter filter(Collection<Predicate> predicates) {
method apply (line 48) | @Override
method or (line 52) | public Filter or(final Predicate other){
method and (line 56) | public Filter and(final Predicate other){
method parse (line 65) | public static Filter parse(String filter){
class SingleFilter (line 69) | private static final class SingleFilter extends Filter {
method SingleFilter (line 73) | private SingleFilter(Predicate predicate) {
method apply (line 77) | @Override
method toString (line 82) | @Override
class AndFilter (line 93) | private static final class AndFilter extends Filter {
method AndFilter (line 97) | private AndFilter(Collection<Predicate> predicates) {
method AndFilter (line 101) | private AndFilter(Predicate left, Predicate right) {
method and (line 105) | public Filter and(final Predicate other){
method apply (line 111) | @Override
method toString (line 121) | @Override
class OrFilter (line 143) | private static final class OrFilter extends Filter {
method OrFilter (line 148) | private OrFilter(Predicate left, Predicate right) {
method and (line 153) | public Filter and(final Predicate other){
method apply (line 157) | @Override
method toString (line 163) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidCriteriaException.java
class InvalidCriteriaException (line 17) | @SuppressWarnings("serial")
method InvalidCriteriaException (line 19) | public InvalidCriteriaException() {
method InvalidCriteriaException (line 22) | public InvalidCriteriaException(String message) {
method InvalidCriteriaException (line 26) | public InvalidCriteriaException(String message, Throwable cause) {
method InvalidCriteriaException (line 30) | public InvalidCriteriaException(Throwable cause) {
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidJsonException.java
class InvalidJsonException (line 17) | @SuppressWarnings("serial")
method InvalidJsonException (line 25) | public InvalidJsonException() {
method InvalidJsonException (line 29) | public InvalidJsonException(String message) {
method InvalidJsonException (line 34) | public InvalidJsonException(String message, Throwable cause) {
method InvalidJsonException (line 39) | public InvalidJsonException(Throwable cause) {
method InvalidJsonException (line 47) | public InvalidJsonException(final Throwable cause, final String json) {
method getJson (line 55) | public String getJson() {
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidModificationException.java
class InvalidModificationException (line 17) | public class InvalidModificationException extends JsonPathException {
method InvalidModificationException (line 18) | public InvalidModificationException(String message) {
FILE: json-path/src/main/java/com/jayway/jsonpath/InvalidPathException.java
class InvalidPathException (line 17) | @SuppressWarnings("serial")
method InvalidPathException (line 20) | public InvalidPathException() {
method InvalidPathException (line 23) | public InvalidPathException(String message) {
method InvalidPathException (line 27) | public InvalidPathException(String message, Throwable cause) {
method InvalidPathException (line 31) | public InvalidPathException(Throwable cause) {
FILE: json-path/src/main/java/com/jayway/jsonpath/JsonPath.java
class JsonPath (line 91) | public class JsonPath {
method JsonPath (line 95) | private JsonPath(String jsonPath, Predicate[] filters) {
method getPath (line 105) | public String getPath() {
method isPathDefinite (line 112) | public static boolean isPathDefinite(String path) {
method isDefinite (line 138) | public boolean isDefinite() {
method read (line 151) | @SuppressWarnings({"unchecked"})
method read (line 166) | @SuppressWarnings("unchecked")
method set (line 218) | public <T> T set(Object jsonObject, Object newVal, Configuration confi...
method map (line 245) | public <T> T map(Object jsonObject, MapFunction mapFunction, Configura...
method delete (line 273) | public <T> T delete(Object jsonObject, Configuration configuration) {
method add (line 300) | public <T> T add(Object jsonObject, Object value, Configuration config...
method put (line 328) | public <T> T put(Object jsonObject, String key, Object value, Configur...
method renameKey (line 347) | public <T> T renameKey(Object jsonObject, String oldKeyName, String ne...
method read (line 375) | @SuppressWarnings({"unchecked"})
method read (line 388) | @SuppressWarnings({"unchecked"})
method read (line 404) | @SuppressWarnings({"unchecked"})
method read (line 417) | @SuppressWarnings({"unchecked"})
method read (line 432) | @SuppressWarnings({"unchecked"})
method read (line 455) | @SuppressWarnings({"unchecked"})
method read (line 469) | @SuppressWarnings({"unchecked"})
method read (line 486) | @SuppressWarnings({"unchecked"})
method compile (line 512) | public static JsonPath compile(String jsonPath, Predicate... filters) {
method read (line 534) | @SuppressWarnings({"unchecked"})
method read (line 548) | @SuppressWarnings({"unchecked"})
method read (line 563) | @SuppressWarnings({"unchecked"})
method read (line 578) | @SuppressWarnings({"unchecked"})
method read (line 592) | @SuppressWarnings({"unchecked"})
method using (line 613) | public static ParseContext using(Configuration configuration) {
method using (line 623) | @Deprecated
method parse (line 635) | public static DocumentContext parse(Object json) {
method parse (line 646) | public static DocumentContext parse(String json) {
method parse (line 657) | public static DocumentContext parse(InputStream json) {
method parse (line 668) | public static DocumentContext parse(File json) throws IOException {
method parse (line 679) | @Deprecated
method parse (line 691) | public static DocumentContext parse(Object json, Configuration configu...
method parse (line 702) | public static DocumentContext parse(String json, Configuration configu...
method parse (line 713) | public static DocumentContext parse(InputStream json, Configuration co...
method parse (line 724) | public static DocumentContext parse(File json, Configuration configura...
method parse (line 735) | @Deprecated
method resultByConfiguration (line 740) | private <T> T resultByConfiguration(Object jsonObject, Configuration c...
method handleMissingPathInContext (line 748) | private <T> T handleMissingPathInContext(final Configuration configura...
FILE: json-path/src/main/java/com/jayway/jsonpath/JsonPathException.java
class JsonPathException (line 17) | public class JsonPathException extends RuntimeException {
method JsonPathException (line 19) | public JsonPathException() {
method JsonPathException (line 22) | public JsonPathException(String message) {
method JsonPathException (line 26) | public JsonPathException(String message, Throwable cause) {
method JsonPathException (line 30) | public JsonPathException(Throwable cause) {
FILE: json-path/src/main/java/com/jayway/jsonpath/MapFunction.java
type MapFunction (line 21) | public interface MapFunction {
method map (line 22) | Object map(Object currentValue, Configuration configuration);
FILE: json-path/src/main/java/com/jayway/jsonpath/Option.java
type Option (line 17) | public enum Option {
FILE: json-path/src/main/java/com/jayway/jsonpath/ParseContext.java
type ParseContext (line 26) | public interface ParseContext {
method parse (line 28) | DocumentContext parse(String json);
method parse (line 30) | DocumentContext parse(Object json);
method parse (line 32) | DocumentContext parse(InputStream json);
method parse (line 34) | DocumentContext parse(InputStream json, String charset);
method parse (line 36) | DocumentContext parse(File json) throws IOException;
method parseUtf8 (line 38) | DocumentContext parseUtf8(byte[] json);
method parse (line 40) | @Deprecated
FILE: json-path/src/main/java/com/jayway/jsonpath/PathNotFoundException.java
class PathNotFoundException (line 17) | public class PathNotFoundException extends InvalidPathException {
method PathNotFoundException (line 19) | public PathNotFoundException() {
method PathNotFoundException (line 22) | public PathNotFoundException(String message) {
method PathNotFoundException (line 26) | public PathNotFoundException(String message, Throwable cause) {
method PathNotFoundException (line 30) | public PathNotFoundException(Throwable cause) {
method fillInStackTrace (line 34) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/Predicate.java
type Predicate (line 22) | public interface Predicate {
method apply (line 24) | boolean apply(PredicateContext ctx);
type PredicateContext (line 26) | public interface PredicateContext {
method item (line 32) | Object item();
method item (line 39) | <T> T item(Class<T> clazz) throws MappingException;
method root (line 45) | Object root();
method configuration (line 51) | Configuration configuration();
FILE: json-path/src/main/java/com/jayway/jsonpath/ReadContext.java
type ReadContext (line 17) | public interface ReadContext {
method configuration (line 24) | Configuration configuration();
method json (line 31) | <T> T json();
method jsonString (line 38) | String jsonString();
method read (line 48) | <T> T read(String path, Predicate... filters);
method read (line 59) | <T> T read(String path, Class<T> type, Predicate... filters);
method read (line 68) | <T> T read(JsonPath path);
method read (line 78) | <T> T read(JsonPath path, Class<T> type);
method read (line 93) | <T> T read(JsonPath path, TypeRef<T> typeRef);
method read (line 108) | <T> T read(String path, TypeRef<T> typeRef);
method limit (line 115) | ReadContext limit(int maxResults);
method withListeners (line 122) | ReadContext withListeners(EvaluationListener... listener);
FILE: json-path/src/main/java/com/jayway/jsonpath/TypeRef.java
class TypeRef (line 30) | public abstract class TypeRef<T> implements Comparable<TypeRef<T>> {
method TypeRef (line 33) | protected TypeRef()
method getType (line 42) | public Type getType() { return type; }
method compareTo (line 49) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/ValueCompareException.java
class ValueCompareException (line 17) | public class ValueCompareException extends JsonPathException {
method ValueCompareException (line 19) | public ValueCompareException() {
method ValueCompareException (line 28) | public ValueCompareException(final Object left, final Object right) {
method ValueCompareException (line 32) | public ValueCompareException(String message) {
method ValueCompareException (line 36) | public ValueCompareException(String message, Throwable cause) {
FILE: json-path/src/main/java/com/jayway/jsonpath/WriteContext.java
type WriteContext (line 17) | public interface WriteContext {
method configuration (line 24) | Configuration configuration();
method json (line 31) | <T> T json();
method jsonString (line 38) | String jsonString();
method set (line 48) | DocumentContext set(String path, Object newValue, Predicate... filters);
method set (line 57) | DocumentContext set(JsonPath path, Object newValue);
method map (line 67) | DocumentContext map(String path, MapFunction mapFunction, Predicate......
method map (line 76) | DocumentContext map(JsonPath path, MapFunction mapFunction);
method delete (line 85) | DocumentContext delete(String path, Predicate... filters);
method delete (line 93) | DocumentContext delete(JsonPath path);
method add (line 116) | DocumentContext add(String path, Object value, Predicate... filters);
method add (line 125) | DocumentContext add(JsonPath path, Object value);
method put (line 136) | DocumentContext put(String path, String key, Object value, Predicate.....
method put (line 146) | DocumentContext put(JsonPath path, String key, Object value);
method renameKey (line 157) | DocumentContext renameKey(String path, String oldKeyName, String newKe...
method renameKey (line 167) | DocumentContext renameKey(JsonPath path, String oldKeyName, String new...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/CharacterIndex.java
class CharacterIndex (line 5) | public class CharacterIndex {
method CharacterIndex (line 26) | public CharacterIndex(CharSequence charSequence) {
method length (line 32) | public int length() {
method charAt (line 36) | public char charAt(int idx) {
method currentChar (line 40) | public char currentChar() {
method currentCharIs (line 44) | public boolean currentCharIs(char c) {
method lastCharIs (line 48) | public boolean lastCharIs(char c) {
method nextCharIs (line 52) | public boolean nextCharIs(char c) {
method incrementPosition (line 56) | public int incrementPosition(int charCount) {
method decrementEndPosition (line 60) | public int decrementEndPosition(int charCount) {
method setPosition (line 64) | public int setPosition(int newPosition) {
method setEndPosition (line 70) | private int setEndPosition(int newPosition) {
method position (line 75) | public int position(){
method indexOfClosingSquareBracket (line 79) | public int indexOfClosingSquareBracket(int startPosition) {
method indexOfMatchingCloseChar (line 90) | public int indexOfMatchingCloseChar(int startPosition, char openChar, ...
method indexOfClosingBracket (line 131) | public int indexOfClosingBracket(int startPosition, boolean skipString...
method indexOfNextSignificantChar (line 135) | public int indexOfNextSignificantChar(char c) {
method indexOfNextSignificantChar (line 139) | public int indexOfNextSignificantChar(int startPosition, char c) {
method nextIndexOf (line 151) | public int nextIndexOf(char c) {
method nextIndexOf (line 155) | public int nextIndexOf(int startPosition, char c) {
method nextIndexOfUnescaped (line 166) | public int nextIndexOfUnescaped(char c) {
method nextIndexOfUnescaped (line 170) | public int nextIndexOfUnescaped(int startPosition, char c) {
method charAtOr (line 187) | public char charAtOr(int postition, char defaultChar){
method nextSignificantCharIs (line 192) | public boolean nextSignificantCharIs(int startPosition, char c) {
method nextSignificantCharIs (line 200) | public boolean nextSignificantCharIs(char c) {
method nextSignificantChar (line 204) | public char nextSignificantChar() {
method nextSignificantChar (line 208) | public char nextSignificantChar(int startPosition) {
method readSignificantChar (line 220) | public void readSignificantChar(char c) {
method hasSignificantSubSequence (line 227) | public boolean hasSignificantSubSequence(CharSequence s) {
method indexOfPreviousSignificantChar (line 240) | public int indexOfPreviousSignificantChar(int startPosition){
method indexOfPreviousSignificantChar (line 252) | public int indexOfPreviousSignificantChar(){
method previousSignificantChar (line 256) | public char previousSignificantChar(int startPosition) {
method previousSignificantChar (line 262) | public char previousSignificantChar() {
method currentIsTail (line 266) | public boolean currentIsTail() {
method hasMoreCharacters (line 270) | public boolean hasMoreCharacters() {
method inBounds (line 274) | public boolean inBounds(int idx) {
method inBounds (line 277) | public boolean inBounds() {
method isOutOfBounds (line 281) | public boolean isOutOfBounds(int idx) {
method subSequence (line 285) | public CharSequence subSequence(int start, int end) {
method charSequence (line 289) | public CharSequence charSequence() {
method toString (line 293) | @Override
method isNumberCharacter (line 298) | public boolean isNumberCharacter(int readPosition) {
method skipBlanks (line 304) | public CharacterIndex skipBlanks() {
method skipBlanksAtEnd (line 311) | private CharacterIndex skipBlanksAtEnd() {
method trim (line 318) | public CharacterIndex trim() {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/DefaultsImpl.java
class DefaultsImpl (line 13) | public final class DefaultsImpl implements Defaults {
method jsonProvider (line 19) | @Override
method options (line 24) | @Override
method mappingProvider (line 29) | @Override
method DefaultsImpl (line 34) | private DefaultsImpl() {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/EvaluationAbortException.java
class EvaluationAbortException (line 3) | public class EvaluationAbortException extends RuntimeException {
method fillInStackTrace (line 9) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/EvaluationContext.java
type EvaluationContext (line 22) | public interface EvaluationContext {
method configuration (line 28) | Configuration configuration();
method rootDocument (line 35) | Object rootDocument();
method getValue (line 44) | <T> T getValue();
method getValue (line 53) | <T> T getValue(boolean unwrap);
method getPath (line 61) | <T> T getPath();
method getPathList (line 69) | List<String> getPathList();
method updateOperations (line 71) | Collection<PathRef> updateOperations();
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java
class JsonContext (line 39) | public class JsonContext implements DocumentContext {
method JsonContext (line 46) | JsonContext(Object json, Configuration configuration) {
method configuration (line 54) | @Override
method json (line 64) | @Override
method jsonString (line 69) | @Override
method read (line 74) | @Override
method read (line 80) | @Override
method read (line 85) | @Override
method read (line 91) | @Override
method read (line 96) | @Override
method read (line 101) | @Override
method limit (line 106) | @Override
method withListeners (line 111) | @Override
method convert (line 116) | private <T> T convert(Object obj, Class<T> targetType, Configuration c...
method convert (line 120) | private <T> T convert(Object obj, TypeRef<T> targetType, Configuration...
method set (line 124) | @Override
method set (line 129) | @Override
method map (line 140) | @Override
method map (line 146) | @Override
method delete (line 152) | @Override
method delete (line 157) | @Override
method add (line 168) | @Override
method add (line 173) | @Override
method put (line 184) | @Override
method renameKey (line 189) | @Override
method renameKey (line 194) | @Override
method put (line 205) | @Override
method pathFromCache (line 216) | private JsonPath pathFromCache(String path, Predicate[] filters) {
class LimitingEvaluationListener (line 228) | private final static class LimitingEvaluationListener implements Evalu...
method LimitingEvaluationListener (line 231) | private LimitingEvaluationListener(int limit) {
method resultFound (line 235) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/JsonFormatter.java
class JsonFormatter (line 17) | public class JsonFormatter {
method appendIndent (line 29) | private static void appendIndent(StringBuilder sb, int count) {
method prettyPrint (line 33) | public static String prettyPrint(String input) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/ParseContextImpl.java
class ParseContextImpl (line 16) | public class ParseContextImpl implements ParseContext {
method ParseContextImpl (line 20) | public ParseContextImpl() {
method ParseContextImpl (line 24) | public ParseContextImpl(Configuration configuration) {
method parse (line 28) | @Override
method parse (line 34) | @Override
method parseUtf8 (line 41) | @Override
method parse (line 48) | @Override
method parse (line 53) | @Override
method parse (line 65) | @Override
method parse (line 77) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/Path.java
type Path (line 22) | public interface Path {
method evaluate (line 33) | EvaluationContext evaluate(Object document, Object rootDocument, Confi...
method evaluate (line 44) | EvaluationContext evaluate(Object document, Object rootDocument, Confi...
method isDefinite (line 50) | boolean isDefinite();
method isFunctionPath (line 56) | boolean isFunctionPath();
method isRootPath (line 62) | boolean isRootPath();
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/PathRef.java
class PathRef (line 11) | public abstract class PathRef implements Comparable<PathRef> {
method getAccessor (line 14) | @Override
method set (line 19) | @Override
method convert (line 22) | @Override
method delete (line 25) | @Override
method add (line 28) | @Override
method put (line 31) | @Override
method renameKey (line 34) | @Override
method PathRef (line 42) | private PathRef(Object parent) {
method getAccessor (line 46) | abstract Object getAccessor();
method set (line 48) | public abstract void set(Object newVal, Configuration configuration);
method convert (line 50) | public abstract void convert(MapFunction mapFunction, Configuration co...
method delete (line 52) | public abstract void delete(Configuration configuration);
method add (line 54) | public abstract void add(Object newVal, Configuration configuration);
method put (line 56) | public abstract void put(String key, Object newVal, Configuration conf...
method renameKey (line 58) | public abstract void renameKey(String oldKey,String newKeyName, Config...
method renameInMap (line 60) | protected void renameInMap(Object targetMap, String oldKeyName, String...
method targetInvalid (line 72) | protected boolean targetInvalid(Object target){
method compareTo (line 76) | @Override
method create (line 81) | public static PathRef create(Object obj, String property){
method create (line 85) | public static PathRef create(Object obj, Collection<String> properties){
method create (line 89) | public static PathRef create(Object array, int index){
method createRoot (line 93) | public static PathRef createRoot(Object root){
class RootPathRef (line 97) | private static class RootPathRef extends PathRef {
method RootPathRef (line 99) | private RootPathRef(Object parent) {
method getAccessor (line 103) | @Override
method set (line 108) | @Override
method convert (line 113) | public void convert(MapFunction mapFunction, Configuration configura...
method delete (line 117) | @Override
method add (line 122) | @Override
method put (line 131) | @Override
method renameKey (line 140) | @Override
class ArrayIndexPathRef (line 151) | private static class ArrayIndexPathRef extends PathRef {
method ArrayIndexPathRef (line 155) | private ArrayIndexPathRef(Object parent, int index) {
method set (line 160) | public void set(Object newVal, Configuration configuration){
method convert (line 164) | public void convert(MapFunction mapFunction, Configuration configura...
method delete (line 169) | public void delete(Configuration configuration){
method add (line 173) | public void add(Object value, Configuration configuration){
method put (line 185) | public void put(String key, Object value, Configuration configuration){
method renameKey (line 197) | @Override
method getAccessor (line 206) | @Override
method compareTo (line 211) | @Override
class ObjectPropertyPathRef (line 221) | private static class ObjectPropertyPathRef extends PathRef {
method ObjectPropertyPathRef (line 225) | private ObjectPropertyPathRef(Object parent, String property) {
method set (line 230) | public void set(Object newVal, Configuration configuration){
method convert (line 234) | @Override
method delete (line 241) | public void delete(Configuration configuration){
method add (line 245) | public void add(Object value, Configuration configuration){
method put (line 257) | public void put(String key, Object value, Configuration configuration){
method renameKey (line 269) | @Override
method getAccessor (line 278) | @Override
class ObjectMultiPropertyPathRef (line 284) | private static class ObjectMultiPropertyPathRef extends PathRef {
method ObjectMultiPropertyPathRef (line 288) | private ObjectMultiPropertyPathRef(Object parent, Collection<String>...
method set (line 293) | public void set(Object newVal, Configuration configuration){
method convert (line 298) | public void convert(MapFunction mapFunction, Configuration configura...
method delete (line 307) | public void delete(Configuration configuration){
method add (line 313) | @Override
method put (line 318) | @Override
method renameKey (line 323) | @Override
method getAccessor (line 328) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java
class Utils (line 24) | public final class Utils {
method join (line 27) | public static String join(String delimiter, String wrap, Iterable<?> o...
method join (line 41) | public static String join(String delimiter, Iterable<?> objs) {
method concat (line 45) | public static String concat(CharSequence... strings) {
method closeQuietly (line 87) | public static void closeQuietly(Closeable closeable) {
method escape (line 96) | public static String escape(String str, boolean escapeSingleQuote) {
method unescape (line 172) | public static String unescape(String str) {
method hex (line 254) | public static String hex(char ch) {
method isEmpty (line 277) | public static boolean isEmpty(CharSequence cs) {
method indexOf (line 289) | static int indexOf(CharSequence cs, CharSequence searchChar, int start) {
method notNull (line 313) | public static <T> T notNull(T object, String message) {
method notNull (line 333) | public static <T> T notNull(T object, String message, Object... values) {
method isTrue (line 355) | public static void isTrue(boolean expression, String message) {
method onlyOneIsTrue (line 369) | public static void onlyOneIsTrue(final String message, final boolean.....
method onlyOneIsTrueNonThrow (line 375) | public static boolean onlyOneIsTrueNonThrow(final boolean... expressio...
method notEmpty (line 399) | public static <T extends CharSequence> T notEmpty(T chars, String mess...
method notEmpty (line 419) | public static byte[] notEmpty(byte[] bytes, String message) {
method notEmpty (line 441) | public static <T extends CharSequence> T notEmpty(T chars, String mess...
method toString (line 454) | public static String toString(Object o) {
method Utils (line 461) | private Utils() {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/Evaluator.java
type Evaluator (line 5) | public interface Evaluator {
method evaluate (line 6) | boolean evaluate(ValueNode left, ValueNode right, Predicate.PredicateC...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/EvaluatorFactory.java
class EvaluatorFactory (line 14) | public class EvaluatorFactory {
method createEvaluator (line 42) | public static Evaluator createEvaluator(RelationalOperator operator){
class ExistsEvaluator (line 46) | private static class ExistsEvaluator implements Evaluator {
method evaluate (line 47) | @Override
class NotEqualsEvaluator (line 56) | private static class NotEqualsEvaluator implements Evaluator {
method evaluate (line 57) | @Override
class TypeSafeNotEqualsEvaluator (line 63) | private static class TypeSafeNotEqualsEvaluator implements Evaluator {
method evaluate (line 64) | @Override
class EqualsEvaluator (line 70) | private static class EqualsEvaluator implements Evaluator {
method evaluate (line 71) | @Override
class TypeSafeEqualsEvaluator (line 81) | private static class TypeSafeEqualsEvaluator implements Evaluator {
method evaluate (line 82) | @Override
class TypeEvaluator (line 91) | private static class TypeEvaluator implements Evaluator {
method evaluate (line 92) | @Override
class LessThanEvaluator (line 98) | private static class LessThanEvaluator implements Evaluator {
method evaluate (line 99) | @Override
class LessThanEqualsEvaluator (line 112) | private static class LessThanEqualsEvaluator implements Evaluator {
method evaluate (line 113) | @Override
class GreaterThanEvaluator (line 126) | private static class GreaterThanEvaluator implements Evaluator {
method evaluate (line 127) | @Override
class GreaterThanEqualsEvaluator (line 140) | private static class GreaterThanEqualsEvaluator implements Evaluator {
method evaluate (line 141) | @Override
class SizeEvaluator (line 154) | private static class SizeEvaluator implements Evaluator {
method evaluate (line 155) | @Override
class EmptyEvaluator (line 171) | private static class EmptyEvaluator implements Evaluator {
method evaluate (line 172) | @Override
class InEvaluator (line 183) | private static class InEvaluator implements Evaluator {
method evaluate (line 184) | @Override
class NotInEvaluator (line 201) | private static class NotInEvaluator implements Evaluator {
method evaluate (line 202) | @Override
class AllEvaluator (line 208) | private static class AllEvaluator implements Evaluator {
method evaluate (line 209) | @Override
class ContainsEvaluator (line 229) | private static class ContainsEvaluator implements Evaluator {
method evaluate (line 230) | @Override
class PredicateMatchEvaluator (line 246) | private static class PredicateMatchEvaluator implements Evaluator {
method evaluate (line 247) | @Override
class RegexpEvaluator (line 253) | private static class RegexpEvaluator implements Evaluator {
method evaluate (line 254) | @Override
method matches (line 275) | private boolean matches(PatternNode patternNode, String inputToMatch) {
method matchesAny (line 279) | private boolean matchesAny(PatternNode patternNode, ValueNode valueN...
method getInput (line 296) | private String getInput(ValueNode valueNode) {
class SubsetOfEvaluator (line 309) | private static class SubsetOfEvaluator implements Evaluator {
method evaluate (line 310) | @Override
class AnyOfEvaluator (line 338) | private static class AnyOfEvaluator implements Evaluator {
method evaluate (line 339) | @Override
class NoneOfEvaluator (line 375) | private static class NoneOfEvaluator implements Evaluator {
method evaluate (line 376) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/ExpressionNode.java
class ExpressionNode (line 5) | public abstract class ExpressionNode implements Predicate {
method createExpressionNode (line 7) | public static ExpressionNode createExpressionNode(ExpressionNode right...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/FilterCompiler.java
class FilterCompiler (line 14) | public class FilterCompiler {
method compile (line 52) | public static Filter compile(String filterString) {
method FilterCompiler (line 57) | private FilterCompiler(String filterString) {
method compile (line 76) | public Predicate compile() {
method readValueNode (line 93) | private ValueNode readValueNode() {
method readLiteral (line 108) | private ValueNode readLiteral(){
method readLogicalOR (line 130) | private ExpressionNode readLogicalOR() {
method readLogicalAND (line 147) | private ExpressionNode readLogicalAND() {
method readLogicalANDOperand (line 165) | private ExpressionNode readLogicalANDOperand() {
method readExpression (line 189) | private RelationalExpressionNode readExpression() {
method readLogicalOperator (line 208) | private LogicalOperator readLogicalOperator(){
method readRelationalOperator (line 225) | private RelationalOperator readRelationalOperator() {
method readNullLiteral (line 243) | private NullNode readNullLiteral() {
method readJsonLiteral (line 256) | private JsonNode readJsonLiteral(){
method endOfFlags (line 277) | private int endOfFlags(int position) {
method readPattern (line 291) | private PatternNode readPattern() {
method readStringLiteral (line 311) | private StringNode readStringLiteral(char endChar) {
method readNumberLiteral (line 325) | private NumberNode readNumberLiteral() {
method readBooleanLiteral (line 336) | private BooleanNode readBooleanLiteral() {
method readPath (line 353) | private PathNode readPath() {
method expressionIsTerminated (line 382) | private boolean expressionIsTerminated(){
method currentCharIsClosingFunctionBracket (line 394) | private boolean currentCharIsClosingFunctionBracket(int lowerBound){
method isLogicalOperatorChar (line 412) | private boolean isLogicalOperatorChar(char c) {
method isRelationalOperatorChar (line 416) | private boolean isRelationalOperatorChar(char c) {
class CompiledFilter (line 420) | private static final class CompiledFilter extends Filter {
method CompiledFilter (line 424) | private CompiledFilter(Predicate predicate) {
method apply (line 428) | @Override
method toString (line 433) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/LogicalExpressionNode.java
class LogicalExpressionNode (line 9) | public class LogicalExpressionNode extends ExpressionNode {
method createLogicalNot (line 13) | public static ExpressionNode createLogicalNot(ExpressionNode op) {
method createLogicalOr (line 17) | public static LogicalExpressionNode createLogicalOr(ExpressionNode lef...
method createLogicalOr (line 21) | public static LogicalExpressionNode createLogicalOr(Collection<Express...
method createLogicalAnd (line 25) | public static LogicalExpressionNode createLogicalAnd(ExpressionNode le...
method createLogicalAnd (line 29) | public static LogicalExpressionNode createLogicalAnd(Collection<Expres...
method LogicalExpressionNode (line 33) | private LogicalExpressionNode(ExpressionNode left, LogicalOperator ope...
method LogicalExpressionNode (line 39) | private LogicalExpressionNode(LogicalOperator operator, Collection<Exp...
method and (line 44) | public LogicalExpressionNode and(LogicalExpressionNode other){
method or (line 48) | public LogicalExpressionNode or(LogicalExpressionNode other){
method getOperator (line 52) | public LogicalOperator getOperator() {
method append (line 56) | public LogicalExpressionNode append(ExpressionNode expressionNode) {
method toString (line 61) | @Override
method apply (line 66) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/LogicalOperator.java
type LogicalOperator (line 5) | public enum LogicalOperator {
method LogicalOperator (line 13) | LogicalOperator(String operatorString) {
method getOperatorString (line 17) | public String getOperatorString() {
method toString (line 21) | @Override
method fromString (line 26) | public static LogicalOperator fromString(String operatorString){
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/PatternFlag.java
type PatternFlag (line 5) | public enum PatternFlag {
method PatternFlag (line 17) | private PatternFlag(int code, char flag) {
method parseFlags (line 22) | public static int parseFlags(char[] flags) {
method parseFlags (line 30) | public static String parseFlags(int flags) {
method getCodeByFlag (line 40) | private static int getCodeByFlag(char flag) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/RelationalExpressionNode.java
class RelationalExpressionNode (line 6) | public class RelationalExpressionNode extends ExpressionNode {
method RelationalExpressionNode (line 14) | public RelationalExpressionNode(ValueNode left, RelationalOperator rel...
method toString (line 22) | @Override
method apply (line 31) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/RelationalOperator.java
type RelationalOperator (line 7) | public enum RelationalOperator {
method RelationalOperator (line 41) | RelationalOperator(String operatorString) {
method fromString (line 45) | public static RelationalOperator fromString(String operatorString) {
method toString (line 55) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNode.java
class ValueNode (line 15) | public abstract class ValueNode {
method type (line 17) | public abstract Class<?> type(Predicate.PredicateContext ctx);
method isPatternNode (line 19) | public boolean isPatternNode() {
method asPatternNode (line 23) | public PatternNode asPatternNode() {
method isPathNode (line 27) | public boolean isPathNode() {
method asPathNode (line 31) | public PathNode asPathNode() {
method isNumberNode (line 35) | public boolean isNumberNode() {
method asNumberNode (line 39) | public NumberNode asNumberNode() {
method isStringNode (line 43) | public boolean isStringNode() {
method asStringNode (line 47) | public StringNode asStringNode() {
method isBooleanNode (line 51) | public boolean isBooleanNode() {
method asBooleanNode (line 55) | public BooleanNode asBooleanNode() {
method isJsonNode (line 59) | public boolean isJsonNode() {
method asJsonNode (line 63) | public JsonNode asJsonNode() {
method isPredicateNode (line 67) | public boolean isPredicateNode() {
method asPredicateNode (line 71) | public PredicateNode asPredicateNode() {
method isValueListNode (line 75) | public boolean isValueListNode() {
method asValueListNode (line 79) | public ValueListNode asValueListNode() {
method isNullNode (line 83) | public boolean isNullNode() {
method asNullNode (line 87) | public NullNode asNullNode() {
method asUndefinedNode (line 91) | public UndefinedNode asUndefinedNode() {
method isUndefinedNode (line 95) | public boolean isUndefinedNode() {
method isClassNode (line 99) | public boolean isClassNode() {
method asClassNode (line 103) | public ClassNode asClassNode() {
method isOffsetDateTimeNode (line 108) | public boolean isOffsetDateTimeNode(){
method asOffsetDateTimeNode (line 112) | public OffsetDateTimeNode asOffsetDateTimeNode(){
method isPath (line 117) | private static boolean isPath(Object o) {
method isJson (line 137) | private static boolean isJson(Object o) {
method toValueNode (line 165) | public static ValueNode toValueNode(Object o){
method createStringNode (line 182) | public static StringNode createStringNode(CharSequence charSequence, b...
method createClassNode (line 186) | public static ClassNode createClassNode(Class<?> clazz){
method createNumberNode (line 190) | public static NumberNode createNumberNode(CharSequence charSequence){
method createBooleanNode (line 194) | public static BooleanNode createBooleanNode(CharSequence charSequence){
method createNullNode (line 198) | public static NullNode createNullNode(){
method createJsonNode (line 202) | public static JsonNode createJsonNode(CharSequence json) {
method createJsonNode (line 206) | public static JsonNode createJsonNode(Object parsedJson) {
method createPatternNode (line 210) | public static PatternNode createPatternNode(CharSequence pattern) {
method createPatternNode (line 214) | public static PatternNode createPatternNode(Pattern pattern) {
method createOffsetDateTimeNode (line 219) | public static OffsetDateTimeNode createOffsetDateTimeNode(CharSequence...
method createUndefinedNode (line 224) | public static UndefinedNode createUndefinedNode() {
method createPathNode (line 228) | public static PathNode createPathNode(CharSequence path, boolean exist...
method createPathNode (line 232) | public static ValueNode createPathNode(Path path) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNodes.java
type ValueNodes (line 31) | public interface ValueNodes {
class PatternNode (line 43) | class PatternNode extends ValueNode {
method PatternNode (line 48) | PatternNode(CharSequence charSequence) {
method PatternNode (line 58) | PatternNode(Pattern pattern) {
method getCompiledPattern (line 65) | Pattern getCompiledPattern() {
method type (line 69) | @Override
method isPatternNode (line 74) | public boolean isPatternNode() {
method asPatternNode (line 78) | public PatternNode asPatternNode() {
method toString (line 82) | @Override
method equals (line 92) | @Override
class JsonNode (line 104) | class JsonNode extends ValueNode {
method JsonNode (line 108) | JsonNode(CharSequence charSequence) {
method JsonNode (line 113) | JsonNode(Object parsedJson) {
method type (line 118) | @Override
method isJsonNode (line 128) | public boolean isJsonNode() {
method asJsonNode (line 132) | public JsonNode asJsonNode() {
method asValueListNode (line 136) | public ValueNode asValueListNode(Predicate.PredicateContext ctx){
method parse (line 144) | public Object parse(Predicate.PredicateContext ctx){
method isParsed (line 152) | public boolean isParsed() {
method getJson (line 156) | public Object getJson() {
method isArray (line 160) | public boolean isArray(Predicate.PredicateContext ctx) {
method isMap (line 164) | public boolean isMap(Predicate.PredicateContext ctx) {
method length (line 168) | public int length(Predicate.PredicateContext ctx) {
method isEmpty (line 172) | public boolean isEmpty(Predicate.PredicateContext ctx) {
method toString (line 178) | @Override
method equals (line 183) | public boolean equals(JsonNode jsonNode, Predicate.PredicateContext ...
method equals (line 188) | @Override
class StringNode (line 199) | class StringNode extends ValueNode {
method StringNode (line 203) | StringNode(CharSequence charSequence, boolean escape) {
method asNumberNode (line 219) | @Override
method getString (line 230) | public String getString() {
method length (line 234) | public int length(){
method isEmpty (line 238) | public boolean isEmpty(){
method contains (line 242) | public boolean contains(String str) {
method type (line 246) | @Override
method isStringNode (line 251) | public boolean isStringNode() {
method asStringNode (line 255) | public StringNode asStringNode() {
method toString (line 259) | @Override
method equals (line 265) | @Override
class NumberNode (line 277) | class NumberNode extends ValueNode {
method NumberNode (line 283) | NumberNode(BigDecimal number) {
method NumberNode (line 286) | NumberNode(CharSequence num) {
method asStringNode (line 290) | @Override
method getNumber (line 295) | public BigDecimal getNumber() {
method type (line 299) | @Override
method isNumberNode (line 304) | public boolean isNumberNode() {
method asNumberNode (line 308) | public NumberNode asNumberNode() {
method toString (line 312) | @Override
method equals (line 317) | @Override
class OffsetDateTimeNode (line 333) | class OffsetDateTimeNode extends ValueNode {
method OffsetDateTimeNode (line 338) | OffsetDateTimeNode(OffsetDateTime dateTime) {
method OffsetDateTimeNode (line 342) | OffsetDateTimeNode(CharSequence date) {
method asStringNode (line 346) | @Override
method getDate (line 351) | public OffsetDateTime getDate() {
method type (line 355) | @Override
method isOffsetDateTimeNode (line 360) | public boolean isOffsetDateTimeNode() {
method asOffsetDateTimeNode (line 364) | public OffsetDateTimeNode asOffsetDateTimeNode() {
method toString (line 368) | @Override
method equals (line 373) | @Override
class BooleanNode (line 384) | class BooleanNode extends ValueNode {
method BooleanNode (line 387) | private BooleanNode(CharSequence boolValue) {
method type (line 391) | @Override
method isBooleanNode (line 396) | public boolean isBooleanNode() {
method asBooleanNode (line 400) | public BooleanNode asBooleanNode() {
method getBoolean (line 404) | public boolean getBoolean() {
method toString (line 408) | @Override
method equals (line 413) | @Override
class ClassNode (line 428) | class ClassNode extends ValueNode {
method ClassNode (line 431) | ClassNode(Class clazz) {
method type (line 435) | @Override
method isClassNode (line 440) | public boolean isClassNode() {
method asClassNode (line 444) | public ClassNode asClassNode() {
method getClazz (line 448) | public Class getClazz() {
method toString (line 452) | @Override
method equals (line 457) | @Override
class NullNode (line 468) | class NullNode extends ValueNode {
method NullNode (line 470) | private NullNode() {}
method type (line 472) | @Override
method isNullNode (line 477) | @Override
method asNullNode (line 482) | @Override
method toString (line 487) | @Override
method equals (line 492) | @Override
class UndefinedNode (line 501) | class UndefinedNode extends ValueNode {
method type (line 503) | @Override
method asUndefinedNode (line 508) | public UndefinedNode asUndefinedNode() {
method isUndefinedNode (line 512) | public boolean isUndefinedNode() {
method equals (line 516) | @Override
class PredicateNode (line 522) | class PredicateNode extends ValueNode {
method PredicateNode (line 526) | public PredicateNode(Predicate predicate) {
method getPredicate (line 530) | public Predicate getPredicate() {
method asPredicateNode (line 534) | public PredicateNode asPredicateNode() {
method type (line 538) | @Override
method isPredicateNode (line 543) | public boolean isPredicateNode() {
method equals (line 547) | @Override
method toString (line 552) | @Override
class ValueListNode (line 558) | class ValueListNode extends ValueNode implements Iterable<ValueNode> {
method ValueListNode (line 562) | public ValueListNode(Collection<?> values) {
method contains (line 568) | public boolean contains(ValueNode node){
method subsetof (line 572) | public boolean subsetof(ValueListNode right) {
method getNodes (line 581) | public List<ValueNode> getNodes() {
method type (line 585) | @Override
method isValueListNode (line 590) | public boolean isValueListNode() {
method asValueListNode (line 594) | public ValueListNode asValueListNode() {
method toString (line 598) | @Override
method equals (line 603) | @Override
method iterator (line 613) | @Override
class PathNode (line 619) | class PathNode extends ValueNode {
method PathNode (line 627) | PathNode(Path path) {
method PathNode (line 631) | PathNode(CharSequence charSequence, boolean existsCheck, boolean sho...
method PathNode (line 635) | PathNode(Path path, boolean existsCheck, boolean shouldExist) {
method getPath (line 642) | public Path getPath() {
method isExistsCheck (line 646) | public boolean isExistsCheck() {
method shouldExists (line 650) | public boolean shouldExists() {
method type (line 654) | @Override
method isPathNode (line 659) | public boolean isPathNode() {
method asPathNode (line 663) | public PathNode asPathNode() {
method asExistsCheck (line 667) | public PathNode asExistsCheck(boolean shouldExist) {
method toString (line 671) | @Override
method evaluate (line 676) | public ValueNode evaluate(Predicate.PredicateContext ctx) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/ParamType.java
type ParamType (line 6) | public enum ParamType {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/Parameter.java
class Parameter (line 14) | public class Parameter {
method Parameter (line 21) | public Parameter() {}
method Parameter (line 23) | public Parameter(String json) {
method Parameter (line 28) | public Parameter(Path path) {
method getValue (line 33) | public Object getValue() {
method setLateBinding (line 37) | public void setLateBinding(ILateBindingValue lateBinding) {
method getPath (line 41) | public Path getPath() {
method setEvaluated (line 45) | public void setEvaluated(Boolean evaluated) {
method hasEvaluated (line 49) | public boolean hasEvaluated() {
method getType (line 53) | public ParamType getType() {
method setType (line 57) | public void setType(ParamType type) {
method setPath (line 61) | public void setPath(Path path) {
method getJson (line 65) | public String getJson() {
method setJson (line 69) | public void setJson(String json) {
method getILateBingValue (line 73) | public ILateBindingValue getILateBingValue(){
method toList (line 95) | public static <T> List<T> toList(final Class<T> type, final Evaluation...
method consume (line 120) | public static void consume(Class expectedType, EvaluationContext ctx, ...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/PassthruPathFunction.java
class PassthruPathFunction (line 13) | public class PassthruPathFunction implements PathFunction {
method invoke (line 15) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunction.java
type PathFunction (line 16) | public interface PathFunction {
method invoke (line 35) | Object invoke(String currentPath, PathRef parent, Object model, Evalua...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunctionFactory.java
class PathFunctionFactory (line 29) | public class PathFunctionFactory {
method newFunction (line 76) | public static PathFunction newFunction(String name) throws InvalidPath...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/json/Append.java
class Append (line 17) | public class Append implements PathFunction {
method invoke (line 18) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/json/KeySetFunction.java
class KeySetFunction (line 14) | public class KeySetFunction implements PathFunction {
method invoke (line 16) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/latebinding/ILateBindingValue.java
type ILateBindingValue (line 21) | public interface ILateBindingValue {
method get (line 30) | Object get();
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/latebinding/JsonLateBindingValue.java
class JsonLateBindingValue (line 24) | public class JsonLateBindingValue implements ILateBindingValue {
method JsonLateBindingValue (line 28) | public JsonLateBindingValue(JsonProvider jsonProvider, Parameter jsonP...
method get (line 39) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/latebinding/PathLateBindingValue.java
class PathLateBindingValue (line 29) | public class PathLateBindingValue implements ILateBindingValue {
method PathLateBindingValue (line 34) | public PathLateBindingValue(final Path path, final Object rootDocument...
method get (line 45) | public Object get() {
method equals (line 49) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/AbstractAggregation.java
class AbstractAggregation (line 18) | public abstract class AbstractAggregation implements PathFunction {
method next (line 26) | protected abstract void next(Number value);
method getValue (line 34) | protected abstract Number getValue();
method invoke (line 36) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Average.java
class Average (line 8) | public class Average extends AbstractAggregation {
method next (line 13) | @Override
method getValue (line 19) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Max.java
class Max (line 8) | public class Max extends AbstractAggregation {
method next (line 11) | @Override
method getValue (line 18) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Min.java
class Min (line 8) | public class Min extends AbstractAggregation {
method next (line 11) | @Override
method getValue (line 18) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/StandardDeviation.java
class StandardDeviation (line 8) | public class StandardDeviation extends AbstractAggregation {
method next (line 13) | @Override
method getValue (line 20) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Sum.java
class Sum (line 8) | public class Sum extends AbstractAggregation {
method next (line 11) | @Override
method getValue (line 16) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/AbstractSequenceAggregation.java
class AbstractSequenceAggregation (line 17) | public abstract class AbstractSequenceAggregation implements PathFunction {
method targetIndex (line 19) | protected abstract int targetIndex(EvaluationContext ctx, List<Paramet...
method invoke (line 21) | @Override
method getIndexFromParameters (line 43) | protected int getIndexFromParameters(EvaluationContext ctx, List<Param...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/First.java
class First (line 13) | public class First extends AbstractSequenceAggregation {
method targetIndex (line 14) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/Index.java
class Index (line 13) | public class Index extends AbstractSequenceAggregation {
method targetIndex (line 14) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/Last.java
class Last (line 13) | public class Last extends AbstractSequenceAggregation {
method targetIndex (line 14) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Concatenate.java
class Concatenate (line 15) | public class Concatenate implements PathFunction {
method invoke (line 16) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Length.java
class Length (line 20) | public class Length implements PathFunction {
method invoke (line 42) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/ArrayIndexOperation.java
class ArrayIndexOperation (line 13) | public class ArrayIndexOperation {
method ArrayIndexOperation (line 19) | private ArrayIndexOperation(List<Integer> indexes) {
method indexes (line 23) | public List<Integer> indexes() {
method isSingleIndexOperation (line 27) | public boolean isSingleIndexOperation(){
method toString (line 31) | @Override
method parse (line 41) | public static ArrayIndexOperation parse(String operation) {
method parseInteger (line 59) | private static Integer parseInteger(String token) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/ArrayIndexToken.java
class ArrayIndexToken (line 21) | public class ArrayIndexToken extends ArrayPathToken {
method ArrayIndexToken (line 25) | ArrayIndexToken(final ArrayIndexOperation arrayIndexOperation) {
method evaluate (line 29) | @Override
method getPathFragment (line 42) | @Override
method isTokenDefinite (line 47) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/ArrayPathToken.java
class ArrayPathToken (line 23) | public abstract class ArrayPathToken extends PathToken {
method checkArrayModel (line 34) | protected boolean checkArrayModel(String currentPath, Object model, Ev...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/ArraySliceOperation.java
class ArraySliceOperation (line 7) | public class ArraySliceOperation {
type Operation (line 9) | public enum Operation {
method ArraySliceOperation (line 19) | private ArraySliceOperation(Integer from, Integer to, Operation operat...
method from (line 25) | public Integer from() {
method to (line 29) | public Integer to() {
method operation (line 33) | public Operation operation() {
method toString (line 37) | @Override
method parse (line 49) | public static ArraySliceOperation parse(String operation){
method tryRead (line 76) | private static Integer tryRead(String[] tokens, int idx){
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/ArraySliceToken.java
class ArraySliceToken (line 21) | public class ArraySliceToken extends ArrayPathToken {
method ArraySliceToken (line 27) | ArraySliceToken(final ArraySliceOperation operation) {
method evaluate (line 31) | @Override
method sliceFrom (line 48) | private void sliceFrom(String currentPath, PathRef parent, Object mode...
method sliceBetween (line 67) | private void sliceBetween(String currentPath, PathRef parent, Object m...
method sliceTo (line 85) | private void sliceTo(String currentPath, PathRef parent, Object model,...
method getPathFragment (line 104) | @Override
method isTokenDefinite (line 109) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/CompiledPath.java
class CompiledPath (line 29) | public class CompiledPath implements Path {
method CompiledPath (line 38) | public CompiledPath(RootPathToken root, boolean isRootPath) {
method isRootPath (line 43) | @Override
method invertScannerFunctionRelationship (line 62) | private RootPathToken invertScannerFunctionRelationship(final RootPath...
method evaluate (line 90) | @Override
method evaluate (line 105) | @Override
method isDefinite (line 110) | @Override
method isFunctionPath (line 115) | @Override
method toString (line 120) | @Override
method getRoot (line 125) | public RootPathToken getRoot() {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/EvaluationContextImpl.java
class EvaluationContextImpl (line 39) | public class EvaluationContextImpl implements EvaluationContext {
method getRoot (line 55) | public RootPathToken getRoot(){
method EvaluationContextImpl (line 59) | public EvaluationContextImpl(Path path, Object rootDocument, Configura...
method documentEvalCache (line 73) | public HashMap<Path, Object> documentEvalCache() {
method forUpdate (line 77) | public boolean forUpdate(){
method addResult (line 81) | public void addResult(String path, PathRef operation, Object model) {
method jsonProvider (line 102) | public JsonProvider jsonProvider() {
method options (line 106) | public Set<Option> options() {
method configuration (line 110) | @Override
method rootDocument (line 115) | @Override
method updateOperations (line 120) | public Collection<PathRef> updateOperations(){
method getValue (line 128) | @SuppressWarnings("unchecked")
method getValue (line 134) | @SuppressWarnings("unchecked")
method getPath (line 154) | @SuppressWarnings("unchecked")
method getPathList (line 166) | @Override
class FoundResultImpl (line 178) | private static class FoundResultImpl implements EvaluationListener.Fou...
method FoundResultImpl (line 184) | private FoundResultImpl(int index, String path, Object result) {
method index (line 190) | @Override
method path (line 195) | @Override
method result (line 200) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/FunctionPathToken.java
class FunctionPathToken (line 20) | public class FunctionPathToken extends PathToken {
method FunctionPathToken (line 26) | public FunctionPathToken(String pathFragment, List<Parameter> paramete...
method evaluate (line 37) | @Override
method cleanWildcardPathToken (line 49) | private void cleanWildcardPathToken() {
method evaluateParameters (line 66) | private void evaluateParameters(String currentPath, PathRef parent, Ob...
method isTokenDefinite (line 95) | @Override
method getPathFragment (line 100) | @Override
method setParameters (line 106) | public void setParameters(List<Parameter> parameters) {
method getParameters (line 110) | public List<Parameter> getParameters() {
method getFunctionName (line 113) | public String getFunctionName() {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java
class PathCompiler (line 20) | public class PathCompiler {
method PathCompiler (line 48) | private PathCompiler(String path, LinkedList<Predicate> filterStack){
method PathCompiler (line 52) | private PathCompiler(CharacterIndex path, LinkedList<Predicate> filter...
method compile (line 57) | private Path compile() {
method compile (line 62) | public static Path compile(String path, final Predicate... filters) {
method readWhitespace (line 87) | private void readWhitespace() {
method isPathContext (line 97) | private Boolean isPathContext(char c) {
method readContextToken (line 102) | private RootPathToken readContextToken() {
method readNextToken (line 131) | private boolean readNextToken(PathTokenAppender appender) {
method readDotToken (line 163) | private boolean readDotToken(PathTokenAppender appender) {
method readPropertyOrFunctionToken (line 181) | private boolean readPropertyOrFunctionToken(PathTokenAppender appender) {
method parseFunctionParameters (line 288) | private List<Parameter> parseFunctionParameters(String funcName) {
method isWhitespace (line 397) | private boolean isWhitespace(char c) {
method readPlaceholderToken (line 404) | private boolean readPlaceholderToken(PathTokenAppender appender) {
method readFilterToken (line 452) | private boolean readFilterToken(PathTokenAppender appender) {
method readWildCardToken (line 491) | private boolean readWildCardToken(PathTokenAppender appender) {
method readArrayToken (line 521) | private boolean readArrayToken(PathTokenAppender appender) {
method readBracketPropertyToken (line 570) | private boolean readBracketPropertyToken(PathTokenAppender appender) {
method fail (line 641) | public static boolean fail(String message) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java
class PathToken (line 26) | public abstract class PathToken {
method setUpstreamArrayIndex (line 35) | public void setUpstreamArrayIndex(int idx){
method appendTailToken (line 39) | PathToken appendTailToken(PathToken next) {
method handleObjectProperty (line 45) | void handleObjectProperty(String currentPath, Object model, Evaluation...
method hasProperty (line 125) | private static boolean hasProperty(String property, Object model, Eval...
method readObjectProperty (line 129) | private static Object readObjectProperty(String property, Object model...
method handleArrayIndex (line 134) | protected void handleArrayIndex(int index, String currentPath, Object ...
method prev (line 149) | PathToken prev(){
method next (line 153) | PathToken next() {
method isLeaf (line 160) | boolean isLeaf() {
method isRoot (line 164) | boolean isRoot() {
method isUpstreamDefinite (line 168) | boolean isUpstreamDefinite() {
method getTokenCount (line 175) | public int getTokenCount() {
method isPathDefinite (line 186) | public boolean isPathDefinite() {
method toString (line 198) | @Override
method hashCode (line 207) | @Override
method equals (line 212) | @Override
method invoke (line 217) | public void invoke(PathFunction pathFunction, String currentPath, Path...
method evaluate (line 221) | public abstract void evaluate(String currentPath, PathRef parent, Obj...
method isTokenDefinite (line 223) | public abstract boolean isTokenDefinite();
method getPathFragment (line 225) | protected abstract String getPathFragment();
method setNext (line 227) | public void setNext(final PathToken next) {
method getNext (line 231) | public PathToken getNext() {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PathTokenAppender.java
type PathTokenAppender (line 3) | public interface PathTokenAppender {
method appendPathToken (line 4) | PathTokenAppender appendPathToken(PathToken next);
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PathTokenFactory.java
class PathTokenFactory (line 11) | public class PathTokenFactory {
method createRootPathToken (line 13) | public static RootPathToken createRootPathToken(char token) {
method createSinglePropertyPathToken (line 17) | public static PathToken createSinglePropertyPathToken(String property,...
method createPropertyPathToken (line 21) | public static PathToken createPropertyPathToken(List<String> propertie...
method createSliceArrayPathToken (line 25) | public static PathToken createSliceArrayPathToken(final ArraySliceOper...
method createIndexArrayPathToken (line 29) | public static PathToken createIndexArrayPathToken(final ArrayIndexOper...
method createWildCardPathToken (line 33) | public static PathToken createWildCardPathToken() {
method crateScanToken (line 37) | public static PathToken crateScanToken() {
method createPredicatePathToken (line 41) | public static PathToken createPredicatePathToken(Collection<Predicate>...
method createPredicatePathToken (line 45) | public static PathToken createPredicatePathToken(Predicate predicate) {
method createFunctionPathToken (line 49) | public static PathToken createFunctionPathToken(String function, List<...
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PredicateContextImpl.java
class PredicateContextImpl (line 26) | public class PredicateContextImpl implements Predicate.PredicateContext {
method PredicateContextImpl (line 35) | public PredicateContextImpl(Object contextDocument, Object rootDocumen...
method evaluate (line 42) | public Object evaluate(Path path){
method documentPathCache (line 58) | public HashMap<Path, Object> documentPathCache() {
method item (line 62) | @Override
method item (line 67) | @Override
method root (line 72) | @Override
method configuration (line 77) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PredicatePathToken.java
class PredicatePathToken (line 31) | public class PredicatePathToken extends PathToken {
method PredicatePathToken (line 36) | PredicatePathToken(Predicate filter) {
method PredicatePathToken (line 40) | PredicatePathToken(Collection<Predicate> predicates) {
method evaluate (line 44) | @Override
method accept (line 72) | public boolean accept(final Object obj, final Object root, final Confi...
method getPathFragment (line 87) | @Override
method isTokenDefinite (line 101) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/PropertyPathToken.java
class PropertyPathToken (line 31) | public class PropertyPathToken extends PathToken {
method PropertyPathToken (line 36) | public PropertyPathToken(List<String> properties, char stringDelimiter) {
method getProperties (line 44) | public List<String> getProperties() {
method singlePropertyCase (line 48) | public boolean singlePropertyCase() {
method multiPropertyMergeCase (line 52) | public boolean multiPropertyMergeCase() {
method multiPropertyIterationCase (line 56) | public boolean multiPropertyIterationCase() {
method evaluate (line 61) | @Override
method isTokenDefinite (line 93) | @Override
method getPathFragment (line 99) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/RootPathToken.java
class RootPathToken (line 22) | public class RootPathToken extends PathToken {
method RootPathToken (line 29) | RootPathToken(char rootToken) {
method getTail (line 35) | public PathToken getTail(){
method getTokenCount (line 39) | @Override
method append (line 44) | public RootPathToken append(PathToken next) {
method getPathTokenAppender (line 50) | public PathTokenAppender getPathTokenAppender(){
method evaluate (line 60) | @Override
method getPathFragment (line 70) | @Override
method isTokenDefinite (line 75) | @Override
method isFunctionPath (line 80) | public boolean isFunctionPath() {
method setTail (line 84) | public void setTail(PathToken token) {
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/ScanPathToken.java
class ScanPathToken (line 26) | public class ScanPathToken extends PathToken {
method ScanPathToken (line 28) | ScanPathToken() {
method evaluate (line 31) | @Override
method walk (line 39) | public static void walk(PathToken pt, String currentPath, PathRef pare...
method walkArray (line 47) | public static void walkArray(PathToken pt, String currentPath, PathRef...
method walkObject (line 74) | public static void walkObject(PathToken pt, String currentPath, PathRe...
method createScanPredicate (line 90) | private static Predicate createScanPredicate(final PathToken target, f...
method isTokenDefinite (line 105) | @Override
method getPathFragment (line 110) | @Override
type Predicate (line 115) | private interface Predicate {
method matches (line 116) | boolean matches(Object model);
method matches (line 121) | @Override
class FilterPathTokenPredicate (line 127) | private static final class FilterPathTokenPredicate implements Predica...
method FilterPathTokenPredicate (line 131) | private FilterPathTokenPredicate(PathToken target, EvaluationContext...
method matches (line 136) | @Override
class WildcardPathTokenPredicate (line 142) | private static final class WildcardPathTokenPredicate implements Predi...
method matches (line 144) | @Override
class ArrayPathTokenPredicate (line 150) | private static final class ArrayPathTokenPredicate implements Predicate {
method ArrayPathTokenPredicate (line 153) | private ArrayPathTokenPredicate(EvaluationContextImpl ctx) {
method matches (line 157) | @Override
class PropertyPathTokenPredicate (line 163) | private static final class PropertyPathTokenPredicate implements Predi...
method PropertyPathTokenPredicate (line 167) | private PropertyPathTokenPredicate(PathToken target, EvaluationConte...
method matches (line 172) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/internal/path/WildcardPathToken.java
class WildcardPathToken (line 28) | public class WildcardPathToken extends PathToken {
method WildcardPathToken (line 30) | public WildcardPathToken() {
method evaluate (line 33) | @Override
method isTokenDefinite (line 53) | @Override
method getPathFragment (line 58) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/cache/Cache.java
type Cache (line 6) | public interface Cache {
method get (line 13) | JsonPath get(String key);
method put (line 21) | void put(String key, JsonPath value);
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/cache/CacheProvider.java
class CacheProvider (line 9) | public class CacheProvider {
class CacheHolder (line 17) | private static class CacheHolder {
method setCache (line 37) | public static void setCache(Cache cache){
method getCache (line 44) | public static Cache getCache() {
method getDefaultCache (line 49) | private static Cache getDefaultCache(){
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/cache/LRUCache.java
class LRUCache (line 25) | public class LRUCache implements Cache {
method LRUCache (line 33) | public LRUCache(int limit) {
method put (line 37) | public void put(String key, JsonPath value) {
method get (line 49) | public JsonPath get(String key) {
method addKey (line 57) | private void addKey(String key) {
method removeLast (line 66) | private String removeLast() {
method removeThenAddKey (line 76) | private void removeThenAddKey(String key) {
method removeFirstOccurrence (line 87) | private void removeFirstOccurrence(String key) {
method getSilent (line 96) | public JsonPath getSilent(String key) {
method remove (line 100) | public void remove(String key) {
method size (line 105) | public int size() {
method toString (line 109) | public String toString() {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/cache/NOOPCache.java
class NOOPCache (line 5) | public class NOOPCache implements Cache {
method get (line 7) | @Override
method put (line 12) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/AbstractJsonProvider.java
class AbstractJsonProvider (line 23) | public abstract class AbstractJsonProvider implements JsonProvider {
method isArray (line 31) | public boolean isArray(Object obj) {
method getArrayIndex (line 42) | public Object getArrayIndex(Object obj, int idx) {
method getArrayIndex (line 46) | @Deprecated
method setArrayIndex (line 51) | public void setArrayIndex(Object array, int index, Object newValue) {
method getMapValue (line 72) | public Object getMapValue(Object obj, String key){
method setProperty (line 88) | @SuppressWarnings("unchecked")
method removeProperty (line 105) | @SuppressWarnings("unchecked")
method isMap (line 123) | public boolean isMap(Object obj) {
method getPropertyKeys (line 133) | @SuppressWarnings("unchecked")
method length (line 148) | public int length(Object obj) {
method toIterable (line 166) | @SuppressWarnings("unchecked")
method unwrap (line 174) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java
class GsonJsonProvider (line 36) | public class GsonJsonProvider extends AbstractJsonProvider {
method GsonJsonProvider (line 44) | public GsonJsonProvider() {
method GsonJsonProvider (line 53) | public GsonJsonProvider(final Gson gson) {
method unwrap (line 57) | public Object unwrap(final Object o) {
method isPrimitiveNumber (line 86) | private static boolean isPrimitiveNumber(final Number n) {
method unwrapNumber (line 95) | private static Number unwrapNumber(final Number n) {
method parse (line 122) | @Override
method parse (line 127) | @Override
method toJson (line 137) | @Override
method createArray (line 142) | @Override
method createMap (line 147) | @Override
method isArray (line 152) | @Override
method getArrayIndex (line 157) | @Override
method setArrayIndex (line 162) | @Override
method getMapValue (line 176) | @Override
method setProperty (line 187) | @Override
method removeProperty (line 208) | @SuppressWarnings("unchecked")
method isMap (line 219) | @Override
method getPropertyKeys (line 226) | @Override
method length (line 236) | @Override
method toIterable (line 254) | @Override
method createJsonElement (line 265) | private JsonElement createJsonElement(final Object o) {
method toJsonArray (line 269) | private JsonArray toJsonArray(final Object o) {
method toJsonObject (line 273) | private JsonObject toJsonObject(final Object o) {
method toJsonElement (line 277) | private JsonElement toJsonElement(final Object o) {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/Jackson3JsonNodeJsonProvider.java
class Jackson3JsonNodeJsonProvider (line 23) | public class Jackson3JsonNodeJsonProvider extends AbstractJsonProvider {
method getObjectMapper (line 29) | public ObjectMapper getObjectMapper() {
method Jackson3JsonNodeJsonProvider (line 36) | public Jackson3JsonNodeJsonProvider() {
method Jackson3JsonNodeJsonProvider (line 45) | public Jackson3JsonNodeJsonProvider(ObjectMapper objectMapper) {
method parse (line 49) | @Override
method parse (line 58) | @Override
method parse (line 67) | @Override
method toJson (line 76) | @Override
method createArray (line 84) | @Override
method createMap (line 89) | @Override
method unwrap (line 94) | public Object unwrap(Object o) {
method isArray (line 129) | @Override
method getArrayIndex (line 134) | @Override
method setArrayIndex (line 139) | @Override
method getMapValue (line 153) | @Override
method setProperty (line 164) | @Override
method removeProperty (line 185) | public void removeProperty(Object obj, Object key) {
method isMap (line 195) | @Override
method getPropertyKeys (line 200) | @Override
method length (line 205) | @Override
method toIterable (line 220) | @Override
method createJsonElement (line 242) | private JsonNode createJsonElement(Object o) {
method toJsonArray (line 255) | private ArrayNode toJsonArray(Object o) {
method toJsonObject (line 259) | private ObjectNode toJsonObject(Object o) {
method setValueInObjectNode (line 263) | private void setValueInObjectNode(ObjectNode objectNode, Object key, O...
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/Jackson3JsonProvider.java
class Jackson3JsonProvider (line 31) | public class Jackson3JsonProvider extends AbstractJsonProvider {
method getObjectMapper (line 39) | public ObjectMapper getObjectMapper() {
method Jackson3JsonProvider (line 46) | public Jackson3JsonProvider() {
method Jackson3JsonProvider (line 55) | public Jackson3JsonProvider(ObjectMapper objectMapper) {
method Jackson3JsonProvider (line 65) | public Jackson3JsonProvider(ObjectMapper objectMapper, ObjectReader ob...
method parse (line 70) | @Override
method parse (line 79) | @Override
method parse (line 88) | @Override
method toJson (line 97) | @Override
method createArray (line 110) | @Override
method createMap (line 115) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java
class JacksonJsonNodeJsonProvider (line 23) | public class JacksonJsonNodeJsonProvider extends AbstractJsonProvider {
method getObjectMapper (line 29) | public ObjectMapper getObjectMapper() {
method JacksonJsonNodeJsonProvider (line 36) | public JacksonJsonNodeJsonProvider() {
method JacksonJsonNodeJsonProvider (line 45) | public JacksonJsonNodeJsonProvider(ObjectMapper objectMapper) {
method parse (line 49) | @Override
method parse (line 58) | @Override
method parse (line 68) | @Override
method toJson (line 77) | @Override
method createArray (line 85) | @Override
method createMap (line 90) | @Override
method unwrap (line 95) | public Object unwrap(Object o) {
method isArray (line 131) | @Override
method getArrayIndex (line 136) | @Override
method setArrayIndex (line 141) | @Override
method getMapValue (line 155) | @Override
method setProperty (line 166) | @Override
method removeProperty (line 187) | public void removeProperty(Object obj, Object key) {
method isMap (line 197) | @Override
method getPropertyKeys (line 202) | @Override
method length (line 213) | @Override
method toIterable (line 229) | @Override
method createJsonElement (line 251) | private JsonNode createJsonElement(Object o) {
method toJsonArray (line 264) | private ArrayNode toJsonArray(Object o) {
method toJsonObject (line 268) | private ObjectNode toJsonObject(Object o) {
method setValueInObjectNode (line 272) | private void setValueInObjectNode(ObjectNode objectNode, Object key, O...
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonProvider.java
class JacksonJsonProvider (line 31) | public class JacksonJsonProvider extends AbstractJsonProvider {
method getObjectMapper (line 39) | public ObjectMapper getObjectMapper() {
method JacksonJsonProvider (line 46) | public JacksonJsonProvider() {
method JacksonJsonProvider (line 54) | public JacksonJsonProvider(ObjectMapper objectMapper) {
method JacksonJsonProvider (line 63) | public JacksonJsonProvider(ObjectMapper objectMapper, ObjectReader obj...
method parse (line 68) | @Override
method parse (line 77) | @Override
method parse (line 87) | @Override
method toJson (line 96) | @Override
method createArray (line 111) | @Override
method createMap (line 116) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JakartaJsonProvider.java
class JakartaJsonProvider (line 39) | public class JakartaJsonProvider extends AbstractJsonProvider {
method JakartaJsonProvider (line 52) | public JakartaJsonProvider() {
method JakartaJsonProvider (line 66) | public JakartaJsonProvider(boolean mutableJson) {
method parse (line 70) | @Override
method parse (line 75) | @Override
method parse (line 81) | @Override
method parse (line 90) | private Object parse(Reader jsonInput) {
method toJson (line 100) | @Override
method createArray (line 112) | @Override
method createMap (line 121) | @Override
method isArray (line 130) | @Override
method getArrayIndex (line 135) | @Override
method setArrayIndex (line 149) | @Override
method getMapValue (line 169) | @Override
method setProperty (line 186) | @Override
method removeProperty (line 221) | @SuppressWarnings("rawtypes")
method isMap (line 244) | @Override
method getPropertyKeys (line 249) | @Override
method length (line 262) | @Override
method toIterable (line 284) | @Override
method unwrap (line 309) | @Override
method toArrayIndex (line 349) | private Integer toArrayIndex(Object index) {
method wrap (line 366) | private JsonValue wrap(Object obj) {
method proxyAll (line 428) | private JsonStructure proxyAll(JsonStructure jsonStruct) {
class JsonArrayProxy (line 459) | private static class JsonArrayProxy implements JsonArray {
method JsonArrayProxy (line 463) | JsonArrayProxy(JsonArray arr) {
method getJsonObject (line 467) | @Override
method getJsonArray (line 472) | @Override
method getJsonNumber (line 477) | @Override
method getJsonString (line 482) | @Override
method getValuesAs (line 487) | @Override
method getString (line 492) | @Override
method getString (line 497) | @Override
method getInt (line 502) | @Override
method getInt (line 507) | @Override
method getBoolean (line 512) | @Override
method getBoolean (line 517) | @Override
method isNull (line 522) | @Override
method getValueType (line 527) | @Override
method size (line 532) | @Override
method isEmpty (line 537) | @Override
method contains (line 542) | @Override
method iterator (line 547) | @Override
method toArray (line 574) | @Override
method toArray (line 579) | @Override
method add (line 584) | @Override
method remove (line 590) | @Override
method containsAll (line 601) | @Override
method addAll (line 606) | @Override
method addAll (line 620) | @Override
method removeAll (line 641) | @Override
method retainAll (line 663) | @Override
method clear (line 686) | @Override
method get (line 691) | @Override
method set (line 696) | @Override
method add (line 708) | @Override
method remove (line 713) | @Override
method indexOf (line 720) | @Override
method lastIndexOf (line 725) | @Override
method listIterator (line 730) | @Override
method listIterator (line 735) | @Override
method subList (line 813) | @Override
method hashCode (line 818) | @Override
method equals (line 823) | @Override
method toString (line 833) | @Override
class JsonObjectProxy (line 839) | private static class JsonObjectProxy implements JsonObject {
method JsonObjectProxy (line 843) | JsonObjectProxy(JsonObject obj) {
method getJsonArray (line 847) | @Override
method getJsonObject (line 852) | @Override
method getJsonNumber (line 857) | @Override
method getJsonString (line 862) | @Override
method getString (line 867) | @Override
method getString (line 872) | @Override
method getInt (line 877) | @Override
method getInt (line 882) | @Override
method getBoolean (line 887) | @Override
method getBoolean (line 892) | @Override
method isNull (line 897) | @Override
method getValueType (line 902) | @Override
method size (line 907) | @Override
method isEmpty (line 912) | @Override
method containsKey (line 917) | @Override
method containsValue (line 922) | @Override
method get (line 927) | @Override
method put (line 932) | @Override
method remove (line 939) | @Override
method putAll (line 950) | @Override
method clear (line 962) | @Override
method keySet (line 967) | @Override
method values (line 972) | @Override
method entrySet (line 977) | @Override
method hashCode (line 1023) | @Override
method equals (line 1028) | @Override
method toString (line 1038) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JettisonProvider.java
class JettisonProvider (line 30) | public class JettisonProvider extends AbstractJsonProvider
method jettisonUnwrap (line 32) | private static Object jettisonUnwrap(Object obj)
method jettisonWrap (line 41) | private static Object jettisonWrap(Object obj)
class JettisonTokener (line 51) | private static class JettisonTokener extends org.codehaus.jettison.jso...
method JettisonTokener (line 53) | public JettisonTokener(String s)
method newJSONObject (line 57) | @Override
method newJSONArray (line 62) | @Override
class JettisonObject (line 70) | private static class JettisonObject extends org.codehaus.jettison.json...
method JettisonObject (line 74) | private JettisonObject(JettisonTokener tokener) throws JSONException
method JettisonObject (line 79) | private JettisonObject()
method iterator (line 84) | @Override
class JettisonArray (line 91) | private static class JettisonArray extends org.codehaus.jettison.json....
method JettisonArray (line 95) | private JettisonArray(JettisonTokener tokener) throws JSONException
method JettisonArray (line 100) | private JettisonArray()
method iterator (line 105) | @Override
class JettisonArrayIterator (line 112) | private static class JettisonArrayIterator implements Iterator<Object>
method JettisonArrayIterator (line 117) | private JettisonArrayIterator(org.codehaus.jettison.json.JSONArray j...
method hasNext (line 122) | @Override
method next (line 128) | @Override
method remove (line 141) | @Override
class JettisonObjectIterator (line 149) | private static class JettisonObjectIterator implements Iterator<Object>
method JettisonObjectIterator (line 155) | private JettisonObjectIterator(org.codehaus.jettison.json.JSONObject...
method hasNext (line 161) | @Override
method next (line 167) | @Override
method remove (line 180) | @Override
method parse (line 188) | private Object parse(JettisonTokener JsonTokener)
method parse (line 210) | @Override
method parse (line 216) | @Override
method toJson (line 236) | @Override
method createMap (line 258) | @Override
method createArray (line 264) | @Override
method unwrap (line 270) | @Override
method isArray (line 276) | @Override
method isMap (line 282) | @Override
method length (line 288) | @Override
method toIterable (line 306) | @Override
method getPropertyKeys (line 328) | public Collection<String> getPropertyKeys(Object obj)
method getArrayIndex (line 351) | @Override
method setArrayIndex (line 357) | @Override public void setArrayIndex(Object array, int index, Object va...
method getMapValue (line 374) | @Override
method setProperty (line 385) | @Override
method removeProperty (line 406) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonOrgJsonProvider.java
class JsonOrgJsonProvider (line 19) | public class JsonOrgJsonProvider extends AbstractJsonProvider {
method parse (line 21) | @Override
method parse (line 30) | @Override
method unwrap (line 42) | @Override
method toJson (line 50) | @Override
method createArray (line 55) | @Override
method createMap (line 60) | @Override
method isArray (line 65) | @Override
method getArrayIndex (line 70) | @Override
method setArrayIndex (line 79) | @Override
method getMapValue (line 92) | @Override
method setProperty (line 107) | @Override
method removeProperty (line 131) | @SuppressWarnings("unchecked")
method isMap (line 142) | @Override
method getPropertyKeys (line 147) | @SuppressWarnings("unchecked")
method length (line 160) | @Override
method toIterable (line 175) | @Override
method createJsonElement (line 203) | private Object createJsonElement(Object o) {
method toJsonArray (line 207) | private JSONArray toJsonArray(Object o) {
method toJsonObject (line 211) | private JSONObject toJsonObject(Object o) {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProvider.java
type JsonProvider (line 23) | public interface JsonProvider {
method parse (line 33) | Object parse(String json) throws InvalidJsonException;
method parse (line 41) | default Object parse(byte[] json) throws InvalidJsonException {
method parse (line 51) | Object parse(InputStream jsonStream, String charset) throws InvalidJso...
method toJson (line 58) | String toJson(Object obj);
method createArray (line 64) | Object createArray();
method createMap (line 70) | Object createMap();
method isArray (line 78) | boolean isArray(Object obj);
method length (line 86) | int length(Object obj);
method toIterable (line 94) | Iterable<?> toIterable(Object obj);
method getPropertyKeys (line 103) | Collection<String> getPropertyKeys(Object obj);
method getArrayIndex (line 112) | Object getArrayIndex(Object obj, int idx);
method getArrayIndex (line 122) | @Deprecated
method setArrayIndex (line 132) | void setArrayIndex(Object array, int idx, Object newValue);
method getMapValue (line 141) | Object getMapValue(Object obj, String key);
method setProperty (line 150) | void setProperty(Object obj, Object key, Object value);
method removeProperty (line 158) | void removeProperty(Object obj, Object key);
method isMap (line 166) | boolean isMap(Object obj);
method unwrap (line 175) | Object unwrap(Object obj);
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonSmartJsonProvider.java
class JsonSmartJsonProvider (line 33) | public class JsonSmartJsonProvider extends AbstractJsonProvider {
method JsonSmartJsonProvider (line 38) | public JsonSmartJsonProvider() {
method JsonSmartJsonProvider (line 42) | public JsonSmartJsonProvider(int parseMode){
method JsonSmartJsonProvider (line 47) | public JsonSmartJsonProvider(int parseMode, JsonReaderI<?> mapper){
method createArray (line 52) | public Object createArray() {
method createMap (line 56) | public Object createMap() {
method parse (line 60) | public Object parse(String json) {
method parse (line 68) | @Override
method toJson (line 79) | @Override
method createParser (line 93) | private JSONParser createParser() {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/json/TapestryJsonProvider.java
class TapestryJsonProvider (line 12) | public class TapestryJsonProvider extends AbstractJsonProvider {
method parse (line 16) | @Override
method parse (line 21) | @Override
method toJson (line 34) | @Override
method createArray (line 39) | @Override
method createMap (line 44) | @Override
method setProperty (line 49) | @Override
method isMap (line 57) | @Override
method getArrayIndex (line 62) | @Override
method getPropertyKeys (line 67) | @Override
method getMapValue (line 72) | @Override
method length (line 81) | @Override
method isArray (line 92) | @Override
method setArrayIndex (line 97) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/GsonMappingProvider.java
class GsonMappingProvider (line 28) | public class GsonMappingProvider implements MappingProvider {
method GsonMappingProvider (line 34) | public GsonMappingProvider(final Gson gson) {
method GsonMappingProvider (line 43) | public GsonMappingProvider(Callable<Gson> factory) {
method GsonMappingProvider (line 47) | public GsonMappingProvider() {
method map (line 63) | @Override
method map (line 75) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/Jackson3MappingProvider.java
class Jackson3MappingProvider (line 22) | public class Jackson3MappingProvider implements MappingProvider {
method Jackson3MappingProvider (line 26) | public Jackson3MappingProvider() {
method Jackson3MappingProvider (line 30) | public Jackson3MappingProvider(ObjectMapper objectMapper) {
method map (line 34) | @Override
method map (line 47) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JacksonMappingProvider.java
class JacksonMappingProvider (line 22) | public class JacksonMappingProvider implements MappingProvider {
method JacksonMappingProvider (line 26) | public JacksonMappingProvider() {
method JacksonMappingProvider (line 30) | public JacksonMappingProvider(ObjectMapper objectMapper) {
method map (line 35) | @Override
method map (line 48) | @Override
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JakartaMappingProvider.java
class JakartaMappingProvider (line 55) | public class JakartaMappingProvider implements MappingProvider {
method JakartaMappingProvider (line 60) | public JakartaMappingProvider() {
method JakartaMappingProvider (line 66) | public JakartaMappingProvider(JsonbConfig jsonbConfiguration) {
method map (line 76) | @Override
method map (line 91) | @Override
method mapImpl (line 98) | private Object mapImpl(Object source, final Type targetType) {
method mapIntegralJsonNumber (line 203) | @SuppressWarnings("unchecked")
method mapDecimalJsonNumber (line 225) | @SuppressWarnings("unchecked")
method unwrapJsonValue (line 245) | private Object unwrapJsonValue(Object jsonValue) {
method newCollectionOfType (line 295) | private Collection<Object> newCollectionOfType(Class<?> collectionType...
method newNoArgInstance (line 324) | private Object newNoArgInstance(Class<?> targetType) throws MappingExc...
method findMethod (line 355) | private Method findMethod(Class<?> clazz, String name, Class<?>... par...
method getRawClass (line 370) | private Class<?> getRawClass(Type targetType) {
method getFirstTypeArgument (line 384) | private Type getFirstTypeArgument(Type targetType) {
class JsonStructureToParserAdapter (line 406) | private static class JsonStructureToParserAdapter implements JsonParser {
method JsonStructureToParserAdapter (line 412) | JsonStructureToParserAdapter(JsonStructure jsonStruct) {
method hasNext (line 416) | @Override
method next (line 421) | @Override
method getString (line 463) | @Override
method isIntegralNumber (line 477) | @Override
method getInt (line 485) | @Override
method getLong (line 493) | @Override
method getBigDecimal (line 501) | @Override
method getLocation (line 509) | @Override
method skipArray (line 514) | @Override
method skipObject (line 524) | @Override
method close (line 534) | @Override
method createScope (line 539) | private JsonStructureScope createScope(JsonValue value) {
method getState (line 548) | private Event getState(JsonValue value) {
class JsonStructureScope (line 570) | private static abstract class JsonStructureScope implements Iterator<J...
method getValue (line 577) | abstract JsonValue getValue();
class JsonArrayScope (line 580) | private static class JsonArrayScope extends JsonStructureScope {
method JsonArrayScope (line 584) | JsonArrayScope(JsonArray array) {
method hasNext (line 588) | @Override
method next (line 593) | @Override
method getValue (line 599) | @Override
class JsonObjectScope (line 605) | private static class JsonObjectScope extends JsonStructureScope {
method JsonObjectScope (line 610) | JsonObjectScope(JsonObject object) {
method hasNext (line 614) | @Override
method next (line 619) | @Override
method getValue (line 627) | @Override
method getKey (line 632) | String getKey() {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JsonOrgMappingProvider.java
class JsonOrgMappingProvider (line 13) | public class JsonOrgMappingProvider implements MappingProvider {
method map (line 14) | @Override
method map (line 25) | @Override
method mapToObject (line 31) | private Object mapToObject(Object source){
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JsonSmartMappingProvider.java
class JsonSmartMappingProvider (line 30) | public class JsonSmartMappingProvider implements MappingProvider {
method JsonSmartMappingProvider (line 53) | public JsonSmartMappingProvider(final JsonReader jsonReader) {
method JsonSmartMappingProvider (line 62) | public JsonSmartMappingProvider(Callable<JsonReader> factory) {
method JsonSmartMappingProvider (line 66) | public JsonSmartMappingProvider() {
method map (line 72) | @Override
method map (line 92) | @Override
class StringReader (line 97) | private static class StringReader extends JsonReaderI<String> {
method StringReader (line 98) | public StringReader() {
method convert (line 101) | public String convert(Object src) {
class IntegerReader (line 108) | private static class IntegerReader extends JsonReaderI<Integer> {
method IntegerReader (line 109) | public IntegerReader() {
method convert (line 112) | public Integer convert(Object src) {
class LongReader (line 132) | private static class LongReader extends JsonReaderI<Long> {
method LongReader (line 133) | public LongReader() {
method convert (line 136) | public Long convert(Object src) {
class DoubleReader (line 157) | private static class DoubleReader extends JsonReaderI<Double> {
method DoubleReader (line 158) | public DoubleReader() {
method convert (line 161) | public Double convert(Object src) {
class FloatReader (line 181) | private static class FloatReader extends JsonReaderI<Float> {
method FloatReader (line 182) | public FloatReader() {
method convert (line 185) | public Float convert(Object src) {
class BigDecimalReader (line 205) | private static class BigDecimalReader extends JsonReaderI<BigDecimal> {
method BigDecimalReader (line 206) | public BigDecimalReader() {
method convert (line 209) | public BigDecimal convert(Object src) {
class BigIntegerReader (line 216) | private static class BigIntegerReader extends JsonReaderI<BigInteger> {
method BigIntegerReader (line 217) | public BigIntegerReader() {
method convert (line 220) | public BigInteger convert(Object src) {
class DateReader (line 227) | private static class DateReader extends JsonReaderI<Date> {
method DateReader (line 228) | public DateReader() {
method convert (line 231) | public Date convert(Object src) {
class BooleanReader (line 249) | private static class BooleanReader extends JsonReaderI<Boolean> {
method BooleanReader (line 250) | public BooleanReader() {
method convert (line 253) | public Boolean convert(Object src) {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/MappingException.java
class MappingException (line 19) | public class MappingException extends JsonPathException {
method MappingException (line 21) | public MappingException(Throwable cause) {
method MappingException (line 25) | public MappingException(String message) {
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/MappingProvider.java
type MappingProvider (line 23) | public interface MappingProvider {
method map (line 34) | <T> T map(Object source, Class<T> targetType, Configuration configurat...
method map (line 44) | <T> T map(Object source, TypeRef<T> targetType, Configuration configur...
FILE: json-path/src/main/java/com/jayway/jsonpath/spi/mapper/TapestryMappingProvider.java
class TapestryMappingProvider (line 22) | public class TapestryMappingProvider implements MappingProvider {
method map (line 24) | @Override
method map (line 49) | @Override
FILE: json-path/src/test/java/com/jayway/jsonpath/BaseTest.java
class BaseTest (line 25) | public class BaseTest {
method createPredicateContext (line 171) | public Predicate.PredicateContext createPredicateContext(final Object ...
FILE: json-path/src/test/java/com/jayway/jsonpath/Configurations.java
class Configurations (line 20) | public class Configurations {
method configurations (line 70) | public static Iterable<Configuration> configurations() {
method objectMappingConfigurations (line 83) | public static Iterable<Configuration> objectMappingConfigurations() {
FILE: json-path/src/test/java/com/jayway/jsonpath/DeepScanTest.java
class DeepScanTest (line 19) | public class DeepScanTest extends BaseTest {
method when_deep_scanning_non_array_subscription_is_ignored (line 21) | @Test
method when_deep_scanning_null_subscription_is_ignored (line 32) | @Test
method when_deep_scanning_array_index_oob_is_ignored (line 40) | @Test
method definite_upstream_illegal_array_access_throws (line 49) | @Test
method when_deep_scanning_illegal_property_access_is_ignored (line 60) | @Test
method when_deep_scanning_illegal_predicate_is_ignored (line 73) | @Test
method when_deep_scanning_require_properties_is_ignored_on_scan_target (line 84) | @Test
method when_deep_scanning_require_properties_is_ignored_on_scan_target_but_not_on_children (line 99) | @Test
method when_deep_scanning_leaf_multi_props_work (line 106) | @Test
method require_single_property_ok (line 130) | @Test
method require_single_property (line 145) | @Test
method require_multi_property_all_match (line 160) | @Test
method require_multi_property_some_match (line 180) | @Test
method scan_for_single_property (line 205) | @Test
method scan_for_property_path (line 229) | @Test
method scan_for_property_path_missing_required_property (line 252) | @Test
method scans_can_be_filtered (line 276) | @Test
method scan_with_a_function_filter (line 301) | @Test
method deepScanPathDefault (line 307) | @Test
method deepScanPathRequireProperties (line 312) | @Test
method executeScanPath (line 317) | private void executeScanPath(Option... options) {
FILE: json-path/src/test/java/com/jayway/jsonpath/EscapeTest.java
class EscapeTest (line 11) | public class EscapeTest extends BaseTest {
method before (line 15) | @BeforeAll
method after (line 21) | @AfterAll
method urls_are_not_escaped (line 26) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/EvaluationListenerTest.java
class EvaluationListenerTest (line 10) | public class EvaluationListenerTest extends BaseTest {
method an_evaluation_listener_can_abort_after_one_result_using_fluent_api (line 13) | @Test
method an_evaluation_listener_can_abort_after_one_result_using_configuration (line 25) | @Test
method an_evaluation_lister_can_continue (line 39) | @Test
method evaluation_results_can_be_limited (line 57) | @Test
method multiple_evaluation_listeners_can_be_added (line 67) | @Test
method evaluation_listeners_can_be_cleared (line 95) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/FilterCompilerTest.java
class FilterCompilerTest (line 9) | public class FilterCompilerTest {
method valid_filters_compile (line 11) | @Test
method string_quote_style_is_serialized (line 52) | @Test
method string_can_contain_path_chars (line 58) | @Test
method invalid_path_when_string_literal_is_unquoted (line 64) | @Test
method or_has_lower_priority_than_and (line 69) | @Test
method invalid_filters_does_not_compile (line 75) | @Test
method compile_and_serialize_not_exists_filter (line 88) | @Test
method assertInvalidPathException (line 97) | private void assertInvalidPathException(String filter) {
FILE: json-path/src/test/java/com/jayway/jsonpath/FilterParseTest.java
class FilterParseTest (line 14) | public class FilterParseTest {
method a_filter_can_be_parsed (line 16) | @Test
method an_invalid_filter_can_not_be_parsed (line 25) | @Test
method a_gte_filter_can_be_serialized (line 49) | @Test
method a_lte_filter_can_be_serialized (line 58) | @Test
method a_eq_filter_can_be_serialized (line 67) | @Test
method a_ne_filter_can_be_serialized (line 76) | @Test
method a_lt_filter_can_be_serialized (line 85) | @Test
method a_gt_filter_can_be_serialized (line 94) | @Test
method a_nin_filter_can_be_serialized (line 103) | @Test
method a_in_filter_can_be_serialized (line 111) | @Test
method a_contains_filter_can_be_serialized (line 120) | @Test
method a_all_filter_can_be_serialized (line 128) | @Test
method a_size_filter_can_be_serialized (line 137) | @Test
method a_subsetof_filter_can_be_serialized (line 146) | @Test
method a_anyof_filter_can_be_serialized (line 155) | @Test
method a_noneof_filter_can_be_serialized (line 164) | @Test
method a_exists_filter_can_be_serialized (line 173) | @Test
method a_not_exists_filter_can_be_serialized (line 183) | @Test
method a_type_filter_can_be_serialized (line 192) | @Test
method a_matches_filter_can_be_serialized (line 197) | @Test
method a_not_empty_filter_can_be_serialized (line 204) | @Test
method and_filter_can_be_serialized (line 213) | @Test
method in_string_filter_can_be_serialized (line 222) | @Test
method a_deep_path_filter_can_be_serialized (line 231) | @Test
method a_regex_filter_can_be_serialized (line 240) | @Test
method a_doc_ref_filter_can_be_serialized (line 245) | @Test
method and_combined_filters_can_be_serialized (line 251) | @Test
method or_combined_filters_can_be_serialized (line 265) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/FilterTest.java
class FilterTest (line 16) | public class FilterTest extends BaseTest {
method int_eq_evals (line 41) | @Test
method int_eq_string_evals (line 47) | @Test
method long_eq_evals (line 62) | @Test
method double_eq_evals (line 68) | @Test
method string_eq_evals (line 75) | @Test
method boolean_eq_evals (line 81) | @Test
method null_eq_evals (line 87) | @Test
method arr_eq_evals (line 94) | @Test
method int_ne_evals (line 106) | @Test
method long_ne_evals (line 112) | @Test
method double_ne_evals (line 118) | @Test
method string_ne_evals (line 125) | @Test
method boolean_ne_evals (line 131) | @Test
method null_ne_evals (line 137) | @Test
method int_lt_evals (line 149) | @Test
method long_lt_evals (line 155) | @Test
method double_lt_evals (line 161) | @Test
method string_lt_evals (line 167) | @Test
method int_lte_evals (line 178) | @Test
method long_lte_evals (line 185) | @Test
method double_lte_evals (line 192) | @Test
method int_gt_evals (line 204) | @Test
method long_gt_evals (line 210) | @Test
method double_gt_evals (line 216) | @Test
method string_gt_evals (line 222) | @Test
method int_gte_evals (line 233) | @Test
method long_gte_evals (line 240) | @Test
method double_gte_evals (line 247) | @Test
method string_regex_evals (line 259) | @Test
method list_regex_evals (line 267) | @Test
method obj_regex_doesnt_break (line 273) | @Test
method json_evals (line 283) | @Test
method string_in_evals (line 304) | @Test
method string_nin_evals (line 318) | @Test
method int_all_evals (line 333) | @Test
method string_all_evals (line 338) | @Test
method not_array_all_evals (line 343) | @Test
method array_size_evals (line 353) | @Test
method string_size_evals (line 359) | @Test
method other_size_evals (line 365) | @Test
method null_size_evals (line 370) | @Test
method array_subsetof_evals (line 380) | @Test
method array_anyof_evals (line 398) | @Test
method array_noneof_evals (line 413) | @Test
method exists_evals (line 428) | @Test
method type_evals (line 442) | @Test
method not_empty_evals (line 460) | @Test
method empty_evals (line 476) | @Test
method matches_evals (line 501) | @Test
method or_and_filters_evaluates (line 523) | @Test
method testFilterWithOrShortCircuit1 (line 545) | @Test
method testFilterWithOrShortCircuit2 (line 551) | @Test
method criteria_can_be_parsed (line 557) | @Test
method inline_in_criteria_evaluates (line 568) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/GsonJsonProviderTest.java
class GsonJsonProviderTest (line 21) | public class GsonJsonProviderTest extends BaseTest {
method json_can_be_parsed (line 45) | @Test
method strings_are_unwrapped (line 51) | @Test
method ints_are_unwrapped (line 60) | @Test
method longs_are_unwrapped (line 69) | @Test
method doubles_are_unwrapped (line 78) | @Test
method bigdecimals_are_unwrapped (line 89) | @Test
method small_bigdecimals_are_unwrapped (line 101) | @Test
method bigintegers_are_unwrapped (line 113) | @Test
method small_bigintegers_are_unwrapped (line 125) | @Test
method int_to_long_mapping (line 137) | @Test
method an_Integer_can_be_converted_to_a_Double (line 142) | @Test
method list_of_numbers (line 147) | @Test
method an_object_can_be_mapped_to_pojo (line 157) | @Test
method test_type_ref (line 175) | @Test
method test_type_ref_fail (line 185) | @Test
method no_error_when_mapping_null (line 193) | @Test
class FooBarBaz (line 212) | public static class FooBarBaz<T> {
class Gen (line 220) | public static class Gen {
class TestClazz (line 224) | public static class TestClazz {
FILE: json-path/src/test/java/com/jayway/jsonpath/InlineFilterTest.java
class InlineFilterTest (line 17) | public class InlineFilterTest extends BaseTest {
method configurations (line 64) | public static Iterable<Configuration> configurations() {
method root_context_can_be_referred_in_predicate (line 69) | @ParameterizedTest
method asDouble (line 77) | private Double asDouble(Object object) {
method multiple_context_object_can_be_refered (line 82) | @ParameterizedTest
method simple_inline_or_statement_evaluates (line 103) | @ParameterizedTest
method no_path_ref_in_filter_hit_all (line 121) | public void no_path_ref_in_filter_hit_all() {
method no_path_ref_in_filter_hit_none (line 129) | @Test
method path_can_be_on_either_side_of_operator (line 138) | @Test
method path_can_be_on_both_side_of_operator (line 147) | @Test
method patterns_can_be_evaluated (line 154) | @Test
method patterns_can_be_evaluated_with_ignore_case (line 163) | @Test
method patterns_match_against_lists (line 172) | @Test
method negate_exists_check (line 178) | @Test
method negate_exists_check_primitive (line 188) | @Test
method equality_check_does_not_break_evaluation (line 209) | @ParameterizedTest
method lt_check_does_not_break_evaluation (line 226) | @ParameterizedTest
method escaped_literals (line 243) | @ParameterizedTest
method escaped_literals2 (line 256) | @ParameterizedTest
method escape_pattern (line 266) | @ParameterizedTest
method escape_pattern_after_literal (line 272) | @ParameterizedTest
method escape_pattern_before_literal (line 278) | @ParameterizedTest
method filter_evaluation_does_not_break_path_evaluation (line 284) | @ParameterizedTest
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_487.java
class Issue_487 (line 5) | public class Issue_487 {
method test_read_with_comma_1 (line 9) | @Test//(expected = InvalidPathException.class)
method test_read_with_comma_2 (line 18) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_537.java
class Issue_537 (line 7) | public class Issue_537 {
method test_read (line 11) | @Test
method test_renameKey (line 17) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_721.java
class Issue_721 (line 5) | public class Issue_721 {
method test_delete_1 (line 9) | @Test
method test_delete_2 (line 19) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_762.java
class Issue_762 (line 10) | public class Issue_762 {
method testParseJsonValue (line 11) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_786.java
class Issue_786 (line 10) | public class Issue_786 extends BaseTest{
method test (line 12) | @Test
method bookLength (line 19) | private int bookLength() {
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_970.java
class Issue_970 (line 7) | public class Issue_970 {
method shouldNotCauseStackOverflow (line 8) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/Issue_973.java
class Issue_973 (line 7) | public class Issue_973 {
method shouldNotCauseStackOverflow (line 8) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/Jackson3JsonNodeJsonProviderMapperSupportTest.java
class Jackson3JsonNodeJsonProviderMapperSupportTest (line 16) | public class Jackson3JsonNodeJsonProviderMapperSupportTest {
method mapMethod_withJacksonJsonNodeJsonProvider_shouldUsingJsonNodeForMappingValues (line 18) | @ParameterizedTest
method readMethod_withJacksonJsonNodeJsonProvider_shouldReturnJsonNode (line 32) | @ParameterizedTest
method setMethod_withJacksonJsonNodeJsonProvider_shouldAcceptJsonNode (line 42) | @ParameterizedTest
class TestData (line 52) | private static class TestData {
method TestData (line 61) | public TestData(
method testDataSource (line 78) | public static List<TestData> testDataSource() throws Exception {
method cloneDocumentContext (line 140) | private static DocumentContext cloneDocumentContext(DocumentContext do...
FILE: json-path/src/test/java/com/jayway/jsonpath/Jackson3JsonNodeJsonProviderTest.java
class Jackson3JsonNodeJsonProviderTest (line 29) | public class Jackson3JsonNodeJsonProviderTest extends BaseTest {
method json_can_be_parsed (line 53) | @Test
method bytes_json_can_be_parsed (line 59) | @Test
method always_return_same_object (line 66) | @Test
method strings_are_unwrapped (line 80) | @Test
method ints_are_unwrapped (line 89) | @Test
method longs_are_unwrapped (line 97) | @Test
method list_of_numbers (line 106) | @Test
method bigdecimals_are_unwrapped (line 124) | @Test
method small_bigdecimals_are_unwrapped (line 137) | @Test
method bigintegers_are_unwrapped (line 158) | @Test
method small_bigintegers_are_unwrapped (line 171) | @Test
method test_type_ref (line 184) | @Test
method test_type_ref_fail (line 193) | @Test
method mapPropertyWithPOJO (line 200) | @Test
method setPropertyWithPOJO (line 225) | @Test
method empty_array_check_works (line 235) | public void empty_array_check_works() throws IOException {
class FooBarBaz (line 262) | public static class FooBarBaz<T> {
class Gen (line 270) | public static class Gen {
class Data (line 274) | public static final class Data {
method Data (line 278) | @JsonCreator
FILE: json-path/src/test/java/com/jayway/jsonpath/Jackson3Test.java
class Jackson3Test (line 11) | public class Jackson3Test extends BaseTest {
method an_object_can_be_mapped_to_pojo (line 13) | @Test
class FooBarBaz (line 37) | public static class FooBarBaz {
method jackson_converts_dates (line 43) | @Test
method single_quotes_work_with_in_filter (line 55) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/JacksonJsonNodeJsonProviderMapperSupportTest.java
class JacksonJsonNodeJsonProviderMapperSupportTest (line 16) | public class JacksonJsonNodeJsonProviderMapperSupportTest {
method mapMethod_withJacksonJsonNodeJsonProvider_shouldUsingJsonNodeForMappingValues (line 18) | @ParameterizedTest
method readMethod_withJacksonJsonNodeJsonProvider_shouldReturnJsonNode (line 32) | @ParameterizedTest
method setMethod_withJacksonJsonNodeJsonProvider_shouldAcceptJsonNode (line 42) | @ParameterizedTest
class TestData (line 52) | private static class TestData {
method TestData (line 61) | public TestData(
method testDataSource (line 78) | public static List<TestData> testDataSource() throws Exception {
method cloneDocumentContext (line 140) | private static DocumentContext cloneDocumentContext(DocumentContext do...
FILE: json-path/src/test/java/com/jayway/jsonpath/JacksonJsonNodeJsonProviderTest.java
class JacksonJsonNodeJsonProviderTest (line 29) | public class JacksonJsonNodeJsonProviderTest extends BaseTest {
method json_can_be_parsed (line 53) | @Test
method bytes_json_can_be_parsed (line 59) | @Test
method always_return_same_object (line 66) | @Test
method strings_are_unwrapped (line 80) | @Test
method ints_are_unwrapped (line 89) | @Test
method longs_are_unwrapped (line 97) | @Test
method list_of_numbers (line 106) | @Test
method bigdecimals_are_unwrapped (line 123) | @Test
method small_bigdecimals_are_unwrapped (line 136) | @Test
method bigintegers_are_unwrapped (line 156) | @Test
method small_bigintegers_are_unwrapped (line 169) | @Test
method test_type_ref (line 182) | @Test
method test_type_ref_fail (line 191) | @Test
method mapPropertyWithPOJO (line 198) | @Test
method setPropertyWithPOJO (line 223) | @Test
method empty_array_check_works (line 233) | public void empty_array_check_works() throws IOException {
class FooBarBaz (line 260) | public static class FooBarBaz<T> {
class Gen (line 268) | public static class Gen {
class Data (line 272) | public static final class Data {
method Data (line 276) | @JsonCreator
FILE: json-path/src/test/java/com/jayway/jsonpath/JacksonTest.java
class JacksonTest (line 12) | public class JacksonTest extends BaseTest {
method an_object_can_be_mapped_to_pojo (line 14) | @Test
class FooBarBaz (line 38) | public static class FooBarBaz {
method jackson_converts_dates (line 44) | @Test
method single_quotes_work_with_in_filter (line 56) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/JakartaJsonProviderTest.java
class JakartaJsonProviderTest (line 20) | public class JakartaJsonProviderTest extends BaseTest {
method an_object_can_be_read (line 24) | @Test
method an_object_can_be_read_from_bytes (line 33) | @Test
method a_property_can_be_read (line 42) | @Test
method a_filter_can_be_applied (line 51) | @Test
method result_can_be_mapped_to_object (line 60) | @Test
method read_books_with_isbn (line 70) | @Test
method read_book_length_using_translated_query (line 84) | @Test
method read_book_length (line 92) | @Test
method issue_97 (line 100) | @Test
method test_delete_2 (line 125) | @Test
method an_root_property_can_be_updated (line 139) | @Test
method an_deep_scan_can_update (line 152) | @Test
method an_filter_can_update (line 166) | @Test
method a_path_can_be_deleted (line 181) | @Test
method operations_can_chained (line 196) | @Test
method an_array_index_can_be_updated (line 215) | @Test
method an_array_slice_can_be_updated (line 225) | @Test
method an_array_criteria_can_be_updated (line 236) | @Test
method an_array_criteria_can_be_deleted (line 247) | @Test
method an_array_criteria_with_multiple_results_can_be_deleted (line 258) | @Test
method multi_prop_delete (line 267) | @Test
method multi_prop_update (line 278) | @Test
method add_to_array (line 293) | @Test
method add_to_object (line 303) | @Test
method add_to_object_on_array (line 313) | @Test
method add_to_array_on_object (line 318) | @Test
method a_path_can_be_renamed (line 323) | @Test
method map_array_items_can_be_renamed (line 334) | @Test
method non_existent_key_rename_not_allowed (line 344) | @Test
method single_match_value_can_be_mapped (line 352) | @Test
method object_can_be_mapped (line 362) | @Test
method multi_match_path_can_be_mapped (line 375) | @Test
class ToStringMapFunction (line 397) | private class ToStringMapFunction implements MapFunction {
method map (line 399) | @Override
FILE: json-path/src/test/java/com/jayway/jsonpath/JsonOrgJsonProviderTest.java
class JsonOrgJsonProviderTest (line 15) | public class JsonOrgJsonProviderTest extends BaseTest {
method an_object_can_be_read (line 18) | @Test
method a_property_can_be_read (line 26) | @Test
method a_filter_can_be_applied (line 34) | @Test
method result_can_be_mapped_to_object (line 42) | @Test
method read_books_with_isbn (line 50) | @Test
method read_book_length_using_translated_query (line 65) | @Test
method read_book_length (line 73) | @Test
method test_getPropertyKeys_empty_object (line 81) | @Test
method test_getPropertyKeys_empty_nest_object (line 91) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/JsonProviderTest.java
class JsonProviderTest (line 9) | public class JsonProviderTest extends BaseTest {
method configurations (line 11) | public static Iterable<Configuration> configurations() {
method strings_are_unwrapped (line 16) | @ParameterizedTest
method integers_are_unwrapped (line 23) | @ParameterizedTest
method ints_are_unwrapped (line 30) | @ParameterizedTest
FILE: json-path/src/test/java/com/jayway/jsonpath/JsonProviderTestObjectMapping.java
class JsonProviderTestObjectMapping (line 12) | public class JsonProviderTestObjectMapping extends BaseTest {
method configurations (line 36) | public static Iterable<Configuration> configurations() {
method list_of_numbers (line 41) | @ParameterizedTest
method test_type_ref (line 52) | @ParameterizedTest
class FooBarBaz (line 62) | public static class FooBarBaz<T> {
class Sub (line 69) | public static class Sub {
FILE: json-path/src/test/java/com/jayway/jsonpath/MapperTest.java
class MapperTest (line 12) | public class MapperTest extends BaseTest {
method an_Integer_can_be_converted_to_a_Long (line 15) | @Test
method an_String_can_be_converted_to_a_Long (line 20) | @Test
method an_Integer_can_be_converted_to_a_String (line 25) | @Test
method an_Integer_can_be_converted_to_a_Double (line 30) | @Test
method a_BigDecimal_can_be_converted_to_a_Long (line 35) | @Test
method a_Long_can_be_converted_to_a_Date (line 40) | @Test
method a_String_can_be_converted_to_a_BigInteger (line 46) | @Test
method a_String_can_be_converted_to_a_BigDecimal (line 51) | @Test
method a_Boolean_can_be_converted_to_a_primitive_boolean (line 56) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/MultiPropTest.java
class MultiPropTest (line 14) | public class MultiPropTest {
method multi_prop_can_be_read_from_root (line 16) | @Test
method multi_props_can_be_defaulted_to_null (line 36) | @Test
method multi_props_can_be_required (line 52) | @Test
method multi_props_can_be_non_leafs (line 66) | @Test
method nonexistent_non_leaf_multi_props_ignored (line 73) | @Test
method multi_props_with_post_filter (line 80) | @Test
method deep_scan_does_not_affect_non_leaf_multi_props (line 87) | @Test
method multi_props_can_be_in_the_middle (line 98) | @Test
method non_leaf_multi_props_can_be_required (line 114) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/OptionsTest.java
class OptionsTest (line 18) | public class OptionsTest extends BaseTest {
method a_leafs_is_not_defaulted_to_null (line 20) | @Test
method a_leafs_can_be_defaulted_to_null (line 28) | @Test
method a_definite_path_is_not_returned_as_list_by_default (line 36) | @Test
method a_definite_path_can_be_returned_as_list (line 44) | @Test
method an_indefinite_path_can_be_returned_as_list (line 57) | @Test
method a_path_evaluation_is_returned_as_VALUE_by_default (line 69) | @Test
method a_path_evaluation_can_be_returned_as_PATH_LIST (line 76) | @Test
method multi_properties_are_merged_by_default (line 85) | @Test
method when_property_is_required_exception_is_thrown (line 105) | @Test
method when_property_is_required_exception_is_thrown_2 (line 123) | @Test
method issue_suppress_exceptions_does_not_break_indefinite_evaluation (line 144) | @Test
method isbn_is_defaulted_when_option_is_provided (line 157) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java
class PathCompilerTest (line 12) | public class PathCompilerTest {
method a_path_must_start_with_$_or_at (line 15) | @Disabled("Backward compatibility <= 2.0.0")
method a_square_bracket_may_not_follow_a_period (line 21) | @Disabled("Backward compatibility <= 2.0.0")
method a_root_path_must_be_followed_by_period_or_bracket (line 27) | @Test
method a_root_path_can_be_compiled (line 32) | @Test
method a_path_may_not_end_with_period (line 38) | @Test
method a_path_may_not_end_with_period_2 (line 43) | @Test
method a_path_may_not_end_with_scan (line 48) | @Test
method a_path_may_not_end_with_scan_2 (line 53) | @Test
method a_property_token_can_be_compiled (line 58) | @Test
method a_bracket_notation_property_token_can_be_compiled (line 65) | @Test
method a_multi_property_token_can_be_compiled (line 74) | @Test
method a_property_chain_can_be_compiled (line 80) | @Test
method a_property_may_not_contain_blanks (line 87) | @Test
method a_wildcard_can_be_compiled (line 92) | @Test
method a_wildcard_can_follow_a_property (line 99) | @Test
method an_array_index_path_can_be_compiled (line 105) | @Test
method an_array_slice_path_can_be_compiled (line 112) | @Test
method an_inline_criteria_can_be_parsed (line 119) | @Test
method a_placeholder_criteria_can_be_parsed (line 125) | @Test
method a_scan_token_can_be_parsed (line 139) | @Test
method issue_predicate_can_have_escaped_backslash_in_prop (line 144) | @Test
method issue_predicate_can_have_bracket_in_regex (line 161) | @Test
method issue_predicate_can_have_and_in_regex (line 177) | @Test
method issue_predicate_can_have_and_in_prop (line 193) | @Test
method issue_predicate_brackets_must_change_priorities (line 209) | @Test
method issue_predicate_or_has_lower_priority_than_and (line 226) | @Test
method issue_predicate_can_have_double_quotes (line 240) | @Test
method issue_predicate_can_have_single_quotes (line 253) | @Test
method issue_predicate_can_have_single_quotes_escaped (line 268) | @Test
method issue_predicate_can_have_square_bracket_in_prop (line 283) | @Test
method a_function_can_be_compiled (line 299) | @Test
method array_indexes_must_be_separated_by_commas (line 307) | @Test
method trailing_comma_after_list_is_not_accepted (line 312) | @Test
method accept_only_a_single_comma_between_indexes (line 317) | @Test
method property_must_be_separated_by_commas (line 322) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/PredicateTest.java
class PredicateTest (line 11) | public class PredicateTest extends BaseTest {
method predicates_filters_can_be_applied (line 15) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/ProviderInTest.java
class ProviderInTest (line 14) | public class ProviderInTest {
method testJsonPathQuotesJackson (line 26) | @Test
method testJsonPathQuotesJacksonJsonNode (line 45) | @Test
method testJsonPathQuotesJackson3 (line 63) | @Test
method testJsonPathQuotesJackson3JsonNode (line 81) | @Test
method testJsonPathQuotesGson (line 99) | @Test
method testJsonPathQuotesJsonOrg (line 117) | @Test
method testJsonPathQuotesJsonSmart (line 135) | @Test
method testJsonPathQuotesJakarta (line 153) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/ReadContextTest.java
class ReadContextTest (line 8) | public class ReadContextTest extends BaseTest {
method json_can_be_fetched_as_string (line 10) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/ReturnTypeTest.java
class ReturnTypeTest (line 14) | @SuppressWarnings("ALL")
method assert_strings_can_be_read (line 20) | @Test
method assert_ints_can_be_read (line 25) | @Test
method assert_longs_can_be_read (line 30) | @Test
method assert_boolean_values_can_be_read (line 35) | @Test
method assert_null_values_can_be_read (line 40) | @Test
method assert_arrays_can_be_read (line 45) | @Test
method assert_maps_can_be_read (line 57) | @Test
method a_path_evaluation_can_be_returned_as_PATH_LIST (line 68) | @Test
method class_cast_exception_is_thrown_when_return_type_is_not_expected (line 82) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/ScientificNotationTest.java
class ScientificNotationTest (line 12) | public class ScientificNotationTest extends BaseTest {
method testScientificNotation (line 22) | @Test
method testScientificNotation_lt_gt (line 30) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/TapestryJsonProviderTest.java
class TapestryJsonProviderTest (line 13) | public class TapestryJsonProviderTest extends BaseTest {
method an_object_can_be_read (line 15) | @Test
method a_property_can_be_read (line 23) | @Test
method a_filter_can_be_applied (line 31) | @Test
method result_can_be_mapped_to_object (line 40) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/TestSuppressExceptions.java
class TestSuppressExceptions (line 15) | public class TestSuppressExceptions {
method testSuppressExceptionsIsRespected (line 17) | @Test
method testSuppressExceptionsIsRespectedPath (line 27) | @Test
method testSuppressExceptionsIsRespectedJackson3 (line 38) | @Test
method testSuppressExceptionsIsRespectedPathJackson3 (line 48) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/TestUtils.java
class TestUtils (line 7) | public final class TestUtils {
method TestUtils (line 8) | private TestUtils() {}
method assertEvaluationThrows (line 10) | public static void assertEvaluationThrows(final String json, final Str...
method assertEvaluationThrows (line 23) | public static void assertEvaluationThrows(final String json, final Str...
method assertHasNoResults (line 40) | public static void assertHasNoResults(final String json, final String ...
method assertHasOneResult (line 49) | public static void assertHasOneResult(final String json, final String ...
method assertHasResults (line 60) | public static void assertHasResults(final String json, final String pa...
FILE: json-path/src/test/java/com/jayway/jsonpath/WriteTest.java
class WriteTest (line 16) | public class WriteTest extends BaseTest {
method an_array_child_property_can_be_updated (line 20) | @Test
method an_root_property_can_be_updated (line 31) | @Test
method an_deep_scan_can_update (line 41) | @Test
method an_filter_can_update (line 52) | @Test
method a_path_can_be_deleted (line 62) | @Test
method operations_can_chained (line 72) | @Test
method an_array_can_be_updated (line 87) | @Test
method an_array_index_can_be_updated (line 95) | @Test
method an_array_slice_can_be_updated (line 103) | @Test
method an_array_criteria_can_be_updated (line 111) | @Test
method an_array_criteria_can_be_deleted (line 121) | @Test
method an_array_criteria_with_multiple_results_can_be_deleted (line 131) | @Test
method multi_prop_delete (line 142) | @Test
method multi_prop_update (line 150) | @Test
method multi_prop_update_not_all_defined (line 164) | @Test
method add_to_array (line 177) | @Test
method add_to_object (line 183) | @Test
method item_can_be_added_to_root_array (line 189) | @Test
method key_val_can_be_added_to_root_object (line 200) | @Test
method add_to_object_on_array (line 210) | @Test
method add_to_array_on_object (line 215) | @Test
method root_object_can_not_be_updated (line 221) | @Test
method a_path_can_be_renamed (line 229) | @Test
method keys_in_root_containing_map_can_be_renamed (line 237) | @Test
method map_array_items_can_be_renamed (line 244) | @Test
method non_map_array_items_cannot_be_renamed (line 251) | @Test
method multiple_properties_cannot_be_renamed (line 259) | @Test
method non_existent_key_rename_not_allowed (line 264) | @Test
method rootCannotBeMapped (line 269) | @Test
method single_match_value_can_be_mapped (line 280) | @Test
method object_can_be_mapped (line 287) | @Test
method multi_match_path_can_be_mapped (line 299) | @Test
class ToStringMapFunction (line 314) | private class ToStringMapFunction implements MapFunction {
method map (line 316) | @Override
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/JsonContextTest.java
class JsonContextTest (line 13) | public class JsonContextTest extends BaseTest {
method cached_path_with_predicates (line 15) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/UtilsTest.java
class UtilsTest (line 9) | public class UtilsTest {
method testJoin (line 12) | @Test
method testConcat (line 23) | @Test
method testEscape (line 33) | @Test
method testUnescape (line 41) | @Test
method testUnescapeThrow (line 59) | @Test
method testHex (line 64) | @Test
method testIsEmpty (line 70) | @Test
method testIndexOf (line 78) | @Test
method testNotNull (line 86) | @Test
method testNotNullThrow (line 92) | @Test
method testCloseQuietly (line 97) | @Test
method testIsTrue (line 102) | @Test
method testIsTrueThrow (line 107) | @Test
method testOnlyOneIsTrueThrow1 (line 112) | @Test
method testOnlyOneIsTrueThrow2 (line 117) | @Test
method testOnlyOneIsTrueNonThrow (line 122) | @Test
method testNotEmpty (line 131) | @Test
method testNotEmptyThrowNull (line 137) | @Test
method testNotEmptyThrowLength0 (line 142) | @Test
method testToString (line 147) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/filter/PatternFlagTest.java
class PatternFlagTest (line 12) | public class PatternFlagTest extends BaseTest {
method testParseFlags (line 15) | @ParameterizedTest
method testData (line 21) | public static Stream<Arguments> testData() {
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/filter/RegexpEvaluatorTest.java
class RegexpEvaluatorTest (line 20) | public class RegexpEvaluatorTest extends BaseTest {
method should_evaluate_regular_expression (line 23) | @ParameterizedTest
method testData (line 38) | public static Stream<Arguments> testData() {
method path (line 64) | private static Path path() {
method json (line 68) | private static String json() {
method createPredicateContext (line 72) | private Predicate.PredicateContext createPredicateContext() {
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/filter/RelationalOperatorTest.java
class RelationalOperatorTest (line 11) | public class RelationalOperatorTest {
method saveDefaultLocale (line 15) | @BeforeEach
method restoreDefaultLocale (line 20) | @AfterEach
method testFromStringWithEnglishLocale (line 25) | @Test
method testFromStringWithTurkishLocale (line 32) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/BaseFunctionTest.java
class BaseFunctionTest (line 14) | public class BaseFunctionTest {
method verifyFunction (line 31) | protected void verifyFunction(Configuration conf, String pathExpr, Str...
method verifyMathFunction (line 36) | protected void verifyMathFunction(Configuration conf, String pathExpr,...
method verifyTextFunction (line 40) | protected void verifyTextFunction(Configuration conf, String pathExpr,...
method verifyTextAndNumberFunction (line 44) | protected void verifyTextAndNumberFunction(Configuration conf, String ...
method getResourceAsText (line 48) | protected String getResourceAsText(String resourceName) throws IOExcep...
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue191.java
class Issue191 (line 17) | public class Issue191 {
method testResultSetNumericComputation (line 21) | @Test
method testResultSetNumericComputationTail (line 28) | @Test
method testResultSetNumericComputationRecursiveReplacement (line 35) | @Test
method testMultipleResultSetSums (line 42) | @Test
method testConcatResultSet (line 49) | @Test
method testConcatWithNumericValueAsString (line 56) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue234.java
class Issue234 (line 26) | public class Issue234 {
method testIssue234 (line 28) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue273.java
class Issue273 (line 8) | public class Issue273 {
method testGetPropertyFromArray (line 9) | @Test
method testGetPropertyFromObject (line 50) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue612.java
class Issue612 (line 10) | public class Issue612 {
method test (line 11) | @Test
method test2 (line 23) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue629.java
class Issue629 (line 12) | public class Issue629 {
method testUncloseParenthesis (line 13) | @Test
method testUncloseParenthesisWithNestedCall (line 23) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue680.java
class Issue680 (line 11) | public class Issue680 {
method testIssue680concat (line 13) | @Test
method testIssue680min (line 23) | @Test
method testIssue680concat_2 (line 33) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/JSONEntityPathFunctionTest.java
class JSONEntityPathFunctionTest (line 14) | public class JSONEntityPathFunctionTest extends BaseFunctionTest {
method testLengthOfTextArray (line 57) | @Test
method testLengthOfNumberArray (line 63) | @Test
method testLengthOfStructure (line 71) | @Test
method testPredicateWithFunctionCallSingleMatch (line 86) | @Test
method testPredicateWithFunctionCallTwoMatches (line 97) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/KeySetFunctionTest.java
class KeySetFunctionTest (line 15) | public class KeySetFunctionTest extends BaseFunctionTest {
method testKeySet (line 19) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/NestedFunctionTest.java
class NestedFunctionTest (line 16) | public class NestedFunctionTest extends BaseFunctionTest {
method configurations (line 20) | public static Iterable<Configuration> configurations() {
method testParameterAverageFunctionCall (line 25) | @ParameterizedTest
method testArrayAverageFunctionCall (line 32) | @ParameterizedTest
method testArrayAverageFunctionCallWithParameters (line 47) | @ParameterizedTest
method testJsonInnerArgumentArray (line 54) | @ParameterizedTest
method testSimpleLiteralArgument (line 61) | @ParameterizedTest
method testStringConcat (line 69) | @ParameterizedTest
method testStringAndNumberConcat (line 76) | @ParameterizedTest
method testStringConcatWithJSONParameter (line 83) | @ParameterizedTest
method testAppendNumber (line 90) | @ParameterizedTest
method testAppendTextAndNumberThenSum (line 100) | @ParameterizedTest
method testErrantCloseBraceNegative (line 107) | @ParameterizedTest
method testErrantCloseBracketNegative (line 119) | @ParameterizedTest
method testUnclosedFunctionCallNegative (line 131) | @ParameterizedTest
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/NumericPathFunctionTest.java
class NumericPathFunctionTest (line 24) | public class NumericPathFunctionTest extends BaseFunctionTest {
method configurations (line 26) | public static Iterable<Configuration> configurations() {
method testAverageOfDoubles (line 31) | @ParameterizedTest
method testAverageOfEmptyListNegative (line 37) | @ParameterizedTest
method testSumOfDouble (line 47) | @ParameterizedTest
method testSumOfEmptyListNegative (line 53) | @ParameterizedTest
method testMaxOfDouble (line 63) | @ParameterizedTest
method testMaxOfEmptyListNegative (line 69) | @ParameterizedTest
method testMinOfDouble (line 79) | @ParameterizedTest
method testMinOfEmptyListNegative (line 85) | @ParameterizedTest
method testStdDevOfDouble (line 96) | @ParameterizedTest
method testStddevOfEmptyListNegative (line 102) | @ParameterizedTest
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/function/SequentialPathFunctionTest.java
class SequentialPathFunctionTest (line 16) | public class SequentialPathFunctionTest extends BaseFunctionTest {
method testFirstOfNumbers (line 20) | @Test
method testLastOfNumbers (line 25) | @Test
method testIndexOfNumbers (line 30) | @Test
method testFirstOfText (line 37) | @Test
method testLastOfText (line 42) | @Test
method testIndexOfText (line 47) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/internal/path/PathTokenTest.java
class PathTokenTest (line 10) | public class PathTokenTest extends BaseTest {
method is_upstream_definite_in_simple_case (line 12) | @Test
method is_upstream_definite_in_complex_case (line 25) | @Test
method makePPT (line 35) | private PathToken makePPT(final String ... properties) {
method makePathReturningTail (line 39) | private PathToken makePathReturningTail(final PathToken ... tokens) {
FILE: json-path/src/test/java/com/jayway/jsonpath/issue_613.java
class issue_613 (line 15) | public class issue_613 extends BaseTest{
method issue_613_eq_ne_test (line 25) | @Test
method issue_613_lt_lte_test (line 30) | @Test
method issue_613_gt_gte_test (line 35) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/ArraySlicingTest.java
class ArraySlicingTest (line 30) | public class ArraySlicingTest {
method get_by_position (line 34) | @Test
method get_from_index (line 40) | @Test
method get_between_index (line 46) | @Test
method get_between_index_2 (line 53) | @Test
method get_between_index_3 (line 59) | @Test
method get_between_index_out_of_bounds (line 65) | @Test
method get_from_tail_index (line 71) | @Test
method get_from_tail (line 77) | @Test
method get_indexes (line 83) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/ComplianceTest.java
class ComplianceTest (line 17) | public class ComplianceTest {
method test_one (line 19) | @Test
method test_two (line 35) | @Test
method test_three (line 53) | @Test
method test_four (line 78) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/FilterTest.java
class FilterTest (line 21) | public class FilterTest extends BaseTest {
method is_filters_evaluates (line 62) | public void is_filters_evaluates() throws Exception {
method ne_filters_evaluates (line 74) | @Test
method gt_filters_evaluates (line 86) | @Test
method gte_filters_evaluates (line 98) | @Test
method lt_filters_evaluates (line 111) | @Test
method lte_filters_evaluates (line 123) | @Test
method in_filters_evaluates (line 135) | @Test
method nin_filters_evaluates (line 152) | @Test
method all_filters_evaluates (line 168) | @Test
method size_filters_evaluates (line 177) | @Test
method exists_filters_evaluates (line 188) | @Test
method type_filters_evaluates (line 204) | @Test
method pattern_filters_evaluates (line 231) | @Test
method combine_filter_deep_criteria (line 244) | @Test
method filters_can_be_combined (line 288) | @Test
method arrays_of_maps_can_be_filtered (line 306) | @Test
method arrays_of_objects_can_be_filtered (line 354) | @Test
method filters_can_contain_json_path_expressions (line 371) | @Test
method not_empty_filter_evaluates (line 378) | @Test
method contains_filter_evaluates_on_array (line 412) | @Test
method contains_filter_evaluates_on_string (line 458) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java
class IssuesTest (line 37) | public class IssuesTest extends BaseTest {
method issue_143 (line 41) | @Test
method issue_114_a (line 53) | @Test
method issue_114_b (line 64) | @Test
method issue_114_c (line 72) | @Test
method issue_114_d (line 80) | @Test
method issue_151 (line 86) | @Test
method full_ones_can_be_filtered (line 118) | @Test
method issue_36 (line 131) | @Test
method issue_11 (line 148) | @Test
method issue_11b (line 155) | @Test
method issue_15 (line 161) | @Test
method issue_24 (line 198) | @Test
method issue_28_string (line 219) | @Test
method issue_37 (line 229) | @Test
method issue_38 (line 255) | @Test
method issue_39 (line 276) | @Test
method issue_28_int (line 291) | @Test
method issue_28_boolean (line 301) | @Test
method issue_22 (line 312) | @Test
method issue_22c (line 321) | @Test
method issue_22b (line 331) | @Test
method issue_26 (line 338) | @Test
method issue_29_a (line 344) | @Test
method issue_29_b (line 360) | @Test
method issue_30 (line 368) | @Test
method issue_32 (line 376) | @Test
method issue_33 (line 382) | @Test
method array_root (line 414) | @Test
method a_test (line 428) | @Test
method issue_42 (line 446) | @Test
method issue_43 (line 460) | @Test
method issue_45 (line 488) | @Test
method issue_46 (line 495) | @Test
method issue_x (line 513) | @Test
method issue_60 (line 529) | @Test
method stack_overflow_question_1 (line 585) | @Test
method issue_71 (line 628) | @Test
method issue_76 (line 644) | @Test
method issue_79 (line 659) | @Test
method issue_94_1 (line 677) | @Test
method issue_94_2 (line 689) | @Test
method issue_97 (line 737) | @Test
method issue_99 (line 766) | @Test
method issue_129 (line 789) | @Test
method createPredicateContext (line 812) | private PredicateContext createPredicateContext(final Map<String, Inte...
method issue_131 (line 836) | @Test
method issue_131_2 (line 857) | @Test
method issue_131_3 (line 883) | @Test
method using_square_bracket_literal_path (line 904) | @Test
method issue_90 (line 914) | @Test
method github_89 (line 945) | @Test
method issue_170 (line 956) | @Test
method issue_170_jackson3 (line 977) | @Test
method issue_171 (line 998) | @Test
method issue_171_jackson3 (line 1016) | @Test
method issue_309 (line 1034) | @Test
method issue_378 (line 1054) | @Test
method issue_620_1 (line 1081) | @Test
method issue_620_2 (line 1114) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java
class JsonPathTest (line 16) | public class JsonPathTest extends BaseTest {
method missing_prop (line 80) | @Test
method bracket_notation_with_dots (line 88) | @Test
method null_object_in_path (line 106) | @Test
method array_start_expands (line 133) | @Test
method bracket_notation_can_be_used_in_path (line 139) | @Test
method filter_an_array (line 154) | @Test
method filter_an_array_on_index (line 161) | @Test
method read_path_with_colon (line 168) | @Test
method read_document_from_root (line 173) | @Test
method read_store_book_1 (line 181) | @Test
method read_store_book_wildcard (line 191) | @Test
method read_store_book_author (line 200) | @Test
method all_authors (line 209) | @Test
method all_store_properties (line 215) | @Test
method all_prices_in_store (line 230) | @Test
method access_array_by_index_from_tail (line 236) | @Test
method read_store_book_index_0_and_1 (line 241) | @Test
method read_store_book_pull_first_2 (line 247) | @Test
method read_store_book_filter_by_isbn (line 254) | @Test
method all_books_cheaper_than_10 (line 261) | @Test
method all_books (line 267) | @Test
method dot_in_predicate_works (line 272) | @Test
method dots_in_predicate_works (line 277) | @Test
method all_books_with_category_reference (line 282) | @Test
method all_members_of_all_documents (line 288) | @Test
method access_index_out_of_bounds_does_not_throw_exception (line 293) | @Test
method exists_filter_with_nested_path (line 298) | @Test
method invalid_paths_throw_invalid_path_exception (line 305) | @Test
method prevent_stack_overflow_error_when_unclosed_property (line 319) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/JsonProviderTest.java
class JsonProviderTest (line 6) | public class JsonProviderTest {
method parse_document (line 50) | @Test
method parse_array (line 60) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/NullHandlingTest.java
class NullHandlingTest (line 15) | public class NullHandlingTest {
method not_defined_property_throws_PathNotFoundException (line 39) | @Test
method last_token_defaults_to_null (line 45) | @Test
method null_property_returns_null (line 53) | @Test
method the_age_of_all_with_age_defined (line 59) | @Test
method path2 (line 68) | @Test
method path (line 74) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/ArrayIndexFilterTest.java
class ArrayIndexFilterTest (line 12) | public class ArrayIndexFilterTest {
method tail_does_not_throw_when_index_out_of_bounds (line 16) | @Test
method head_does_not_throw_when_index_out_of_bounds (line 22) | @Test
method head_grabs_correct (line 28) | @Test
method tail_grabs_correct (line 35) | @Test
method head_tail_grabs_correct (line 41) | @Test
method can_access_items_from_end_with_negative_index (line 47) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/ArrayPathTokenTest.java
class ArrayPathTokenTest (line 12) | public class ArrayPathTokenTest extends TestBase {
method array_can_select_multiple_indexes (line 16) | @Test
method array_can_be_sliced_to_2 (line 26) | @Test
method array_can_be_sliced_to_2_from_tail (line 37) | @Test
method array_can_be_sliced_from_2 (line 48) | @Test
method array_can_be_sliced_from_2_from_tail (line 59) | @Test
method array_can_be_sliced_between (line 70) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/PredicatePathTokenTest.java
class PredicatePathTokenTest (line 14) | public class PredicatePathTokenTest {
method a_filter_predicate_can_be_evaluated_on_string_criteria (line 87) | @Test
method a_filter_predicate_can_be_evaluated_on_int_criteria (line 95) | @Test
method a_filter_predicate_can_be_evaluated_on_decimal_criteria (line 104) | @Test
method multiple_criteria_can_be_used (line 113) | @Test
method field_existence_can_be_checked (line 122) | @Test
method boolean_criteria_evaluates (line 131) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/PropertyPathTokenTest.java
class PropertyPathTokenTest (line 17) | public class PropertyPathTokenTest {
method property_not_found (line 41) | @Test
method property_not_found_deep (line 56) | @Test
method property_not_found_option_throw (line 61) | @Test
method map_value_can_be_read_from_map (line 66) | @Test
method map_value_can_be_read_from_array (line 74) | @Test
method map_value_can_be_read_from_child_map (line 82) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/ScanPathTokenTest.java
class ScanPathTokenTest (line 12) | public class ScanPathTokenTest {
method a_document_can_be_scanned_for_property (line 89) | @Test
method a_document_can_be_scanned_for_property_path (line 97) | @Test
method a_document_can_be_scanned_for_wildcard (line 105) | @Test
method a_document_can_be_scanned_for_wildcard2 (line 156) | @Test
method a_document_can_be_scanned_for_wildcard3 (line 172) | @Test
method a_document_can_be_scanned_for_predicate_match (line 183) | @Test
method a_document_can_be_scanned_for_existence (line 194) | @Test
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/TestBase.java
class TestBase (line 8) | public class TestBase {
FILE: json-path/src/test/java/com/jayway/jsonpath/old/internal/TestInternal3.java
class TestInternal3 (line 14) | public class TestInternal3 extends TestBase {
method a_root_object_can_be_evaluated (line 30) | @Test
method a_definite_array_item_property_can_be_evaluated (line 39) | @Test
method a_wildcard_array_item_property_can_be_evaluated (line 47) | @Test
Condensed preview — 235 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,184K chars).
[
{
"path": ".github/workflows/ci.yml",
"chars": 742,
"preview": "---\nname: Java CI\n\non:\n push:\n pull_request:\n\njobs:\n test:\n runs-on: ubuntu-latest\n strategy:\n matrix:\n "
},
{
"path": ".gitignore",
"chars": 146,
"preview": ".idea/\ntarget\n*.iws\n*.ipr\n*.iml\n.classpath\n.project\n.settings\n.springBeans\n.DS_Store\n.gradle\n.java-version\nTODO\ngradle.p"
},
{
"path": ".travis.yml",
"chars": 117,
"preview": "language: java\n\nsudo: false\n\njdk:\n - openjdk17\n\ncache:\n directories:\n - $HOME/.gradle\n\narch:\n - amd64\n - ppc64le\n"
},
{
"path": "LICENSE",
"chars": 11337,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "Procfile",
"chars": 173,
"preview": "web: java $JAVA_OPTS -Dserver.http.port=$PORT -DresourceBase=json-path-web-test/build/resources/main/webapp/ -jar json-"
},
{
"path": "README.md",
"chars": 21058,
"preview": "Jayway JsonPath\n=====================\n\n**A Java DSL for reading JSON documents.**\n\n[\n maven {\n url \"https://plugins.gradle.org/m2/\""
},
{
"path": "changelog.md",
"chars": 3693,
"preview": "2.2.0 (2016-02-29)\n===========\n* Upgraded dependency versions\n* Hamcrest-matcher support in json-path-assert\n* Bug fixes"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradlew",
"chars": 8047,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "gradlew.bat",
"chars": 2763,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "json-path/build.gradle",
"chars": 1160,
"preview": "description = \"Java port of Stefan Goessner JsonPath.\"\n\njar {\n bnd(\n 'Automatic-Module-Name': 'json.path',"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/Configuration.java",
"chars": 9807,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/Criteria.java",
"chars": 15152,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/DocumentContext.java",
"chars": 715,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/EvaluationListener.java",
"chars": 1697,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/Filter.java",
"chars": 5198,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/InvalidCriteriaException.java",
"chars": 1064,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/InvalidJsonException.java",
"chars": 1563,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/InvalidModificationException.java",
"chars": 804,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/InvalidPathException.java",
"chars": 1045,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/JsonPath.java",
"chars": 28577,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/JsonPathException.java",
"chars": 1001,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/MapFunction.java",
"chars": 805,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/Option.java",
"chars": 2299,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/ParseContext.java",
"chars": 1243,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/PathNotFoundException.java",
"chars": 1122,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/Predicate.java",
"chars": 1512,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/ReadContext.java",
"chars": 3239,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/TypeRef.java",
"chars": 1651,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/ValueCompareException.java",
"chars": 1316,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/WriteContext.java",
"chars": 5042,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/CharacterIndex.java",
"chars": 9912,
"preview": "package com.jayway.jsonpath.internal;\n\nimport com.jayway.jsonpath.InvalidPathException;\n\npublic class CharacterIndex {\n\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/DefaultsImpl.java",
"chars": 919,
"preview": "package com.jayway.jsonpath.internal;\n\nimport com.jayway.jsonpath.Configuration.Defaults;\nimport com.jayway.jsonpath.Opt"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/EvaluationAbortException.java",
"chars": 343,
"preview": "package com.jayway.jsonpath.internal;\n\npublic class EvaluationAbortException extends RuntimeException {\n\n private stati"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/EvaluationContext.java",
"chars": 2058,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/JsonContext.java",
"chars": 8038,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/JsonFormatter.java",
"chars": 4209,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/ParseContextImpl.java",
"chars": 2583,
"preview": "package com.jayway.jsonpath.internal;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.DocumentCont"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/Path.java",
"chars": 1961,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/PathRef.java",
"chars": 12086,
"preview": "package com.jayway.jsonpath.internal;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.InvalidModif"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java",
"chars": 16992,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/Evaluator.java",
"chars": 202,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.Predicate;\n\npublic interface Evaluator {\n bo"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/EvaluatorFactory.java",
"chars": 17743,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.JsonPathException;\nimport com.jayway.jsonpath.P"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/ExpressionNode.java",
"chars": 1063,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.Predicate;\n\npublic abstract class ExpressionNod"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/FilterCompiler.java",
"chars": 17426,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.Filter;\nimport com.jayway.jsonpath.InvalidPathE"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/LogicalExpressionNode.java",
"chars": 2846,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.internal.Utils;\n\nimport java.util.ArrayList;\nim"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/LogicalOperator.java",
"chars": 846,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.InvalidPathException;\n\npublic enum LogicalOpera"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/PatternFlag.java",
"chars": 1382,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport java.util.regex.Pattern;\n\npublic enum PatternFlag {\n UNIX_LINES("
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/RelationalExpressionNode.java",
"chars": 1457,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class Rel"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/RelationalOperator.java",
"chars": 1314,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.InvalidPathException;\n\nimport java.util.Locale;"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNode.java",
"chars": 6744,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.InvalidPathException;\nimport com.jayway.jsonpat"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/filter/ValueNodes.java",
"chars": 20831,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport java.math.BigDecimal;\nimport java.time.OffsetDateTime;\nimport java."
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/ParamType.java",
"chars": 139,
"preview": "package com.jayway.jsonpath.internal.function;\n\n/**\n * Created by mgreenwood on 12/11/15.\n */\npublic enum ParamType {\n "
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/Parameter.java",
"chars": 3805,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.jayway"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/PassthruPathFunction.java",
"chars": 546,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.jayway"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunction.java",
"chars": 1363,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.jayway"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/PathFunctionFactory.java",
"chars": 3054,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.InvalidPathException;\nimport com.jayway.jsonp"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/json/Append.java",
"chars": 1248,
"preview": "package com.jayway.jsonpath.internal.function.json;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.j"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/json/KeySetFunction.java",
"chars": 753,
"preview": "package com.jayway.jsonpath.internal.function.json;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.j"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/latebinding/ILateBindingValue.java",
"chars": 1216,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/latebinding/JsonLateBindingValue.java",
"chars": 1578,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/latebinding/PathLateBindingValue.java",
"chars": 2153,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/AbstractAggregation.java",
"chars": 2055,
"preview": "package com.jayway.jsonpath.internal.function.numeric;\n\nimport com.jayway.jsonpath.JsonPathException;\nimport com.jayway."
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Average.java",
"chars": 550,
"preview": "package com.jayway.jsonpath.internal.function.numeric;\n\n/**\n * Provides the average of a series of numbers in a JSONArra"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Max.java",
"chars": 484,
"preview": "package com.jayway.jsonpath.internal.function.numeric;\n\n/**\n * Defines the summation of a series of JSONArray numerical "
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Min.java",
"chars": 484,
"preview": "package com.jayway.jsonpath.internal.function.numeric;\n\n/**\n * Defines the summation of a series of JSONArray numerical "
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/StandardDeviation.java",
"chars": 601,
"preview": "package com.jayway.jsonpath.internal.function.numeric;\n\n/**\n * Provides the standard deviation of a series of numbers\n *"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/numeric/Sum.java",
"chars": 434,
"preview": "package com.jayway.jsonpath.internal.function.numeric;\n\n/**\n * Defines the summation of a series of JSONArray numerical "
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/AbstractSequenceAggregation.java",
"chars": 1938,
"preview": "package com.jayway.jsonpath.internal.function.sequence;\n\nimport com.jayway.jsonpath.JsonPathException;\nimport com.jayway"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/First.java",
"chars": 470,
"preview": "package com.jayway.jsonpath.internal.function.sequence;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport c"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/Index.java",
"chars": 548,
"preview": "package com.jayway.jsonpath.internal.function.sequence;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport c"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/sequence/Last.java",
"chars": 470,
"preview": "package com.jayway.jsonpath.internal.function.sequence;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport c"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Concatenate.java",
"chars": 1235,
"preview": "package com.jayway.jsonpath.internal.function.text;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.j"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/function/text/Length.java",
"chars": 3173,
"preview": "package com.jayway.jsonpath.internal.function.text;\n\nimport com.jayway.jsonpath.internal.EvaluationContext;\nimport com.j"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/ArrayIndexOperation.java",
"chars": 1889,
"preview": "package com.jayway.jsonpath.internal.path;\n\nimport com.jayway.jsonpath.InvalidPathException;\nimport com.jayway.jsonpath."
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/ArrayIndexToken.java",
"chars": 1747,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/ArrayPathToken.java",
"chars": 2102,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/ArraySliceOperation.java",
"chars": 2333,
"preview": "package com.jayway.jsonpath.internal.path;\n\nimport com.jayway.jsonpath.InvalidPathException;\n\nimport static java.lang.Ch"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/ArraySliceToken.java",
"chars": 3751,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/CompiledPath.java",
"chars": 4622,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/EvaluationContextImpl.java",
"chars": 6418,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/FunctionPathToken.java",
"chars": 4334,
"preview": "package com.jayway.jsonpath.internal.path;\n\nimport com.jayway.jsonpath.internal.Path;\nimport com.jayway.jsonpath.interna"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PathCompiler.java",
"chars": 24990,
"preview": "package com.jayway.jsonpath.internal.path;\n\nimport com.jayway.jsonpath.InvalidPathException;\nimport com.jayway.jsonpath."
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PathToken.java",
"chars": 8743,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PathTokenAppender.java",
"chars": 138,
"preview": "package com.jayway.jsonpath.internal.path;\n\npublic interface PathTokenAppender {\n PathTokenAppender appendPathToken(P"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PathTokenFactory.java",
"chars": 1726,
"preview": "package com.jayway.jsonpath.internal.path;\n\nimport com.jayway.jsonpath.Predicate;\nimport com.jayway.jsonpath.internal.fu"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PredicateContextImpl.java",
"chars": 2767,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PredicatePathToken.java",
"chars": 3469,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/PropertyPathToken.java",
"chars": 3925,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/RootPathToken.java",
"chars": 2284,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/ScanPathToken.java",
"chars": 7449,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/internal/path/WildcardPathToken.java",
"chars": 1942,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/cache/Cache.java",
"chars": 518,
"preview": "package com.jayway.jsonpath.spi.cache;\n\nimport com.jayway.jsonpath.InvalidJsonException;\nimport com.jayway.jsonpath.Json"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/cache/CacheProvider.java",
"chars": 1920,
"preview": "package com.jayway.jsonpath.spi.cache;\n\nimport com.jayway.jsonpath.JsonPathException;\n\nimport java.util.concurrent.atomi"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/cache/LRUCache.java",
"chars": 2843,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/cache/NOOPCache.java",
"chars": 273,
"preview": "package com.jayway.jsonpath.spi.cache;\n\nimport com.jayway.jsonpath.JsonPath;\n\npublic class NOOPCache implements Cache {\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/AbstractJsonProvider.java",
"chars": 5067,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/GsonJsonProvider.java",
"chars": 8480,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/Jackson3JsonNodeJsonProvider.java",
"chars": 9336,
"preview": "package com.jayway.jsonpath.spi.json;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStrea"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/Jackson3JsonProvider.java",
"chars": 3798,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonNodeJsonProvider.java",
"chars": 9349,
"preview": "package com.jayway.jsonpath.spi.json;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.data"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JacksonJsonProvider.java",
"chars": 3915,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JakartaJsonProvider.java",
"chars": 30544,
"preview": "package com.jayway.jsonpath.spi.json;\r\n\r\nimport com.jayway.jsonpath.InvalidJsonException;\r\nimport com.jayway.jsonpath.Js"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JettisonProvider.java",
"chars": 10043,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonOrgJsonProvider.java",
"chars": 6209,
"preview": "package com.jayway.jsonpath.spi.json;\n\nimport org.json.JSONObject;\nimport com.jayway.jsonpath.InvalidJsonException;\nimpo"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProvider.java",
"chars": 4951,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonSmartJsonProvider.java",
"chars": 3144,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/json/TapestryJsonProvider.java",
"chars": 2626,
"preview": "package com.jayway.jsonpath.spi.json;\n\nimport com.jayway.jsonpath.InvalidJsonException;\nimport org.apache.tapestry5.json"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/GsonMappingProvider.java",
"chars": 2759,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/Jackson3MappingProvider.java",
"chars": 1903,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JacksonMappingProvider.java",
"chars": 1912,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JakartaMappingProvider.java",
"chars": 26132,
"preview": "/*\r\n * Copyright 2011 the original author or authors.\r\n * Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JsonOrgMappingProvider.java",
"chars": 1806,
"preview": "package com.jayway.jsonpath.spi.mapper;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.TypeRef;\ni"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/JsonSmartMappingProvider.java",
"chars": 10246,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/MappingException.java",
"chars": 915,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/MappingProvider.java",
"chars": 1505,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/main/java/com/jayway/jsonpath/spi/mapper/TapestryMappingProvider.java",
"chars": 1959,
"preview": "/*\n * Copyright 2011 the original author or authors.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/BaseTest.java",
"chars": 7565,
"preview": "package com.jayway.jsonpath;\n\nimport com.jayway.jsonpath.internal.Path;\nimport com.jayway.jsonpath.internal.path.Predica"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Configurations.java",
"chars": 3657,
"preview": "package com.jayway.jsonpath;\n\nimport com.jayway.jsonpath.spi.json.GsonJsonProvider;\nimport com.jayway.jsonpath.spi.json."
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/DeepScanTest.java",
"chars": 11995,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/EscapeTest.java",
"chars": 1038,
"preview": "package com.jayway.jsonpath;\n\nimport net.minidev.json.JSONStyle;\nimport net.minidev.json.JSONValue;\nimport org.junit.jup"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/EvaluationListenerTest.java",
"chars": 4356,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nim"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/FilterCompilerTest.java",
"chars": 6668,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport static com.jayway.jsonpath.internal.filter.Filt"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/FilterParseTest.java",
"chars": 8077,
"preview": "package com.jayway.jsonpath;\n\nimport org.assertj.core.api.Assertions;\nimport org.junit.jupiter.api.Test;\n\nimport java.ut"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/FilterTest.java",
"chars": 26920,
"preview": "package com.jayway.jsonpath;\n\nimport org.assertj.core.util.Lists;\nimport org.junit.jupiter.api.Test;\n\nimport java.util.H"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/GsonJsonProviderTest.java",
"chars": 8157,
"preview": "package com.jayway.jsonpath;\n\nimport com.google.gson.JsonArray;\nimport com.google.gson.JsonElement;\nimport com.google.gs"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/InlineFilterTest.java",
"chars": 12085,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.params.ParameterizedTest;\nimpo"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_487.java",
"chars": 933,
"preview": "package com.jayway.jsonpath;\r\n\r\nimport org.junit.jupiter.api.Test;\r\n\r\npublic class Issue_487 {\r\n\r\n public static fina"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_537.java",
"chars": 967,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.List;\n\npublic class Issue_537 {\n\n "
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_721.java",
"chars": 1263,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\npublic class Issue_721 {\n\n public static final Conf"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_762.java",
"chars": 437,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\n\n/**\n * test for issue 762\n */\n\npublic class Issue_762"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_786.java",
"chars": 560,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport static org.assertj.core.api.Assertions.assertTh"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_970.java",
"chars": 302,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport static org.assertj.core.api.Assertions.assertTh"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Issue_973.java",
"chars": 287,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport static org.assertj.core.api.Assertions.*;\n\npubl"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Jackson3JsonNodeJsonProviderMapperSupportTest.java",
"chars": 6731,
"preview": "package com.jayway.jsonpath;\n\nimport java.util.Arrays;\nimport java.util.List;\n\nimport tools.jackson.databind.JsonNode;\ni"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Jackson3JsonNodeJsonProviderTest.java",
"chars": 11359,
"preview": "package com.jayway.jsonpath;\n\nimport java.io.IOException;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimpo"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/Jackson3Test.java",
"chars": 2513,
"preview": "package com.jayway.jsonpath;\n\nimport java.util.Date;\n\nimport org.junit.jupiter.api.Test;\n\nimport static java.nio.charset"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JacksonJsonNodeJsonProviderMapperSupportTest.java",
"chars": 6742,
"preview": "package com.jayway.jsonpath;\n\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.Obje"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JacksonJsonNodeJsonProviderTest.java",
"chars": 11204,
"preview": "package com.jayway.jsonpath;\n\nimport com.fasterxml.jackson.annotation.JsonCreator;\nimport com.fasterxml.jackson.annotati"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JacksonTest.java",
"chars": 2506,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.Date;\n\nimport static java.nio.charset"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JakartaJsonProviderTest.java",
"chars": 15369,
"preview": "package com.jayway.jsonpath;\r\n\r\nimport jakarta.json.JsonObject;\r\nimport jakarta.json.JsonString;\r\nimport org.junit.jupit"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JsonOrgJsonProviderTest.java",
"chars": 3522,
"preview": "package com.jayway.jsonpath;\n\nimport com.jayway.jsonpath.spi.json.JsonOrgJsonProvider;\nimport com.jayway.jsonpath.spi.ma"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JsonProviderTest.java",
"chars": 1158,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.params.ParameterizedTest;\nimport org.junit.jupiter.params.provide"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/JsonProviderTestObjectMapping.java",
"chars": 2249,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.params.ParameterizedTest;\nimport org.junit.jupiter.params.provide"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/MapperTest.java",
"chars": 1931,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.math.BigDecimal;\nimport java.math.BigInteg"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/MultiPropTest.java",
"chars": 4746,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.Test;\n\nimport java.u"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/OptionsTest.java",
"chars": 6259,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimp"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/PathCompilerTest.java",
"chars": 11417,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Disabled;\nimport org.junit.jupiter.api.Test;\n\nimport java.uti"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/PredicateTest.java",
"chars": 781,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport s"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/ProviderInTest.java",
"chars": 8913,
"preview": "package com.jayway.jsonpath;\n\nimport com.fasterxml.jackson.databind.node.ArrayNode;\nimport com.google.gson.JsonArray;\nim"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/ReadContextTest.java",
"chars": 1088,
"preview": "package com.jayway.jsonpath;\n\nimport org.assertj.core.api.Assertions;\nimport org.junit.jupiter.api.Test;\n\nimport static "
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/ReturnTypeTest.java",
"chars": 2765,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.List;\nimport java.util.Map;\n\nimport s"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/ScientificNotationTest.java",
"chars": 1642,
"preview": "package com.jayway.jsonpath;\n\nimport com.google.gson.JsonArray;\nimport org.junit.jupiter.api.Test;\n\nimport java.util.Lis"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/TapestryJsonProviderTest.java",
"chars": 1312,
"preview": "package com.jayway.jsonpath;\n\nimport static com.jayway.jsonpath.JsonPath.using;\nimport static org.assertj.core.api.Asser"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/TestSuppressExceptions.java",
"chars": 2648,
"preview": "package com.jayway.jsonpath;\n\nimport com.jayway.jsonpath.spi.json.Jackson3JsonProvider;\nimport com.jayway.jsonpath.spi.j"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/TestUtils.java",
"chars": 2553,
"preview": "package com.jayway.jsonpath;\n\nimport static com.jayway.jsonpath.JsonPath.using;\nimport static org.assertj.core.api.Asser"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/WriteTest.java",
"chars": 10663,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.io.InputStream;\nimport java.util.HashMap;\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/JsonContextTest.java",
"chars": 945,
"preview": "package com.jayway.jsonpath.internal;\n\nimport com.jayway.jsonpath.BaseTest;\nimport com.jayway.jsonpath.Criteria;\nimport "
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/UtilsTest.java",
"chars": 5374,
"preview": "package com.jayway.jsonpath.internal;\n\nimport com.jayway.jsonpath.JsonPathException;\nimport org.junit.jupiter.api.Assert"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/filter/PatternFlagTest.java",
"chars": 1240,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.BaseTest;\nimport org.junit.jupiter.params.Param"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/filter/RegexpEvaluatorTest.java",
"chars": 3609,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport com.jayway.jsonpath.BaseTest;\nimport com.jayway.jsonpath.Predicate;"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/filter/RelationalOperatorTest.java",
"chars": 1068,
"preview": "package com.jayway.jsonpath.internal.filter;\n\nimport org.junit.jupiter.api.AfterEach;\nimport org.junit.jupiter.api.Befor"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/BaseFunctionTest.java",
"chars": 2216,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\n\nimport java.io.IOException;\ni"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue191.java",
"chars": 2939,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Con"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue234.java",
"chars": 1421,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.JsonPath;\nimport org.junit.jupiter.api.Test;\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue273.java",
"chars": 4098,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.JsonPath;\nimport net.minidev.json.JSONArray;\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue612.java",
"chars": 1246,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Doc"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue629.java",
"chars": 990,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.JsonPath;\nimport org.junit.jupiter.api.Test;\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/Issue680.java",
"chars": 1442,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.JsonPath;\nimport org.junit.jupiter.api.Test;\n"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/JSONEntityPathFunctionTest.java",
"chars": 3831,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Con"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/KeySetFunctionTest.java",
"chars": 727,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Con"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/NestedFunctionTest.java",
"chars": 4378,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Con"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/NumericPathFunctionTest.java",
"chars": 4034,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Con"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/function/SequentialPathFunctionTest.java",
"chars": 1537,
"preview": "package com.jayway.jsonpath.internal.function;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.Con"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/internal/path/PathTokenTest.java",
"chars": 1750,
"preview": "package com.jayway.jsonpath.internal.path;\n\nimport com.jayway.jsonpath.BaseTest;\nimport org.junit.jupiter.api.Test;\n\nimp"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/issue_613.java",
"chars": 1741,
"preview": "package com.jayway.jsonpath;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.time.OffsetDateTime;\nimport java.time.Zone"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/ArraySlicingTest.java",
"chars": 2828,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.jayway.jsonpath.JsonPath;\nimport org.hamcrest.Matchers;\nimport org.junit.ju"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/ComplianceTest.java",
"chars": 5753,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.jayway.jsonpath.JsonPath;\nimport org.hamcrest.Matchers;\nimport org.junit.ju"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/FilterTest.java",
"chars": 21024,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.jayway.jsonpath.*;\nimport com.jayway.jsonpath.spi.json.JsonProvider;\nimport"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java",
"chars": 38393,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.fasterxml.jackson.databind.node.ObjectNode;\nimport com.google.gson.JsonObje"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java",
"chars": 13561,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.jayway.jsonpath.*;\nimport com.jayway.jsonpath.internal.path.PathCompiler;\ni"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/JsonProviderTest.java",
"chars": 2378,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.jayway.jsonpath.spi.json.JacksonJsonProvider;\nimport org.junit.jupiter.api."
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/NullHandlingTest.java",
"chars": 2786,
"preview": "package com.jayway.jsonpath.old;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.JsonPath;\nimport "
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/ArrayIndexFilterTest.java",
"chars": 1552,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport com.jayway.jsonpath.JsonPath;\nimport org.hamcrest.Matchers;\nimport org"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/ArrayPathTokenTest.java",
"chars": 1913,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.List;\nimport java.util.M"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/PredicatePathTokenTest.java",
"chars": 4297,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.JsonPath"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/PropertyPathTokenTest.java",
"chars": 2690,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.JsonPath"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/ScanPathTokenTest.java",
"chars": 8432,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport com.jayway.jsonpath.Configuration;\nimport com.jayway.jsonpath.internal"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/TestBase.java",
"chars": 2824,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport com.jayway.jsonpath.Configuration;\n\n/**\n *\n */\npublic class TestBase {"
},
{
"path": "json-path/src/test/java/com/jayway/jsonpath/old/internal/TestInternal3.java",
"chars": 1805,
"preview": "package com.jayway.jsonpath.old.internal;\n\nimport org.junit.jupiter.api.Test;\n\nimport java.util.List;\nimport java.util.M"
},
{
"path": "json-path/src/test/resources/issue_191.json",
"chars": 49512,
"preview": "{\n \"activated_slaves\": 5,\n \"build_date\": \"2015-01-09 02:25:21\",\n \"build_time\": 1420770321,\n \"build_user\": \"r"
},
{
"path": "json-path/src/test/resources/issue_24.json",
"chars": 10239,
"preview": "{\n \"project\": {\n \"@key\": \"Signaturengruppe ars.hydr.\",\n \"template\": [\n {\n \"@k"
},
{
"path": "json-path/src/test/resources/issue_76.json",
"chars": 49512,
"preview": "{\n \"activated_slaves\": 5,\n \"build_date\": \"2015-01-09 02:25:21\",\n \"build_time\": 1420770321,\n \"build_user\": \"r"
},
{
"path": "json-path/src/test/resources/issue_76_2.json",
"chars": 67,
"preview": "{\n \"cpus\": -8.88178419700125e-16,\n \"disk\": 0,\n \"mem\": 0\n}\n"
},
{
"path": "json-path/src/test/resources/json-test-doc.json",
"chars": 747,
"preview": "{\n \"id\": 100,\n \"type\": \"donut\",\n \"name\": \"Cake\",\n \"available\": true,\n \"ppu\": 0.55,\n \"batters\":\n {\n "
},
{
"path": "json-path/src/test/resources/json_array.json",
"chars": 445,
"preview": "\n\n\n{\n \"arr\": [\n {\n \"obj\":{\"innerArr\": [\n {\n \"val\": \"bla_0\"\n "
},
{
"path": "json-path/src/test/resources/json_array_multiple_delete.json",
"chars": 841,
"preview": "{\n \"_embedded\": {\n \"mandates\": [\n {\n \"count\": \"0\",\n \"difference\": \"+0\"\n },\n {\n \""
},
{
"path": "json-path/src/test/resources/keyset.json",
"chars": 49,
"preview": "{\n \"data\" : {\n \"a\" : \"a\",\n \"b\" : \"b\"\n }\n}"
},
{
"path": "json-path/src/test/resources/simplelogger.properties",
"chars": 199,
"preview": "#org.slf4j.simpleLogger.log.com.jayway=debug\n#org.slf4j.simpleLogger.log.com.jayway.jsonpath.internal.filter=trace\n#org."
}
]
// ... and 35 more files (download for full content)
About this extraction
This page contains the full source code of the json-path/JsonPath GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 235 files (1.0 MB), approximately 254.0k tokens, and a symbol index with 2357 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.