lucene-pylucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andi Vajda <va...@apache.org>
Subject Re: wrapping template types; neo4j
Date Sat, 28 Feb 2009 00:35:03 GMT

On Fri, 27 Feb 2009, Bill Janssen wrote:

> Actually, the wrapping of neo4j doesn't work with the latest JCC -- it
> just doesn't fail obviously.  However, some vital methods are not
> produced for several classes.  For instance, the org.neo4j.api.core.Node
> class doesn't have the vital method "hasRelationship(RelationshipType...)".
> In fact, it doesn't seem to have a number of methods, like
> "Iterable<Relationship> getRelationships()".
>
> So, this is (I suppose) a variant of the Java 5 stuff not being
> supported by PyLucene.
>
> Might be nice to have JCC fail more obviously in this case...

No, this is different. It's not related to these Java 1.5 features.

It's because java.lang.Iterable is not 'known' to that JCC invocation by 
default.

As documented [1], to avoid runaway transitive closures, JCC will only wrap 
methods where all parameters and return type are part of the requested set 
of classes, jars or packages specified on the command line (see [1]).

A few core classes are 'known' by default, but java.lang.Iterable is not.
If you add --package java.lang to the invocation, these methods appear in 
the wrappers as expected.

You'd probably ask for --package java.lang to be part of the defaults and 
it's a reasonable request at first glance. In JCC's cpp.py, there is 
currently a list of classes considered always 'known' to JCC. 
java.lang.Iterable is not one of them. Maybe, again, it's because Iterable 
appeared in Java 1.5 (unsure).

Andi..

[1] http://lucene.apache.org/pylucene/jcc/documentation/readme.html#use


Mime
View raw message