-- Galder Zamarreño Infinispan, Red Hat > On 6 Apr 2016, at 16:57, Dan Berindei <dan.berin...@gmail.com> wrote: > > On Wed, Apr 6, 2016 at 5:27 PM, Sanne Grinovero <sa...@infinispan.org> wrote: >> On 6 April 2016 at 15:01, Galder Zamarreño <gal...@redhat.com> wrote: >>> >>> -- >>> Galder Zamarreño >>> Infinispan, Red Hat >>> >>>> On 6 Apr 2016, at 12:29, Gustavo Fernandes <gust...@infinispan.org> wrote: >>>> >>>> >>>> >>>> On Wed, Apr 6, 2016 at 10:26 AM, Galder Zamarreño <gal...@redhat.com> >>>> wrote: >>>> Hi all, >>>> >>>> I've been looking at [1] and the way I see it, there are two ways to solve >>>> this: >>>> >>>> 1. A key benefit of JCache/JCacheManager is that you can construct >>>> JCacheManager instances using standard APIs, e.g. calling >>>> Cachie.getCachingProvider().getCacheManager(...). One way to solve this >>>> issue would be if we exposed a propietary way to create an Infinispan >>>> remote JCacheManager, e.g. >>>> >>>> new org.infinispan.jcache.remote.JCacheManager(RemoteCacheManager) or >>>> new org.infinispan.jcache.remote.JCacheManager(ConfigurationBuilder) >>>> ...etc, or similar solutions >>>> >>>> The problem with this approach is that we force users to create >>>> JCacheManager instances using implementation detail APIs. >>>> >>>> 2. The only way you can pass in implementation specific configuration >>>> options to JCacheManager instances using standard APIs is via a Properties >>>> file. So, the other solution is to have the missing client configuration >>>> options available as being able to configure them via Properties. The main >>>> limitation here is that property values must be String values. According >>>> to Tristan, this could limit some security configuration for options that >>>> can be converted into String values. Looking at >>>> org.infinispan.client.hotrod.configuration.SslConfigurationBuilder, the >>>> only configuration option that might have such issue is passing in a >>>> javax.net.ssl.SSLContext instance, but I don't see the sslContext() method >>>> used anywhere...? The rest of SSL options take either a String or char[] >>>> so those would not be problematic. >>>> >>>> Thoughts? >>>> >>>> >>>> Regardless of JCache, I think a HotRod client should be configurable via >>>> properties only (this is needed for [2]) as described in [1], maybe we >>>> could introduce factories for non-String based configs? >>> >>> Interesting idea about using factories for non-String configs but not sure >>> that will work? I mean, you'd provide the FQN of the factory class, which >>> would be instantiated with reflection an an empty constructor. What about >>> if that factory relied on some kind of initialization? IOW, if the thing >>> you're building comes from something else? >> >> +1 to stick to use only properties for Hot Rod so I can embed them all >> in configuration files for Hibernate OGM ;) >> >> In Hibernate it's common to allow passing such a factory within the >> configuration Map. >> If the value of the properties map is a String, then it's interpreted >> as a FQN and started via reflection; if it's not a String it verifies >> that it is an _instance_ of the required contract, and takes the >> instance as is. So integrating frameworks can inject more complex >> stuff by simple reference. > > Our standard configuration API also allows custom implementations that > can be provided either as an instance or as a class name. Usually it's > the actual implementation, not a factory. > > The limitation with JSR-107 is that we want it to work with > Caching.getCachingProvider().getCacheManager(...), which can take in > only a Properties instance and pass that to the cache manager. > So far, we assumed all the Properties values must be Strings. However, > it looks like Properties extends Hashtable<Object,Object>, so it > should be possible to stick any object in there. The only gotcha is > that the caller must use Properties.put(k, v) instead of > Properties.setProperty(k, v).
^ I had not noticed that! Feels a bit dirty but that'll do :) > >> >> That's for example how WildFly injects stuff into Hibernate ORM to use >> in most cases; in some cases it still uses the "old style" approach of >> defining a jndi lookup convention, but most such JNDI names area also >> injected, if it's not injecting the "lookup strategy" by FQN: having >> both gives you lots of flexibility. > > I also suggested JNDI, but I was quickly reminded that JNDI isn't > always available, and we don't want to make it a required dependency. > > We could also have a singleton map for "injectables", and replace JNDI > references with keys in our injectables map. Still, I'm always wary > about static stuff, so I like the "hack" of storing non-String values > in a Properties instance better. > > Cheers > Dan > >> >> Thanks, >> Sanne >> >>> >>> I don't know the SSLContext use case enough to know if your suggestion >>> would work. Maybe @Tristan can chime in? >>> >>> Cheers, >>> >>>> >>>> [2] https://issues.jboss.org/browse/ISPRK-16 >>>> >>>> >>>> Gustavo >>>> >>>> >>>> >>>> [1] https://issues.jboss.org/browse/ISPN-6438 >>>> -- >>>> Galder Zamarreño >>>> Infinispan, Red Hat >>>> >>>> >>>> _______________________________________________ >>>> infinispan-dev mailing list >>>> infinispan-dev@lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev >>>> >>>> _______________________________________________ >>>> infinispan-dev mailing list >>>> infinispan-dev@lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev >>> >>> >>> _______________________________________________ >>> infinispan-dev mailing list >>> infinispan-dev@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/infinispan-dev >> >> _______________________________________________ >> infinispan-dev mailing list >> infinispan-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/infinispan-dev > > _______________________________________________ > infinispan-dev mailing list > infinispan-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/infinispan-dev _______________________________________________ infinispan-dev mailing list infinispan-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/infinispan-dev