You are right, I looked again and sure enough I'd forgotten that it does
call getValue().  Actually, changing that would be quite a challenge because
of some internal logic of the interpretSimpleLocationPath method.  The code
is written in a generic fashion to accomodate cases like Container-valued
properties, which need to be open unconditionally.  I'll see what I can do,
but I cannot promise a quick fix.

How critical is it that the get method throw an exception?  Can it simply
return null?

- Dmitri


----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Friday, November 08, 2002 4:08 PM
Subject: RE: [jxpath] setValue calling getValue


Hi Dmitri,

I retried with the the version at the URL you sent. Different stack trace,
but the field still gets read.

java.lang.Exception
at
com.nokia.b2t.dna.graphmap.MockDomainObject.getStringField(MockDomainObject.
java:51)
at java.lang.reflect.Method.invoke(Native Method)
at org.apache.commons.jxpath.util.ValueUtils.getValue(ValueUtils.java:287)
at
org.apache.commons.jxpath.ri.model.beans.BeanPropertyPointer.getBaseValue(Be
anPropertyPointer.java:155)
at
org.apache.commons.jxpath.ri.model.beans.BeanPropertyPointer.getNode(BeanPro
pertyPointer.java:179)
at
org.apache.commons.jxpath.ri.model.beans.PropertyPointer.getValuePointer(Pro
pertyPointer.java:168)
at
org.apache.commons.jxpath.ri.axes.SimplePathInterpreter.valuePointer(SimpleP
athInterpreter.java:675)
at
org.apache.commons.jxpath.ri.axes.SimplePathInterpreter.interpretSimpleLocat
ionPath(SimplePathInterpreter.java:114)
at
org.apache.commons.jxpath.ri.compiler.Path.getSingleNodePointerForSteps(Path
.java:172)
at
org.apache.commons.jxpath.ri.compiler.LocationPath.computeValue(LocationPath
.java:137)
at
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.setValue(JXPathConte
xtReferenceImpl.java:363)
at
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.createPathAndSetValu
e(JXPathContextReferenceImpl.java:354)
at
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.createPathAndSetValu
e(JXPathContextReferenceImpl.java:349)
at
com.nokia.b2t.dna.graphmap.ObjectGraphMapper.performMapping(ObjectGraphMappe
r.java:92)
at
com.nokia.b2t.dna.graphmap.ObjectGraphMapper.toDomainGraph(ObjectGraphMapper
.java:57)
at
com.nokia.b2t.dna.graphmap.ObjectGraphMapperJUnitTest.main(ObjectGraphMapper
JUnitTest.java:136)

> -----Original Message-----
> From: ext Dmitri Plotnikov [mailto:dplotnik@;yahoo.com]
> Sent: 08. November 2002 19:53
> To: Jakarta Commons Developers List
> Subject: Re: [jxpath] setValue calling getValue
>
>
> Mike,
>
> You are right, it really should not do that.
>
> The line numbers in the stack trace indicate that you are using a
> pretty old version of jxpath. Could you upgrade to the current version
> and let me know if the problem persists?
>
> The binary download is available at
> www.plotnix.com/jxpath/commons-jxpath.zip
>
> Thank you,
>
> - Dmitri
>
> --- [EMAIL PROTECTED] wrote:
> > Hi,
> >
> > When JXPath is setting a property, it first gets the
> properties value
> > (computeValue()).  I have an throwing an exception in the getter
> > method in my class to show the stack trace, below.
> >
> > Why does JXPath read the value before setting it, and is there any
> > way to avoid it?
> >
> > Thanks,
> > Mike.
> >
> > java.lang.Exception: Reading field
> > at
> >
> com.nokia.b2t.dna.graphmap.MockDomainObject$MockNestedDomainOb
> ject.getStringField(MockDomainObject.java:76)
> > at java.lang.reflect.Method.invoke(Native Method)
> > at
> >
> org.apache.commons.jxpath.util.ValueUtils.getValue(ValueUtils.
> java:287)
> > at
> >
> org.apache.commons.jxpath.ri.model.beans.BeanPropertyPointer.g
> etNodeValue(BeanPropertyPointer.java:187)
> > at
> >
> org.apache.commons.jxpath.ri.model.beans.PropertyPointer.getVa
> luePointer(PropertyPointer.java:152)
> > at
> >
> org.apache.commons.jxpath.ri.axes.SimplePathInterpreter.single
> Step(SimplePathInterpreter.java:246)
> > at
> >
> org.apache.commons.jxpath.ri.axes.SimplePathInterpreter.interp
> retPath(SimplePathInterpreter.java:119)
> > at
> >
> org.apache.commons.jxpath.ri.compiler.Path.getSingleNodePointe
> rForSteps(Path.java:162)
> > at
> >
> org.apache.commons.jxpath.ri.compiler.LocationPath.computeValu
> e(LocationPath.java:137)
> > at
> >
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.setVal
> ue(JXPathContextReferenceImpl.java:329)
> > at
> >
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.create
> PathAndSetValue(JXPathContextReferenceImpl.java:320)
> > at
> >
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.create
> PathAndSetValue(JXPathContextReferenceImpl.java:315)
> > at
> >
> com.nokia.b2t.dna.graphmap.ObjectGraphMapper.performMapping(Ob
> jectGraphMapper.java:88)
> > at
> >
> com.nokia.b2t.dna.graphmap.ObjectGraphMapper.toDomainGraph(Obj
> ectGraphMapper.java:57)
> > at
> >
> com.nokia.b2t.dna.graphmap.ObjectGraphMapperJUnitTest.main(Obj
> ectGraphMapperJUnitTest.java:122)
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
> > For additional commands, e-mail:
> > <mailto:commons-dev-help@;jakarta.apache.org>
> >
>
>
> __________________________________________________
> Do you Yahoo!?
> U2 on LAUNCH - Exclusive greatest hits videos
> http://launch.yahoo.com/u2
>
> --
> To unsubscribe, e-mail:
> <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:commons-dev-help@;jakarta.apache.org>
>
>

--
To unsubscribe, e-mail:
<mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail:
<mailto:commons-dev-help@;jakarta.apache.org>





--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to