The details of the query module are a little out of my realm of
experience. I'm CC'ing infinispan-dev, to open up the larger discussion
to classloading and compatibility with modular environments.
Off the top of my head, it seems like you need a custom
KeyTransformationHandler that can resolve classes using a ModuleLoader
(i.e. module ID + class name). Thoughts?
That's one way of solving it.
But AdvancedCache::with(CL) already solves this problem - that's why I used it (I
remembered later :-)).
Where I think the two: AC::with(CL) and ServiceModuleLoader impl of ClassResolver, should
no be connected.
Since they solve diff problems, imo.
Anyway, I'm now gonna try and hunt down where plain ML impl of CR somes in ...
-Ales
On Thu, 2012-05-10 at 23:10 +0200, Ales Justin wrote:
> If I do <subject> I get this CNFE, see below.
>
> Looks like I still need a combination of Cache::with(CL) -- so this code sees Key
class,
> and at the same time I don't want Infinispan to depend on GAE API.
> Where I also need to have SML as ClassResolver.
>
> Are you sure setting CL on Cache breaks ClassResolver?
>
> -Ales
>
> ---
>
> 23:00:50,321 ERROR [org.infinispan.query.backend.KeyTransformationHandler]
(http-/192.168.1.101:8080-2) ISPN014001: Could not locate key class
com.google.appengine.api.datastore.Key: java.lang.ClassNotFoundException:
com.google.appengine.api.datastore.Key
> at java.net.URLClassLoader$1.run(URLClassLoader.java:202) [classes.jar:1.6.0_31]
> at java.security.AccessController.doPrivileged(Native Method)
[classes.jar:1.6.0_31]
> at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[classes.jar:1.6.0_31]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:306) [classes.jar:1.6.0_31]
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[classes.jar:1.6.0_31]
> at java.lang.ClassLoader.loadClass(ClassLoader.java:247) [classes.jar:1.6.0_31]
> at java.lang.Class.forName0(Native Method) [classes.jar:1.6.0_31]
> at java.lang.Class.forName(Class.java:247) [classes.jar:1.6.0_31]
> at org.infinispan.util.Util.loadClassStrict(Util.java:127)
[infinispan-core-5.2.0-SNAPSHOT.jar:5.2.0-SNAPSHOT]
> at
org.infinispan.query.backend.KeyTransformationHandler.getCustomTransformer(KeyTransformationHandler.java:108)
> at
org.infinispan.query.backend.KeyTransformationHandler.stringToKey(KeyTransformationHandler.java:96)
> at
org.infinispan.query.impl.CacheQueryImpl.fromEntityInfosToKeys(CacheQueryImpl.java:174)
> at org.infinispan.query.impl.CacheQueryImpl.iterator(CacheQueryImpl.java:144)
> at org.infinispan.query.impl.CacheQueryImpl.iterator(CacheQueryImpl.java:137)
> at
org.jboss.capedwarf.datastore.query.PreparedQueryImpl.createQueryIterator(PreparedQueryImpl.java:108)
[capedwarf-datastore-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
> at
org.jboss.capedwarf.datastore.query.PreparedQueryImpl.asQueryResultIterator(PreparedQueryImpl.java:73)
[capedwarf-datastore-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
> at
org.jboss.capedwarf.datastore.query.PreparedQueryImpl.asIterator(PreparedQueryImpl.java:64)
[capedwarf-datastore-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
> at
org.jboss.capedwarf.datastore.query.PreparedQueryImpl.asIterator(PreparedQueryImpl.java:60)
[capedwarf-datastore-1.0.0-SNAPSHOT.jar:1.0.0-SNAPSHOT]
> at
org.jboss.test.capedwarf.datastore.test.PreparedQueryTestCase.testAsIteratorWithOptionstestCountEntities(PreparedQueryTestCase.java:77)
[classes:]
>