Thanks for the diagnosis, workaround, and fix, Claude. Chris
On 18 November 2017 at 18:27, Claude Warren <[email protected]> wrote: > Fix coming shortly but the work around is... > > change: > > Expr x = new NodeValueInteger(1) > > to: > > NodeValue nv = new NodeValueInteger(1) > nv.asNode() > Expr x = nv; > > Claude > > On Sat, Nov 18, 2017 at 3:48 PM, Claude Warren <[email protected]> wrote: > > > Well done Andy. Right on the money, exactly what I discovered. > > > > On Sat, Nov 18, 2017 at 3:39 PM, Andy Seaborne <[email protected]> wrote: > > > >> c.f. NodeValue.getNode and NodeValue.asNode > >> > >> Presumably something calls getNode when it wanted asNode. > >> > >> > >> On 18/11/17 15:36, Claude Warren wrote: > >> > >>> This is a bug. The problem is that new NodeValueInteger(1); > >>> does not set the Node value that the rewriter is trying to rewrite and > >>> thus > >>> the null pointer exception. > >>> > >>> I will get a fix out shortly. > >>> > >>> Claude > >>> > >>> On Fri, Nov 17, 2017 at 4:14 PM, Chris Dollin < > >>> [email protected]> > >>> wrote: > >>> > >>> Hi, > >>>> > >>>> I was experimenting with the query builder and hit a problem > >>>> when I was attempting to construct an Expr. This example: > >>>> > >>>> package com.epimorphics.scratch; > >>>> > >>>> import org.apache.jena.arq.querybuilder.ConstructBuilder; > >>>> import org.apache.jena.sparql.expr.E_GreaterThan; > >>>> import org.apache.jena.sparql.expr.Expr; > >>>> import org.apache.jena.sparql.expr.ExprVar; > >>>> import org.apache.jena.sparql.expr.nodevalue.NodeValueInteger; > >>>> import org.junit.Test; > >>>> > >>>> public class Example { > >>>> > >>>> @Test public void tryBuilding() { > >>>> ConstructBuilder cb = new ConstructBuilder(); > >>>> > >>>> Expr x = new NodeValueInteger(1); > >>>> Expr y = new ExprVar("y"); > >>>> Expr e = new E_GreaterThan(x, y); > >>>> cb.addFilter(e); > >>>> System.err.println(cb.buildString()); > >>>> } > >>>> } > >>>> > >>>> when run fails with a null pointer exception: > >>>> > >>>> java.lang.NullPointerException > >>>> at org.apache.jena.arq.querybuilder.rewriters. > >>>> AbstractRewriter.changeNode(AbstractRewriter.java:126) > >>>> at org.apache.jena.arq.querybuilder.rewriters.NodeValueRewriter > >>>> .visit( > >>>> NodeValueRewriter.java:64) > >>>> at org.apache.jena.sparql.expr.nodevalue.NodeValueInteger. > >>>> visit(NodeValueInteger.java:78) > >>>> at org.apache.jena.arq.querybuilder.rewriters. > ExprRewriter.visit( > >>>> ExprRewriter.java:127) > >>>> at org.apache.jena.sparql.expr.NodeValue.visit(NodeValue.java:1 > >>>> 205) > >>>> at org.apache.jena.arq.querybuilder.rewriters. > ExprRewriter.visit( > >>>> ExprRewriter.java:65) > >>>> at org.apache.jena.sparql.expr.ExprFunction2.visit( > >>>> ExprFunction2.java:109) > >>>> at org.apache.jena.arq.querybuilder.rewriters.ElementRewriter.v > >>>> isit( > >>>> ElementRewriter.java:70) > >>>> at org.apache.jena.sparql.syntax.ElementFilter.visit( > >>>> ElementFilter.java:35) > >>>> at org.apache.jena.arq.querybuilder.rewriters.ElementRewriter.v > >>>> isit( > >>>> ElementRewriter.java:141) > >>>> at org.apache.jena.sparql.syntax.ElementGroup.visit( > >>>> ElementGroup.java:120) > >>>> at org.apache.jena.arq.querybuilder.handlers. > WhereHandler.addAll( > >>>> WhereHandler.java:81) > >>>> at org.apache.jena.arq.querybuilder.handlers. > HandlerBlock.addAll( > >>>> HandlerBlock.java:218) > >>>> at org.apache.jena.arq.querybuilder.handlers. > HandlerBlock.addAll( > >>>> HandlerBlock.java:245) > >>>> at org.apache.jena.arq.querybuilder.AbstractQueryBuilder.build( > >>>> AbstractQueryBuilder.java:555) > >>>> at org.apache.jena.arq.querybuilder.AbstractQueryBuilder.buildS > >>>> tring( > >>>> AbstractQueryBuilder.java:522) > >>>> at com.epimorphics.scratch.Example.tryBuilding(Example.java:20) > >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >>>> at sun.reflect.NativeMethodAccessorImpl.invoke( > >>>> NativeMethodAccessorImpl.java:62) > >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke( > >>>> DelegatingMethodAccessorImpl.java:43) > >>>> at java.lang.reflect.Method.invoke(Method.java:498) > >>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( > >>>> FrameworkMethod.java:47) > >>>> at org.junit.internal.runners.model.ReflectiveCallable.run( > >>>> ReflectiveCallable.java:12) > >>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively( > >>>> FrameworkMethod.java:44) > >>>> at org.junit.internal.runners.statements.InvokeMethod. > >>>> evaluate(InvokeMethod.java:17) > >>>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) > >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( > >>>> BlockJUnit4ClassRunner.java:70) > >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( > >>>> BlockJUnit4ClassRunner.java:50) > >>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) > >>>> at org.junit.runners.ParentRunner$1.schedule( > ParentRunner.java:63) > >>>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java > >>>> :236) > >>>> at org.junit.runners.ParentRunner.access$000( > ParentRunner.java:53) > >>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java: > >>>> 229) > >>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:309) > >>>> at org.junit.runner.JUnitCore.run(JUnitCore.java:160) > >>>> at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs( > >>>> JUnit4IdeaTestRunner.java:68) > >>>> at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater. > >>>> startRunnerWithArgs(IdeaTestRunner.java:47) > >>>> at com.intellij.rt.execution.junit.JUnitStarter. > >>>> prepareStreamsAndStart( > >>>> JUnitStarter.java:242) > >>>> at com.intellij.rt.execution.junit.JUnitStarter.main( > >>>> JUnitStarter.java:70) > >>>> > >>>> Replacing the addFilter line with > >>>> > >>>> cb.addFilter("1 > ?y"); > >>>> > >>>> does not fail, terminating with the expected print-out > >>>> of a construct query > >>>> > >>>> CONSTRUCT > >>>> { > >>>> } > >>>> WHERE > >>>> { FILTER ( 1 > ?y )} > >>>> > >>>> I tried poking around with the debugger but couldn't see anyhting > >>>> obvious. However, /sometimes/ stepping through the code > >>>> results in it working and sometimes not, presumably depending > >>>> on exactly when I give up through-stepping. > >>>> > >>>> Am I doing anything obviously wrong (like misunderstanding > >>>> how to use the Expr functionality) or should I file a JIRA? > >>>> This is Jena 3.4.0. > >>>> > >>>> Chris > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> "What I don't understand is this ..." Trevor Chaplin, /The > Beiderbeck > >>>> Affair/ > >>>> > >>>> Epimorphics Ltd, http://www.epimorphics.com > >>>> Registered address: Court Lodge, 105 High Street, Portishead, Bristol > >>>> BS20 > >>>> 6PT > >>>> Epimorphics Ltd. is a limited company registered in England (number > >>>> 7016688) > >>>> > >>>> > >>> > >>> > >>> > > > > > > -- > > I like: Like Like - The likeliest place on the web > > <http://like-like.xenei.com> > > LinkedIn: http://www.linkedin.com/in/claudewarren > > > > > > -- > I like: Like Like - The likeliest place on the web > <http://like-like.xenei.com> > LinkedIn: http://www.linkedin.com/in/claudewarren > -- "What I don't understand is this ..." Trevor Chaplin, /The Beiderbeck Affair/ Epimorphics Ltd, http://www.epimorphics.com Registered address: Court Lodge, 105 High Street, Portishead, Bristol BS20 6PT Epimorphics Ltd. is a limited company registered in England (number 7016688)
