You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/05/02 12:44:36 UTC
svn commit: r1332985 - in /incubator/jena/Jena2/ARQ/trunk/src:
main/java/com/hp/hpl/jena/sparql/lang/
main/java/com/hp/hpl/jena/sparql/sse/builders/
test/java/com/hp/hpl/jena/sparql/syntax/
Author: andy
Date: Wed May 2 10:44:36 2012
New Revision: 1332985
URL: http://svn.apache.org/viewvc?rev=1332985&view=rev
Log:
Ensure longs handled as long (OpSlice rebuild)
Modified:
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderNode.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java
incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java
incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/syntax/TestSSE_Builder.java
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java?rev=1332985&r1=1332984&r2=1332985&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/lang/ParserBase.java Wed May 2 10:44:36 2012
@@ -18,6 +18,7 @@
package com.hp.hpl.jena.sparql.lang;
+import java.math.BigInteger ;
import java.util.HashSet ;
import java.util.Set ;
@@ -171,15 +172,25 @@ public class ParserBase
protected long integerValue(String s)
{
- if ( s.startsWith("+") )
- s = s.substring(1) ;
- if ( s.startsWith("0x") )
+ try {
+ if ( s.startsWith("+") )
+ s = s.substring(1) ;
+ if ( s.startsWith("0x") )
+ {
+ // Hex
+ s = s.substring(2) ;
+ return Long.parseLong(s, 16) ;
+ }
+ return Long.parseLong(s) ;
+ } catch (NumberFormatException ex)
{
- // Hex
- s = s.substring(2) ;
- return Long.parseLong(s, 16) ;
+ try {
+ // Possible too large for a long.
+ BigInteger integer = new BigInteger(s) ;
+ throwParseException("Number '"+s+"' is a valid number but can't not be stored in a long") ;
+ } catch (NumberFormatException ex2) {}
+ throw new QueryParseException(ex, -1, -1) ;
}
- return Long.parseLong(s) ;
}
protected double doubleValue(String s)
@@ -636,4 +647,10 @@ public class ParserBase
throw new QueryParseException("Line " + line + ", column " + column + ": " + msg,
line, column) ;
}
+
+ public static void throwParseException(String msg)
+ {
+ throw new QueryParseException(msg, -1, -1) ;
+ }
+
}
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderNode.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderNode.java?rev=1332985&r1=1332984&r2=1332985&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderNode.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderNode.java Wed May 2 10:44:36 2012
@@ -126,6 +126,30 @@ public class BuilderNode
return nv.getInteger() ;
}
+ public static long buildLong(Item item)
+ {
+ BigInteger i = buildInteger(item, false) ;
+ return i.longValue() ;
+ }
+
+ public static long buildLong(Item item, int dft)
+ {
+ BigInteger i = buildInteger(item, true) ;
+ if ( i == null )
+ return dft ;
+ return i.longValue() ;
+ }
+
+ public static long buildLong(ItemList list, int idx)
+ {
+ return buildLong(list.get(idx)) ;
+ }
+
+ public static long buildLong(ItemList list, int idx, int dft)
+ {
+ return buildLong(list.get(idx), dft) ;
+ }
+
public static int buildInt(Item item)
{
BigInteger i = buildInteger(item, false) ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java?rev=1332985&r1=1332984&r2=1332985&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderOp.java Wed May 2 10:44:36 2012
@@ -757,8 +757,8 @@ public class BuilderOp
public Op make(ItemList list)
{
BuilderLib.checkLength(4, list, "slice") ;
- long start = BuilderNode.buildInt(list, 1, -1) ;
- long length = BuilderNode.buildInt(list, 2, -1) ;
+ long start = BuilderNode.buildLong(list, 1, -1) ;
+ long length = BuilderNode.buildLong(list, 2, -1) ;
if ( start == -1 )
start = Query.NOLIMIT ;
Modified: incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java?rev=1332985&r1=1332984&r2=1332985&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/sse/builders/BuilderPath.java Wed May 2 10:44:36 2012
@@ -200,7 +200,7 @@ public class BuilderPath
static long modInt(Item item)
{
if ( "_".equals(item.getSymbol()) ) return P_Mod.UNSET ;
- return BuilderNode.buildInt(item) ;
+ return BuilderNode.buildLong(item) ;
}
final protected Build buildFixedLength = new Build()
Modified: incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/syntax/TestSSE_Builder.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/syntax/TestSSE_Builder.java?rev=1332985&r1=1332984&r2=1332985&view=diff
==============================================================================
--- incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/syntax/TestSSE_Builder.java (original)
+++ incubator/jena/Jena2/ARQ/trunk/src/test/java/com/hp/hpl/jena/sparql/syntax/TestSSE_Builder.java Wed May 2 10:44:36 2012
@@ -79,4 +79,26 @@ public class TestSSE_Builder extends Tes
int i = BuilderNode.buildInt(item, 23) ;
assertEquals(23, i) ;
}
+
+ @Test public void testBuildLong_01()
+ {
+ Item item = SSE.parseItem("100000000000") ;
+ long i = BuilderNode.buildLong(item) ;
+ assertEquals(100000000000L, i) ;
+ }
+
+ @Test public void testBuildLong_02()
+ {
+ Item item = SSE.parseItem("100000000000") ;
+ long i = BuilderNode.buildLong(item, 23) ;
+ assertEquals(100000000000L, i) ;
+ }
+
+ @Test public void testBuildLong_03()
+ {
+ Item item = SSE.parseItem("_") ;
+ long i = BuilderNode.buildLong(item, 23) ;
+ assertEquals(23, i) ;
+ }
+
}