This question is a continuation of How to identify all classes implementing a specific interface that do NOT extend some base class?.
The accepted answer there suggests to use:
MATCH
(i:Interface {name:'Action'} )<-[:IMPLEMENTS|EXTENDS*1..10]- (class),
(abstractAction:Class {name:'AbstractAction'})
where not (class)-->(abstractAction)
RETURN class
That works nicely, and gives a list of classes matching that condition.
The only problem I have: the name of that interface Action
is (surprise) ambiguous. The absolute class name com.whatever.foo.bar.Action
would be. But when I change the query to use {name:'com.whatever.foo.bar.Action'}
I get an empty result.
I then tried {package:'com.whatever.foo.bar' name:'Action'}
, but that doesn't work:
One of the property names in your query is not available in the database, make sure you didn't misspell it or that the label is available when you run this statement in your application (the missing property name is: package)
Is there a way reduce the search result to that Action interface I really care about?