<div dir="ltr">ProviderLoader is responsible to load providers of an SPI. There&#39;s only one implementations of it, this is DefaultProviderLoader. There&#39;s 3 different factories that use, which loads it differently, but you shouldn&#39;t need to worry about those.<br><div><br></div><div>Add &quot;List&lt;SPI&gt; loadSPI&quot; to ProviderLoader and implement it in DefaultProviderLoader. Implementation should be simple, use ServiceLoader and the attached classloader to find instances of SPI.</div><div><br></div><div>Next add same method to ProviderManager. This should loop through all registered ProviderLoaders and retrieve SPIs.</div><div><br></div><div>Final step in DefaultKeycloakSessionFactory.init use ProviderManager#loadSPI instead of ServiceLoader to list SPIs.</div><div><br></div><div>You also need to document it under the provider section in the documentation. One comment should be that SPIs have to be deployed as modules, not just dropped into providers directory.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 23 November 2015 at 22:13, Erik Mulder <span dir="ltr">&lt;<a href="mailto:erik.mulder@docdatapayments.com" target="_blank">erik.mulder@docdatapayments.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I&#39;ll be happy to create a PR for this if you can provide me some info &amp; tips on how to get this working.<br>
<br>
________________________________________<br>
Van: Stian Thorgersen [<a href="mailto:sthorger@redhat.com">sthorger@redhat.com</a>]<br>
Verzonden: maandag 23 november 2015 20:04<br>
Aan: Erik Mulder<br>
CC: keycloak-dev<br>
Onderwerp: Re: [keycloak-dev] Add your custom Spi to the Keycloak session?<br>
<span class=""><br>
No specific reason it can&#39;t. Feel free to create a JIRA to request.<br>
<br>
It&#39;s not something we can prioritize right now though. If you&#39;re willing to do a PR I can give you some pointers on how to implement it.<br>
<br>
</span><span class="">On 23 November 2015 at 16:54, Erik Mulder &lt;<a href="mailto:erik.mulder@docdatapayments.com">erik.mulder@docdatapayments.com</a>&lt;mailto:<a href="mailto:erik.mulder@docdatapayments.com">erik.mulder@docdatapayments.com</a>&gt;&gt; wrote:<br>
We are extending KeyCloak with some custom functionality and we like to<br>
add an extra org.keycloak.provider.Spi and &#39;piggy-back&#39; on the<br>
KeycloakSession.getProvider mechanism at various places. So we added a<br>
org.keycloak.provider.Spi file in the META-INF/services of our provider<br>
jar with the Spi implementation we made. But unfortunately, it&#39;s not<br>
picked up by the DefaultKeycloakSessionFactory, since the classloader<br>
that is used in ServiceLoader.load (DefaultKeycloakSessionFactory:56)<br>
doesn&#39;t have the custom provider jars in scope. Is this intentional?<br>
<br>
I can understand if you don&#39;t want some external Spi &#39;entering&#39; the<br>
KeyCloak system. On the other hand, that&#39;s the &#39;own risk&#39; of the<br>
developer creating it. We would like this constraint lifted if possible.<br>
If not, is there another way we can get our own Spi&#39;s added to the<br>
keycloak session without changing any KeyCloak sources? Like using a<br>
module instead of a &#39;plain&#39; provider jar? Are these added modules in<br>
scope of the DefaultKeycloakSessionFactory classloader?<br>
<br>
<br>
_______________________________________________<br>
keycloak-dev mailing list<br>
</span><a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a>&lt;mailto:<a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a>&gt;<br>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
<br>
</blockquote></div><br></div>