Check. Let's do 1.5 in trunk at least then.

Gary


On Sat, Sep 14, 2013 at 8:22 AM, sebb <[email protected]> wrote:

> On 14 September 2013 12:54, Gary Gregory <[email protected]> wrote:
> > Maybe we should set a Java requirement for Jxpath 1.4? I would just
> > use Java 6 as a min for now. Or why not 7?
>
> I think 1.5 would be a more sensible base.
>
> That gives big advantages over 1.4 and 1.3 without potentially
> excluding users stuck on 1.5.
>
> There is no point requiring our users to use 1.7 (or 1.6) unless the
> code *requires* it.
>
> 1.6 has some additional useful features (mainly Charset), but in
> comparison with 1.4 => 1.5 is not a huge advance.
>
> > Gary
> >
> > On Sep 14, 2013, at 5:17, sebb <[email protected]> wrote:
> >
> >> Tests OK for me as well using Java 1.5.
> >> [I no longer have 1.3 or 1.4 installed]
> >>
> >> BTW, the pom does not have any compiler source or target settings so
> >> defaults to 1.3 (which is why it uses JUnit 3.8.1).
> >>
> >> On 14 September 2013 03:04, Gary Gregory <[email protected]>
> wrote:
> >>> Weird, now it works.
> >>>
> >>> G
> >>>
> >>>
> >>> On Fri, Sep 13, 2013 at 5:36 PM, Gary Gregory <[email protected]
> >wrote:
> >>>
> >>>> Hm... when I build trunk with Maven 3 "mvn clean test" and Java 7 on
> >>>> Windows I get:
> >>>>
> >>>>
> testLazyProperty(org.apache.commons.jxpath.ri.model.dynabeans.LazyDynaBeanTest)
> >>>> Time elapsed: 0.004 sec  <<< ERROR!
> >>>> org.apache.commons.jxpath.JXPathNotFoundException: No value for xpath:
> >>>> /nosuch
> >>>>        at
> >>>>
> org.apache.commons.jxpath.ri.model.NodePointer.verify(NodePointer.java:937)
> >>>>        at
> >>>>
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.getValue(JXPathContextReferenceImpl.java:374)
> >>>>        at
> >>>>
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.getValue(JXPathContextReferenceImpl.java:315)
> >>>>        at
> >>>>
> org.apache.commons.jxpath.ri.model.dynabeans.LazyDynaBeanTest.testLazyProperty(LazyDynaBeanTest.java:34)
> >>>>
> >>>> Gary
> >>>>
> >>>>
> >>>> On Fri, Sep 13, 2013 at 5:28 PM, Gary Gregory <[email protected]
> >wrote:
> >>>>
> >>>>> On Fri, Sep 13, 2013 at 4:27 PM, sebb <[email protected]> wrote:
> >>>>>
> >>>>>> On 13 September 2013 19:06, Gary Gregory <[email protected]>
> wrote:
> >>>>>>> Hello David,
> >>>>>>>
> >>>>>>> Can you test with the 1.4-SNAPSHOT code from trunk? (You'll have to
> >>>>>> check
> >>>>>>> it out and build it).
> >>>>>>
> >>>>>> The method JXPathContextReferenceImpl.getNodePointerFactories() is
> not
> >>>>>> synchronized in trunk either, and the static field is not volatile.
> >>>>>> Furthermore, the method returns the array without copying it, so
> >>>>>> callers can change entries in it.
> >>>>>>
> >>>>>> Also the field is created with a lock on the class, but is set to
> null
> >>>>>> with a lock on the static feld nodeFactories.
> >>>>>> And of course read with no lock at all.
> >>>>>>
> >>>>>> Not good; safe publication requires that reader and writer lock the
> >>>>>> same object. And writers must use the same object for mutual
> >>>>>> exclusion.
> >>>>>>
> >>>>>> The code is extremely fragile.
> >>>>>>
> >>>>>>> In trunk, NodePointer.java:80) is:
> >>>>>>>
> >>>>>>> pointer = new NullPointer(name, locale);
> >>>>>>>
> >>>>>>> which can't throw an NPE.
> >>>>>>
> >>>>>> 1.3 has the following code:
> >>>>>>
> >>>>>>        NodePointerFactory[] factories =
> >>>>>>            JXPathContextReferenceImpl.getNodePointerFactories();
> >>>>>>        for (int i = 0; i < factories.length; i++) { // <= line 80
> >>>>>>
> >>>>>> The for loop is at line 86 in trunk.
> >>>>>>
> >>>>>>> I have not looked at this code in a while, now that multi-core
> CPUs are
> >>>>>>> common place I am not surprised to see issues like this.
> >>>>>>>
> >>>>>>> I am not even sure why the statics in JXPathContext are lazy
> loaded (at
> >>>>>>> least they are volatile). It would simplify the code to just init
> the
> >>>>>>> statics in-line.
> >>>>>>
> >>>>>> Mutable static fields are generally very bad for thread-safety.
> >>>>>
> >>>>> I was not clear: The JXPathContext statics are only writing to by the
> >>>>> getters for lazy-init. Why not init them in the decl and make them
> final?
> >>>>>
> >>>>> Gary
> >>>>>
> >>>>>>
> >>>>>>> Thank you,
> >>>>>>> Gary
> >>>>>>>
> >>>>>>>
> >>>>>>> On Thu, Sep 12, 2013 at 10:11 PM, David Ferry <
> [email protected]>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>>> Hi
> >>>>>>>>
> >>>>>>>> We're using Apache JXPath 1.3. We have multi-threaded code running
> >>>>>>>> JXPathContext.newContext
> >>>>>>>>
> >>>>>>>> We're having an occasional NullPointerException coming out of
> >>>>>>>> NodePointer.newNodePointer
> >>>>>>>>
> >>>>>>>> We've had a look at the code for this class, and wonder if
> >>>>>>>> getNodePointerFactories is not synchronising correctly.
> >>>>>>>>
> >>>>>>>> Other operations that read or write the attribute
> nodeFactoryArray ...
> >>>>>>>> synchronize on nodeFactories.
> >>>>>>>>
> >>>>>>>> But in getNodePointerFactories() ... it just returns the variable
> >>>>>> without
> >>>>>>>> locking.
> >>>>>>>> This makes us think that there is no happens-before in the
> >>>>>>>> getNodePointerFactories() method.
> >>>>>>>>
> >>>>>>>> I've put a snippet of the stack trace below.
> >>>>>>>>
> >>>>>>>> Apologies if this has come up before, I didn't manage to find it
> >>>>>> after a
> >>>>>>>> while searching.
> >>>>>>>>
> >>>>>>>> Regards,
> >>>>>>>> -David
> >>>>>>>>
> >>>>>>>> java.lang.NullPointerException
> >>>>>>>>        at
> >>>>>>
> org.apache.commons.jxpath.ri.model.NodePointer.newNodePointer(NodePointer.java:80)
> >>>>>>>>        at
> >>>>>>
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.<init>(JXPathContextReferenceImpl.java:193)
> >>>>>>>>        at
> >>>>>>
> org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.<init>(JXPathContextReferenceImpl.java:167)
> >>>>>>>>        at
> >>>>>>
> org.apache.commons.jxpath.ri.JXPathContextFactoryReferenceImpl.newContext(JXPathContextFactoryReferenceImpl.java:39)
> >>>>>>>>        at
> >>>>>>
> org.apache.commons.jxpath.JXPathContext.newContext(JXPathContext.java:416)
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> E-Mail: [email protected] | [email protected]
> >>>>>>> Java Persistence with Hibernate, Second Edition<
> >>>>>> http://www.manning.com/bauer3/>
> >>>>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> >>>>>>> Spring Batch in Action <http://www.manning.com/templier/>
> >>>>>>> Blog: http://garygregory.wordpress.com
> >>>>>>> Home: http://garygregory.com/
> >>>>>>> Tweet! http://twitter.com/GaryGregory
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>> For additional commands, e-mail: [email protected]
> >>>>>
> >>>>>
> >>>>> --
> >>>>> E-Mail: [email protected] | [email protected]
> >>>>> Java Persistence with Hibernate, Second Edition<
> http://www.manning.com/bauer3/>
> >>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> >>>>> Spring Batch in Action <http://www.manning.com/templier/>
> >>>>>
> >>>>> Blog: http://garygregory.wordpress.com
> >>>>> Home: http://garygregory.com/
> >>>>> Tweet! http://twitter.com/GaryGregory
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> E-Mail: [email protected] | [email protected]
> >>>> Java Persistence with Hibernate, Second Edition<
> http://www.manning.com/bauer3/>
> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> >>>> Spring Batch in Action <http://www.manning.com/templier/>
> >>>> Blog: http://garygregory.wordpress.com
> >>>> Home: http://garygregory.com/
> >>>> Tweet! http://twitter.com/GaryGregory
> >>>
> >>>
> >>>
> >>> --
> >>> E-Mail: [email protected] | [email protected]
> >>> Java Persistence with Hibernate, Second Edition<
> http://www.manning.com/bauer3/>
> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> >>> Spring Batch in Action <http://www.manning.com/templier/>
> >>> Blog: http://garygregory.wordpress.com
> >>> Home: http://garygregory.com/
> >>> Tweet! http://twitter.com/GaryGregory
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
E-Mail: [email protected] | [email protected]
Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to