diff --git a/server_development/topics/events.adoc b/server_development/topics/events.adoc index bc2d8ce0b2..86987ec7eb 100644 --- a/server_development/topics/events.adoc +++ b/server_development/topics/events.adoc @@ -4,5 +4,5 @@ Writing a Event Listener Provider starts by implementing the `EventListenerProvider` and `EventListenerProviderFactory` interfaces. Please see the Javadoc and examples for complete details on how to do this. -For details on how to package and deploy a custom provider refer to the <> chapter. +For details on how to package and deploy a custom provider refer to the <<_providers,Service Provider Interfaces>> chapter. diff --git a/server_development/topics/extensions.adoc b/server_development/topics/extensions.adoc index 5d1209c536..41b9b2bd07 100644 --- a/server_development/topics/extensions.adoc +++ b/server_development/topics/extensions.adoc @@ -26,15 +26,15 @@ Object getResource(); which allows you to return an object, which acts as a https://github.com/jax-rs[JAX-RS Resource]. For more details, see the Javadoc and our examples. There is a very simple example in the example distribution in `providers/rest` and there is a more advanced example in `providers/domain-extension`, -which shows how to add an authenticated REST endpoint and other functionalities like <> -or <>. +which shows how to add an authenticated REST endpoint and other functionalities like <<_extensions_spi, Adding your own SPI>> +or <<_extensions_jpa,Extending datamodel with your own JPA entities>>. -For details on how to package and deploy a custom provider, refer to the <> chapter. +For details on how to package and deploy a custom provider, refer to the <<_providers,Service Provider Interfaces>> chapter. [[_extensions_spi]] === Add your own custom SPI -This is useful especially with the <>. To add your own kind of SPI, you need to +This is useful especially with the <<_extensions_rest,Custom REST endpoints>>. To add your own kind of SPI, you need to implement the interface `org.keycloak.provider.Spi` and define the ID of your SPI and the `ProviderFactory` and `Provider` classes. That looks like this: [source,java] @@ -81,7 +81,7 @@ The next step is to create the interfaces `ExampleServiceProviderFactory`, which The `ExampleService` will usually contain the business methods you need for your use case. Note that the `ExampleServiceProviderFactory` instance is always scoped per application, however `ExampleService` is scoped per-request (or more accurately per `KeycloakSession` lifecycle). -Finally you need to implement your providers in the same manner as described in the <> chapter. +Finally you need to implement your providers in the same manner as described in the <<_providers,Service Provider Interfaces>> chapter. For more details, take a look at the example distribution at `providers/domain-extension`, which shows an Example SPI similar to the one above.