Browse Source

Fixed merge issue.

pull/29/head
Kalle Stenflo 11 years ago
parent
commit
f7cc1139ce
  1. 8
      README
  2. 49
      json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java
  3. 21
      json-path/src/test/java/com/jayway/jsonpath/CastTest.java
  4. 43
      json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java
  5. 7
      pom.xml

8
README

@ -1,5 +1,13 @@
Java DSL for reading and testing JSON documents.
------------------------------------------
0.8.2 2013-08-19
------------------------------------------
- OSGI ready
- Bug fixes
- Performance improvements
------------------------------------------
0.8.1 2012-04-16
------------------------------------------

49
json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java

@ -14,6 +14,8 @@
*/
package com.jayway.jsonpath.internal.filter.eval;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@ -166,6 +168,53 @@ public class ExpressionEvaluator {
default:
throw new UnsupportedOperationException("Cannot handle operator " + operator);
}
} else if (actual instanceof BigInteger) {
BigInteger a = (BigInteger) actual;
BigInteger e = new BigInteger(expected.trim());
switch (operator){
case equal:
return a.compareTo(e) == 0;
case not_equal:
return a.compareTo(e) != 0;
case less_or_greater_than:
return a.compareTo(e) != 0;
case greater_than:
return a.compareTo(e) > 0;
case greater_than_or_equal:
return a.compareTo(e) >= 0;
case less_than:
return a.compareTo(e) < 0;
case less_than_or_equal:
return a.compareTo(e) <= 0;
default:
throw new UnsupportedOperationException("Cannot handle operator " + operator);
}
} else if (actual instanceof BigDecimal) {
BigDecimal a = (BigDecimal) actual;
BigDecimal e = new BigDecimal(expected);
switch (operator){
case equal:
return a.compareTo(e) == 0;
case not_equal:
return a.compareTo(e) != 0;
case less_or_greater_than:
return a.compareTo(e) != 0;
case greater_than:
return a.compareTo(e) > 0;
case greater_than_or_equal:
return a.compareTo(e) >= 0;
case less_than:
return a.compareTo(e) < 0;
case less_than_or_equal:
return a.compareTo(e) <= 0;
default:
throw new UnsupportedOperationException("Cannot handle operator " + operator);
}
}
return false;
}

21
json-path/src/test/java/com/jayway/jsonpath/CastTest.java

@ -0,0 +1,21 @@
package com.jayway.jsonpath;
import org.junit.Assert;
import org.junit.Test;
/**
* User: kalle
* Date: 5/15/13
* Time: 9:22 PM
*/
public class CastTest {
public static final String JSON = "{\"sessionID\":7242750700467747000}" ;
@Test
public void result_can_be_cast_to_Long(){
Long actual = JsonPath.read(JSON, "$.sessionID");
Long expected = new Long("7242750700467747000");
Assert.assertEquals(expected, actual);
}
}

43
json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java

@ -1,8 +1,12 @@
package com.jayway.jsonpath;
import com.jayway.jsonpath.internal.filter.eval.ExpressionEvaluator;
import org.codehaus.jackson.node.BigIntegerNode;
import org.junit.Test;
import java.math.BigDecimal;
import java.math.BigInteger;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@ -33,6 +37,45 @@ public class ExpressionEvalTest {
assertFalse(ExpressionEvaluator.eval(1, "!=", "1"));
}
@Test
public void bigint_eval() throws Exception {
assertTrue(ExpressionEvaluator.eval(new BigInteger("1"), "==", "1"));
assertTrue(ExpressionEvaluator.eval(new BigInteger("2"), "!=", "1"));
assertTrue(ExpressionEvaluator.eval(new BigInteger("2"), ">", "1"));
assertTrue(ExpressionEvaluator.eval(new BigInteger("2"), ">=", "1"));
assertTrue(ExpressionEvaluator.eval(new BigInteger("2"), ">=", "2"));
assertTrue(ExpressionEvaluator.eval(new BigInteger("1"), "<", "2"));
assertTrue(ExpressionEvaluator.eval(new BigInteger("2"), "<=", "2"));
assertFalse(ExpressionEvaluator.eval(new BigInteger("1"), ">", "2"));
assertFalse(ExpressionEvaluator.eval(new BigInteger("1"), ">=", "2"));
assertFalse(ExpressionEvaluator.eval(new BigInteger("2"), "<", "1"));
assertFalse(ExpressionEvaluator.eval(new BigInteger("2"), "<=", "1"));
assertFalse(ExpressionEvaluator.eval(new BigInteger("1"), "==", "2"));
assertFalse(ExpressionEvaluator.eval(new BigInteger("1"), "!=", "1"));
}
@Test
public void bigdec_eval() throws Exception {
assertTrue(ExpressionEvaluator.eval(new BigDecimal("1.1"), "==", "1.1"));
assertTrue(ExpressionEvaluator.eval(new BigDecimal("2"), "!=", "1"));
assertTrue(ExpressionEvaluator.eval(new BigDecimal("2"), ">", "1"));
assertTrue(ExpressionEvaluator.eval(new BigDecimal("2"), ">=", "1"));
assertTrue(ExpressionEvaluator.eval(new BigDecimal("2"), ">=", "2"));
assertTrue(ExpressionEvaluator.eval(new BigDecimal("1"), "<", "2"));
assertTrue(ExpressionEvaluator.eval(new BigDecimal("2"), "<=", "2"));
assertFalse(ExpressionEvaluator.eval(new BigDecimal("1"), ">", "2"));
assertFalse(ExpressionEvaluator.eval(new BigDecimal("1"), ">=", "2"));
assertFalse(ExpressionEvaluator.eval(new BigDecimal("2"), "<", "1"));
assertFalse(ExpressionEvaluator.eval(new BigDecimal("2"), "<=", "1"));
assertFalse(ExpressionEvaluator.eval(new BigDecimal("1"), "==", "2"));
assertFalse(ExpressionEvaluator.eval(new BigDecimal("1"), "!=", "1"));
}
@Test
public void double_eval() throws Exception {

7
pom.xml

@ -24,7 +24,7 @@
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path-parent</artifactId>
<packaging>pom</packaging>
<version>0.8.1-HBO</version>
<version>0.8.2-SNAPSHOT</version>
<url>https://github.com/jayway/JsonPath</url>
<name>json-path-parent-pom</name>
<description>Java JsonPath implementation</description>
@ -177,7 +177,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.8.1</version>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
@ -211,7 +211,7 @@
<dependency>
<groupId>net.minidev</groupId>
<artifactId>json-smart</artifactId>
<version>1.1.1</version>
<version>1.2</version>
</dependency>
<dependency>
@ -252,6 +252,7 @@
<version>2.4</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
Loading…
Cancel
Save