Title Cache
The Titlecache extension module provides a simple way to cache titles of entities for a configurable duration. This can speed up the rendering time of data-heavy objects.
The current implementation uses the Caffeine caching library.
Dependency Management
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.causeway.extensions</groupId>
<artifactId>causeway-extensions-titlecache</artifactId>
<scope>import</scope>
<type>pom</type>
<version>2.1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
Dependencies
For the module of every entity whose title you want to cache, add the following dependency:
<dependencies>
<dependency>
<groupId>org.apache.causeway.extensions</groupId>
<artifactId>causeway-extensions-titlecache-applib</artifactId>
</dependency>
</dependencies>
And, in the webapp module of your application, add the following dependency:
<dependencies>
<dependency>
<groupId>org.apache.causeway.extensions</groupId>
<artifactId>causeway-extensions-titlecache-caffeine</artifactId>
</dependency>
</dependencies>
Usage
For each entity class whose title is to be cached, create a subclass of TitleUiEvent that also implements the Cached marker interface, and mark it as the event class fpr @DomainObjectLayout#titleUiEvent:
@DomainObject
@DomainObjectLayout(
titleUiEvent = Customer.TitleUiEvent.class
)
public class Customer /*...*/ {
public static class TitleUiEvent extends CausewayModuleApplib.TitleUiEvent<SimpleObject> implements Cached { }
// ...
}
The titles of these entities will be cached according to the default configuration.
Or, for more control on an given entity, implement the CachedWithCacheSettings interface:
@DomainObject
@DomainObjectLayout(
titleUiEvent = Customer.TitleUiEvent.class
)
public class Customer /*...*/ {
public static class TitleUiEvent extends CausewayModuleApplib.TitleUiEvent<SimpleObject> implements CachedWithCacheSettings {
@Override public int expiryDurationInMinutes() { return 1;}
@Override public int maxSizeInEntries() {return 50;}
}
// ...
}