Glad it worked! Mark
-- Dr. Mark Wardle Consultant Neurologist, Cardiff, UK (Sent from my mobile) > On 16 Apr 2017, at 12:13, Musall, Maik <m...@selbstdenker.ag> wrote: > > Wow, Mark, good guess! > > That's it. Added a get… method around each part of the path's accessed > methods, and it works. Didn't occur to me at all, because those methods are > not getters in the strict sense. But I could have discovered this before, by > looking at the BeanAcccessor implementation. Dang. > > I suppose there is no way in Cayenne to inject a different behaviour for > this, through DI or something? It doesn't look like it from the code > (BeanAccessor, PropertyUtils, and the readSimpleProperty() method in > CayennDataObject is even marked final). Because I know I will run into this > again and again, given the existing large code base. > > Maik > > > >> Am 15.04.2017 um 23:18 schrieb Mark Wardle <m...@wardle.org>: >> >> Can't try it as only have phone at the moment but have you tried adding >> "get" as a prefix to your method declaration? >> >> I still find it difficult to not name getters without the get. >> >> -- >> Dr. Mark Wardle >> Consultant Neurologist, Cardiff, UK >> (Sent from my mobile) >> >> >>> On 13 Apr 2017, at 10:44, Musall, Maik <m...@selbstdenker.ag> wrote: >>> >>> Hi John, >>> >>> can you elaborate that on this example? >>> >>> Previously, I did this to filter: >>> >>> result = ExpressionFactory.matchExp( filterPath, filterValue >>> ).filterObjects( result ); >>> >>> Now I tried: >>> >>> result = result.stream() >>> .filter( obj -> PropertyUtils.getProperty( obj, filterPath ).equals( >>> filterValue ) ) >>> .collect( Collectors.toList() ); >>> >>> Both times, I get: >>> >>> java.lang.IllegalArgumentException: Property 'responsibleUser' is not >>> readable >>> >>> where "result" is like a List<Foo> with Foo being a DataObject that has a >>> method called "responsibleUser", returning another DataObject subclass. >>> >>> Maik >>> >>> >>>> Am 12.04.2017 um 19:11 schrieb John Huss <johnth...@gmail.com>: >>>> >>>> Ok, you can use property utils in conjunction to call a method using >>>> reflection (with a string name) >>>>> On Wed, Apr 12, 2017 at 6:07 PM Musall, Maik <m...@selbstdenker.ag> wrote: >>>>> >>>>> Hi John, >>>>> >>>>> how do you mean that? Those filter paths come from the UI, passed on by >>>>> the user assembling filter criteria. I wouldn't use string filter paths if >>>>> the criteria would be constant. >>>>> >>>>> Maik >>>>> >>>>>> Am 12.04.2017 um 19:03 schrieb John Huss <johnth...@gmail.com>: >>>>>> >>>>>> Just use a java 8 stream and lambda in addition or instead of. >>>>>> On Wed, Apr 12, 2017 at 4:48 PM Musall, Maik <m...@selbstdenker.ag> >>>>> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> when filtering a list of objects by expression.filterObjects( list ), is >>>>>>> there a way for the expression to access regular methods instead of >>>>> Cayenne >>>>>>> db properties? >>>>>>> >>>>>>> Use Case: I have a class A that has several relationships to class B, >>>>> and >>>>>>> it depends on a number of factors which is relevant in this case. So >>>>> there >>>>>>> is a method that returns either this or that relation to class B. I >>>>> would >>>>>>> like to include the method name in the expression path. (This was >>>>> possible >>>>>>> in EOF, and I just found that it doesn't work in Cayenne.) >>>>>>> >>>>>>> Thanks >>>>>>> Maik >>>>>>> >>>>>>> >>>>> >>>>> >>> >