├── .editorconfig ├── .gitattributes ├── .gitignore ├── CONTRIBUTING.adoc ├── Jenkinsfile ├── LICENSE ├── NOTICE ├── README.adoc ├── azure-pipelines-static-analysis.yml ├── azure-pipelines.yml ├── build-logic ├── build.gradle └── src │ └── main │ └── java │ └── org │ └── ehcache │ └── build │ ├── ClusteredEhcacheModule.java │ ├── ClusteredServerModule.java │ ├── EhcacheModule.java │ ├── EhcachePackage.java │ ├── InternalEhcacheModule.java │ ├── PublicEhcacheModule.java │ ├── conventions │ ├── BaseConvention.java │ ├── BndConvention.java │ ├── CheckstyleConvention.java │ ├── DeployConvention.java │ ├── JacocoConvention.java │ ├── JavaBaseConvention.java │ ├── JavaConvention.java │ ├── JavaLibraryConvention.java │ ├── SpotbugsConvention.java │ └── WarConvention.java │ ├── plugins │ ├── PackagePlugin.java │ ├── UnsafeJavaPlugin.java │ ├── VariantPlugin.java │ ├── VoltronPlugin.java │ └── osgids │ │ ├── GenerateDeclarativeServicesDescriptors.java │ │ ├── OsgiDsPlugin.java │ │ └── ScrLoggerAdapter.java │ └── util │ ├── ConfigurationBucketSet.java │ ├── OsgiManifestJarExtension.java │ └── PluginUtils.java ├── build.gradle ├── clustered ├── ehcache-client │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── ehcache │ │ │ │ └── clustered │ │ │ │ └── client │ │ │ │ ├── config │ │ │ │ ├── ClusteredResourcePool.java │ │ │ │ ├── ClusteredResourceType.java │ │ │ │ ├── ClusteredStoreConfiguration.java │ │ │ │ ├── ClusteringServiceConfiguration.java │ │ │ │ ├── DedicatedClusteredResourcePool.java │ │ │ │ ├── SharedClusteredResourcePool.java │ │ │ │ ├── Timeouts.java │ │ │ │ ├── builders │ │ │ │ │ ├── ClusteredResourcePoolBuilder.java │ │ │ │ │ ├── ClusteredStoreConfigurationBuilder.java │ │ │ │ │ ├── ClusteringServiceConfigurationBuilder.java │ │ │ │ │ ├── ServerSideConfigurationBuilder.java │ │ │ │ │ ├── TimeoutsBuilder.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ │ ├── internal │ │ │ │ ├── ClusterTierManagerClientEntity.java │ │ │ │ ├── ClusterTierManagerClientEntityFactory.java │ │ │ │ ├── ClusterTierManagerClientEntityService.java │ │ │ │ ├── ClusterTierManagerCreationException.java │ │ │ │ ├── ClusterTierManagerNotFoundException.java │ │ │ │ ├── ClusterTierManagerValidationException.java │ │ │ │ ├── ConnectionSource.java │ │ │ │ ├── PerpetualCachePersistenceException.java │ │ │ │ ├── SimpleClusterTierManagerClientEntity.java │ │ │ │ ├── config │ │ │ │ │ ├── ClusteredResourcePoolImpl.java │ │ │ │ │ ├── DedicatedClusteredResourcePoolImpl.java │ │ │ │ │ ├── SharedClusteredResourcePoolImpl.java │ │ │ │ │ └── xml │ │ │ │ │ │ ├── ClusteredResourceConfigurationParser.java │ │ │ │ │ │ ├── ClusteringCacheManagerServiceConfigurationParser.java │ │ │ │ │ │ ├── ClusteringCacheServiceConfigurationParser.java │ │ │ │ │ │ └── ClusteringParser.java │ │ │ │ ├── loaderwriter │ │ │ │ │ ├── ClusteredLoaderWriterStore.java │ │ │ │ │ ├── ClusteredLoaderWriterStoreProviderFactory.java │ │ │ │ │ ├── DelegatingLoaderWriterStoreProvider.java │ │ │ │ │ ├── DelegatingLoaderWriterStoreProviderFactory.java │ │ │ │ │ └── writebehind │ │ │ │ │ │ ├── ClusteredWriteBehind.java │ │ │ │ │ │ ├── ClusteredWriteBehindStore.java │ │ │ │ │ │ └── ClusteredWriteBehindStoreProviderFactory.java │ │ │ │ ├── lock │ │ │ │ │ ├── VoltronReadWriteLock.java │ │ │ │ │ ├── VoltronReadWriteLockClient.java │ │ │ │ │ └── VoltronReadWriteLockEntityClientService.java │ │ │ │ ├── service │ │ │ │ │ ├── AbstractClientEntityFactory.java │ │ │ │ │ ├── ClusterStateRepository.java │ │ │ │ │ ├── ClusterTierCreationException.java │ │ │ │ │ ├── ClusterTierDestructionException.java │ │ │ │ │ ├── ClusterTierException.java │ │ │ │ │ ├── ClusterTierManagerConfigurationException.java │ │ │ │ │ ├── ClusterTierReleaseException.java │ │ │ │ │ ├── ClusterTierValidationException.java │ │ │ │ │ ├── ClusteredMapException.java │ │ │ │ │ ├── ClusteredStateHolder.java │ │ │ │ │ ├── ClusteringServiceFactory.java │ │ │ │ │ ├── ConnectionState.java │ │ │ │ │ ├── DefaultClusteringService.java │ │ │ │ │ ├── ValueCodec.java │ │ │ │ │ └── ValueCodecFactory.java │ │ │ │ └── store │ │ │ │ │ ├── ClusterTierClientEntity.java │ │ │ │ │ ├── ClusterTierClientEntityService.java │ │ │ │ │ ├── ClusterTierUserData.java │ │ │ │ │ ├── ClusteredStore.java │ │ │ │ │ ├── ClusteredStoreProviderFactory.java │ │ │ │ │ ├── ClusteredValueHolder.java │ │ │ │ │ ├── CommonServerStoreProxy.java │ │ │ │ │ ├── EventualServerStoreProxy.java │ │ │ │ │ ├── FailedReconnectStoreProxy.java │ │ │ │ │ ├── InternalClusterTierClientEntity.java │ │ │ │ │ ├── ReconnectInProgressException.java │ │ │ │ │ ├── ReconnectingServerStoreProxy.java │ │ │ │ │ ├── ServerStoreProxy.java │ │ │ │ │ ├── ServerStoreProxyException.java │ │ │ │ │ ├── SimpleClusterTierClientEntity.java │ │ │ │ │ ├── StrongServerStoreProxy.java │ │ │ │ │ ├── lock │ │ │ │ │ ├── LockManager.java │ │ │ │ │ ├── LockingServerStoreProxy.java │ │ │ │ │ └── LockingServerStoreProxyImpl.java │ │ │ │ │ └── operations │ │ │ │ │ ├── ChainResolver.java │ │ │ │ │ ├── EternalChainResolver.java │ │ │ │ │ └── ExpiryChainResolver.java │ │ │ │ └── service │ │ │ │ ├── ClientEntityFactory.java │ │ │ │ ├── ClusteringService.java │ │ │ │ ├── EntityBusyException.java │ │ │ │ └── EntityService.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ ├── org.ehcache.core.spi.service.ServiceFactory │ │ │ │ ├── org.ehcache.xml.CacheManagerServiceConfigurationParser │ │ │ │ ├── org.ehcache.xml.CacheResourceConfigurationParser │ │ │ │ ├── org.ehcache.xml.CacheServiceConfigurationParser │ │ │ │ └── org.terracotta.entity.EntityClientService │ │ │ └── ehcache-clustered-ext.xsd │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── clustered │ │ │ ├── ClusteredResourcePoolUpdationTest.java │ │ │ ├── client │ │ │ ├── BasicClusteredCacheExpiryTest.java │ │ │ ├── BasicClusteredCacheTest.java │ │ │ ├── CacheManagerDestroyTest.java │ │ │ ├── ClusteredCacheDestroyTest.java │ │ │ ├── ClusteredCacheExpirationTest.java │ │ │ ├── ClusteredConcurrencyTest.java │ │ │ ├── ClusteredEventsTest.java │ │ │ ├── EntityServiceTest.java │ │ │ ├── NonClusteredCacheTest.java │ │ │ ├── SimpleClusteredCacheByXmlTest.java │ │ │ ├── TerracottaUriXmlTest.java │ │ │ ├── TestTimeSource.java │ │ │ ├── UnSupportedCombinationsWithClusteredCacheTest.java │ │ │ ├── XmlConsistencyTest.java │ │ │ ├── XmlUnknownCacheTest.java │ │ │ ├── config │ │ │ │ ├── ClusteredConfigurationDerivationTest.java │ │ │ │ ├── ClusteredStoreConfigurationTest.java │ │ │ │ ├── ClusteringServiceConfigurationTest.java │ │ │ │ └── builders │ │ │ │ │ ├── ClusteredResourcePoolBuilderTest.java │ │ │ │ │ └── TimeoutsBuilderTest.java │ │ │ ├── docs │ │ │ │ ├── ConfigurationDerivation.java │ │ │ │ ├── GettingStarted.java │ │ │ │ ├── Resilience.java │ │ │ │ └── Tiering.java │ │ │ ├── internal │ │ │ │ ├── ClusterTierManagerClientEntityFactoryTest.java │ │ │ │ ├── MockConnectionService.java │ │ │ │ ├── UnitTestConnectionService.java │ │ │ │ ├── config │ │ │ │ │ ├── ClusteredResourcePoolImplTest.java │ │ │ │ │ ├── DedicatedClusteredResourcePoolImplTest.java │ │ │ │ │ ├── SharedClusteredResourcePoolImplTest.java │ │ │ │ │ └── xml │ │ │ │ │ │ ├── ClusteredCacheConfigurationParserIT.java │ │ │ │ │ │ ├── ClusteredResourceConfigurationParserTest.java │ │ │ │ │ │ ├── ClusteringCacheManagerServiceConfigurationParserTest.java │ │ │ │ │ │ └── ClusteringCacheServiceConfigurationParserTest.java │ │ │ │ ├── loaderwriter │ │ │ │ │ ├── ClusteredLoaderWriterStoreProviderTest.java │ │ │ │ │ ├── ClusteredLoaderWriterStoreTest.java │ │ │ │ │ └── writebehind │ │ │ │ │ │ ├── ClusteredWriteBehindStoreProviderTest.java │ │ │ │ │ │ └── ClusteredWriteBehindTest.java │ │ │ │ ├── lock │ │ │ │ │ ├── VoltronReadWriteLockClientTest.java │ │ │ │ │ └── VoltronReadWriteLockTest.java │ │ │ │ ├── service │ │ │ │ │ ├── ClusterStateRepositoryReplicationTest.java │ │ │ │ │ ├── ClusterTierManagerClientEntityExceptionTest.java │ │ │ │ │ ├── ClusteredStateHolderIdGeneratorTest.java │ │ │ │ │ ├── ClusteringServiceFactoryTest.java │ │ │ │ │ ├── ConnectionClosedTest.java │ │ │ │ │ ├── ConnectionStateTest.java │ │ │ │ │ ├── DefaultClusteringServiceDestroyTest.java │ │ │ │ │ ├── DefaultClusteringServiceTest.java │ │ │ │ │ ├── ReconnectTest.java │ │ │ │ │ ├── SharedResourcesTest.java │ │ │ │ │ ├── StateRepositoryWhitelistingTest.java │ │ │ │ │ └── TestServiceProvider.java │ │ │ │ └── store │ │ │ │ │ ├── AbstractServerStoreProxyTest.java │ │ │ │ │ ├── ChainBuilderTest.java │ │ │ │ │ ├── ClusteredStoreEventsTest.java │ │ │ │ │ ├── ClusteredStoreProviderTest.java │ │ │ │ │ ├── ClusteredStoreTest.java │ │ │ │ │ ├── CommonServerStoreProxyTest.java │ │ │ │ │ ├── EventualServerStoreProxyTest.java │ │ │ │ │ ├── MultiThreadedStrongServerStoreProxyTest.java │ │ │ │ │ ├── ReconnectingServerStoreProxyTest.java │ │ │ │ │ ├── StrongServerStoreProxyTest.java │ │ │ │ │ └── lock │ │ │ │ │ ├── LockManagerTest.java │ │ │ │ │ └── LockRetentionDuringFailoverTest.java │ │ │ └── replication │ │ │ │ ├── ActivePassiveClientIdTest.java │ │ │ │ └── ReplicationUtil.java │ │ │ ├── common │ │ │ └── internal │ │ │ │ └── store │ │ │ │ └── operations │ │ │ │ ├── AbstractChainResolverTest.java │ │ │ │ ├── BaseKeyValueOperationTest.java │ │ │ │ ├── ConditionalRemoveOperationTest.java │ │ │ │ ├── ConditionalReplaceOperationTest.java │ │ │ │ ├── EternalChainResolverTest.java │ │ │ │ ├── ExpiryChainResolverTest.java │ │ │ │ ├── LazyValueHolderTest.java │ │ │ │ ├── PutIfAbsentOperationTest.java │ │ │ │ ├── PutOperationTest.java │ │ │ │ ├── PutWithWriterOperationTest.java │ │ │ │ ├── RemoveOperationTest.java │ │ │ │ ├── ReplaceOperationTest.java │ │ │ │ └── TimestampOperationTest.java │ │ │ ├── loaderWriter │ │ │ ├── BasicClusteredLoaderWriterTest.java │ │ │ ├── TestCacheLoaderWriter.java │ │ │ └── writebehind │ │ │ │ ├── BasicClusteredWriteBehindPassthroughTest.java │ │ │ │ └── RecordingLoaderWriter.java │ │ │ ├── server │ │ │ ├── ObservableEhcacheServerEntityService.java │ │ │ ├── package-info.java │ │ │ └── store │ │ │ │ └── ObservableClusterTierServerEntityService.java │ │ │ └── util │ │ │ └── StatisticsTestUtils.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── org.terracotta.connection.ConnectionService │ │ └── configs │ │ ├── cluster-ha.xml │ │ ├── cluster-invalid-uri.xml │ │ ├── clustered-cache.xml │ │ ├── consistency.xml │ │ ├── docs │ │ └── ehcache-clustered.xml │ │ ├── offheap-resource.xml │ │ ├── simple-cluster.xml │ │ ├── unknown-cluster-cache-invalid-attribute.xml │ │ ├── unknown-cluster-cache-invalid-element.xml │ │ └── unknown-cluster-cache.xml ├── ehcache-clustered │ ├── build.gradle │ └── src │ │ └── assemble │ │ ├── README.txt │ │ ├── docker │ │ ├── README.md │ │ ├── buildAndTest.groovy │ │ ├── config-tool │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── entrypoint.sh │ │ ├── server │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── entrypoint.sh │ │ └── voter │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── entrypoint.sh │ │ ├── legal │ │ ├── APACHE_PUBLIC_LICENSE.txt │ │ └── LICENSE │ │ └── server │ │ └── conf │ │ └── cluster.cfg ├── ehcache-common-api │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── ehcache │ │ │ └── clustered │ │ │ └── common │ │ │ ├── Consistency.java │ │ │ ├── PoolAllocation.java │ │ │ ├── ServerSideConfiguration.java │ │ │ └── internal │ │ │ ├── ClusterTierManagerConfiguration.java │ │ │ ├── ServerStoreConfiguration.java │ │ │ ├── exceptions │ │ │ ├── ClusterException.java │ │ │ ├── DestroyInProgressException.java │ │ │ ├── InvalidServerSideConfigurationException.java │ │ │ ├── InvalidStoreException.java │ │ │ └── LifecycleException.java │ │ │ ├── messages │ │ │ ├── EhcacheEntityMessage.java │ │ │ ├── EhcacheEntityResponse.java │ │ │ ├── EhcacheMessageType.java │ │ │ ├── EhcacheOperationMessage.java │ │ │ ├── EhcacheResponseType.java │ │ │ └── StateRepositoryOpMessage.java │ │ │ └── store │ │ │ ├── Chain.java │ │ │ ├── Element.java │ │ │ ├── ServerStore.java │ │ │ └── ValueWrapper.java │ │ └── test │ │ └── java │ │ └── org │ │ └── ehcache │ │ └── clustered │ │ └── common │ │ └── ServerSideConfigurationTest.java ├── ehcache-common │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── ehcache │ │ │ └── clustered │ │ │ └── common │ │ │ ├── EhcacheEntityVersion.java │ │ │ └── internal │ │ │ ├── exceptions │ │ │ ├── IllegalMessageException.java │ │ │ ├── InvalidOperationException.java │ │ │ ├── InvalidServerStoreConfigurationException.java │ │ │ └── UnknownClusterException.java │ │ │ ├── lock │ │ │ └── LockMessaging.java │ │ │ ├── messages │ │ │ ├── BaseCodec.java │ │ │ ├── ChainCodec.java │ │ │ ├── ClusterTierReconnectMessage.java │ │ │ ├── CodecUtil.java │ │ │ ├── CommonConfigCodec.java │ │ │ ├── ConcurrentEntityMessage.java │ │ │ ├── ConfigCodec.java │ │ │ ├── EhcacheCodec.java │ │ │ ├── EntityConfigurationCodec.java │ │ │ ├── ExceptionCodec.java │ │ │ ├── LifeCycleMessageCodec.java │ │ │ ├── LifeCycleMessageFactory.java │ │ │ ├── LifecycleMessage.java │ │ │ ├── MessageCodecUtils.java │ │ │ ├── ReconnectMessageCodec.java │ │ │ ├── ResponseCodec.java │ │ │ ├── ServerStoreOpCodec.java │ │ │ ├── ServerStoreOpMessage.java │ │ │ ├── StateRepositoryMessageFactory.java │ │ │ └── StateRepositoryOpCodec.java │ │ │ ├── store │ │ │ ├── ClusterTierEntityConfiguration.java │ │ │ ├── SequencedElement.java │ │ │ ├── Util.java │ │ │ └── operations │ │ │ │ ├── BaseKeyValueOperation.java │ │ │ │ ├── ConditionalRemoveOperation.java │ │ │ │ ├── ConditionalReplaceOperation.java │ │ │ │ ├── LazyValueHolder.java │ │ │ │ ├── Operation.java │ │ │ │ ├── OperationCode.java │ │ │ │ ├── PutIfAbsentOperation.java │ │ │ │ ├── PutOperation.java │ │ │ │ ├── PutWithWriterOperation.java │ │ │ │ ├── RemoveOperation.java │ │ │ │ ├── ReplaceOperation.java │ │ │ │ ├── Result.java │ │ │ │ ├── TimestampOperation.java │ │ │ │ └── codecs │ │ │ │ ├── CodecException.java │ │ │ │ └── OperationsCodec.java │ │ │ └── util │ │ │ ├── ByteBufferInputStream.java │ │ │ └── ChainBuilder.java │ │ └── test │ │ └── java │ │ └── org │ │ └── ehcache │ │ └── clustered │ │ └── common │ │ └── internal │ │ ├── Store │ │ ├── WhitelistedUnmarshallingTest.java │ │ └── operations │ │ │ └── OperationCodeTest.java │ │ ├── exceptions │ │ ├── BaseClusteredEhcacheExceptionTest.java │ │ ├── IllegalMessageExceptionTest.java │ │ ├── InvalidOperationExceptionTest.java │ │ ├── InvalidServerSideConfigurationExceptionTest.java │ │ ├── InvalidServerStoreConfigurationExceptionTest.java │ │ ├── InvalidStoreExceptionTest.java │ │ └── LifecycleExceptionTest.java │ │ └── messages │ │ ├── ChainCodecTest.java │ │ ├── CommonConfigCodecTest.java │ │ ├── EhcacheCodecTest.java │ │ ├── LifeCycleMessageCodecTest.java │ │ ├── ReconnectMessageCodecTest.java │ │ ├── ResponseCodecTest.java │ │ ├── ServerStoreOpCodecTest.java │ │ └── ServerStoreOpMessageTest.java ├── integration-test │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ ├── clustered │ │ │ ├── BasicCacheOpsMultiThreadedTest.java │ │ │ ├── BasicClusteredCacheOpsTest.java │ │ │ ├── BasicEntityInteractionTest.java │ │ │ ├── CacheManagerLifecycleEhcacheIntegrationTest.java │ │ │ ├── ClusterTierManagerClientEntityFactoryIntegrationTest.java │ │ │ ├── ClusteredIterationTest.java │ │ │ ├── ClusteredLoaderWriterTest.java │ │ │ ├── DestroyLoopTest.java │ │ │ ├── EventsFailureBehaviorTest.java │ │ │ ├── IterationFailureBehaviorTest.java │ │ │ ├── JCacheClusteredTest.java │ │ │ ├── LeaseTest.java │ │ │ ├── NoOffheapTest.java │ │ │ ├── OversizedCacheOpsTest.java │ │ │ ├── OversizedCacheOpsWithSharedResourcesTest.java │ │ │ ├── ReconnectDuringDestroyTest.java │ │ │ ├── ResourcePoolAllocationFailureTest.java │ │ │ ├── TerminatedServerTest.java │ │ │ ├── lock │ │ │ │ ├── VoltronReadWriteLockIntegrationTest.java │ │ │ │ └── VoltronReadWriteLockPassiveIntegrationTest.java │ │ │ ├── management │ │ │ │ ├── AbstractClusteringManagementTest.java │ │ │ │ ├── AfterFailoverManagementServiceTest.java │ │ │ │ ├── CMClosedEventSentTest.java │ │ │ │ ├── ClusterWithManagement.java │ │ │ │ ├── ClusteredStatisticsCountTest.java │ │ │ │ ├── ClusteringManagementServiceTest.java │ │ │ │ ├── DiagnosticTest.java │ │ │ │ ├── EhcacheConfigWithManagementTest.java │ │ │ │ ├── EhcacheManagerToStringTest.java │ │ │ │ └── ManagementClusterConnectionTest.java │ │ │ ├── reconnect │ │ │ │ ├── AutoCreateOnReconnectTest.java │ │ │ │ ├── BasicCacheReconnectTest.java │ │ │ │ ├── CacheManagerDestroyReconnectTest.java │ │ │ │ ├── EventsReconnectTest.java │ │ │ │ └── ThrowingResiliencyStrategy.java │ │ │ ├── replication │ │ │ │ ├── BasicClusteredCacheOpsReplicationMultiThreadedTest.java │ │ │ │ ├── BasicClusteredCacheOpsReplicationTest.java │ │ │ │ ├── BasicClusteredCacheOpsReplicationWithMultipleClientsTest.java │ │ │ │ ├── BasicClusteredCacheOpsReplicationWithServersApiTest.java │ │ │ │ ├── BasicLifeCyclePassiveReplicationTest.java │ │ │ │ ├── DuplicateTest.java │ │ │ │ └── OversizedCacheOpsPassiveTest.java │ │ │ ├── sync │ │ │ │ └── PassiveSyncTest.java │ │ │ ├── util │ │ │ │ ├── BeforeAll.java │ │ │ │ ├── BeforeAllRule.java │ │ │ │ ├── ParallelTestCluster.java │ │ │ │ ├── TCPProxyManager.java │ │ │ │ ├── TestCacheLoaderWriter.java │ │ │ │ └── runners │ │ │ │ │ ├── ExecutorScheduler.java │ │ │ │ │ ├── Parallel.java │ │ │ │ │ └── ParallelParameterized.java │ │ │ └── writebehind │ │ │ │ ├── BasicClusteredWriteBehindMultiClientTest.java │ │ │ │ ├── BasicClusteredWriteBehindTest.java │ │ │ │ ├── BasicClusteredWriteBehindWithPassiveMultiClientTest.java │ │ │ │ ├── BasicClusteredWriteBehindWithPassiveTest.java │ │ │ │ ├── RecordingLoaderWriter.java │ │ │ │ └── WriteBehindTestBase.java │ │ │ └── testing │ │ │ ├── ExternalTests.java │ │ │ ├── StandardCluster.java │ │ │ └── StandardTimeouts.java │ │ └── resources │ │ ├── ExcludeList │ │ ├── clusteredConfiguration.txt │ │ ├── configs │ │ ├── clustered.xml │ │ ├── jcache-clustered.xml │ │ └── offheap-resource.xml │ │ ├── simpleConfiguration.txt │ │ ├── simplelogger.properties │ │ └── tc-logback.xml ├── ops-tool │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── ehcache │ │ │ └── clustered │ │ │ └── operations │ │ │ ├── AbstractCommand.java │ │ │ ├── BaseOptions.java │ │ │ ├── Command.java │ │ │ ├── CreateCacheManager.java │ │ │ ├── DestroyCacheManager.java │ │ │ ├── ListCacheManagers.java │ │ │ ├── OperationsTool.java │ │ │ ├── URIConverter.java │ │ │ └── UpdateCacheManager.java │ │ └── test │ │ └── java │ │ └── org │ │ └── ehcache │ │ └── clustered │ │ └── operations │ │ └── OperationsToolTest.java ├── osgi-test │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── osgi │ │ │ ├── ClusterSupport.java │ │ │ ├── ClusteredOsgiTest.java │ │ │ └── Person.java │ │ └── resources │ │ └── org │ │ └── ehcache │ │ └── osgi │ │ └── ehcache-clustered-osgi.xml ├── server │ ├── ehcache-entity │ │ ├── build.gradle │ │ ├── config │ │ │ └── checkstyle-suppressions.xml │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ └── org │ │ │ │ │ └── ehcache │ │ │ │ │ └── clustered │ │ │ │ │ ├── lock │ │ │ │ │ └── server │ │ │ │ │ │ ├── VoltronReadWriteLockActiveEntity.java │ │ │ │ │ │ ├── VoltronReadWriteLockPassiveEntity.java │ │ │ │ │ │ ├── VoltronReadWriteLockServerEntityService.java │ │ │ │ │ │ └── messages │ │ │ │ │ │ └── LockSyncMessaging.java │ │ │ │ │ └── server │ │ │ │ │ ├── ClusterTierManagerActiveEntity.java │ │ │ │ │ ├── ClusterTierManagerDump.java │ │ │ │ │ ├── ClusterTierManagerPassiveEntity.java │ │ │ │ │ ├── ClusterTierManagerServerEntityService.java │ │ │ │ │ ├── CommunicatorServiceConfiguration.java │ │ │ │ │ ├── ConcurrencyStrategies.java │ │ │ │ │ ├── EhcacheExecutionStrategy.java │ │ │ │ │ ├── ServerStoreCompatibility.java │ │ │ │ │ ├── internal │ │ │ │ │ └── messages │ │ │ │ │ │ ├── EhcacheDataSyncMessage.java │ │ │ │ │ │ ├── EhcacheMessageTrackerCatchup.java │ │ │ │ │ │ ├── EhcacheMessageTrackerMessage.java │ │ │ │ │ │ ├── EhcacheServerCodec.java │ │ │ │ │ │ ├── EhcacheSyncMessageCodec.java │ │ │ │ │ │ ├── PassiveReplicationMessage.java │ │ │ │ │ │ └── PassiveReplicationMessageCodec.java │ │ │ │ │ ├── management │ │ │ │ │ ├── ClusterTierManagement.java │ │ │ │ │ ├── ClusterTierManagerBinding.java │ │ │ │ │ ├── ClusterTierManagerSettingsManagementProvider.java │ │ │ │ │ ├── Management.java │ │ │ │ │ ├── Notification.java │ │ │ │ │ ├── PoolBinding.java │ │ │ │ │ ├── PoolSettingsManagementProvider.java │ │ │ │ │ ├── PoolStatisticsManagementProvider.java │ │ │ │ │ ├── ServerStoreBinding.java │ │ │ │ │ ├── ServerStoreSettingsManagementProvider.java │ │ │ │ │ └── ServerStoreStatisticsManagementProvider.java │ │ │ │ │ └── store │ │ │ │ │ ├── ClusterTierActiveEntity.java │ │ │ │ │ ├── ClusterTierDump.java │ │ │ │ │ ├── ClusterTierPassiveEntity.java │ │ │ │ │ ├── ClusterTierServerEntityService.java │ │ │ │ │ ├── LockManagerImpl.java │ │ │ │ │ ├── MessageToTrackerSegmentFunction.java │ │ │ │ │ ├── NoopLockManager.java │ │ │ │ │ └── ServerLockManager.java │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── services │ │ │ │ └── org.terracotta.entity.EntityServerService │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── ehcache │ │ │ └── clustered │ │ │ ├── lock │ │ │ └── server │ │ │ │ └── VoltronReadWriteLockActiveEntityTest.java │ │ │ └── server │ │ │ ├── ClusterTierManagerActiveEntityTest.java │ │ │ ├── ClusterTierManagerPassiveEntityTest.java │ │ │ ├── DefaultConcurrencyStrategyTest.java │ │ │ ├── ServerStoreCompatibilityTest.java │ │ │ ├── TestClientDescriptor.java │ │ │ ├── TestClientSourceId.java │ │ │ ├── TestInvokeContext.java │ │ │ ├── internal │ │ │ └── messages │ │ │ │ ├── EhcacheMessageTrackerMessageTest.java │ │ │ │ ├── EhcacheServerCodecTest.java │ │ │ │ ├── EhcacheSyncMessageCodecTest.java │ │ │ │ └── PassiveReplicationMessageCodecTest.java │ │ │ └── store │ │ │ ├── ClusterTierActiveEntityTest.java │ │ │ ├── ClusterTierPassiveEntityTest.java │ │ │ ├── InvalidMessage.java │ │ │ └── LockManagerImplTest.java │ ├── ehcache-service-api │ │ ├── build.gradle │ │ ├── config │ │ │ └── checkstyle-suppressions.xml │ │ └── src │ │ │ ├── main │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── ehcache │ │ │ │ └── clustered │ │ │ │ └── server │ │ │ │ ├── KeySegmentMapper.java │ │ │ │ ├── ServerSideServerStore.java │ │ │ │ ├── ServerStoreEventListener.java │ │ │ │ ├── internal │ │ │ │ └── messages │ │ │ │ │ ├── EhcacheStateRepoSyncMessage.java │ │ │ │ │ ├── EhcacheSyncMessage.java │ │ │ │ │ └── SyncMessageType.java │ │ │ │ ├── offheap │ │ │ │ └── InternalChain.java │ │ │ │ ├── repo │ │ │ │ ├── ServerStateRepository.java │ │ │ │ └── StateRepositoryManager.java │ │ │ │ └── state │ │ │ │ ├── EhcacheStateContext.java │ │ │ │ ├── EhcacheStateService.java │ │ │ │ ├── InvalidationTracker.java │ │ │ │ └── config │ │ │ │ ├── EhcacheStateServiceConfig.java │ │ │ │ └── EhcacheStoreStateServiceConfig.java │ │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── ehcache │ │ │ └── clustered │ │ │ └── server │ │ │ └── repo │ │ │ ├── ServerStateRepositoryTest.java │ │ │ └── StateRepositoryManagerTest.java │ └── ehcache-service │ │ ├── build.gradle │ │ ├── config │ │ └── checkstyle-suppressions.xml │ │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── ehcache │ │ │ │ └── clustered │ │ │ │ └── server │ │ │ │ ├── EhcacheStateServiceImpl.java │ │ │ │ ├── ServerStoreImpl.java │ │ │ │ ├── offheap │ │ │ │ ├── ChainStorageEngine.java │ │ │ │ ├── LongPortability.java │ │ │ │ ├── OffHeapChainMap.java │ │ │ │ ├── OffHeapChainStorageEngine.java │ │ │ │ ├── OffHeapServerStore.java │ │ │ │ └── PinningOffHeapChainMap.java │ │ │ │ └── state │ │ │ │ ├── EhcacheStateServiceDump.java │ │ │ │ ├── EhcacheStateServiceProvider.java │ │ │ │ ├── InvalidationTrackerImpl.java │ │ │ │ └── ResourcePageSource.java │ │ └── resources │ │ │ ├── META-INF │ │ │ └── services │ │ │ │ └── org.terracotta.entity.ServiceProvider │ │ │ └── offheap-message.properties │ │ └── test │ │ └── java │ │ └── org │ │ └── ehcache │ │ └── clustered │ │ └── server │ │ ├── EhcacheStateServiceImplTest.java │ │ ├── offheap │ │ ├── ChainMapExtensionTest.java │ │ ├── ChainMapTest.java │ │ ├── OffHeapServerStoreTest.java │ │ └── PinningOffHeapChainMapTest.java │ │ ├── state │ │ ├── EhcacheStateServiceProviderTest.java │ │ └── InvalidationTrackerImplTest.java │ │ └── store │ │ ├── ChainBuilder.java │ │ ├── ElementBuilder.java │ │ ├── ServerStoreTest.java │ │ └── impl │ │ ├── HeapChainBuilder.java │ │ ├── HeapChainImpl.java │ │ ├── HeapElementBuilder.java │ │ ├── HeapElementImpl.java │ │ ├── ReferenceStoreImpl.java │ │ └── ReferenceStoreTest.java └── test-utils │ ├── build.gradle │ ├── config │ └── checkstyle-suppressions.xml │ └── src │ └── main │ └── java │ └── org │ └── ehcache │ └── clustered │ ├── ChainUtils.java │ └── Matchers.java ├── config ├── checkstyle.xml ├── java.header └── owasp-supressions.xml ├── core-spi-test ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ └── main │ └── java │ └── org │ └── ehcache │ └── internal │ ├── TestTimeSource.java │ ├── store │ ├── SPIStoreTester.java │ ├── StoreBulkComputeIfAbsentTest.java │ ├── StoreBulkComputeTest.java │ ├── StoreClearTest.java │ ├── StoreCloseTest.java │ ├── StoreComputeIfAbsentTest.java │ ├── StoreContainsKeyTest.java │ ├── StoreCreationEventListenerTest.java │ ├── StoreEvictionEventListenerTest.java │ ├── StoreExpiryEventListenerTest.java │ ├── StoreFactory.java │ ├── StoreGetAndComputeTest.java │ ├── StoreGetTest.java │ ├── StoreIteratorHasNextTest.java │ ├── StoreIteratorNextTest.java │ ├── StoreIteratorTest.java │ ├── StorePutIfAbsentTest.java │ ├── StorePutTest.java │ ├── StoreRemovalEventListenerTest.java │ ├── StoreRemoveKeyTest.java │ ├── StoreRemoveKeyValueTest.java │ ├── StoreReplaceKeyValueTest.java │ ├── StoreReplaceKeyValueValueTest.java │ ├── StoreSPITest.java │ ├── StoreUpdateEventListenerTest.java │ ├── StoreValueHolderCreationTimeTest.java │ ├── StoreValueHolderLastAccessTimeTest.java │ └── StoreValueHolderValueTest.java │ └── tier │ ├── AuthoritativeTierComputeIfAbsentAndFault.java │ ├── AuthoritativeTierFactory.java │ ├── AuthoritativeTierFlush.java │ ├── AuthoritativeTierGetAndFault.java │ ├── AuthoritativeTierSPITest.java │ ├── CachingTierClear.java │ ├── CachingTierFactory.java │ ├── CachingTierGetOrComputeIfAbsent.java │ ├── CachingTierInvalidate.java │ ├── CachingTierRemove.java │ ├── CachingTierSPITest.java │ ├── CachingTierTester.java │ ├── SPIAuthoritativeTierTester.java │ └── SPICachingTierTester.java ├── demos ├── 00-NoCache │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── demos │ │ │ └── peeper │ │ │ ├── DataStore.java │ │ │ ├── PeeperServlet.java │ │ │ └── PeeperServletContextListener.java │ │ └── resources │ │ └── logback.xml ├── 01-CacheAside │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── demos │ │ │ └── peeper │ │ │ ├── DataCache.java │ │ │ ├── DataStore.java │ │ │ ├── PeeperServlet.java │ │ │ └── PeeperServletContextListener.java │ │ └── resources │ │ └── logback.xml └── build.gradle ├── deploy.sh ├── docs ├── README.adoc ├── build.gradle ├── css │ ├── ehcache.css │ └── font-awesome.min.css ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 └── src │ └── docs │ ├── asciidoc │ ├── developer │ │ ├── clustered-events.adoc │ │ ├── clustered.adoc │ │ ├── design.basics.adoc │ │ ├── design.bootstrapping.adoc │ │ ├── design.resilience.adoc │ │ ├── design.tiering.adoc │ │ ├── index.adoc │ │ ├── module.api.adoc │ │ ├── module.clustering.adoc │ │ ├── module.core.adoc │ │ ├── module.impl.adoc │ │ └── module.xa.adoc │ └── user │ │ ├── .asciidoctorconfig │ │ ├── 107.adoc │ │ ├── cache-event-listeners.adoc │ │ ├── caching-concepts.adoc │ │ ├── caching-patterns.adoc │ │ ├── caching-terms.adoc │ │ ├── class-loading.adoc │ │ ├── clustered-cache.adoc │ │ ├── common.adoc │ │ ├── config-derive.adoc │ │ ├── eviction-advisor.adoc │ │ ├── examples.adoc │ │ ├── expiry.adoc │ │ ├── getting-started.adoc │ │ ├── index.adoc │ │ ├── management.adoc │ │ ├── menu.adoc │ │ ├── migration-guide.adoc │ │ ├── osgi.adoc │ │ ├── performance.adoc │ │ ├── resilience.adoc │ │ ├── serializers-copiers.adoc │ │ ├── thread-pools.adoc │ │ ├── tiering.adoc │ │ ├── usermanaged.adoc │ │ ├── writers.adoc │ │ ├── xa.adoc │ │ ├── xml.adoc │ │ └── xsds.adoc │ └── uml │ ├── cache-through-sequence.puml │ ├── clustered-loader-writer.puml │ ├── clustered-writebehind.puml │ ├── get.puml │ ├── invalidation_strong.puml │ ├── passive-sync-solution-four.puml │ ├── passive-sync-solution-one.puml │ ├── passive-sync-solution-three.puml │ ├── passive-sync-solution-two.puml │ ├── put.puml │ └── putIfAbsentUml.puml ├── ehcache-107 ├── README.adoc ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── jsr107 │ │ │ ├── CacheResources.java │ │ │ ├── CloseUtil.java │ │ │ ├── ConfigurationMerger.java │ │ │ ├── DefaultConfigurationResolver.java │ │ │ ├── Eh107Cache.java │ │ │ ├── Eh107CacheEntryEvent.java │ │ │ ├── Eh107CacheLoaderWriter.java │ │ │ ├── Eh107CacheLoaderWriterProvider.java │ │ │ ├── Eh107CacheMXBean.java │ │ │ ├── Eh107CacheManager.java │ │ │ ├── Eh107CacheStatisticsMXBean.java │ │ │ ├── Eh107CompleteConfiguration.java │ │ │ ├── Eh107Configuration.java │ │ │ ├── Eh107Expiry.java │ │ │ ├── Eh107IdentityCopier.java │ │ │ ├── Eh107MXBean.java │ │ │ ├── Eh107ReverseConfiguration.java │ │ │ ├── EhcacheCachingProvider.java │ │ │ ├── EhcacheExpiryWrapper.java │ │ │ ├── EventListenerAdaptors.java │ │ │ ├── ExpiryPolicyToEhcacheExpiry.java │ │ │ ├── Jsr107Service.java │ │ │ ├── ListenerResources.java │ │ │ ├── NullCompletionListener.java │ │ │ ├── Unwrap.java │ │ │ ├── config │ │ │ ├── ConfigurationElementState.java │ │ │ ├── Jsr107CacheConfiguration.java │ │ │ ├── Jsr107Configuration.java │ │ │ └── package-info.java │ │ │ ├── internal │ │ │ ├── DefaultJsr107Service.java │ │ │ ├── Jsr107CacheConfigurationParser.java │ │ │ ├── Jsr107CacheLoaderWriter.java │ │ │ ├── Jsr107LatencyMonitor.java │ │ │ ├── Jsr107Parser.java │ │ │ ├── Jsr107ServiceConfigurationParser.java │ │ │ ├── WrappedCacheLoaderWriter.java │ │ │ └── tck │ │ │ │ └── Eh107MBeanServerBuilder.java │ │ │ └── package-info.java │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ ├── javax.cache.spi.CachingProvider │ │ │ ├── org.ehcache.xml.CacheManagerServiceConfigurationParser │ │ │ └── org.ehcache.xml.CacheServiceConfigurationParser │ │ └── ehcache-107-ext.xsd │ ├── tck │ └── resources │ │ └── ExcludeList │ └── test │ ├── java │ ├── com │ │ └── pany │ │ │ ├── domain │ │ │ ├── Client.java │ │ │ ├── Customer.java │ │ │ └── Product.java │ │ │ └── ehcache │ │ │ ├── ClientCopier.java │ │ │ ├── MyEvictionAdvisor.java │ │ │ ├── Test107CacheEntryListener.java │ │ │ ├── TestCacheEventListener.java │ │ │ └── integration │ │ │ └── ProductCacheLoaderWriter.java │ └── org │ │ └── ehcache │ │ ├── ParsesConfigurationExtensionTest.java │ │ ├── docs │ │ └── EhCache107ConfigurationIntegrationDocTest.java │ │ └── jsr107 │ │ ├── CacheResourcesTest.java │ │ ├── ConfigStatsManagementActivationTest.java │ │ ├── ConfigurationMergerTest.java │ │ ├── DefaultConfigurationResolverTest.java │ │ ├── Eh107CacheTypeTest.java │ │ ├── Eh107XmlIntegrationTest.java │ │ ├── EhCachingProviderTest.java │ │ ├── IteratorTest.java │ │ ├── Jsr107CacheParserIT.java │ │ ├── LoadAtomicsWith107Test.java │ │ ├── LoaderWriterConfigTest.java │ │ ├── LoaderWriterTest.java │ │ ├── LongSerializer.java │ │ ├── ResourceCombinationsTest.java │ │ ├── SerializerTest.java │ │ ├── SimpleEh107ConfigTest.java │ │ ├── StatisticsTest.java │ │ ├── StringSerializer.java │ │ ├── UnwrapTest.java │ │ └── internal │ │ ├── Jsr107CacheConfigurationParserTest.java │ │ └── Jsr107ServiceConfigurationParserTest.java │ └── resources │ ├── ehcache-107-copiers-immutable-types.xml │ ├── ehcache-107-default-copiers.xml │ ├── ehcache-107-immutable-types-cm-level-copiers.xml │ ├── ehcache-107-integration.xml │ ├── ehcache-107-listeners.xml │ ├── ehcache-107-mbeans-cache-config.xml │ ├── ehcache-107-mbeans-template-config.xml │ ├── ehcache-107-serializer.xml │ ├── ehcache-107-stats.xml │ ├── ehcache-107-types.xml │ ├── ehcache-107.xml │ ├── ehcache-example.xml │ ├── ehcache-loader-writer-107-load-atomics.xml │ ├── ehcache-loader-writer-107.xml │ └── org │ └── ehcache │ └── docs │ ├── ehcache-107-mbeans-cache-manager-config.xml │ ├── ehcache-jsr107-cache-through.xml │ ├── ehcache-jsr107-config.xml │ ├── ehcache-jsr107-template-override.xml │ └── public-xsds-location.xml ├── ehcache-api ├── build.gradle ├── config │ ├── checkstyle-suppressions.xml │ └── checkstyle.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── ehcache │ │ ├── Cache.java │ │ ├── CacheIterationException.java │ │ ├── CacheManager.java │ │ ├── CachePersistenceException.java │ │ ├── PersistentCacheManager.java │ │ ├── PersistentUserManagedCache.java │ │ ├── StateTransitionException.java │ │ ├── Status.java │ │ ├── UserManagedCache.java │ │ ├── ValueSupplier.java │ │ ├── config │ │ ├── Builder.java │ │ ├── CacheConfiguration.java │ │ ├── CacheRuntimeConfiguration.java │ │ ├── Configuration.java │ │ ├── Eviction.java │ │ ├── EvictionAdvisor.java │ │ ├── FluentCacheConfigurationBuilder.java │ │ ├── FluentConfigurationBuilder.java │ │ ├── ResourcePool.java │ │ ├── ResourcePools.java │ │ ├── ResourceType.java │ │ ├── ResourceUnit.java │ │ ├── SizedResourcePool.java │ │ ├── package-info.java │ │ └── units │ │ │ ├── EntryUnit.java │ │ │ ├── MemoryUnit.java │ │ │ └── package-info.java │ │ ├── event │ │ ├── CacheEvent.java │ │ ├── CacheEventListener.java │ │ ├── EventFiring.java │ │ ├── EventOrdering.java │ │ ├── EventType.java │ │ └── package-info.java │ │ ├── expiry │ │ ├── Duration.java │ │ ├── Expirations.java │ │ ├── Expiry.java │ │ ├── ExpiryPolicy.java │ │ └── package-info.java │ │ ├── javadoc │ │ ├── PrivateApi.java │ │ ├── PublicApi.java │ │ └── package-info.java │ │ ├── package-info.java │ │ └── spi │ │ ├── copy │ │ ├── Copier.java │ │ ├── CopyProvider.java │ │ └── package-info.java │ │ ├── loaderwriter │ │ ├── BulkCacheLoadingException.java │ │ ├── BulkCacheWritingException.java │ │ ├── CacheLoaderWriter.java │ │ ├── CacheLoaderWriterConfiguration.java │ │ ├── CacheLoaderWriterProvider.java │ │ ├── CacheLoadingException.java │ │ ├── CacheWritingException.java │ │ ├── WriteBehindConfiguration.java │ │ ├── WriteBehindProvider.java │ │ └── package-info.java │ │ ├── persistence │ │ ├── PersistableResourceService.java │ │ ├── StateHolder.java │ │ ├── StateRepository.java │ │ └── package-info.java │ │ ├── resilience │ │ ├── RecoveryStore.java │ │ ├── ResilienceStrategy.java │ │ ├── ResilienceStrategyProvider.java │ │ ├── StoreAccessException.java │ │ └── package-info.java │ │ ├── serialization │ │ ├── SerializationProvider.java │ │ ├── Serializer.java │ │ ├── SerializerException.java │ │ ├── StatefulSerializer.java │ │ ├── UnsupportedTypeException.java │ │ └── package-info.java │ │ └── service │ │ ├── MaintainableService.java │ │ ├── OptionalServiceDependencies.java │ │ ├── PluralService.java │ │ ├── Service.java │ │ ├── ServiceConfiguration.java │ │ ├── ServiceCreationConfiguration.java │ │ ├── ServiceDependencies.java │ │ ├── ServiceProvider.java │ │ └── package-info.java │ └── test │ └── java │ └── org │ └── ehcache │ ├── CacheManagerTest.java │ ├── UserManagedCacheTest.java │ ├── config │ └── units │ │ └── MemoryUnitTest.java │ └── expiry │ ├── DurationTest.java │ └── ExpirationsTest.java ├── ehcache-core ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── core │ │ │ ├── CacheConfigurationChangeEvent.java │ │ │ ├── CacheConfigurationChangeListener.java │ │ │ ├── CacheConfigurationProperty.java │ │ │ ├── DefaultCacheManagerProviderService.java │ │ │ ├── Ehcache.java │ │ │ ├── EhcacheBase.java │ │ │ ├── EhcacheManager.java │ │ │ ├── EhcachePrefixLoggerFactory.java │ │ │ ├── EhcacheRuntimeConfiguration.java │ │ │ ├── HumanReadable.java │ │ │ ├── InternalCache.java │ │ │ ├── InternalRuntimeConfiguration.java │ │ │ ├── InternalStatus.java │ │ │ ├── Jsr107Cache.java │ │ │ ├── PersistentUserManagedEhcache.java │ │ │ ├── PrefixLogger.java │ │ │ ├── SpecIterator.java │ │ │ ├── StatusTransitioner.java │ │ │ ├── collections │ │ │ └── ConcurrentWeakIdentityHashMap.java │ │ │ ├── config │ │ │ ├── CoreConfigurationBuilder.java │ │ │ ├── DefaultConfiguration.java │ │ │ ├── ExpiryUtils.java │ │ │ ├── package-info.java │ │ │ └── store │ │ │ │ ├── StoreEventSourceConfiguration.java │ │ │ │ ├── StoreStatisticsConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── events │ │ │ ├── CacheEventDispatcher.java │ │ │ ├── CacheEventDispatcherFactory.java │ │ │ ├── CacheEventListenerConfiguration.java │ │ │ ├── CacheEventListenerProvider.java │ │ │ ├── CacheEvents.java │ │ │ ├── CacheManagerListener.java │ │ │ ├── EventListenerWrapper.java │ │ │ ├── NullStoreEventDispatcher.java │ │ │ ├── StateChangeListener.java │ │ │ ├── StoreEventDispatcher.java │ │ │ ├── StoreEventSink.java │ │ │ └── package-info.java │ │ │ ├── exceptions │ │ │ ├── ExceptionFactory.java │ │ │ ├── StorePassThroughException.java │ │ │ └── package-info.java │ │ │ ├── internal │ │ │ ├── resilience │ │ │ │ └── ThrowingResilienceStrategy.java │ │ │ ├── statistics │ │ │ │ ├── DefaultCacheStatistics.java │ │ │ │ ├── DefaultStatisticsService.java │ │ │ │ ├── DefaultStatisticsServiceFactory.java │ │ │ │ ├── DefaultTierStatistics.java │ │ │ │ ├── DelegatedMappedOperationStatistics.java │ │ │ │ ├── DelegatingOperationObserver.java │ │ │ │ ├── DelegatingOperationStatistic.java │ │ │ │ └── StatsUtils.java │ │ │ └── util │ │ │ │ └── ValueSuppliers.java │ │ │ ├── osgi │ │ │ ├── EhcacheActivator.java │ │ │ ├── OsgiServiceLoader.java │ │ │ └── SafeOsgi.java │ │ │ ├── package-info.java │ │ │ ├── resilience │ │ │ └── DefaultRecoveryStore.java │ │ │ ├── spi │ │ │ ├── LifeCycled.java │ │ │ ├── LifeCycledAdapter.java │ │ │ ├── ServiceLocator.java │ │ │ ├── package-info.java │ │ │ ├── service │ │ │ │ ├── CacheManagerProviderService.java │ │ │ │ ├── DiskResourceService.java │ │ │ │ ├── ExecutionService.java │ │ │ │ ├── FileBasedPersistenceContext.java │ │ │ │ ├── LocalPersistenceService.java │ │ │ │ ├── ServiceFactory.java │ │ │ │ ├── ServiceUtils.java │ │ │ │ ├── StatisticsService.java │ │ │ │ └── package-info.java │ │ │ ├── store │ │ │ │ ├── AbstractValueHolder.java │ │ │ │ ├── AbstractWrapperStoreProvider.java │ │ │ │ ├── ConfigurationChangeSupport.java │ │ │ │ ├── InternalCacheManager.java │ │ │ │ ├── Store.java │ │ │ │ ├── TransientStateHolder.java │ │ │ │ ├── TransientStateRepository.java │ │ │ │ ├── events │ │ │ │ │ ├── StoreEvent.java │ │ │ │ │ ├── StoreEventFilter.java │ │ │ │ │ ├── StoreEventListener.java │ │ │ │ │ ├── StoreEventSource.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── heap │ │ │ │ │ ├── LimitExceededException.java │ │ │ │ │ ├── SizeOfEngine.java │ │ │ │ │ ├── SizeOfEngineProvider.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ └── tiering │ │ │ │ │ ├── AuthoritativeTier.java │ │ │ │ │ ├── CachingTier.java │ │ │ │ │ ├── HigherCachingTier.java │ │ │ │ │ ├── LowerCachingTier.java │ │ │ │ │ └── package-info.java │ │ │ └── time │ │ │ │ ├── SystemTimeSource.java │ │ │ │ ├── TickingTimeSource.java │ │ │ │ ├── TimeSource.java │ │ │ │ ├── TimeSourceService.java │ │ │ │ └── package-info.java │ │ │ ├── statistics │ │ │ ├── AuthoritativeTierOperationOutcomes.java │ │ │ ├── BulkOps.java │ │ │ ├── CacheOperationOutcomes.java │ │ │ ├── CacheStatistics.java │ │ │ ├── CachingTierOperationOutcomes.java │ │ │ ├── ChainedObserver.java │ │ │ ├── ChainedOperationObserver.java │ │ │ ├── HigherCachingTierOperationOutcomes.java │ │ │ ├── LowerCachingTierOperationsOutcome.java │ │ │ ├── OperationObserver.java │ │ │ ├── OperationStatistic.java │ │ │ ├── SourceStatistic.java │ │ │ ├── StatisticType.java │ │ │ ├── StoreOperationOutcomes.java │ │ │ ├── SuppliedValueStatistic.java │ │ │ ├── TierOperationOutcomes.java │ │ │ ├── TierStatistics.java │ │ │ ├── ValueStatistic.java │ │ │ ├── ZeroOperationStatistic.java │ │ │ └── package-info.java │ │ │ ├── store │ │ │ ├── StoreConfigurationImpl.java │ │ │ └── StoreSupport.java │ │ │ └── util │ │ │ ├── ByteBufferInputStream.java │ │ │ ├── ClassLoading.java │ │ │ ├── CollectionUtil.java │ │ │ └── ExceptionUtil.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.ehcache.core.spi.service.ServiceFactory │ ├── test │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── core │ │ │ ├── CacheConfigurationChangeListenerTest.java │ │ │ ├── CacheTest.java │ │ │ ├── EhcacheBasicBulkUtil.java │ │ │ ├── EhcacheBasicClearTest.java │ │ │ ├── EhcacheBasicContainsKeyTest.java │ │ │ ├── EhcacheBasicCrudBase.java │ │ │ ├── EhcacheBasicGetAllTest.java │ │ │ ├── EhcacheBasicGetTest.java │ │ │ ├── EhcacheBasicIteratorTest.java │ │ │ ├── EhcacheBasicPutAllTest.java │ │ │ ├── EhcacheBasicPutIfAbsentTest.java │ │ │ ├── EhcacheBasicPutTest.java │ │ │ ├── EhcacheBasicRemoveAllTest.java │ │ │ ├── EhcacheBasicRemoveTest.java │ │ │ ├── EhcacheBasicRemoveValueTest.java │ │ │ ├── EhcacheBasicReplaceTest.java │ │ │ ├── EhcacheBasicReplaceValueTest.java │ │ │ ├── EhcacheBulkMethodsTest.java │ │ │ ├── EhcacheManagerTest.java │ │ │ ├── EhcachePrefixLoggerFactoryTest.java │ │ │ ├── EhcacheTest.java │ │ │ ├── PrefixLoggerTest.java │ │ │ ├── StatusTransitionerTest.java │ │ │ ├── UserManagedCacheTest.java │ │ │ ├── collections │ │ │ └── ConcurrentWeakIdentityHashMapTest.java │ │ │ ├── config │ │ │ ├── CoreConfigurationBuilderTest.java │ │ │ ├── ExpiryUtilsTest.java │ │ │ ├── ResourcePoolsHelper.java │ │ │ └── store │ │ │ │ └── StoreStatisticsConfigurationTest.java │ │ │ ├── events │ │ │ └── CacheEventsTest.java │ │ │ ├── exceptions │ │ │ ├── ExceptionFactoryTest.java │ │ │ └── StorePassThroughExceptionTest.java │ │ │ ├── internal │ │ │ └── util │ │ │ │ └── CollectionUtilTest.java │ │ │ ├── spi │ │ │ ├── ServiceLocatorPluralTest.java │ │ │ ├── ServiceLocatorTest.java │ │ │ ├── service │ │ │ │ └── ServiceUtilsTest.java │ │ │ ├── services │ │ │ │ ├── DefaultTestProvidedService.java │ │ │ │ ├── DefaultTestService.java │ │ │ │ ├── FancyCacheProvider.java │ │ │ │ ├── FancyCacheProviderFactory.java │ │ │ │ ├── TestMandatoryServiceFactory.java │ │ │ │ ├── TestProvidedService.java │ │ │ │ ├── TestProvidedServiceFactory.java │ │ │ │ ├── TestService.java │ │ │ │ ├── TestServiceFactory.java │ │ │ │ └── ranking │ │ │ │ │ ├── HighRankServiceAFactory.java │ │ │ │ │ ├── LowRankServiceBFactory.java │ │ │ │ │ ├── MandatoryHighRankServiceBFactory.java │ │ │ │ │ ├── MandatoryLowRankServiceAFactory.java │ │ │ │ │ ├── RankServiceA.java │ │ │ │ │ └── RankServiceB.java │ │ │ ├── store │ │ │ │ ├── AbstractValueHolderTest.java │ │ │ │ └── CacheProvider.java │ │ │ └── time │ │ │ │ └── TickingTimeSourceTest.java │ │ │ ├── store │ │ │ └── StoreSupportTest.java │ │ │ └── util │ │ │ ├── ClassLoadingTest.java │ │ │ ├── IsCreated.java │ │ │ ├── IsRemoved.java │ │ │ ├── IsUpdated.java │ │ │ ├── Matchers.java │ │ │ └── TestCacheConfig.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.ehcache.core.spi.service.ServiceFactory │ └── testFixtures │ └── java │ └── org │ └── ehcache │ └── core │ └── store │ └── SimpleTestStore.java ├── ehcache-impl ├── build.gradle ├── config │ └── checkstyle-suppressions.xml ├── dummy │ └── .clean └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ ├── config │ │ │ └── builders │ │ │ │ ├── CacheConfigurationBuilder.java │ │ │ │ ├── CacheEventListenerConfigurationBuilder.java │ │ │ │ ├── CacheManagerBuilder.java │ │ │ │ ├── CacheManagerConfiguration.java │ │ │ │ ├── ConfigurationBuilder.java │ │ │ │ ├── ExpiryPolicyBuilder.java │ │ │ │ ├── PooledExecutionServiceConfigurationBuilder.java │ │ │ │ ├── ResourcePoolsBuilder.java │ │ │ │ ├── UserManagedCacheBuilder.java │ │ │ │ ├── UserManagedCacheConfiguration.java │ │ │ │ ├── WriteBehindConfigurationBuilder.java │ │ │ │ └── package-info.java │ │ │ └── impl │ │ │ ├── config │ │ │ ├── AbstractResourcePool.java │ │ │ ├── BaseCacheConfiguration.java │ │ │ ├── ResourcePoolsImpl.java │ │ │ ├── SharedResourcePool.java │ │ │ ├── SizedResourcePoolImpl.java │ │ │ ├── copy │ │ │ │ ├── DefaultCopierConfiguration.java │ │ │ │ ├── DefaultCopyProviderConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── event │ │ │ │ ├── CacheEventDispatcherFactoryConfiguration.java │ │ │ │ ├── DefaultCacheEventDispatcherConfiguration.java │ │ │ │ ├── DefaultCacheEventListenerConfiguration.java │ │ │ │ ├── DefaultEventSourceConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── executor │ │ │ │ ├── PooledExecutionServiceConfiguration.java │ │ │ │ └── package-info.java │ │ │ ├── loaderwriter │ │ │ │ ├── DefaultCacheLoaderWriterConfiguration.java │ │ │ │ ├── DefaultCacheLoaderWriterProviderConfiguration.java │ │ │ │ ├── package-info.java │ │ │ │ └── writebehind │ │ │ │ │ ├── DefaultBatchingConfiguration.java │ │ │ │ │ ├── DefaultWriteBehindConfiguration.java │ │ │ │ │ ├── WriteBehindProviderConfiguration.java │ │ │ │ │ └── package-info.java │ │ │ ├── persistence │ │ │ │ ├── CacheManagerPersistenceConfiguration.java │ │ │ │ ├── DefaultPersistenceConfiguration.java │ │ │ │ ├── UserManagedPersistenceContext.java │ │ │ │ └── package-info.java │ │ │ ├── resilience │ │ │ │ ├── DefaultResilienceStrategyConfiguration.java │ │ │ │ └── DefaultResilienceStrategyProviderConfiguration.java │ │ │ ├── serializer │ │ │ │ ├── DefaultSerializationProviderConfiguration.java │ │ │ │ ├── DefaultSerializerConfiguration.java │ │ │ │ └── package-info.java │ │ │ └── store │ │ │ │ ├── disk │ │ │ │ ├── OffHeapDiskStoreConfiguration.java │ │ │ │ ├── OffHeapDiskStoreProviderConfiguration.java │ │ │ │ └── package-info.java │ │ │ │ ├── heap │ │ │ │ ├── DefaultSizeOfEngineConfiguration.java │ │ │ │ ├── DefaultSizeOfEngineProviderConfiguration.java │ │ │ │ └── package-info.java │ │ │ │ └── shared │ │ │ │ └── SharedStorageConfiguration.java │ │ │ ├── copy │ │ │ ├── IdentityCopier.java │ │ │ ├── ReadWriteCopier.java │ │ │ ├── SerializingCopier.java │ │ │ └── package-info.java │ │ │ ├── events │ │ │ ├── CacheEventAdapter.java │ │ │ ├── CacheEventDispatcherImpl.java │ │ │ ├── EventDispatchTask.java │ │ │ └── package-info.java │ │ │ ├── internal │ │ │ ├── DefaultTimeSourceService.java │ │ │ ├── TimeSourceConfiguration.java │ │ │ ├── TimeSourceServiceFactory.java │ │ │ ├── classes │ │ │ │ ├── ClassInstanceConfiguration.java │ │ │ │ ├── ClassInstanceProvider.java │ │ │ │ ├── ClassInstanceProviderConfiguration.java │ │ │ │ └── commonslang │ │ │ │ │ ├── ArrayUtils.java │ │ │ │ │ ├── ClassUtils.java │ │ │ │ │ └── reflect │ │ │ │ │ ├── ConstructorUtils.java │ │ │ │ │ ├── MemberUtils.java │ │ │ │ │ └── MethodUtils.java │ │ │ ├── events │ │ │ │ ├── AbstractStoreEventDispatcher.java │ │ │ │ ├── CacheEventDispatcherFactoryImpl.java │ │ │ │ ├── CacheEventNotificationListenerServiceProviderFactory.java │ │ │ │ ├── CloseableStoreEventSink.java │ │ │ │ ├── DisabledCacheEventNotificationService.java │ │ │ │ ├── FireableStoreEventHolder.java │ │ │ │ ├── FudgingInvocationScopedEventSink.java │ │ │ │ ├── InvocationScopedEventSink.java │ │ │ │ ├── StoreEventImpl.java │ │ │ │ ├── StoreEvents.java │ │ │ │ └── ThreadLocalStoreEventDispatcher.java │ │ │ ├── executor │ │ │ │ ├── DefaultExecutionServiceFactory.java │ │ │ │ ├── ExecutorUtil.java │ │ │ │ ├── OnDemandExecutionService.java │ │ │ │ ├── OutOfBandScheduledExecutor.java │ │ │ │ ├── PartitionedOrderedExecutor.java │ │ │ │ ├── PartitionedScheduledExecutor.java │ │ │ │ ├── PartitionedUnorderedExecutor.java │ │ │ │ └── PooledExecutionService.java │ │ │ ├── loaderwriter │ │ │ │ └── writebehind │ │ │ │ │ ├── AbstractWriteBehind.java │ │ │ │ │ ├── BatchingLocalHeapWriteBehindQueue.java │ │ │ │ │ ├── NonBatchingLocalHeapWriteBehindQueue.java │ │ │ │ │ ├── StripedWriteBehind.java │ │ │ │ │ ├── WriteBehind.java │ │ │ │ │ ├── WriteBehindProviderFactory.java │ │ │ │ │ └── operations │ │ │ │ │ ├── BatchOperation.java │ │ │ │ │ ├── DeleteAllOperation.java │ │ │ │ │ ├── DeleteOperation.java │ │ │ │ │ ├── KeyBasedOperation.java │ │ │ │ │ ├── SingleOperation.java │ │ │ │ │ ├── WriteAllOperation.java │ │ │ │ │ └── WriteOperation.java │ │ │ ├── persistence │ │ │ │ ├── DefaultDiskResourceServiceFactory.java │ │ │ │ └── DefaultLocalPersistenceServiceFactory.java │ │ │ ├── resilience │ │ │ │ ├── AbstractResilienceStrategy.java │ │ │ │ ├── RobustLoaderWriterResilienceStrategy.java │ │ │ │ └── RobustResilienceStrategy.java │ │ │ ├── sizeof │ │ │ │ ├── DefaultSizeOfEngine.java │ │ │ │ ├── DefaultSizeOfEngineProvider.java │ │ │ │ ├── DefaultSizeOfEngineProviderFactory.java │ │ │ │ ├── NoopSizeOfEngine.java │ │ │ │ └── listeners │ │ │ │ │ ├── EhcacheVisitorListener.java │ │ │ │ │ └── exceptions │ │ │ │ │ └── VisitorListenerException.java │ │ │ ├── spi │ │ │ │ ├── copy │ │ │ │ │ ├── DefaultCopyProvider.java │ │ │ │ │ └── DefaultCopyProviderFactory.java │ │ │ │ ├── event │ │ │ │ │ ├── DefaultCacheEventListenerProvider.java │ │ │ │ │ └── DefaultCacheEventListenerProviderFactory.java │ │ │ │ ├── loaderwriter │ │ │ │ │ ├── DefaultCacheLoaderWriterProvider.java │ │ │ │ │ └── DefaultCacheLoaderWriterProviderFactory.java │ │ │ │ ├── resilience │ │ │ │ │ ├── DefaultResilienceStrategyProvider.java │ │ │ │ │ └── DefaultResilienceStrategyProviderFactory.java │ │ │ │ └── serialization │ │ │ │ │ ├── DefaultSerializationProvider.java │ │ │ │ │ └── DefaultSerializationProviderFactory.java │ │ │ ├── store │ │ │ │ ├── BinaryValueHolder.java │ │ │ │ ├── basic │ │ │ │ │ └── NopStore.java │ │ │ │ ├── copy │ │ │ │ │ ├── CopierStore.java │ │ │ │ │ ├── CopierStoreProviderFactory.java │ │ │ │ │ ├── CopyingIterable.java │ │ │ │ │ ├── CopyingIterator.java │ │ │ │ │ ├── CopyingSpliterator.java │ │ │ │ │ ├── ImmutableCopyingCollection.java │ │ │ │ │ ├── ImmutableCopyingMap.java │ │ │ │ │ └── ImmutableCopyingSet.java │ │ │ │ ├── disk │ │ │ │ │ ├── DiskWriteThreadPool.java │ │ │ │ │ ├── EhcachePersistentConcurrentOffHeapClockCache.java │ │ │ │ │ ├── OffHeapDiskStore.java │ │ │ │ │ ├── OffHeapDiskStoreProviderFactory.java │ │ │ │ │ └── factories │ │ │ │ │ │ └── EhcachePersistentSegmentFactory.java │ │ │ │ ├── heap │ │ │ │ │ ├── Backend.java │ │ │ │ │ ├── OnHeapStore.java │ │ │ │ │ ├── OnHeapStoreProviderFactory.java │ │ │ │ │ ├── OnHeapStrategy.java │ │ │ │ │ ├── SimpleBackend.java │ │ │ │ │ └── holders │ │ │ │ │ │ ├── BaseOnHeapKey.java │ │ │ │ │ │ ├── CopiedOnHeapKey.java │ │ │ │ │ │ ├── LookupOnlyOnHeapKey.java │ │ │ │ │ │ ├── OnHeapKey.java │ │ │ │ │ │ ├── OnHeapValueHolder.java │ │ │ │ │ │ └── SimpleOnHeapValueHolder.java │ │ │ │ ├── loaderwriter │ │ │ │ │ ├── LoaderWriterStoreProvider.java │ │ │ │ │ ├── LoaderWriterStoreProviderFactory.java │ │ │ │ │ ├── LoaderWriterValueHolder.java │ │ │ │ │ ├── LocalLoaderWriterStore.java │ │ │ │ │ └── LocalWriteBehindLoaderWriterStore.java │ │ │ │ ├── offheap │ │ │ │ │ ├── AbstractOffHeapStore.java │ │ │ │ │ ├── BasicOffHeapValueHolder.java │ │ │ │ │ ├── BinaryOffHeapValueHolder.java │ │ │ │ │ ├── EhcacheConcurrentOffHeapClockCache.java │ │ │ │ │ ├── EhcacheOffHeapBackingMap.java │ │ │ │ │ ├── HeuristicConfiguration.java │ │ │ │ │ ├── LazyOffHeapValueHolder.java │ │ │ │ │ ├── MemorySizeParser.java │ │ │ │ │ ├── OffHeapMapStatistics.java │ │ │ │ │ ├── OffHeapStore.java │ │ │ │ │ ├── OffHeapStoreProviderFactory.java │ │ │ │ │ ├── OffHeapStoreUtils.java │ │ │ │ │ ├── OffHeapValueHolder.java │ │ │ │ │ ├── SwitchableEvictionAdvisor.java │ │ │ │ │ ├── factories │ │ │ │ │ │ └── EhcacheSegmentFactory.java │ │ │ │ │ └── portability │ │ │ │ │ │ ├── OffHeapValueHolderPortability.java │ │ │ │ │ │ └── SerializerPortability.java │ │ │ │ ├── shared │ │ │ │ │ ├── AbstractPartition.java │ │ │ │ │ ├── AbstractSharedTierProvider.java │ │ │ │ │ ├── SharedStorage.java │ │ │ │ │ ├── SharedStorageProvider.java │ │ │ │ │ ├── SharedStorageProviderFactory.java │ │ │ │ │ ├── StateHolderIdGenerator.java │ │ │ │ │ ├── authoritative │ │ │ │ │ │ ├── AuthoritativeTierPartition.java │ │ │ │ │ │ ├── SharedAuthoritativeTierProvider.java │ │ │ │ │ │ └── SharedAuthoritativeTierProviderFactory.java │ │ │ │ │ ├── caching │ │ │ │ │ │ ├── CachingTierPartition.java │ │ │ │ │ │ ├── SharedCachingTierProvider.java │ │ │ │ │ │ ├── SharedCachingTierProviderFactory.java │ │ │ │ │ │ ├── higher │ │ │ │ │ │ │ ├── HigherCachingTierPartition.java │ │ │ │ │ │ │ ├── SharedHigherCachingTierProvider.java │ │ │ │ │ │ │ └── SharedHigherCachingTierProviderFactory.java │ │ │ │ │ │ └── lower │ │ │ │ │ │ │ ├── LowerCachingTierPartition.java │ │ │ │ │ │ │ ├── SharedLowerCachingTierProvider.java │ │ │ │ │ │ │ └── SharedLowerCachingTierProviderFactory.java │ │ │ │ │ ├── composites │ │ │ │ │ │ ├── CompositeEvictionAdvisor.java │ │ │ │ │ │ ├── CompositeExpiryPolicy.java │ │ │ │ │ │ ├── CompositeInvalidationListener.java │ │ │ │ │ │ ├── CompositeInvalidationValve.java │ │ │ │ │ │ ├── CompositeSerializer.java │ │ │ │ │ │ └── CompositeValue.java │ │ │ │ │ └── store │ │ │ │ │ │ ├── SharedStoreProvider.java │ │ │ │ │ │ ├── SharedStoreProviderFactory.java │ │ │ │ │ │ └── StorePartition.java │ │ │ │ └── tiering │ │ │ │ │ ├── CompoundCachingTier.java │ │ │ │ │ ├── CompoundCachingTierProviderFactory.java │ │ │ │ │ ├── TieredStore.java │ │ │ │ │ └── TieredStoreProviderFactory.java │ │ │ └── util │ │ │ │ ├── Pacer.java │ │ │ │ ├── ServiceUtil.java │ │ │ │ └── ThreadFactoryUtil.java │ │ │ ├── persistence │ │ │ ├── DefaultDiskResourceService.java │ │ │ ├── DefaultLocalPersistenceService.java │ │ │ ├── FileBasedStateRepository.java │ │ │ ├── FileUtils.java │ │ │ └── package-info.java │ │ │ ├── serialization │ │ │ ├── ByteArraySerializer.java │ │ │ ├── CharSerializer.java │ │ │ ├── CompactJavaSerializer.java │ │ │ ├── DoubleSerializer.java │ │ │ ├── FloatSerializer.java │ │ │ ├── IntegerSerializer.java │ │ │ ├── LongSerializer.java │ │ │ ├── PlainJavaSerializer.java │ │ │ ├── StringSerializer.java │ │ │ └── package-info.java │ │ │ └── store │ │ │ ├── BaseStore.java │ │ │ ├── DefaultStoreEventDispatcher.java │ │ │ └── HashUtils.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.ehcache.core.spi.service.ServiceFactory │ ├── slow-test │ └── java │ │ └── org │ │ └── ehcache │ │ └── impl │ │ └── internal │ │ └── concurrent │ │ └── ConcurrentHashMapITest.java │ ├── test │ └── java │ │ └── org │ │ └── ehcache │ │ ├── EhcacheRuntimeConfigurationTest.java │ │ ├── config │ │ └── builders │ │ │ ├── CacheConfigurationBuilderTest.java │ │ │ ├── CacheManagerBuilderSharedResourcesTest.java │ │ │ ├── CacheManagerBuilderTest.java │ │ │ ├── ExpiryPolicyBuilderTest.java │ │ │ ├── PersistentCacheManagerTest.java │ │ │ ├── ResourcePoolsBuilderTest.java │ │ │ ├── TieringTest.java │ │ │ ├── UserManagedCacheBuilderTest.java │ │ │ └── WriteBehindConfigurationBuilderTest.java │ │ ├── core │ │ ├── events │ │ │ ├── CacheManagerListenerInteractionsTest.java │ │ │ └── CacheManagerListenerTest.java │ │ └── spi │ │ │ └── ServiceProviderTest.java │ │ ├── docs │ │ ├── ConfigurationDerivation.java │ │ ├── Ehcache3.java │ │ ├── GettingStarted.java │ │ ├── ThreadPools.java │ │ ├── Tiering.java │ │ ├── UserManagedCaches.java │ │ └── plugs │ │ │ ├── ListenerObject.java │ │ │ ├── LongCopier.java │ │ │ ├── OddKeysEvictionAdvisor.java │ │ │ ├── SampleLoaderWriter.java │ │ │ └── StringCopier.java │ │ ├── impl │ │ ├── config │ │ │ ├── BaseCacheConfigurationTest.java │ │ │ ├── ResourcePoolsImplTest.java │ │ │ ├── SizedResourcePoolImplTest.java │ │ │ ├── copy │ │ │ │ └── DefaultCopyProviderConfigurationTest.java │ │ │ ├── event │ │ │ │ ├── CacheEventDispatcherFactoryConfigurationTest.java │ │ │ │ ├── DefaultCacheEventDispatcherConfigurationTest.java │ │ │ │ ├── DefaultCacheEventListenerConfigurationTest.java │ │ │ │ └── DefaultEventSourceConfigurationTest.java │ │ │ ├── executor │ │ │ │ └── PooledExecutionServiceConfigurationTest.java │ │ │ ├── loaderwriter │ │ │ │ ├── DefaultCacheLoaderWriterConfigurationTest.java │ │ │ │ ├── DefaultCacheLoaderWriterProviderConfigurationTest.java │ │ │ │ └── writebehind │ │ │ │ │ └── WriteBehindProviderConfigurationTest.java │ │ │ ├── persistence │ │ │ │ └── DefaultPersistenceConfigurationTest.java │ │ │ ├── resilience │ │ │ │ ├── DefaultResilienceStrategyConfigurationTest.java │ │ │ │ └── DefaultResilienceStrategyProviderConfigurationTest.java │ │ │ ├── serializer │ │ │ │ ├── DefaultSerializationProviderConfigurationTest.java │ │ │ │ └── SerializerCountingTest.java │ │ │ └── store │ │ │ │ └── disk │ │ │ │ ├── OffHeapDiskStoreConfigurationTest.java │ │ │ │ └── OffHeapDiskStoreProviderConfigurationTest.java │ │ ├── events │ │ │ └── CacheEventDispatcherImplTest.java │ │ ├── internal │ │ │ ├── DefaultTimeSourceServiceTest.java │ │ │ ├── TimeSourceConfigurationTest.java │ │ │ ├── classes │ │ │ │ ├── ClassInstanceProviderConfigurationTest.java │ │ │ │ └── ClassInstanceProviderTest.java │ │ │ ├── concurrent │ │ │ │ ├── ConcurrentHashMapTest.java │ │ │ │ └── otherPackage │ │ │ │ │ └── V8FeaturesTest.java │ │ │ ├── copy │ │ │ │ ├── IdentityCopierTest.java │ │ │ │ └── SerializingCopierTest.java │ │ │ ├── events │ │ │ │ ├── CacheEventDispatcherFactoryImplTest.java │ │ │ │ ├── FudgingInvocationScopedEventSinkTest.java │ │ │ │ ├── InvocationScopedEventSinkTest.java │ │ │ │ └── TestStoreEventDispatcher.java │ │ │ ├── executor │ │ │ │ ├── PartitionedOrderedExecutorTest.java │ │ │ │ ├── PartitionedScheduledExecutorTest.java │ │ │ │ ├── PartitionedUnorderedExecutorTest.java │ │ │ │ └── PooledExecutionServiceTest.java │ │ │ ├── loaderwriter │ │ │ │ └── writebehind │ │ │ │ │ ├── AbstractWriteBehindTestBase.java │ │ │ │ │ ├── PooledExecutorWriteBehindTest.java │ │ │ │ │ ├── WriteBehindEvictionTest.java │ │ │ │ │ ├── WriteBehindFailuresTest.java │ │ │ │ │ ├── WriteBehindProviderFactoryTest.java │ │ │ │ │ ├── WriteBehindTest.java │ │ │ │ │ └── WriteBehindTestLoaderWriter.java │ │ │ ├── persistence │ │ │ │ ├── CacheManagerDestroyRemovesPersistenceTest.java │ │ │ │ └── TestDiskResourceService.java │ │ │ ├── resilience │ │ │ │ ├── RobustLoaderWriterResilienceStrategyTest.java │ │ │ │ └── RobustResilienceStrategyTest.java │ │ │ ├── sizeof │ │ │ │ ├── DefaultSizeOfEngineConfigurationTest.java │ │ │ │ ├── DefaultSizeOfEngineProviderConfigurationTest.java │ │ │ │ ├── DefaultSizeOfEngineProviderFactoryTest.java │ │ │ │ └── DefaultSizeOfEngineTest.java │ │ │ ├── spi │ │ │ │ ├── TestServiceProvider.java │ │ │ │ ├── copy │ │ │ │ │ └── DefaultCopyProviderTest.java │ │ │ │ ├── event │ │ │ │ │ └── DefaultCacheEventListenerProviderTest.java │ │ │ │ ├── loaderwriter │ │ │ │ │ └── DefaultCacheLoaderWriterProviderTest.java │ │ │ │ ├── resilience │ │ │ │ │ ├── DefaultResilienceStrategyProviderFactoryTest.java │ │ │ │ │ └── DefaultResilienceStrategyProviderTest.java │ │ │ │ └── serialization │ │ │ │ │ └── DefaultSerializationProviderTest.java │ │ │ ├── statistics │ │ │ │ ├── DefaultCacheStatisticsTest.java │ │ │ │ ├── DefaultStatisticsServiceTest.java │ │ │ │ ├── DefaultTierStatisticsDisabledTest.java │ │ │ │ ├── DefaultTierStatisticsTest.java │ │ │ │ └── StatsUtilsTest.java │ │ │ ├── store │ │ │ │ ├── basic │ │ │ │ │ ├── DelegatingValueHolder.java │ │ │ │ │ └── SimpleValueHolder.java │ │ │ │ ├── copy │ │ │ │ │ └── CopierStoreTest.java │ │ │ │ ├── disk │ │ │ │ │ ├── EhcachePersistentConcurrentOffHeapClockCacheTest.java │ │ │ │ │ ├── OffHeapDiskStoreProviderTest.java │ │ │ │ │ ├── OffHeapDiskStoreSPITest.java │ │ │ │ │ ├── OffHeapDiskStoreTest.java │ │ │ │ │ └── factories │ │ │ │ │ │ └── EhcachePersistentSegmentTest.java │ │ │ │ ├── heap │ │ │ │ │ ├── BaseOnHeapStoreTest.java │ │ │ │ │ ├── ByteSizedOnHeapStoreSPITest.java │ │ │ │ │ ├── CountSizedOnHeapStoreTest.java │ │ │ │ │ ├── OnHeapStoreBulkMethodsTest.java │ │ │ │ │ ├── OnHeapStoreCachingTierByRefSPITest.java │ │ │ │ │ ├── OnHeapStoreEvictionTest.java │ │ │ │ │ ├── OnHeapStoreProviderTest.java │ │ │ │ │ ├── OnHeapStoreSPITest.java │ │ │ │ │ ├── OnHeapStoreTest.java │ │ │ │ │ ├── OnHeapStrategyTest.java │ │ │ │ │ ├── bytesized │ │ │ │ │ │ ├── ByteAccountingTest.java │ │ │ │ │ │ ├── ByteSizedOnHeapStoreByRefTest.java │ │ │ │ │ │ ├── OnHeapStoreBulkMethodsTest.java │ │ │ │ │ │ ├── OnHeapStoreByteSizeTest.java │ │ │ │ │ │ ├── OnHeapStoreCachingTierByRefSPITest.java │ │ │ │ │ │ ├── OnHeapStoreEvictionTest.java │ │ │ │ │ │ └── OversizeMappingTest.java │ │ │ │ │ └── holders │ │ │ │ │ │ ├── CopiedOnHeapKeyTest.java │ │ │ │ │ │ └── SimpleOnHeapValueHolderTest.java │ │ │ │ ├── offheap │ │ │ │ │ ├── AbstractEhcacheOffHeapBackingMapTest.java │ │ │ │ │ ├── AbstractOffHeapStoreTest.java │ │ │ │ │ ├── AssertingOffHeapValueHolder.java │ │ │ │ │ ├── AssertingOffHeapValueHolderTest.java │ │ │ │ │ ├── BasicOffHeapValueHolderTest.java │ │ │ │ │ ├── BinaryOffHeapValueHolderTest.java │ │ │ │ │ ├── EhcacheConcurrentOffHeapClockCacheTest.java │ │ │ │ │ ├── LazyOffHeapValueHolderTest.java │ │ │ │ │ ├── MemorySizeParserTest.java │ │ │ │ │ ├── OffHeapStoreLifecycleHelper.java │ │ │ │ │ ├── OffHeapStoreSPITest.java │ │ │ │ │ ├── OffHeapStoreTest.java │ │ │ │ │ ├── OffHeapStoreUtilsTest.java │ │ │ │ │ ├── OffHeapValueHolderPortabilityTest.java │ │ │ │ │ ├── SharedOffHeapAsAuthoritativeTierTest.java │ │ │ │ │ ├── SharedOffHeapAsLowerCachingTierTest.java │ │ │ │ │ ├── SharedOffHeapStoreSPITest.java │ │ │ │ │ ├── SharedOffHeapStoreTest.java │ │ │ │ │ ├── factories │ │ │ │ │ │ └── EhcacheSegmentTest.java │ │ │ │ │ └── portability │ │ │ │ │ │ └── AssertingOffHeapValueHolderPortability.java │ │ │ │ └── tiering │ │ │ │ │ ├── CompoundCachingTierSPITest.java │ │ │ │ │ ├── CompoundCachingTierTest.java │ │ │ │ │ ├── TieredStoreFlushWhileShutdownTest.java │ │ │ │ │ ├── TieredStoreMutatorTest.java │ │ │ │ │ ├── TieredStoreSPITest.java │ │ │ │ │ ├── TieredStoreTest.java │ │ │ │ │ └── TieredStoreWith3TiersSPITest.java │ │ │ └── util │ │ │ │ ├── ByteBufferInputStreamTest.java │ │ │ │ ├── FileExistenceMatchers.java │ │ │ │ ├── FileExistenceMatchersTest.java │ │ │ │ ├── Matchers.java │ │ │ │ ├── PacerTest.java │ │ │ │ ├── StatisticsTestUtils.java │ │ │ │ ├── ThreadFactoryUtilTest.java │ │ │ │ └── UnmatchedResourceType.java │ │ ├── persistence │ │ │ ├── DefaultDiskResourceServiceTest.java │ │ │ ├── DefaultLocalPersistenceServiceTest.java │ │ │ └── FileBasedStateRepositoryTest.java │ │ ├── serialization │ │ │ ├── AddedFieldTest.java │ │ │ ├── AddedSuperClassTest.java │ │ │ ├── ArrayPackageScopeTest.java │ │ │ ├── BasicSerializationTest.java │ │ │ ├── ByteArraySerializerTest.java │ │ │ ├── CharSerializerTest.java │ │ │ ├── CompactJavaSerializerClassLoaderTest.java │ │ │ ├── CompactJavaSerializerClassUnloadingTest.java │ │ │ ├── CompactJavaSerializerTest.java │ │ │ ├── DoubleSerializerTest.java │ │ │ ├── DuplicateClassLoader.java │ │ │ ├── EnumTest.java │ │ │ ├── FieldTypeChangeTest.java │ │ │ ├── FloatSerializerTest.java │ │ │ ├── GetFieldTest.java │ │ │ ├── IntegerSerializerTest.java │ │ │ ├── JavaSerializer.java │ │ │ ├── LongSerializerTest.java │ │ │ ├── PutFieldTest.java │ │ │ ├── ReadObjectNoDataTest.java │ │ │ ├── SerializeAfterEvolutionTest.java │ │ │ ├── SerializerTestUtilities.java │ │ │ ├── StringSerializerTest.java │ │ │ └── TransientStateRepositoryTest.java │ │ └── store │ │ │ ├── DefaultStoreEventDispatcherTest.java │ │ │ ├── HashUtilsTest.java │ │ │ └── StateHolderIdGeneratorTest.java │ │ └── test │ │ └── MockitoUtil.java │ └── unsafe │ └── java │ └── org │ └── ehcache │ └── impl │ └── internal │ └── concurrent │ ├── ConcurrentHashMap.java │ ├── EvictingConcurrentMap.java │ ├── ThreadLocalRandomUtil.java │ └── package-info.java ├── ehcache-management ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── management │ │ │ ├── CollectorService.java │ │ │ ├── ExtendedStatisticsService.java │ │ │ ├── ManagementRegistryService.java │ │ │ ├── ManagementRegistryServiceConfiguration.java │ │ │ ├── SharedManagementService.java │ │ │ ├── cluster │ │ │ ├── Clustering.java │ │ │ ├── ClusteringManagementService.java │ │ │ ├── ClusteringManagementServiceConfiguration.java │ │ │ ├── DefaultClusteringManagementService.java │ │ │ ├── DefaultClusteringManagementServiceConfiguration.java │ │ │ └── LoggingExecutor.java │ │ │ ├── providers │ │ │ ├── CacheBinding.java │ │ │ ├── CacheBindingManagementProvider.java │ │ │ ├── EhcacheStatisticCollectorProvider.java │ │ │ ├── ExposedCacheBinding.java │ │ │ ├── actions │ │ │ │ ├── EhcacheActionProvider.java │ │ │ │ └── EhcacheActionWrapper.java │ │ │ ├── settings │ │ │ │ ├── EhcacheSettingsProvider.java │ │ │ │ ├── ExposedCacheSettings.java │ │ │ │ └── Reflect.java │ │ │ └── statistics │ │ │ │ ├── EhcacheStatisticsProvider.java │ │ │ │ └── StandardEhcacheStatistics.java │ │ │ ├── registry │ │ │ ├── DefaultCollectorService.java │ │ │ ├── DefaultManagementRegistryConfiguration.java │ │ │ ├── DefaultManagementRegistryFactory.java │ │ │ ├── DefaultManagementRegistryService.java │ │ │ ├── DefaultSharedManagementService.java │ │ │ ├── LatencyHistogramConfiguration.java │ │ │ ├── ManagementRegistryServiceConfigurationParser.java │ │ │ └── NodeListIterable.java │ │ │ └── statistics │ │ │ ├── DefaultCacheStatistics.java │ │ │ ├── DefaultExtendedStatisticsService.java │ │ │ ├── DefaultExtendedStatisticsServiceFactory.java │ │ │ ├── DefaultTierStatistics.java │ │ │ ├── DelegatedMappedOperationStatistics.java │ │ │ ├── DelegatingOperationObserver.java │ │ │ └── StatsUtils.java │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ ├── org.ehcache.core.spi.service.ServiceFactory │ │ │ └── org.ehcache.xml.CacheManagerServiceConfigurationParser │ │ └── ehcache-management-ext.xsd │ └── test │ ├── java │ └── org │ │ └── ehcache │ │ ├── docs │ │ └── ManagementTest.java │ │ └── management │ │ ├── ManagementRegistryServiceConfigurationParserIT.java │ │ ├── providers │ │ ├── actions │ │ │ └── EhcacheActionProviderTest.java │ │ ├── settings │ │ │ └── EhcacheSettingsProviderTest.java │ │ └── statistics │ │ │ ├── EhcacheStatisticsProviderTest.java │ │ │ ├── LatencyHistogramConfigurationTest.java │ │ │ ├── StandardEhCacheStatisticsQueryTest.java │ │ │ ├── StandardEhcacheStatisticsTest.java │ │ │ └── StatsUtil.java │ │ └── registry │ │ ├── DefaultCollectorServiceTest.java │ │ ├── DefaultManagementRegistryServiceTest.java │ │ ├── DefaultSharedManagementServiceTest.java │ │ ├── ManagementRegistryServiceConfigurationParserTest.java │ │ └── XmlConfigTest.java │ └── resources │ ├── ehcache-management-1.xml │ ├── ehcache-management-2.xml │ ├── ehcache-management-3.xml │ ├── ehcache-management-4.xml │ ├── ehcache-management-5.xml │ ├── ehcache-management.xml │ └── settings-capability.json ├── ehcache-transactions ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ ├── common │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── transactions │ │ │ └── xa │ │ │ ├── EhcacheXAException.java │ │ │ ├── XACacheException.java │ │ │ ├── internal │ │ │ ├── EhcacheXAResource.java │ │ │ ├── SerializableXid.java │ │ │ ├── SoftLock.java │ │ │ ├── SoftLockSerializer.java │ │ │ ├── SoftLockValueCombinedCopier.java │ │ │ ├── SoftLockValueCombinedSerializer.java │ │ │ ├── StatefulSoftLockValueCombinedSerializer.java │ │ │ ├── StoreEventSourceWrapper.java │ │ │ ├── TransactionId.java │ │ │ ├── TypeUtil.java │ │ │ ├── XATransactionContext.java │ │ │ ├── XATransactionContextFactory.java │ │ │ ├── XAValueHolder.java │ │ │ ├── commands │ │ │ │ ├── Command.java │ │ │ │ ├── StoreEvictCommand.java │ │ │ │ ├── StorePutCommand.java │ │ │ │ └── StoreRemoveCommand.java │ │ │ ├── journal │ │ │ │ ├── DefaultJournalProvider.java │ │ │ │ ├── DefaultJournalProviderFactory.java │ │ │ │ ├── Journal.java │ │ │ │ ├── JournalProvider.java │ │ │ │ ├── PersistentJournal.java │ │ │ │ └── TransientJournal.java │ │ │ └── txmgr │ │ │ │ └── NullXAResourceRegistry.java │ │ │ └── txmgr │ │ │ ├── TransactionManagerWrapper.java │ │ │ ├── XAResourceRegistry.java │ │ │ ├── package-info.java │ │ │ └── provider │ │ │ ├── TransactionManagerLookup.java │ │ │ ├── TransactionManagerProvider.java │ │ │ └── package-info.java │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ ├── org.ehcache.core.spi.service.ServiceFactory │ │ │ ├── org.ehcache.xml.CacheManagerServiceConfigurationParser │ │ │ └── org.ehcache.xml.CacheServiceConfigurationParser │ │ └── ehcache-tx-ext.xsd │ ├── jakarta │ └── java │ │ └── org │ │ └── ehcache │ │ └── transactions │ │ └── xa │ │ ├── configuration │ │ └── XAStoreConfiguration.java │ │ ├── internal │ │ ├── XAStore.java │ │ ├── configuration │ │ │ └── XAStoreProviderFactory.java │ │ ├── txmgr │ │ │ └── provider │ │ │ │ └── DefaultTransactionManagerProviderFactory.java │ │ └── xml │ │ │ ├── TxCacheManagerServiceConfigurationParser.java │ │ │ └── TxCacheServiceConfigurationParser.java │ │ └── txmgr │ │ ├── narayana │ │ ├── EhcacheXaResourceRecoveryHelper.java │ │ ├── NarayanaTransactionManagerLookup.java │ │ └── NarayanaXAResourceRegistry.java │ │ └── provider │ │ ├── LookupTransactionManagerProvider.java │ │ └── LookupTransactionManagerProviderConfiguration.java │ ├── jakartaTest │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── transactions │ │ │ └── xa │ │ │ └── JakartaSmokeTest.java │ └── resources │ │ └── configs │ │ └── jakarta-smoke-test.xml │ ├── main │ └── java │ │ └── org │ │ └── ehcache │ │ └── transactions │ │ └── xa │ │ ├── configuration │ │ └── XAStoreConfiguration.java │ │ ├── internal │ │ ├── XAStore.java │ │ ├── configuration │ │ │ └── XAStoreProviderFactory.java │ │ ├── txmgr │ │ │ └── provider │ │ │ │ └── DefaultTransactionManagerProviderFactory.java │ │ └── xml │ │ │ ├── TxCacheManagerServiceConfigurationParser.java │ │ │ └── TxCacheServiceConfigurationParser.java │ │ └── txmgr │ │ ├── btm │ │ ├── BitronixTransactionManagerLookup.java │ │ ├── BitronixXAResourceRegistry.java │ │ ├── Ehcache3XAResourceHolder.java │ │ └── Ehcache3XAResourceProducer.java │ │ └── provider │ │ ├── LookupTransactionManagerProvider.java │ │ └── LookupTransactionManagerProviderConfiguration.java │ └── test │ ├── java │ └── org │ │ └── ehcache │ │ ├── docs │ │ └── transactions │ │ │ └── xa │ │ │ └── XAGettingStarted.java │ │ ├── impl │ │ └── internal │ │ │ └── store │ │ │ └── offheap │ │ │ └── OffHeapStoreLifecycleHelper.java │ │ └── transactions │ │ ├── NonXACacheTest.java │ │ ├── TransactionalCacheParserIT.java │ │ ├── XmlConfigTest.java │ │ └── xa │ │ ├── configuration │ │ └── XAStoreConfigurationTest.java │ │ ├── integration │ │ └── StatefulSerializerTest.java │ │ ├── internal │ │ ├── EhcacheXAResourceTest.java │ │ ├── UnSupportedResourceTypeTest.java │ │ ├── XAStoreTest.java │ │ ├── XATransactionContextTest.java │ │ ├── XAValueHolderTest.java │ │ ├── journal │ │ │ ├── AbstractJournalTest.java │ │ │ ├── PersistentJournalTest.java │ │ │ └── TransientJournalTest.java │ │ └── xml │ │ │ ├── TxCacheManagerServiceConfigurationParserTest.java │ │ │ └── TxCacheServiceConfigurationParserTest.java │ │ ├── txmgr │ │ └── provider │ │ │ └── LookupTransactionManagerProviderConfigurationTest.java │ │ └── utils │ │ ├── JavaSerializer.java │ │ └── TestXid.java │ └── resources │ ├── configs │ ├── simple-xa.xml │ ├── template-xa.xml │ └── transactional-cache.xml │ └── docs │ └── configs │ └── xa-getting-started.xml ├── ehcache-xml ├── README.adoc ├── build.gradle ├── config │ └── checkstyle-suppressions.xml ├── ehcache-xml-spi │ ├── build.gradle │ ├── config │ │ └── checkstyle-suppressions.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── ehcache │ │ │ └── xml │ │ │ ├── BaseConfigParser.java │ │ │ ├── CacheManagerServiceConfigurationParser.java │ │ │ ├── CacheResourceConfigurationParser.java │ │ │ ├── CacheServiceConfigurationParser.java │ │ │ ├── Parser.java │ │ │ ├── ParsingUtil.java │ │ │ └── exceptions │ │ │ └── XmlConfigurationException.java │ │ └── test │ │ └── java │ │ └── org │ │ └── ehcache │ │ └── xml │ │ └── ParsingUtilTest.java └── src │ ├── common │ ├── java │ │ └── org │ │ │ └── ehcache │ │ │ └── xml │ │ │ ├── CoreServiceConfigurationParser.java │ │ │ ├── CoreServiceCreationConfigurationParser.java │ │ │ ├── XmlUtil.java │ │ │ ├── provider │ │ │ └── SimpleCoreServiceCreationConfigurationParser.java │ │ │ └── service │ │ │ └── SimpleCoreServiceConfigurationParser.java │ └── schema │ │ ├── ehcache-core.xsd │ │ └── ehcache-multi.xsd │ ├── jakarta │ └── java │ │ └── org │ │ └── ehcache │ │ └── xml │ │ ├── ConfigurationParser.java │ │ ├── CoreCacheConfigurationParser.java │ │ ├── JaxbHelper.java │ │ ├── ResourceConfigurationParser.java │ │ ├── ServiceConfigurationParser.java │ │ ├── ServiceCreationConfigurationParser.java │ │ ├── XmlConfiguration.java │ │ ├── XmlModel.java │ │ ├── model │ │ ├── CacheDefinition.java │ │ ├── CacheSpec.java │ │ ├── CacheTemplate.java │ │ ├── Expiry.java │ │ ├── ListenersConfig.java │ │ └── SizeOfEngineLimits.java │ │ ├── multi │ │ └── XmlMultiConfiguration.java │ │ ├── provider │ │ ├── CacheEventDispatcherFactoryConfigurationParser.java │ │ ├── CacheManagerPersistenceConfigurationParser.java │ │ ├── DefaultCopyProviderConfigurationParser.java │ │ ├── DefaultSerializationProviderConfigurationParser.java │ │ ├── DefaultSizeOfEngineProviderConfigurationParser.java │ │ ├── OffHeapDiskStoreProviderConfigurationParser.java │ │ ├── PooledExecutionServiceConfigurationParser.java │ │ ├── ThreadPoolServiceCreationConfigurationParser.java │ │ └── WriteBehindProviderConfigurationParser.java │ │ └── service │ │ ├── DefaultCacheEventDispatcherConfigurationParser.java │ │ ├── DefaultCacheEventListenerConfigurationParser.java │ │ ├── DefaultCacheLoaderWriterConfigurationParser.java │ │ ├── DefaultCopierConfigurationParser.java │ │ ├── DefaultResilienceStrategyConfigurationParser.java │ │ ├── DefaultSerializerConfigurationParser.java │ │ ├── DefaultSizeOfEngineConfigurationParser.java │ │ ├── DefaultWriteBehindConfigurationParser.java │ │ └── OffHeapDiskStoreConfigurationParser.java │ ├── main │ └── java │ │ └── org │ │ └── ehcache │ │ └── xml │ │ ├── ConfigurationParser.java │ │ ├── CoreCacheConfigurationParser.java │ │ ├── JaxbHelper.java │ │ ├── ResourceConfigurationParser.java │ │ ├── ServiceConfigurationParser.java │ │ ├── ServiceCreationConfigurationParser.java │ │ ├── XmlConfiguration.java │ │ ├── XmlModel.java │ │ ├── model │ │ ├── CacheDefinition.java │ │ ├── CacheSpec.java │ │ ├── CacheTemplate.java │ │ ├── Expiry.java │ │ ├── ListenersConfig.java │ │ └── SizeOfEngineLimits.java │ │ ├── multi │ │ └── XmlMultiConfiguration.java │ │ ├── provider │ │ ├── CacheEventDispatcherFactoryConfigurationParser.java │ │ ├── CacheManagerPersistenceConfigurationParser.java │ │ ├── DefaultCopyProviderConfigurationParser.java │ │ ├── DefaultSerializationProviderConfigurationParser.java │ │ ├── DefaultSizeOfEngineProviderConfigurationParser.java │ │ ├── OffHeapDiskStoreProviderConfigurationParser.java │ │ ├── PooledExecutionServiceConfigurationParser.java │ │ ├── ThreadPoolServiceCreationConfigurationParser.java │ │ └── WriteBehindProviderConfigurationParser.java │ │ └── service │ │ ├── DefaultCacheEventDispatcherConfigurationParser.java │ │ ├── DefaultCacheEventListenerConfigurationParser.java │ │ ├── DefaultCacheLoaderWriterConfigurationParser.java │ │ ├── DefaultCopierConfigurationParser.java │ │ ├── DefaultResilienceStrategyConfigurationParser.java │ │ ├── DefaultSerializerConfigurationParser.java │ │ ├── DefaultSizeOfEngineConfigurationParser.java │ │ ├── DefaultWriteBehindConfigurationParser.java │ │ └── OffHeapDiskStoreConfigurationParser.java │ ├── test │ ├── java │ │ ├── com │ │ │ └── pany │ │ │ │ └── ehcache │ │ │ │ ├── DeprecatedExpiry.java │ │ │ │ ├── MyExpiry.java │ │ │ │ ├── copier │ │ │ │ ├── AnotherDescriptionCopier.java │ │ │ │ ├── AnotherPersonCopier.java │ │ │ │ ├── Description.java │ │ │ │ ├── DescriptionCopier.java │ │ │ │ ├── Employee.java │ │ │ │ ├── Person.java │ │ │ │ └── PersonCopier.java │ │ │ │ ├── integration │ │ │ │ ├── TestCacheEventListener.java │ │ │ │ ├── TestCacheLoaderWriter.java │ │ │ │ ├── TestEvictionAdvisor.java │ │ │ │ ├── TestResilienceStrategy.java │ │ │ │ ├── TestSecondCacheEventListener.java │ │ │ │ └── ThreadRememberingLoaderWriter.java │ │ │ │ └── serializer │ │ │ │ ├── TestSerializer.java │ │ │ │ ├── TestSerializer2.java │ │ │ │ ├── TestSerializer3.java │ │ │ │ └── TestSerializer4.java │ │ └── org │ │ │ └── ehcache │ │ │ ├── docs │ │ │ ├── GettingStarted.java │ │ │ └── MultiGettingStarted.java │ │ │ └── xml │ │ │ ├── BarConfiguration.java │ │ │ ├── BarParser.java │ │ │ ├── BazParser.java │ │ │ ├── BazResource.java │ │ │ ├── ConfigurationParserTest.java │ │ │ ├── CoreCacheConfigurationParserTest.java │ │ │ ├── FancyParser.java │ │ │ ├── FooConfiguration.java │ │ │ ├── FooParser.java │ │ │ ├── FromTemplateCacheConfigurationBuilderDefaultTest.java │ │ │ ├── IntegrationConfigurationTest.java │ │ │ ├── NiResilience.java │ │ │ ├── PropertySubstitutionTest.java │ │ │ ├── ShrubberyResilience.java │ │ │ ├── XmlConfigurationTest.java │ │ │ ├── XmlUtilTest.java │ │ │ ├── multi │ │ │ └── XmlMultiConfigurationTest.java │ │ │ ├── provider │ │ │ ├── CacheEventDispatcherFactoryConfigurationParserTest.java │ │ │ ├── CacheManagerPersistenceConfigurationParserTest.java │ │ │ ├── DefaultCopyProviderConfigurationParserTest.java │ │ │ ├── DefaultSerializationProviderConfigurationParserTest.java │ │ │ ├── DefaultSizeOfEngineProviderConfigurationParserTest.java │ │ │ ├── OffHeapDiskStoreProviderConfigurationParserTest.java │ │ │ ├── PooledExecutionServiceConfigurationParserTest.java │ │ │ └── WriteBehindProviderConfigurationParserTest.java │ │ │ └── service │ │ │ ├── DefaultCacheEventDispatcherConfigurationParserTest.java │ │ │ ├── DefaultCacheEventListenerConfigurationParserTest.java │ │ │ ├── DefaultCacheLoaderWriterConfigurationParserTest.java │ │ │ ├── DefaultCopierConfigurationParserTest.java │ │ │ ├── DefaultResilienceStrategyConfigurationParserTest.java │ │ │ ├── DefaultSerializerConfigurationParserTest.java │ │ │ ├── DefaultSizeOfEngineConfigurationParserTest.java │ │ │ ├── DefaultWriteBehindConfigurationParserTest.java │ │ │ └── OffHeapDiskStoreConfigurationParserTest.java │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ ├── org.ehcache.xml.CacheManagerServiceConfigurationParser │ │ │ ├── org.ehcache.xml.CacheResourceConfigurationParser │ │ │ └── org.ehcache.xml.CacheServiceConfigurationParser │ │ └── configs │ │ ├── all-extensions.xml │ │ ├── bar.xsd │ │ ├── baz.xsd │ │ ├── cache-copiers.xml │ │ ├── cache-integration.xml │ │ ├── custom-resource.xml │ │ ├── default-serializer.xml │ │ ├── defaultTypes-cache.xml │ │ ├── disk-persistent-cache.xml │ │ ├── docs │ │ ├── expiry.xml │ │ ├── getting-started.xml │ │ ├── multi │ │ │ ├── multiple-managers.xml │ │ │ └── multiple-variants.xml │ │ ├── template-sample.xml │ │ └── thread-pools.xml │ │ ├── ehcache-cacheEventListener.xml │ │ ├── ehcache-complete.xml │ │ ├── ehcache-multipleCacheEventListener.xml │ │ ├── ehcache-shared-resources.xml │ │ ├── ehcache-system-props.xml │ │ ├── expiry-caches.xml │ │ ├── fancy.xsd │ │ ├── foo.xsd │ │ ├── invalid-core.xml │ │ ├── invalid-service.xml │ │ ├── invalid-two-caches.xml │ │ ├── multi │ │ ├── empty.xml │ │ ├── extended.xml │ │ ├── multiple-configs.xml │ │ └── multiple-variants.xml │ │ ├── nonExistentAdvisor-cache.xml │ │ ├── nonExistentAdvisor-template.xml │ │ ├── one-cache.xml │ │ ├── one-service.xml │ │ ├── persistence-config.xml │ │ ├── pretty-typed-caches.xml │ │ ├── resilience-config.xml │ │ ├── resources-caches-bad-heap-config.xml │ │ ├── resources-caches-bad-offheap-config.xml │ │ ├── resources-caches.xml │ │ ├── resources-templates.xml │ │ ├── sizeof-engine-cm-defaults-one.xml │ │ ├── sizeof-engine-cm-defaults-two.xml │ │ ├── sizeof-engine.xml │ │ ├── template-cache.xml │ │ ├── template-defaults.xml │ │ ├── thread-pools.xml │ │ ├── unknown-resource.xml │ │ ├── unknown-service-creation.xml │ │ ├── unknown-service.xml │ │ └── writebehind-cache.xml │ └── testFixtures │ └── java │ └── org │ └── ehcache │ └── xml │ ├── DomUtil.java │ └── XmlConfigurationMatchers.java ├── ehcache ├── build.gradle └── templates │ ├── github-release-issue.md │ └── github-release.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── integration-test ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ └── test │ ├── java │ └── org │ │ └── ehcache │ │ ├── docs │ │ ├── GettingStartedWithStaticImports.java │ │ └── Performance.java │ │ └── integration │ │ ├── CacheCopierTest.java │ │ ├── DiskPersistenceLifecycleTest.java │ │ ├── EhcacheBaseTest.java │ │ ├── EhcacheBulkMethodsITest.java │ │ ├── EventNotificationTest.java │ │ ├── EvictionEhcacheTest.java │ │ ├── ExpiryEhcacheTestBase.java │ │ ├── ExpiryEventsTest.java │ │ ├── LoaderWriterErrorEhcacheTest.java │ │ ├── LoaderWriterSimpleEhcacheTest.java │ │ ├── OnHeapEvictionStrategyTest.java │ │ ├── OsgiSafetyTest.java │ │ ├── OverSizeMappingTest.java │ │ ├── PersistentCacheTest.java │ │ ├── PersistentUserManagedCacheTest.java │ │ ├── PutAllExpiryEhcacheTest.java │ │ ├── PutExpiryEhcacheTest.java │ │ ├── PutIfAbsentExpiryEhcacheTest.java │ │ ├── SerializersTest.java │ │ ├── SharedResourcesTest.java │ │ ├── SimpleEhcacheTest.java │ │ ├── StatefulSerializerWithStateRepositoryTest.java │ │ ├── StoreStatisticsTest.java │ │ ├── TestTimeSource.java │ │ ├── ThreadPoolsTest.java │ │ ├── TieringTest.java │ │ ├── UserManagedCacheEvictionTest.java │ │ ├── UserManagedCacheLoaderWriterTest.java │ │ ├── XA107Test.java │ │ ├── domain │ │ └── Person.java │ │ ├── statistics │ │ ├── AbstractCacheCalculationTest.java │ │ ├── AbstractCalculationTest.java │ │ ├── AbstractTierCalculationTest.java │ │ ├── CacheCalculationTest.java │ │ ├── ExistEntryProcessor.java │ │ ├── GetEntryProcessor.java │ │ ├── GetKeyEntryProcessor.java │ │ ├── JCacheCalculationTest.java │ │ ├── RemoveEntryProcessor.java │ │ ├── SetEntryProcessor.java │ │ ├── TestIssue3097.java │ │ └── TierCalculationTest.java │ │ ├── transactions │ │ └── xa │ │ │ ├── SampleLoaderWriter.java │ │ │ └── XACacheTest.java │ │ └── util │ │ └── JavaExec.java │ └── resources │ └── configs │ └── simple-xa.xml ├── osgi-test ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── ehcache │ │ └── osgi │ │ └── OsgiTestUtils.java │ └── test │ ├── java │ └── org │ │ └── ehcache │ │ └── osgi │ │ ├── ByteSizedOnHeapOsgiTest.java │ │ ├── Jsr107OsgiTest.java │ │ ├── OffHeapOsgiTest.java │ │ ├── Person.java │ │ ├── SimpleOsgiTest.java │ │ └── TransactionalOsgiTest.java │ └── resources │ └── org │ └── ehcache │ └── osgi │ ├── ehcache-107-osgi.xml │ ├── ehcache-osgi.xml │ └── ehcache-xa-osgi.xml ├── settings.gradle ├── spi-tester ├── build.gradle ├── config │ └── checkstyle-suppressions.xml └── src │ └── main │ └── java │ └── org │ └── ehcache │ └── spi │ └── test │ ├── After.java │ ├── Before.java │ ├── Ignore.java │ ├── LegalSPITesterException.java │ ├── Result.java │ ├── ResultState.java │ ├── SPITest.java │ └── SPITester.java └── start_next_version.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | 9 | # Change these settings to your own preference 10 | indent_style = space 11 | indent_size = 2 12 | 13 | # We recommend you to keep these unchanged 14 | end_of_line = lf 15 | charset = utf-8 16 | trim_trailing_whitespace = true 17 | insert_final_newline = true 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior to LF, because checkstyle enforces it 2 | * text eol=lf 3 | 4 | *.bat eol=crlf 5 | 6 | *.jar binary 7 | *.jpg binary 8 | *.png binary 9 | *.ttf binary 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Gradle 2 | .gradle/ 3 | **/build/ 4 | !**/src/**/build/ 5 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | //See Jenkins wiki pages for info 19 | checkmarxBuild checkmarx_project_name: 'Terracotta DB (TDB) Ehcache OSS' 20 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Ehcache V3 2 | Copyright 2014-2023 Terracotta, Inc. 3 | Copyright IBM Corp. 2024, 2025 4 | 5 | The product includes software from the Apache Commons Lang project, 6 | under the Apache License 2.0 (see: org.ehcache.impl.internal.classes.commonslang) 7 | -------------------------------------------------------------------------------- /azure-pipelines-static-analysis.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright Terracotta, Inc. 3 | # Copyright IBM Corp. 2024, 2025 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | # See shared code location for steps and parameters: 19 | # https://dev.azure.com/TerracottaCI/_git/terracotta 20 | 21 | resources: 22 | repositories: 23 | - repository: templates 24 | type: git 25 | name: terracotta/terracotta 26 | 27 | jobs: 28 | - template: build-templates/gradle-common.yml@templates 29 | parameters: 30 | gradleTasks: 'check' 31 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/ClusteredEhcacheModule.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build; 2 | 3 | import org.gradle.api.Project; 4 | 5 | public class ClusteredEhcacheModule extends EhcacheModule { 6 | 7 | @Override 8 | public void apply(Project project) { 9 | project.setGroup("org.ehcache.modules.clustered"); 10 | super.apply(project); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/ClusteredServerModule.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build; 2 | 3 | import org.ehcache.build.conventions.DeployConvention; 4 | import org.ehcache.build.plugins.VoltronPlugin; 5 | import org.gradle.api.Plugin; 6 | import org.gradle.api.Project; 7 | 8 | public class ClusteredServerModule implements Plugin { 9 | 10 | @Override 11 | public void apply(Project project) { 12 | project.setGroup("org.ehcache.modules.clustered"); 13 | 14 | project.getPlugins().apply(DeployConvention.class); 15 | project.getPlugins().apply(VoltronPlugin.class); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/EhcacheModule.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build; 2 | 3 | import org.ehcache.build.conventions.BndConvention; 4 | import org.ehcache.build.conventions.JavaLibraryConvention; 5 | import org.ehcache.build.conventions.DeployConvention; 6 | import org.gradle.api.Plugin; 7 | import org.gradle.api.Project; 8 | 9 | public abstract class EhcacheModule implements Plugin { 10 | 11 | @Override 12 | public void apply(Project project) { 13 | project.getPlugins().apply(JavaLibraryConvention.class); 14 | project.getPlugins().apply(DeployConvention.class); 15 | project.getPlugins().apply(BndConvention.class); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/EhcachePackage.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build; 2 | 3 | import org.ehcache.build.conventions.DeployConvention; 4 | import org.ehcache.build.plugins.PackagePlugin; 5 | import org.gradle.api.Plugin; 6 | import org.gradle.api.Project; 7 | 8 | public class EhcachePackage implements Plugin { 9 | 10 | @Override 11 | public void apply(Project project) { 12 | project.setGroup("org.ehcache"); 13 | project.getPlugins().apply(PackagePlugin.class); 14 | project.getPlugins().apply(DeployConvention.class); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/InternalEhcacheModule.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build; 2 | 3 | import org.gradle.api.Project; 4 | 5 | public class InternalEhcacheModule extends EhcacheModule { 6 | 7 | @Override 8 | public void apply(Project project) { 9 | project.setGroup("org.ehcache.modules"); 10 | super.apply(project); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/PublicEhcacheModule.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build; 2 | 3 | import org.gradle.api.Project; 4 | 5 | public class PublicEhcacheModule extends EhcacheModule { 6 | @Override 7 | public void apply(Project project) { 8 | project.setGroup("org.ehcache"); 9 | super.apply(project); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/conventions/BaseConvention.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build.conventions; 2 | 3 | import org.gradle.api.Plugin; 4 | import org.gradle.api.Project; 5 | import org.gradle.api.artifacts.ResolutionStrategy; 6 | import org.gradle.api.plugins.BasePlugin; 7 | 8 | import java.net.URI; 9 | 10 | public class BaseConvention implements Plugin { 11 | 12 | @Override 13 | public void apply(Project project) { 14 | project.getPlugins().apply(BasePlugin.class); 15 | 16 | project.getRepositories().mavenCentral(); 17 | project.getRepositories().maven(repo -> repo.setUrl(URI.create("https://repo.terracotta.org/maven2"))); 18 | 19 | project.getConfigurations().configureEach( 20 | config -> config.resolutionStrategy(ResolutionStrategy::failOnVersionConflict) 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/conventions/CheckstyleConvention.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build.conventions; 2 | 3 | import org.gradle.api.Plugin; 4 | import org.gradle.api.Project; 5 | import org.gradle.api.plugins.quality.CheckstyleExtension; 6 | import org.gradle.api.plugins.quality.CheckstylePlugin; 7 | 8 | import java.util.Map; 9 | 10 | public class CheckstyleConvention implements Plugin { 11 | @Override 12 | public void apply(Project project) { 13 | project.getPlugins().apply(CheckstylePlugin.class); 14 | 15 | project.getExtensions().configure(CheckstyleExtension.class, checkstyle -> { 16 | checkstyle.setConfigFile(project.getRootProject().file("config/checkstyle.xml")); 17 | Map properties = checkstyle.getConfigProperties(); 18 | properties.put("projectDir", project.getProjectDir()); 19 | properties.put("rootDir", project.getRootDir()); 20 | }); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/conventions/JavaLibraryConvention.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build.conventions; 2 | 3 | import org.gradle.api.Plugin; 4 | import org.gradle.api.Project; 5 | import org.gradle.api.plugins.JavaLibraryPlugin; 6 | 7 | public class JavaLibraryConvention implements Plugin { 8 | 9 | @Override 10 | public void apply(Project project) { 11 | project.getPlugins().apply(JavaConvention.class); 12 | project.getPlugins().apply(JavaLibraryPlugin.class); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /build-logic/src/main/java/org/ehcache/build/conventions/WarConvention.java: -------------------------------------------------------------------------------- 1 | package org.ehcache.build.conventions; 2 | 3 | import org.gradle.api.Plugin; 4 | import org.gradle.api.Project; 5 | import org.gradle.api.plugins.WarPlugin; 6 | 7 | public class WarConvention implements Plugin { 8 | @Override 9 | public void apply(Project project) { 10 | project.getPlugins().apply(WarPlugin.class); 11 | project.getPlugins().apply(JavaConvention.class); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /clustered/ehcache-client/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/java/org/ehcache/clustered/client/config/builders/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | @PublicApi 18 | package org.ehcache.clustered.client.config.builders; 19 | 20 | import org.ehcache.javadoc.PublicApi; 21 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/java/org/ehcache/clustered/client/config/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | @PublicApi 18 | package org.ehcache.clustered.client.config; 19 | 20 | import org.ehcache.javadoc.PublicApi; 21 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/java/org/ehcache/clustered/client/internal/service/ClusterTierException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.client.internal.service; 19 | 20 | /** 21 | * Root class of all {@code ClusteredStore} failures. 22 | */ 23 | public abstract class ClusterTierException extends Exception { 24 | 25 | private static final long serialVersionUID = -4057331870606799775L; 26 | 27 | public ClusterTierException(String message, Throwable cause) { 28 | super(message, cause); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/java/org/ehcache/clustered/client/internal/service/ValueCodec.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.client.internal.service; 19 | 20 | /** 21 | * ValueCodec 22 | */ 23 | interface ValueCodec { 24 | 25 | Object encode(T input); 26 | 27 | T decode(Object input); 28 | } 29 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/java/org/ehcache/clustered/client/internal/store/ReconnectInProgressException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.client.internal.store; 18 | 19 | public class ReconnectInProgressException extends RuntimeException { 20 | 21 | private static final long serialVersionUID = 2561046982957750120L; 22 | 23 | public ReconnectInProgressException() { 24 | super("Connection lost to server. Client is trying to reconnect to server"); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/resources/META-INF/services/org.ehcache.core.spi.service.ServiceFactory: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.client.internal.service.ClusteringServiceFactory 2 | org.ehcache.clustered.client.internal.store.ClusteredStoreProviderFactory 3 | org.ehcache.clustered.client.internal.loaderwriter.DelegatingLoaderWriterStoreProviderFactory 4 | org.ehcache.clustered.client.internal.loaderwriter.ClusteredLoaderWriterStoreProviderFactory 5 | org.ehcache.clustered.client.internal.loaderwriter.writebehind.ClusteredWriteBehindStoreProviderFactory 6 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/resources/META-INF/services/org.ehcache.xml.CacheManagerServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.client.internal.config.xml.ClusteringCacheManagerServiceConfigurationParser 2 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/resources/META-INF/services/org.ehcache.xml.CacheResourceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.client.internal.config.xml.ClusteredResourceConfigurationParser -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/resources/META-INF/services/org.ehcache.xml.CacheServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.client.internal.config.xml.ClusteringCacheServiceConfigurationParser 2 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/main/resources/META-INF/services/org.terracotta.entity.EntityClientService: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.client.internal.ClusterTierManagerClientEntityService 2 | org.ehcache.clustered.client.internal.store.ClusterTierClientEntityService 3 | org.ehcache.clustered.client.internal.lock.VoltronReadWriteLockEntityClientService 4 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/test/java/org/ehcache/clustered/client/TestTimeSource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.client; 18 | 19 | import org.ehcache.core.spi.time.TimeSource; 20 | 21 | public class TestTimeSource implements TimeSource { 22 | 23 | private long time = 0; 24 | 25 | @Override 26 | public long getTimeMillis() { 27 | return time; 28 | } 29 | 30 | public void advanceTime(long delta) { 31 | this.time += delta; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/test/java/org/ehcache/clustered/server/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Introduced to bridge visibility gaps between client and server for unit testing purposes. 20 | */ 21 | package org.ehcache.clustered.server; 22 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/test/resources/META-INF/services/org.terracotta.connection.ConnectionService: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.client.internal.UnitTestConnectionService 2 | org.ehcache.clustered.client.internal.MockConnectionService 3 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/test/resources/configs/cluster-invalid-uri.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /clustered/ehcache-client/src/test/resources/configs/offheap-resource.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 21 | 22 | 64 23 | 64 24 | 25 | -------------------------------------------------------------------------------- /clustered/ehcache-clustered/src/assemble/legal/LICENSE: -------------------------------------------------------------------------------- 1 | Ehcache is licensed under the Apache License 2.0. 2 | 3 | Ehcache clustering-related components and Terracotta Server include components that are licensed under the Terracotta Public License. 4 | 5 | 6 | -------------------------------------------------------------------------------- /clustered/ehcache-clustered/src/assemble/server/conf/cluster.cfg: -------------------------------------------------------------------------------- 1 | client-lease-duration=150s 2 | client-reconnect-window=120s 3 | cluster-name=default-cluster 4 | failover-priority=availability 5 | offheap-resources=main:512MB 6 | stripe-names=default-stripe 7 | default-stripe:node-names=default-node 8 | default-node:bind-address=0.0.0.0 9 | default-node:group-bind-address=0.0.0.0 10 | default-node:group-port=9430 11 | default-node:hostname=localhost 12 | default-node:log-dir=%H/terracotta/logs 13 | default-node:port=9410 14 | -------------------------------------------------------------------------------- /clustered/ehcache-common-api/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | plugins { 19 | id 'org.ehcache.build.clustered-module' 20 | } 21 | 22 | publishing.publications.withType(MavenPublication) { 23 | pom { 24 | name = 'Ehcache 3 Common Clustering API module' 25 | description = 'The Common Clustering API module of Ehcache 3' 26 | } 27 | } 28 | 29 | dependencies { 30 | api "org.terracotta:entity-common-api:$terracottaApisVersion" 31 | } 32 | -------------------------------------------------------------------------------- /clustered/ehcache-common-api/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/ehcache-common-api/src/main/java/org/ehcache/clustered/common/internal/messages/EhcacheEntityMessage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.common.internal.messages; 19 | 20 | import org.terracotta.entity.EntityMessage; 21 | 22 | /** 23 | * Defines messages for interactions with an {@code EhcacheActiveEntity}. 24 | */ 25 | public abstract class EhcacheEntityMessage implements EntityMessage { 26 | } 27 | -------------------------------------------------------------------------------- /clustered/ehcache-common-api/src/main/java/org/ehcache/clustered/common/internal/messages/EhcacheOperationMessage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.common.internal.messages; 19 | 20 | /** 21 | * EhcacheOperationMessage 22 | */ 23 | public abstract class EhcacheOperationMessage extends EhcacheEntityMessage { 24 | 25 | public abstract EhcacheMessageType getMessageType(); 26 | 27 | @Override 28 | public String toString() { 29 | return getMessageType().toString(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /clustered/ehcache-common/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/ehcache-common/src/main/java/org/ehcache/clustered/common/EhcacheEntityVersion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.common; 19 | 20 | /** 21 | * Class holding the entity version information 22 | */ 23 | public class EhcacheEntityVersion { 24 | 25 | /** 26 | * Entity version 27 | */ 28 | public static final long ENTITY_VERSION = 10L; 29 | 30 | private EhcacheEntityVersion() { 31 | // Only to be used for the version static field 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /clustered/ehcache-common/src/main/java/org/ehcache/clustered/common/internal/store/SequencedElement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.common.internal.store; 19 | 20 | public interface SequencedElement extends Element { 21 | 22 | long getSequenceNumber(); 23 | } 24 | -------------------------------------------------------------------------------- /clustered/ehcache-common/src/main/java/org/ehcache/clustered/common/internal/store/operations/Result.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.common.internal.store.operations; 19 | 20 | public interface Result { 21 | 22 | V getValue(); 23 | 24 | PutOperation asOperationExpiringAt(long expirationTime); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /clustered/integration-test/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/integration-test/src/test/java/org/ehcache/testing/StandardTimeouts.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.testing; 18 | 19 | import org.terracotta.utilities.test.matchers.Eventually; 20 | 21 | import java.time.Duration; 22 | 23 | public interface StandardTimeouts { 24 | 25 | static Eventually.Timeout eventually() { 26 | return Eventually.within(Duration.ofMinutes(1L)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /clustered/integration-test/src/test/resources/configs/clustered.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | ] 6 | > 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /clustered/integration-test/src/test/resources/configs/offheap-resource.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 21 | 22 | 64 23 | 24 | -------------------------------------------------------------------------------- /clustered/integration-test/src/test/resources/simpleConfiguration.txt: -------------------------------------------------------------------------------- 1 | caches: 2 | cache-1: 3 | keyType: java.lang.String 4 | valueType: java.lang.String 5 | serviceConfigurations: 6 | - org.ehcache.impl.config.loaderwriter.DefaultCacheLoaderWriterConfiguration 7 | - org.ehcache.impl.config.loaderwriter.writebehind.DefaultWriteBehindConfiguration 8 | evictionAdvisor: org.ehcache.clustered.management.EhcacheManagerToStringTest$1 9 | expiry: NoExpiryPolicy 10 | resourcePools: 11 | pools: 12 | heap: 13 | size: 10 entries 14 | tierHeight: 10000 15 | offheap: 16 | size: 1 MB 17 | tierHeight: 1000 18 | disk: 19 | size: 2 MB (persistent) 20 | tierHeight: 100 21 | services: 22 | - org.ehcache.impl.config.persistence.CacheManagerPersistenceConfiguration: 23 | rootDirectory: build/tmp/EhcacheManagerToStringTest 24 | -------------------------------------------------------------------------------- /clustered/integration-test/src/test/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright Terracotta, Inc. 3 | # Copyright IBM Corp. 2024, 2025 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | org.slf4j.simpleLogger.showDateTime=true 19 | org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss.SSS 20 | -------------------------------------------------------------------------------- /clustered/integration-test/src/test/resources/tc-logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %d [%t] %p %c - %m%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /clustered/ops-tool/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | plugins { 19 | id 'org.ehcache.build.conventions.java-library' 20 | } 21 | 22 | dependencies { 23 | implementation 'com.beust:jcommander:1.47' 24 | } 25 | -------------------------------------------------------------------------------- /clustered/ops-tool/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/ops-tool/src/main/java/org/ehcache/clustered/operations/Command.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.operations; 18 | 19 | interface Command { 20 | 21 | int execute(); 22 | } 23 | -------------------------------------------------------------------------------- /clustered/osgi-test/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/osgi-test/src/test/java/org/ehcache/osgi/Person.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.osgi; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * Person 24 | */ 25 | public class Person implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | final String name; 30 | 31 | Person(String name) { 32 | this.name = name; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /clustered/server/ehcache-entity/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/server/ehcache-entity/src/main/java/org/ehcache/clustered/server/management/Notification.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.server.management; 18 | 19 | public enum Notification { 20 | EHCACHE_RESOURCE_POOLS_CONFIGURED, 21 | EHCACHE_SERVER_STORE_CREATED, 22 | } 23 | -------------------------------------------------------------------------------- /clustered/server/ehcache-entity/src/main/resources/META-INF/services/org.terracotta.entity.EntityServerService: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.server.ClusterTierManagerServerEntityService 2 | org.ehcache.clustered.server.store.ClusterTierServerEntityService 3 | org.ehcache.clustered.lock.server.VoltronReadWriteLockServerEntityService 4 | -------------------------------------------------------------------------------- /clustered/server/ehcache-entity/src/test/java/org/ehcache/clustered/server/store/InvalidMessage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.server.store; 18 | 19 | import org.ehcache.clustered.common.internal.messages.EhcacheEntityMessage; 20 | 21 | public class InvalidMessage extends EhcacheEntityMessage { 22 | } 23 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service-api/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | plugins { 19 | id 'org.ehcache.build.clustered-server-module' 20 | } 21 | 22 | publishing.publications.withType(MavenPublication) { 23 | pom { 24 | name = 'Ehcache 3 Clustering Server Storage API module' 25 | description = 'The Server Storage API module of Ehcache 3' 26 | } 27 | } 28 | 29 | dependencies { 30 | api project(':clustered:ehcache-common-api') 31 | } 32 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service-api/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service-api/src/main/java/org/ehcache/clustered/server/KeySegmentMapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.server; 19 | 20 | public class KeySegmentMapper { 21 | 22 | private final int segments; 23 | 24 | public KeySegmentMapper(final int segments) { 25 | this.segments = segments; 26 | } 27 | 28 | public int getSegmentForKey(long key) { 29 | return Math.abs((int) (key % segments)); 30 | } 31 | 32 | public int getSegments() { 33 | return segments; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service-api/src/main/java/org/ehcache/clustered/server/internal/messages/EhcacheSyncMessage.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.server.internal.messages; 19 | 20 | import org.ehcache.clustered.common.internal.messages.EhcacheEntityMessage; 21 | 22 | public abstract class EhcacheSyncMessage extends EhcacheEntityMessage { 23 | 24 | public abstract SyncMessageType getMessageType(); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service-api/src/main/java/org/ehcache/clustered/server/internal/messages/SyncMessageType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.clustered.server.internal.messages; 19 | 20 | /** 21 | * SyncMessageType 22 | */ 23 | public enum SyncMessageType { 24 | STATE_REPO, 25 | DATA, 26 | MESSAGE_TRACKER; 27 | } 28 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service-api/src/main/java/org/ehcache/clustered/server/state/EhcacheStateContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.server.state; 18 | 19 | /** 20 | * Marker interface to pass context between begin and end message processing. 21 | */ 22 | @FunctionalInterface 23 | public interface EhcacheStateContext extends AutoCloseable { 24 | void close(); 25 | } 26 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service/src/main/java/org/ehcache/clustered/server/offheap/ChainStorageEngine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.clustered.server.offheap; 18 | 19 | import org.ehcache.clustered.common.internal.store.Chain; 20 | import org.terracotta.offheapstore.storage.StorageEngine; 21 | 22 | import java.nio.ByteBuffer; 23 | 24 | public interface ChainStorageEngine extends StorageEngine { 25 | InternalChain newChain(ByteBuffer element); 26 | InternalChain newChain(Chain chain); 27 | } 28 | -------------------------------------------------------------------------------- /clustered/server/ehcache-service/src/main/resources/META-INF/services/org.terracotta.entity.ServiceProvider: -------------------------------------------------------------------------------- 1 | org.ehcache.clustered.server.state.EhcacheStateServiceProvider -------------------------------------------------------------------------------- /clustered/test-utils/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.ehcache.build.conventions.java-library' 3 | } 4 | 5 | dependencies { 6 | api project(':clustered:ehcache-common') 7 | api "org.hamcrest:hamcrest-core:$hamcrestVersion" 8 | } 9 | -------------------------------------------------------------------------------- /clustered/test-utils/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /config/java.header: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | -------------------------------------------------------------------------------- /core-spi-test/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | plugins { 18 | id 'org.ehcache.build.conventions.java-library' 19 | } 20 | 21 | dependencies { 22 | api project(':spi-tester') 23 | implementation project(':ehcache-core') 24 | implementation project(':ehcache-impl') 25 | implementation "junit:junit:$junitVersion" 26 | implementation "org.mockito:mockito-core:$mockitoVersion" 27 | implementation "org.hamcrest:hamcrest-library:$hamcrestVersion" 28 | } 29 | 30 | -------------------------------------------------------------------------------- /core-spi-test/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /demos/00-NoCache/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /demos/00-NoCache/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /demos/01-CacheAside/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /demos/01-CacheAside/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/README.adoc: -------------------------------------------------------------------------------- 1 | = How to work on documentation 2 | 3 | The documentation is all in link:http://www.methods.co.nz/asciidoc/[asciidoc]. 4 | 5 | == Build 6 | 7 | The documentation is built with 8 | 9 | ./gradlew :docs:asciidoctor 10 | 11 | You will then find the result in `docs/build/asciidoc/user`. 12 | 13 | == Live reload 14 | 15 | To get live reload while editing the documentation, you need two shells. 16 | 17 | In the first one, do a continuous buid of the documentation. 18 | 19 | ./gradlew -t :docs:asciidoctor 20 | 21 | In the second launch the live reload. 22 | 23 | ./gradlew -t :docs:livereload 24 | 25 | The local port will be printed on the console. The usual URL is link:http://localhost:35729[http://localhost:35729]. 26 | 27 | == Add a section 28 | 29 | 1. Create a new adoc file 30 | 2. Copy the header used in the other pages to it 31 | 3. Reference it in `menu.adoc` and `index.adoc` 32 | -------------------------------------------------------------------------------- /docs/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/docs/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/docs/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/src/docs/asciidoc/developer/design.bootstrapping.adoc: -------------------------------------------------------------------------------- 1 | = Bootstrapping design doc 2 | 3 | :toc: 4 | 5 | == Configuration 6 | 7 | === Extending the config 8 | 9 | == Services 10 | 11 | The +CacheManager+ will create a +org.ehcache.spi.ServiceProvider+. The +ServiceProvider+ will use Java's +java.util.ServiceLoader+ to find all +ServiceFactory+ on the classpath. 12 | -------------------------------------------------------------------------------- /docs/src/docs/asciidoc/developer/module.impl.adoc: -------------------------------------------------------------------------------- 1 | = Implementation Module 2 | 3 | :toc: 4 | 5 | == Implementation Module 6 | 7 | === Configuration 8 | 9 | +Configuration+ and +CacheConfiguration+ aren't used to create +CacheManager+ and +Cache+ instances, respectively. Instead they are used to reflect the configuration currently in use by a given +CacheManager+ or +Cache+. 10 | 11 | To instantiate new +CacheManager+ or +Cache+, you should use +CacheManagerBuilder+ or +CacheBuilder+ instances instead. 12 | 13 | ==== Builders 14 | 15 | ==== Mutability of 'configuration' instance 16 | 17 | === Internals 18 | 19 | ==== Store 20 | 21 | ==== Tiering 22 | 23 | ==== Serialization 24 | -------------------------------------------------------------------------------- /docs/src/docs/asciidoc/user/.asciidoctorconfig: -------------------------------------------------------------------------------- 1 | 2 | :includedir: . 3 | :gradle-rootdir: ../../../../.. 4 | -------------------------------------------------------------------------------- /docs/src/docs/asciidoc/user/common.adoc: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | ifndef::sourcedir310[] 4 | :version: 3.10 5 | :notBuildingForSite: true 6 | ifdef::basebackend-html[:outfilesuffix: .html] 7 | :source-highlighter: coderay 8 | :stylesdir: css 9 | :stylesheet: ehcache.css 10 | :linkcss: 11 | :icons: font 12 | :iconfont-remote!: 13 | :iconfont-name: font-awesome.min 14 | :sourcedir310: {gradle-rootdir} 15 | :imagesdir: images 16 | :sectanchors: 17 | :idprefix: 18 | :idseparator: - 19 | endif::sourcedir310[] 20 | -------------------------------------------------------------------------------- /docs/src/docs/uml/cache-through-sequence.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | participant "Client A" as A 4 | participant "Server" as S 5 | participant "Client B" as B 6 | 7 | participant "SOR" as SOR 8 | 9 | [o-> B: put(k, u) 10 | activate B 11 | 12 | [o-> A: put(k, v) 13 | activate A 14 | 15 | B-> S: append(put(k, u)) 16 | activate S 17 | B<--S 18 | deactivate S 19 | 20 | A-> S: append(put(k, v)) 21 | activate S 22 | A<--S 23 | deactivate S 24 | 25 | critical 26 | B-> S: get(k.hash) 27 | activate B 28 | activate S 29 | B<--S: chain 30 | deactivate S 31 | 32 | B-> SOR: write(k, u) 33 | B-> SOR: write(k, v) 34 | 35 | B-> S: replace(k.hash, chain, {k, v}) 36 | activate S 37 | B<--S: success 38 | deactivate S 39 | deactivate B 40 | end 41 | [<--B 42 | deactivate B 43 | 44 | critical 45 | A-> S: get(k.hash) 46 | activate A 47 | activate S 48 | A<--S: chain 49 | deactivate S 50 | 51 | A-> S: replace(k.hash, {k, v}, {k, v}) 52 | activate S 53 | A<--S: success (no-op) 54 | deactivate S 55 | deactivate A 56 | end 57 | [<--A: 58 | deactivate A 59 | 60 | @enduml 61 | -------------------------------------------------------------------------------- /docs/src/docs/uml/clustered-loader-writer.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | participant "SERVER" as S 4 | 5 | title LOADER-WRITER 6 | 7 | [o-> C1: PUT(K1, V1) 8 | critical 9 | C1 -> S: LOCK(H(K1)) 10 | activate S 11 | C1 -> SOR: WRITE(K1, V1) 12 | C1 -> S: APPEND(K1, V1) 13 | C1 -> S: UNLOCK(K1) 14 | deactivate S 15 | end 16 | 17 | [o-> C2: PUT(K1, V2) 18 | critical 19 | C2 -> S: LOCK(H(K1)) 20 | activate S 21 | C2 -> SOR: WRITE(K1, V2) 22 | C2 -> S: APPEND(K1, V2) 23 | C2 -> S: UNLOCK(K1) 24 | deactivate S 25 | end 26 | 27 | == GETS == 28 | 29 | [o-> C1: GET(K1) 30 | C1 -> S: GET(K1) 31 | alt if its a miss 32 | critical 33 | C1 -> S: LOCK(H(K1)) 34 | activate S 35 | C1 -> SOR: LOAD(K1) 36 | C1 -> S: APPEND(K1, V3) 37 | C1 -> S: UNLOCK(K1) 38 | deactivate S 39 | end 40 | end 41 | 42 | newpage WRITE-BEHIND 43 | 44 | [o-> C1: PUT(K1, V1) 45 | C1 -> S: APPENDWITHWRITER(K1, V1) 46 | ...Asynchronously with replaceAtHead... 47 | loop through chain until resolved 48 | critical 49 | C1 -> S: LOCK(H(K1)) 50 | activate S 51 | C1 -> SOR: WRITE(K1, V1) 52 | C1 -> S: UNLOCK(K1) 53 | end 54 | deactivate S 55 | end 56 | 57 | [o-> C2: PUT(K1, V2) 58 | C2 -> S: APPENDWITHWRITER(K1, V2) 59 | 60 | @enduml 61 | 62 | -------------------------------------------------------------------------------- /docs/src/docs/uml/get.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Get 4 | hide footbox 5 | 6 | participant Cache 7 | participant "Caching Tier" as C 8 | participant "Authoritative tier" as A 9 | 10 | -> Cache: get 11 | Cache -> C: get 12 | alt caching tier hit 13 | Cache <-- C: value 14 | <-- Cache: value 15 | else caching tier miss 16 | C -> A: get 17 | alt authoritative tier hit 18 | C <-- A: value 19 | C -> C: store value 20 | Cache <-- C: value 21 | <-- Cache: value 22 | else authoritative tier miss 23 | C <-- A: null 24 | Cache <-- C: null 25 | <-- Cache: null 26 | end 27 | end 28 | @enduml 29 | -------------------------------------------------------------------------------- /docs/src/docs/uml/passive-sync-solution-one.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Passive Replication Proposal One ('The Chris') 4 | participant "Client" as C 5 | participant "Active Server" as AS 6 | participant "Passive Server" as PS 7 | 8 | [o->C: putIfAbsent(k, v) 9 | activate C 10 | C->AS: getAndAppend(putIfAbsent(k, v)) 11 | activate AS 12 | AS->PS: append(putIfAbsent(k, v)) 13 | activate PS 14 | AS<--PS 15 | deactivate PS 16 | C<--AS: chain 17 | deactivate AS 18 | 19 | C->C: resolve 20 | 21 | C->AS: replace(k.hash, chain, resolved) 22 | activate AS 23 | AS->PS: replace(k.hash, chain, resolved) 24 | activate PS 25 | AS<--PS: passive response 26 | deactivate PS 27 | C<--AS: active & passive responses 28 | deactivate AS 29 | 30 | alt active response ≠ passive response 31 | C->AS: evict(k.hash) 32 | activate AS 33 | AS->PS: evict(k.hash) 34 | activate PS 35 | AS<--PS 36 | deactivate PS 37 | C<--AS 38 | deactivate AS 39 | note over AS, PS 40 | Servers now forced back in sync 41 | end note 42 | end 43 | 44 | [<--C: 45 | deactivate C 46 | 47 | @enduml 48 | -------------------------------------------------------------------------------- /docs/src/docs/uml/passive-sync-solution-three.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Passive Replication Proposal Three ('The Modified Clifford') 4 | 5 | participant "Client" as C 6 | participant "Active Server" as AS 7 | participant "Passive Server" as PS 8 | 9 | [o->C: putIfAbsent(k, v) 10 | activate C 11 | C->AS: getAndAppend(putIfAbsent(k, v)) 12 | activate AS 13 | C<<--AS: chain 14 | 15 | C->C: resolve 16 | AS->PS: replicateDelta(putIfAbsent(k, v)) 17 | activate PS 18 | AS<--PS: persisted 19 | note left 20 | //persisted// means "message recorded" 21 | which could be in either client or passive 22 | end note 23 | C<--AS 24 | deactivate AS 25 | [<--C 26 | deactivate C 27 | 28 | PS->PS: apply delta 29 | opt delta apply failure 30 | PS->PS: evict 31 | end opt 32 | PS -[#white]-> AS #layout 33 | deactivate PS 34 | 35 | C->>AS: replace(k.hash, chain, resolved) 36 | activate AS 37 | AS->AS: replace 38 | opt replace-success 39 | AS->>PS: replicateChain(active-state) 40 | activate PS 41 | deactivate PS 42 | end opt 43 | note over AS, PS 44 | Servers now forced back in sync 45 | end note 46 | deactivate AS 47 | @enduml 48 | -------------------------------------------------------------------------------- /docs/src/docs/uml/put.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | title Put 4 | hide footbox 5 | 6 | participant Cache 7 | participant "Caching Tier" as C 8 | participant "Authoritative tier" as A 9 | 10 | -> Cache: put 11 | Cache -> A: put 12 | Cache -> C: invalidate 13 | @enduml 14 | -------------------------------------------------------------------------------- /ehcache-107/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ehcache-107/src/main/java/org/ehcache/jsr107/Eh107IdentityCopier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.jsr107; 19 | 20 | import org.ehcache.impl.copy.ReadWriteCopier; 21 | 22 | /** 23 | * Default copier for JSR caches to be used for immutable types 24 | * even for store by value cases. 25 | */ 26 | class Eh107IdentityCopier extends ReadWriteCopier { 27 | 28 | public Eh107IdentityCopier() { 29 | 30 | } 31 | 32 | @Override 33 | public T copy(T obj) { 34 | return obj; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /ehcache-107/src/main/java/org/ehcache/jsr107/config/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for JSR-107 related services and configuration 20 | */ 21 | package org.ehcache.jsr107.config; 22 | -------------------------------------------------------------------------------- /ehcache-107/src/main/java/org/ehcache/jsr107/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for JSR-107 integration types. 20 | */ 21 | package org.ehcache.jsr107; 22 | -------------------------------------------------------------------------------- /ehcache-107/src/main/resources/META-INF/services/javax.cache.spi.CachingProvider: -------------------------------------------------------------------------------- 1 | org.ehcache.jsr107.EhcacheCachingProvider -------------------------------------------------------------------------------- /ehcache-107/src/main/resources/META-INF/services/org.ehcache.xml.CacheManagerServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.jsr107.internal.Jsr107ServiceConfigurationParser -------------------------------------------------------------------------------- /ehcache-107/src/main/resources/META-INF/services/org.ehcache.xml.CacheServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright Terracotta, Inc. 3 | # Copyright IBM Corp. 2024, 2025 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | # 17 | 18 | org.ehcache.jsr107.internal.Jsr107CacheConfigurationParser 19 | -------------------------------------------------------------------------------- /ehcache-107/src/tck/resources/ExcludeList: -------------------------------------------------------------------------------- 1 | #List tests to be excluded. 2 | #Lines beginning with a '#' are comments 3 | #Enter One method per line with syntax FULL_CLASS_NAME#METHOD_NAME as in the example below 4 | 5 | # This is a dummy test that fails if not in the exclude list. 6 | org.jsr107.tck.CachingTest#dummyTest 7 | -------------------------------------------------------------------------------- /ehcache-107/src/test/java/com/pany/domain/Customer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.domain; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * @author Alex Snaps 24 | */ 25 | @SuppressWarnings("serial") 26 | public class Customer implements Serializable { 27 | private final long id; 28 | 29 | public Customer(long id) { 30 | this.id = id; 31 | } 32 | 33 | public long getId() { 34 | return id; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /ehcache-107/src/test/java/com/pany/ehcache/ClientCopier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache; 19 | 20 | import org.ehcache.impl.copy.ReadWriteCopier; 21 | 22 | import com.pany.domain.Client; 23 | 24 | /** 25 | * ClientCopier 26 | */ 27 | public class ClientCopier extends ReadWriteCopier { 28 | @Override 29 | public Client copy(Client obj) { 30 | return new Client(obj); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ehcache-107/src/test/java/com/pany/ehcache/MyEvictionAdvisor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache; 19 | 20 | import org.ehcache.config.EvictionAdvisor; 21 | 22 | import com.pany.domain.Product; 23 | 24 | /** 25 | * @author Alex Snaps 26 | */ 27 | public class MyEvictionAdvisor implements EvictionAdvisor { 28 | @Override 29 | public boolean adviseAgainstEviction(Long key, Product value) { 30 | return value.getMutable() != null; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/ehcache-107-mbeans-cache-config.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 22 | 23 | java.lang.String 24 | java.lang.String 25 | 2000 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/ehcache-107-serializer.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | org.ehcache.impl.serialization.CompactJavaSerializer 7 | 8 | 9 | 10 | java.lang.Long 11 | java.lang.String 12 | 13 | 20 14 | 1 15 | 16 | 17 | 18 | 19 | java.lang.Long 20 | java.lang.String 21 | 22 | 20 23 | 1 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/ehcache-107-stats.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 10 18 | 10 19 | 20 | 21 | 22 | 23 | 24 | 10 25 | 10 26 | 27 | 28 | 29 | 30 | java.lang.String 31 | java.lang.String 32 | 10 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/ehcache-107.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | java.lang.String 13 | java.lang.String 14 | 2000 15 | 16 | 17 | 18 | 20 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/ehcache-loader-writer-107-load-atomics.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | java.lang.Number 13 | java.lang.CharSequence 14 | 100 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/ehcache-loader-writer-107.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | java.lang.Number 13 | java.lang.CharSequence 14 | 100 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/org/ehcache/docs/ehcache-jsr107-cache-through.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ehcache-107/src/test/resources/org/ehcache/docs/ehcache-jsr107-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | java.lang.Long 5 | com.pany.domain.Product 6 | 7 | com.pany.ehcache.integration.ProductCacheLoaderWriter 8 | 9 | 100 10 | 11 | 12 | -------------------------------------------------------------------------------- /ehcache-api/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/config/Builder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.config; 19 | 20 | /** 21 | * A builder of {@code T}s. 22 | * 23 | * @param the type this builder builds 24 | */ 25 | public interface Builder { 26 | 27 | /** 28 | * Builds an instance. 29 | * 30 | * @return the newly built instance 31 | */ 32 | T build(); 33 | } 34 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/config/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.config.Configuration CacheManager configuration}, 20 | * {@link org.ehcache.config.CacheConfiguration Cache configuration} and other configuration classes. 21 | */ 22 | @PublicApi 23 | package org.ehcache.config; 24 | 25 | import org.ehcache.javadoc.PublicApi; 26 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/config/units/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.config.ResourceUnit ResourceUnit} implementations 20 | */ 21 | @PublicApi 22 | package org.ehcache.config.units; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/event/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.event.CacheEvent CacheEvent} and related types. 20 | */ 21 | @PublicApi 22 | package org.ehcache.event; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/expiry/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.expiry.ExpiryPolicy Expiry} API of a {@link org.ehcache.Cache Cache}. 20 | */ 21 | @PublicApi 22 | package org.ehcache.expiry; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/javadoc/PrivateApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.javadoc; 18 | 19 | import java.lang.annotation.ElementType; 20 | import java.lang.annotation.Retention; 21 | import java.lang.annotation.RetentionPolicy; 22 | import java.lang.annotation.Target; 23 | 24 | @Retention(RetentionPolicy.SOURCE) 25 | @Target(ElementType.TYPE) 26 | public @interface PrivateApi { 27 | } 28 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/javadoc/PublicApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.javadoc; 18 | 19 | import java.lang.annotation.ElementType; 20 | import java.lang.annotation.Retention; 21 | import java.lang.annotation.RetentionPolicy; 22 | import java.lang.annotation.Target; 23 | 24 | @Retention(RetentionPolicy.SOURCE) 25 | @Target({ElementType.TYPE, ElementType.PACKAGE}) 26 | public @interface PublicApi { 27 | } 28 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/javadoc/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Annotations processed by the Gradle build to restrict the set of source files presented to Javadoc. 20 | */ 21 | package org.ehcache.javadoc; 22 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Main Ehcache API, including {@link org.ehcache.CacheManager cache managers} and 20 | * {@link org.ehcache.Cache caches}. 21 | */ 22 | @PublicApi 23 | package org.ehcache; 24 | 25 | import org.ehcache.javadoc.PublicApi; 26 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/spi/copy/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.spi.copy.Copier Copier} SPI in Ehcache. 20 | */ 21 | @PublicApi 22 | package org.ehcache.spi.copy; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/spi/loaderwriter/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.spi.loaderwriter.CacheLoaderWriter CacheLoaderWriter} SPI for a {@link org.ehcache.Cache Cache}. 20 | */ 21 | @PublicApi 22 | package org.ehcache.spi.loaderwriter; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/spi/persistence/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.spi.persistence.PersistableResourceService PersistableResourceService} and other persistence 20 | * related SPI. 21 | */ 22 | @PublicApi 23 | package org.ehcache.spi.persistence; 24 | 25 | import org.ehcache.javadoc.PublicApi; 26 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/spi/resilience/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.spi.resilience.ResilienceStrategy} API of a {@link org.ehcache.Cache Cache}. 20 | */ 21 | @PublicApi 22 | package org.ehcache.spi.resilience; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/spi/serialization/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.spi.serialization.Serializer Serializer} SPI in Ehcache. 20 | */ 21 | @PublicApi 22 | package org.ehcache.spi.serialization; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/main/java/org/ehcache/spi/service/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * {@link org.ehcache.spi.service.Service Service} SPI related in Ehcache. 20 | */ 21 | @PublicApi 22 | package org.ehcache.spi.service; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-api/src/test/java/org/ehcache/CacheManagerTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache; 19 | 20 | import java.io.Closeable; 21 | import org.junit.Test; 22 | 23 | import static org.junit.Assert.assertTrue; 24 | 25 | public class CacheManagerTest { 26 | 27 | @Test 28 | public void testCacheManagerIsCloseable() { 29 | assertTrue(Closeable.class.isAssignableFrom(CacheManager.class)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-api/src/test/java/org/ehcache/UserManagedCacheTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache; 19 | 20 | import java.io.Closeable; 21 | import org.junit.Test; 22 | 23 | import static org.junit.Assert.assertTrue; 24 | 25 | public class UserManagedCacheTest { 26 | 27 | @Test 28 | public void testUserManagedCacheIsCloseable() { 29 | assertTrue(Closeable.class.isAssignableFrom(UserManagedCache.class)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-core/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/HumanReadable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core; 19 | 20 | /** 21 | * Classes implementing this interface provide a human readable 22 | * string to describe themselves. 23 | * 24 | * Should only be used in configuration classes 25 | */ 26 | public interface HumanReadable { 27 | 28 | /** 29 | * @return a human readable representation of the object 30 | */ 31 | String readableString(); 32 | } 33 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/config/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package holding core configuration implementations and utilities. 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.config; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/config/store/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package holding types related to {@link org.ehcache.core.spi.store.Store} configuration. 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.config.store; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/exceptions/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package holding core exception classes 20 | */ 21 | package org.ehcache.core.exceptions; 22 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for core implementation classes such as {@link org.ehcache.core.EhcacheManager} and 20 | * {@link org.ehcache.core.Ehcache}. 21 | */ 22 | package org.ehcache.core; 23 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Parent package for core SPI 20 | */ 21 | package org.ehcache.core.spi; 22 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/service/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for Core SPI {@link org.ehcache.spi.service.Service} related types. 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.spi.service; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/store/events/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for the SPI types related to store eventing. 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.spi.store.events; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/store/heap/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for SPI related to the use of sizeof in the on-heap 20 | * {@link org.ehcache.core.spi.store.Store store} in Ehcache 21 | */ 22 | @PublicApi 23 | package org.ehcache.core.spi.store.heap; 24 | 25 | import org.ehcache.javadoc.PublicApi; 26 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/store/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for the {@link org.ehcache.core.spi.store.Store} SPI and related types. 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.spi.store; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/store/tiering/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package holding the different SPI interfaces that enable a {@link org.ehcache.Cache} to be backed by multiple 20 | * {@link org.ehcache.core.spi.store.Store} stacked on each other. 21 | */ 22 | @PublicApi 23 | package org.ehcache.core.spi.store.tiering; 24 | 25 | import org.ehcache.javadoc.PublicApi; 26 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/time/TimeSource.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.spi.time; 19 | 20 | /** 21 | * A source of wall time. 22 | *

23 | * The main purpose of this interface is to allow tests to control time arbitrarily (as opposed to using system time 24 | * and sleep()'ing to advance time. 25 | */ 26 | @FunctionalInterface 27 | public interface TimeSource { 28 | 29 | /** 30 | * The current "time" in milliseconds 31 | */ 32 | long getTimeMillis(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/time/TimeSourceService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.spi.time; 19 | 20 | import org.ehcache.spi.service.Service; 21 | 22 | /** 23 | * Service that offers a {@link TimeSource} to other services needing one. 24 | */ 25 | public interface TimeSourceService extends Service { 26 | 27 | /** 28 | * Exposes the {@link TimeSource} that is configured 29 | * 30 | * @return the {@code TimeSource} to use 31 | */ 32 | TimeSource getTimeSource(); 33 | } 34 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/spi/time/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package holding SPI types abstracting the concept of time 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.spi.time; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/statistics/ChainedObserver.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.core.statistics; 18 | 19 | public interface ChainedObserver { 20 | } 21 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/statistics/ChainedOperationObserver.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.core.statistics; 18 | 19 | public interface ChainedOperationObserver> extends ChainedObserver { 20 | 21 | void begin(long time); 22 | 23 | void end(long time, long latency, T result); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/statistics/StatisticType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.statistics; 19 | 20 | public enum StatisticType { 21 | COUNTER, 22 | GAUGE 23 | } 24 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/statistics/ValueStatistic.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.statistics; 19 | 20 | import java.io.Serializable; 21 | 22 | public interface ValueStatistic { 23 | 24 | /** 25 | * @return The statistic type 26 | */ 27 | StatisticType type(); 28 | 29 | /** 30 | * @return The current statistic value 31 | */ 32 | T value(); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/statistics/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package holding the {@code enum}s representing operations statistics results. 20 | */ 21 | @PublicApi 22 | package org.ehcache.core.statistics; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-core/src/main/java/org/ehcache/core/util/ExceptionUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.core.util; 18 | 19 | public class ExceptionUtil { 20 | 21 | public static boolean containsCause(Throwable failure, Class cause) { 22 | Throwable intermediate = failure; 23 | do { 24 | if (cause.isInstance(intermediate)) { 25 | return true; 26 | } 27 | } while ((intermediate = intermediate.getCause()) != null); 28 | 29 | return false; 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /ehcache-core/src/main/resources/META-INF/services/org.ehcache.core.spi.service.ServiceFactory: -------------------------------------------------------------------------------- 1 | org.ehcache.core.internal.statistics.DefaultStatisticsServiceFactory 2 | -------------------------------------------------------------------------------- /ehcache-core/src/test/java/org/ehcache/core/spi/services/TestProvidedService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.spi.services; 19 | 20 | import org.ehcache.spi.service.Service; 21 | 22 | /** 23 | * TestService 24 | */ 25 | public interface TestProvidedService extends Service { 26 | int starts(); 27 | int stops(); 28 | int ctors(); 29 | } 30 | -------------------------------------------------------------------------------- /ehcache-core/src/test/java/org/ehcache/core/spi/services/TestService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.spi.services; 19 | 20 | import org.ehcache.spi.service.Service; 21 | 22 | /** 23 | * TestService 24 | */ 25 | public interface TestService extends Service { 26 | } 27 | -------------------------------------------------------------------------------- /ehcache-core/src/test/java/org/ehcache/core/util/IsCreated.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.util; 19 | 20 | import org.ehcache.event.CacheEvent; 21 | import org.ehcache.event.EventType; 22 | import org.mockito.ArgumentMatcher; 23 | 24 | public class IsCreated implements ArgumentMatcher> { 25 | 26 | public boolean matches(CacheEvent event) { 27 | return (event.getType() == EventType.CREATED); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ehcache-core/src/test/java/org/ehcache/core/util/IsRemoved.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.util; 19 | 20 | import org.ehcache.event.CacheEvent; 21 | import org.ehcache.event.EventType; 22 | import org.mockito.ArgumentMatcher; 23 | 24 | public class IsRemoved implements ArgumentMatcher> { 25 | 26 | public boolean matches(CacheEvent event) { 27 | return (event.getType() == EventType.REMOVED); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ehcache-core/src/test/java/org/ehcache/core/util/IsUpdated.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.core.util; 19 | 20 | import org.ehcache.event.CacheEvent; 21 | import org.ehcache.event.EventType; 22 | import org.mockito.ArgumentMatcher; 23 | 24 | public class IsUpdated implements ArgumentMatcher> { 25 | 26 | public boolean matches(CacheEvent event) { 27 | return (event.getType() == EventType.UPDATED); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ehcache-impl/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ehcache-impl/dummy/.clean: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/ehcache-impl/dummy/.clean -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/config/builders/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Builders designed to help with programmatic configuration of Ehcache using a fluent API 20 | */ 21 | @PublicApi 22 | package org.ehcache.config.builders; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/copy/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for default {@link org.ehcache.spi.copy.CopyProvider} implementation. 20 | */ 21 | package org.ehcache.impl.config.copy; 22 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/event/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for default events related services. 20 | */ 21 | package org.ehcache.impl.config.event; 22 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/executor/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration of the pooled {@link org.ehcache.core.spi.service.ExecutionService}. 20 | */ 21 | package org.ehcache.impl.config.executor; 22 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/loaderwriter/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for default {@link org.ehcache.spi.loaderwriter.CacheLoaderWriter loader writer} 20 | * {@link org.ehcache.spi.loaderwriter.CacheLoaderWriterProvider provider}. 21 | */ 22 | package org.ehcache.impl.config.loaderwriter; 23 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/loaderwriter/writebehind/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for default {@link org.ehcache.spi.loaderwriter.WriteBehindProvider write-behind 20 | * provider}. 21 | */ 22 | package org.ehcache.impl.config.loaderwriter.writebehind; 23 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/persistence/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for the default {@link org.ehcache.core.spi.service.LocalPersistenceService local 20 | * persistence service} implementation. 21 | */ 22 | package org.ehcache.impl.config.persistence; 23 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/serializer/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for the default {@link org.ehcache.spi.serialization.SerializationProvider 20 | * serialization provider}. 21 | */ 22 | package org.ehcache.impl.config.serializer; 23 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/store/disk/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for the default {@link org.ehcache.core.spi.store.Store disk store} implementation. 20 | */ 21 | package org.ehcache.impl.config.store.disk; 22 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/config/store/heap/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for configuration classes for the default {@link org.ehcache.core.spi.store.heap.SizeOfEngineProvider sizeof 20 | * engine provider} implementation used by the on heap {@link org.ehcache.core.spi.store.Store store}. 21 | */ 22 | package org.ehcache.impl.config.store.heap; 23 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/copy/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for bundled implementation of {@link org.ehcache.spi.copy.Copier copiers}. 20 | */ 21 | @PublicApi 22 | package org.ehcache.impl.copy; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/events/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for implementation classes related to cache eventing. 20 | */ 21 | package org.ehcache.impl.events; 22 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/internal/events/CloseableStoreEventSink.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.impl.internal.events; 19 | 20 | import org.ehcache.core.events.StoreEventSink; 21 | 22 | /** 23 | * CloseableStoreEventSink 24 | */ 25 | interface CloseableStoreEventSink extends StoreEventSink { 26 | void close(); 27 | 28 | void closeOnFailure(); 29 | 30 | void reset(); 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/internal/sizeof/NoopSizeOfEngine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.impl.internal.sizeof; 19 | 20 | import org.ehcache.core.spi.store.Store; 21 | 22 | /** 23 | * @author Abhilash 24 | * 25 | */ 26 | @SuppressWarnings("deprecation") 27 | public class NoopSizeOfEngine implements org.ehcache.core.spi.store.heap.SizeOfEngine { 28 | 29 | @Override 30 | public long sizeof(K key, Store.ValueHolder holder) { 31 | return 1L; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/internal/sizeof/listeners/exceptions/VisitorListenerException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.impl.internal.sizeof.listeners.exceptions; 18 | 19 | 20 | /** 21 | * @author Abhilash 22 | * 23 | */ 24 | public class VisitorListenerException extends RuntimeException { 25 | 26 | private static final long serialVersionUID = 524283391526103012L; 27 | 28 | public VisitorListenerException(String message) { 29 | super(message); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/internal/store/copy/ImmutableCopyingSet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.impl.internal.store.copy; 19 | 20 | import java.util.Set; 21 | import java.util.function.UnaryOperator; 22 | 23 | public class ImmutableCopyingSet extends ImmutableCopyingCollection implements Set { 24 | 25 | public ImmutableCopyingSet(Set delegate, UnaryOperator copier) { 26 | super(delegate, copier); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/internal/store/heap/holders/OnHeapKey.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.impl.internal.store.heap.holders; 19 | 20 | public interface OnHeapKey { 21 | 22 | K getActualKeyObject(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.impl.internal.store.offheap; 19 | 20 | import org.ehcache.config.EvictionAdvisor; 21 | 22 | /** 23 | * SwitchableEvictionAdvisor 24 | */ 25 | public interface SwitchableEvictionAdvisor extends EvictionAdvisor { 26 | 27 | boolean isSwitchedOn(); 28 | 29 | void setSwitchedOn(boolean switchedOn); 30 | } 31 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/persistence/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Pacakge for default implementation related to the {@link org.ehcache.core.spi.service.LocalPersistenceService local 20 | * persistence service}. 21 | */ 22 | package org.ehcache.impl.persistence; 23 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/serialization/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | /** 19 | * Package for bundled implementations of {@link org.ehcache.spi.serialization.Serializer serializers}. 20 | */ 21 | @PublicApi 22 | package org.ehcache.impl.serialization; 23 | 24 | import org.ehcache.javadoc.PublicApi; 25 | -------------------------------------------------------------------------------- /ehcache-impl/src/main/java/org/ehcache/impl/store/HashUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.impl.store; 19 | 20 | /** 21 | * HashUtils 22 | */ 23 | public class HashUtils { 24 | 25 | public static long intHashToLong(int hash) { 26 | return (long) hash; 27 | } 28 | 29 | public static int longHashToInt(long hash) { 30 | return (int) hash; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ehcache-impl/src/unsafe/java/org/ehcache/impl/internal/concurrent/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | @edu.umd.cs.findbugs.annotations.SuppressFBWarnings 19 | package org.ehcache.impl.internal.concurrent; 20 | 21 | -------------------------------------------------------------------------------- /ehcache-management/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ehcache-management/src/main/java/org/ehcache/management/cluster/ClusteringManagementService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.management.cluster; 18 | 19 | import org.ehcache.spi.service.Service; 20 | 21 | /** 22 | * Activate the clustering management, which will sends all client-side stats, 23 | * notifications and also the client-side management registry through the cluster 24 | * connection 25 | */ 26 | public interface ClusteringManagementService extends Service { 27 | } 28 | -------------------------------------------------------------------------------- /ehcache-management/src/main/resources/META-INF/services/org.ehcache.core.spi.service.ServiceFactory: -------------------------------------------------------------------------------- 1 | org.ehcache.management.registry.DefaultManagementRegistryFactory 2 | org.ehcache.management.statistics.DefaultExtendedStatisticsServiceFactory 3 | -------------------------------------------------------------------------------- /ehcache-management/src/main/resources/META-INF/services/org.ehcache.xml.CacheManagerServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.management.registry.ManagementRegistryServiceConfigurationParser -------------------------------------------------------------------------------- /ehcache-management/src/test/resources/ehcache-management-1.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | java.lang.String 12 | java.lang.String 13 | 20 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ehcache-management/src/test/resources/ehcache-management-2.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | webapp-name 9 | jboss-1 10 | server-node-1 11 | 12 | 13 | 14 | 15 | 16 | java.lang.String 17 | java.lang.String 18 | 20 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ehcache-management/src/test/resources/ehcache-management-3.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | webapp-name 9 | jboss-1 10 | server-node-1 11 | 12 | 13 | 14 | 15 | 16 | java.lang.String 17 | java.lang.String 18 | 20 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ehcache-management/src/test/resources/ehcache-management-4.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | webapp-name 9 | jboss-1 10 | server-node-1 11 | 12 | 13 | 14 | 15 | 16 | java.lang.String 17 | java.lang.String 18 | 20 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ehcache-management/src/test/resources/ehcache-management-5.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | webapp-name 9 | jboss-1 10 | server-node-1 11 | 12 | 13 | 14 | 15 | 16 | java.lang.String 17 | java.lang.String 18 | 20 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ehcache-transactions/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ehcache-transactions/src/common/java/org/ehcache/transactions/xa/txmgr/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | @PublicApi 18 | package org.ehcache.transactions.xa.txmgr; 19 | 20 | import org.ehcache.javadoc.PublicApi; 21 | -------------------------------------------------------------------------------- /ehcache-transactions/src/common/java/org/ehcache/transactions/xa/txmgr/provider/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | @PublicApi 18 | package org.ehcache.transactions.xa.txmgr.provider; 19 | 20 | import org.ehcache.javadoc.PublicApi; 21 | -------------------------------------------------------------------------------- /ehcache-transactions/src/common/resources/META-INF/services/org.ehcache.core.spi.service.ServiceFactory: -------------------------------------------------------------------------------- 1 | org.ehcache.transactions.xa.internal.configuration.XAStoreProviderFactory 2 | org.ehcache.transactions.xa.internal.txmgr.provider.DefaultTransactionManagerProviderFactory 3 | org.ehcache.transactions.xa.internal.journal.DefaultJournalProviderFactory 4 | -------------------------------------------------------------------------------- /ehcache-transactions/src/common/resources/META-INF/services/org.ehcache.xml.CacheManagerServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.transactions.xa.internal.xml.TxCacheManagerServiceConfigurationParser -------------------------------------------------------------------------------- /ehcache-transactions/src/common/resources/META-INF/services/org.ehcache.xml.CacheServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.transactions.xa.internal.xml.TxCacheServiceConfigurationParser -------------------------------------------------------------------------------- /ehcache-transactions/src/test/java/org/ehcache/transactions/xa/internal/journal/TransientJournalTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.transactions.xa.internal.journal; 19 | 20 | /** 21 | * @author Ludovic Orban 22 | */ 23 | public class TransientJournalTest extends AbstractJournalTest { 24 | @Override 25 | protected Journal createJournal() { 26 | return new TransientJournal<>(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ehcache-xml/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ehcache-xml/ehcache-xml-spi/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.ehcache.build.internal-module' 3 | } 4 | 5 | publishing.publications.withType(MavenPublication) { 6 | pom { 7 | name = 'Ehcache 3 XML Parsing SPI Module' 8 | description = 'This module contains the XML parsing SPI for Ehcache 3. This allows Ehcache extension services to provide XML configuration capabilities.' 9 | } 10 | } 11 | 12 | dependencies { 13 | api project(':ehcache-api') 14 | implementation project(':ehcache-core') 15 | } 16 | 17 | jar { 18 | bnd ( 19 | 'Export-Package': 'org.ehcache.xml.*', 20 | 'Import-Package': "*" 21 | ) 22 | } 23 | 24 | -------------------------------------------------------------------------------- /ehcache-xml/ehcache-xml-spi/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ehcache-xml/src/jakarta/java/org/ehcache/xml/model/CacheDefinition.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.xml.model; 19 | 20 | public class CacheDefinition extends CacheSpec { 21 | 22 | public CacheDefinition(String id, BaseCacheType... sources) { 23 | super(id, sources); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ehcache-xml/src/main/java/org/ehcache/xml/model/CacheDefinition.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.xml.model; 19 | 20 | public class CacheDefinition extends CacheSpec { 21 | 22 | public CacheDefinition(String id, BaseCacheType... sources) { 23 | super(id, sources); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/copier/AnotherDescriptionCopier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache.copier; 19 | 20 | import org.ehcache.impl.copy.ReadWriteCopier; 21 | 22 | /** 23 | * Created by alsu on 25/08/15. 24 | */ 25 | public class AnotherDescriptionCopier extends ReadWriteCopier { 26 | 27 | @Override 28 | public Description copy(final Description obj) { 29 | return new Description(obj.id, obj.alias); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/copier/AnotherPersonCopier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache.copier; 19 | 20 | import org.ehcache.impl.copy.ReadWriteCopier; 21 | 22 | /** 23 | * Created by alsu on 25/08/15. 24 | */ 25 | public class AnotherPersonCopier extends ReadWriteCopier { 26 | 27 | @Override 28 | public Person copy(final Person obj) { 29 | return new Person(obj.name, obj.age); 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/copier/DescriptionCopier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache.copier; 19 | 20 | import org.ehcache.impl.copy.ReadWriteCopier; 21 | 22 | /** 23 | * Created by alsu on 25/08/15. 24 | */ 25 | public class DescriptionCopier extends ReadWriteCopier { 26 | 27 | @Override 28 | public Description copy(final Description obj) { 29 | return new Description(obj); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/copier/Employee.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache.copier; 19 | 20 | /** 21 | * Created by alsu on 25/08/15. 22 | */ 23 | public class Employee extends Person { 24 | 25 | int employeeID; 26 | 27 | public Employee(int employeeID, String name, int age) { 28 | super(name, age); 29 | this.employeeID = employeeID; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/copier/PersonCopier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache.copier; 19 | 20 | import org.ehcache.impl.copy.ReadWriteCopier; 21 | 22 | /** 23 | * Created by alsu on 25/08/15. 24 | */ 25 | public class PersonCopier extends ReadWriteCopier { 26 | 27 | @Override 28 | public Person copy(final Person obj) { 29 | return new Person(obj); 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/integration/TestEvictionAdvisor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package com.pany.ehcache.integration; 19 | 20 | import org.ehcache.config.EvictionAdvisor; 21 | 22 | public class TestEvictionAdvisor implements EvictionAdvisor { 23 | 24 | @Override 25 | public boolean adviseAgainstEviction(K key, V value) { 26 | return false; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/serializer/TestSerializer2.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package com.pany.ehcache.serializer; 18 | 19 | public class TestSerializer2 extends TestSerializer { 20 | public TestSerializer2(ClassLoader classLoader) { 21 | super(classLoader); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/serializer/TestSerializer3.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package com.pany.ehcache.serializer; 18 | 19 | public class TestSerializer3 extends TestSerializer { 20 | public TestSerializer3(ClassLoader classLoader) { 21 | super(classLoader); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/com/pany/ehcache/serializer/TestSerializer4.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package com.pany.ehcache.serializer; 18 | 19 | public class TestSerializer4 extends TestSerializer { 20 | public TestSerializer4(ClassLoader classLoader) { 21 | super(classLoader); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/org/ehcache/xml/BarConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.xml; 19 | 20 | import org.ehcache.spi.service.Service; 21 | import org.ehcache.spi.service.ServiceCreationConfiguration; 22 | 23 | /** 24 | * BarConfiguration 25 | */ 26 | public class BarConfiguration implements ServiceCreationConfiguration { 27 | @Override 28 | public Class getServiceType() { 29 | return Service.class; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/org/ehcache/xml/FooConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.xml; 19 | 20 | import org.ehcache.spi.service.ServiceConfiguration; 21 | import org.ehcache.spi.service.Service; 22 | 23 | /** 24 | * 25 | * @author cdennis 26 | */ 27 | class FooConfiguration implements ServiceConfiguration { 28 | 29 | @Override 30 | public Class getServiceType() { 31 | return Service.class; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/org/ehcache/xml/NiResilience.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.xml; 18 | 19 | public class NiResilience { 20 | } 21 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/java/org/ehcache/xml/ShrubberyResilience.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.xml; 18 | 19 | public class ShrubberyResilience { 20 | } 21 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/META-INF/services/org.ehcache.xml.CacheManagerServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.xml.BarParser 2 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/META-INF/services/org.ehcache.xml.CacheResourceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.xml.BazParser 2 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/META-INF/services/org.ehcache.xml.CacheServiceConfigurationParser: -------------------------------------------------------------------------------- 1 | org.ehcache.xml.FooParser 2 | org.ehcache.xml.FancyParser 3 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/bar.xsd: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/baz.xsd: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/custom-resource.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 22 | java.lang.String 23 | java.lang.String 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/docs/multi/multiple-managers.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | java.lang.String 9 | java.lang.String 10 | 11 | 20 12 | 10 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | java.lang.String 22 | java.lang.String 23 | 24 | 20 25 | 10 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/docs/template-sample.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | java.lang.Long 23 | java.lang.String 24 | 200 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/fancy.xsd: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/foo.xsd: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/invalid-core.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | java.lang.String 6 | java.lang.String 7 | 8 | 9 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/invalid-service.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/invalid-two-caches.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 2000 5 | 6 | 7 | 8 | 2000 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/multi/empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/multi/extended.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | java.lang.String 14 | java.lang.String 15 | 16 | 10 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/multi/multiple-configs.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 100 9 | 10 | 11 | 12 | 13 | 14 | 15 | 100 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/nonExistentAdvisor-cache.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | com.foo.NonExistentAdvisorInCache 22 | 10 23 | 24 | 25 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/nonExistentAdvisor-template.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | com.foo.NonExistentAdvisorInTemplate 22 | 23 | 24 | 25 | 10 26 | 27 | 28 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/one-cache.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 22 | java.lang.String 23 | java.lang.String 24 | 5 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/one-service.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/persistence-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/template-defaults.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/thread-pools.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/unknown-resource.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/unknown-service-creation.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ehcache-xml/src/test/resources/configs/unknown-service.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ehcache/templates/github-release-issue.md: -------------------------------------------------------------------------------- 1 | - [ ] Tag release 2 | - [ ] Build and verify release 3 | - includes checking javadoc and source jars 4 | - [ ] Prepare release on GitHub 5 | - [ ] Prepare website update 6 | - includes checking XSDs 7 | - [ ] Publish jars to Maven Central 8 | - [ ] Publish release on GitHub 9 | - [ ] Publish website 10 | - [ ] Update readme / bump version on release branch 11 | - [ ] Email announcement 12 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Ehcache version 2 | ehcacheVersion = 3.11-SNAPSHOT 3 | 4 | # Terracotta third parties 5 | offheapVersion = 2.5.6 6 | statisticVersion = 2.1.3 7 | jcacheVersion = 1.1.0 8 | slf4jVersion = 1.7.36 9 | sizeofVersion = 0.4.4 10 | 11 | # Terracotta clustered 12 | terracottaPlatformVersion = 5.10.22 13 | terracottaApisVersion = 1.9.1 14 | terracottaCoreVersion = 5.10.15 15 | terracottaPassthroughTestingVersion = 1.9.1 16 | terracottaUtilitiesVersion = 0.0.19 17 | 18 | # Test lib versions 19 | junitVersion = 4.13.1 20 | assertjVersion = 3.22.0 21 | hamcrestVersion = 2.2 22 | mockitoVersion = 4.3.1 23 | jcacheTckVersion = 1.1.0 24 | 25 | sonatypeUser = OVERRIDE_ME 26 | sonatypePwd = OVERRIDE_ME 27 | tcDeployUser = OVERRIDE_ME 28 | tcDeployPassword = OVERRIDE_ME 29 | 30 | deployUrl = https://oss.sonatype.org/service/local/staging/deploy/maven2/ 31 | 32 | # Enable the daemon by adding org.gradle.daemon in USER_HOME/.gradle/gradle.properties 33 | org.gradle.parallel=true 34 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ehcache/ehcache3/900433f1758fd160437875e54c0555dca2e41605/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /integration-test/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration-test/src/test/java/org/ehcache/integration/PutAllExpiryEhcacheTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.integration; 18 | 19 | import org.ehcache.Cache; 20 | 21 | import java.util.Map; 22 | 23 | /** 24 | * @author Ludovic Orban 25 | */ 26 | public class PutAllExpiryEhcacheTest extends ExpiryEhcacheTestBase { 27 | @Override 28 | protected void insert(Cache testCache, Map entries) { 29 | testCache.putAll(entries); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /integration-test/src/test/java/org/ehcache/integration/statistics/GetEntryProcessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.integration.statistics; 18 | 19 | import javax.cache.processor.EntryProcessor; 20 | import javax.cache.processor.MutableEntry; 21 | 22 | public class GetEntryProcessor implements EntryProcessor { 23 | @Override 24 | public String process(MutableEntry entry, Object... arguments) { 25 | return entry.getValue(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /integration-test/src/test/java/org/ehcache/integration/statistics/GetKeyEntryProcessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.integration.statistics; 18 | 19 | import javax.cache.processor.EntryProcessor; 20 | import javax.cache.processor.MutableEntry; 21 | 22 | public class GetKeyEntryProcessor implements EntryProcessor { 23 | @Override 24 | public Integer process(MutableEntry entry, Object... arguments) { 25 | return entry.getKey(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /integration-test/src/test/java/org/ehcache/integration/statistics/RemoveEntryProcessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package org.ehcache.integration.statistics; 18 | 19 | import javax.cache.processor.EntryProcessor; 20 | import javax.cache.processor.MutableEntry; 21 | 22 | public class RemoveEntryProcessor implements EntryProcessor { 23 | 24 | @Override 25 | public Void process(MutableEntry entry, Object... arguments) { 26 | entry.remove(); 27 | return null; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /osgi-test/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /osgi-test/src/test/java/org/ehcache/osgi/Person.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.osgi; 19 | 20 | import java.io.Serializable; 21 | 22 | /** 23 | * Person 24 | */ 25 | public class Person implements Serializable { 26 | 27 | private static final long serialVersionUID = 1L; 28 | 29 | final String name; 30 | 31 | Person(String name) { 32 | this.name = name; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /osgi-test/src/test/resources/org/ehcache/osgi/ehcache-osgi.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | java.lang.String 21 | org.ehcache.osgi.Person 22 | 10 23 | 24 | 25 | -------------------------------------------------------------------------------- /spi-tester/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.ehcache.build.conventions.java-library' 3 | } 4 | -------------------------------------------------------------------------------- /spi-tester/config/checkstyle-suppressions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /spi-tester/src/main/java/org/ehcache/spi/test/SPITest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Terracotta, Inc. 3 | * Copyright IBM Corp. 2024, 2025 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | package org.ehcache.spi.test; 19 | 20 | import java.lang.annotation.ElementType; 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.RetentionPolicy; 23 | import java.lang.annotation.Target; 24 | 25 | /** 26 | * Indicates the annotated method is a SPI test method 27 | * @author Hung Huynh 28 | * 29 | */ 30 | @Retention(RetentionPolicy.RUNTIME) 31 | @Target(ElementType.METHOD) 32 | public @interface SPITest { 33 | // 34 | } 35 | --------------------------------------------------------------------------------