BAEL-1109 Introduction to JCache (#2594)
* Evaluation article: Different Types of Bean Injection in Spring * added tests & changed configuration to Java-based config * removed xml config files * rename unit tests * BAEL-972 - Apache Commons Text * remove code from evaluation article * remove code from evaluation article * BAEL-972 - Apache Commons Text - added another example * BAEL-972 - Apache Commons Text - just indentation * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java - fix problems * BAEL-1033 Introduction to StreamUtils * BAEL-1033 Introduction to StreamUtils * BAEL-1033 Introduction to StreamUtils * fix formatting * BAEL-1033 minor refactor * BAEL-1035 Introduction to Eclipse Collections * format * BAEL-1035 Introduction to Eclipse Collections * BAEL-1035 Introduction to Eclipse Collections * BAEL-1035 Introduction to Eclipse Collections * cleanup * cleanup * BAEL-1109 Introduction to JCache * BAEL-1109 Introduction to JCache * remove unneeded property in pom.xml * fix formatting
This commit is contained in:
parent
2b5a6c13f8
commit
aa612b71bb
|
@ -555,25 +555,35 @@
|
||||||
<version>${protonpack.version}</version>
|
<version>${protonpack.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.functionaljava</groupId>
|
<groupId>org.functionaljava</groupId>
|
||||||
<artifactId>functionaljava</artifactId>
|
<artifactId>functionaljava</artifactId>
|
||||||
<version>4.7</version>
|
<version>4.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.functionaljava</groupId>
|
<groupId>org.functionaljava</groupId>
|
||||||
<artifactId>functionaljava-java8</artifactId>
|
<artifactId>functionaljava-java8</artifactId>
|
||||||
<version>4.7</version>
|
<version>4.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.functionaljava</groupId>
|
<groupId>org.functionaljava</groupId>
|
||||||
<artifactId>functionaljava-quickcheck</artifactId>
|
<artifactId>functionaljava-quickcheck</artifactId>
|
||||||
<version>4.7</version>
|
<version>4.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.functionaljava</groupId>
|
<groupId>org.functionaljava</groupId>
|
||||||
<artifactId>functionaljava-java-core</artifactId>
|
<artifactId>functionaljava-java-core</artifactId>
|
||||||
<version>4.7</version>
|
<version>4.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.cache</groupId>
|
||||||
|
<artifactId>cache-api</artifactId>
|
||||||
|
<version>${cache.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.hazelcast</groupId>
|
||||||
|
<artifactId>hazelcast</artifactId>
|
||||||
|
<version>${hazelcast.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
|
@ -653,5 +663,7 @@
|
||||||
<hirondelle-date4j.version>1.5.1</hirondelle-date4j.version>
|
<hirondelle-date4j.version>1.5.1</hirondelle-date4j.version>
|
||||||
<protonpack.version>1.14</protonpack.version>
|
<protonpack.version>1.14</protonpack.version>
|
||||||
<unit-ri.version>1.0.3</unit-ri.version>
|
<unit-ri.version>1.0.3</unit-ri.version>
|
||||||
|
<cache.version>1.0.0</cache.version>
|
||||||
|
<hazelcast.version>3.8.4</hazelcast.version>
|
||||||
</properties>
|
</properties>
|
||||||
</project>
|
</project>
|
|
@ -0,0 +1,34 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import javax.cache.event.CacheEntryCreatedListener;
|
||||||
|
import javax.cache.event.CacheEntryEvent;
|
||||||
|
import javax.cache.event.CacheEntryListenerException;
|
||||||
|
import javax.cache.event.CacheEntryUpdatedListener;
|
||||||
|
|
||||||
|
public class SimpleCacheEntryListener implements CacheEntryCreatedListener<String, String>, CacheEntryUpdatedListener<String, String>, Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -712657810462878763L;
|
||||||
|
private boolean updated;
|
||||||
|
private boolean created;
|
||||||
|
|
||||||
|
public boolean getUpdated() {
|
||||||
|
return this.updated;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getCreated() {
|
||||||
|
return this.created;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUpdated(Iterable<CacheEntryEvent<? extends String, ? extends String>> events) throws CacheEntryListenerException {
|
||||||
|
this.updated = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onCreated(Iterable<CacheEntryEvent<? extends String, ? extends String>> events) throws CacheEntryListenerException {
|
||||||
|
this.created = true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.cache.integration.CacheLoader;
|
||||||
|
import javax.cache.integration.CacheLoaderException;
|
||||||
|
|
||||||
|
public class SimpleCacheLoader implements CacheLoader<Integer, String> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String load(Integer key) throws CacheLoaderException {
|
||||||
|
return "fromCache" + key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Integer, String> loadAll(Iterable<? extends Integer> keys) throws CacheLoaderException {
|
||||||
|
Map<Integer, String> data = new HashMap<>();
|
||||||
|
for (int key : keys) {
|
||||||
|
data.put(key, load(key));
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import javax.cache.processor.EntryProcessor;
|
||||||
|
import javax.cache.processor.EntryProcessorException;
|
||||||
|
import javax.cache.processor.MutableEntry;
|
||||||
|
|
||||||
|
public class SimpleEntryProcessor implements EntryProcessor<String, String, String>, Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -5616476363722945132L;
|
||||||
|
|
||||||
|
public String process(MutableEntry<String, String> entry, Object... args) throws EntryProcessorException {
|
||||||
|
|
||||||
|
if (entry.exists()) {
|
||||||
|
String current = entry.getValue();
|
||||||
|
entry.setValue(current + " - modified");
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import javax.cache.Cache;
|
||||||
|
import javax.cache.CacheManager;
|
||||||
|
import javax.cache.Caching;
|
||||||
|
import javax.cache.configuration.FactoryBuilder;
|
||||||
|
import javax.cache.configuration.MutableConfiguration;
|
||||||
|
import javax.cache.spi.CachingProvider;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class CacheLoaderTest {
|
||||||
|
|
||||||
|
private Cache<Integer, String> cache;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||||
|
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||||
|
MutableConfiguration<Integer, String> config = new MutableConfiguration<Integer, String>().setReadThrough(true)
|
||||||
|
.setCacheLoaderFactory(new FactoryBuilder.SingletonFactory<>(new SimpleCacheLoader()));
|
||||||
|
this.cache = cacheManager.createCache("SimpleCache", config);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenReadingFromStorage_thenCorrect() {
|
||||||
|
for (int i = 1; i < 4; i++) {
|
||||||
|
String value = cache.get(i);
|
||||||
|
assertEquals("fromCache" + i, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import javax.cache.Cache;
|
||||||
|
import javax.cache.CacheManager;
|
||||||
|
import javax.cache.Caching;
|
||||||
|
import javax.cache.configuration.MutableConfiguration;
|
||||||
|
import javax.cache.spi.CachingProvider;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class EntryProcessorTest {
|
||||||
|
|
||||||
|
private Cache<String, String> cache;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void instantiateCache() {
|
||||||
|
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||||
|
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||||
|
MutableConfiguration<String, String> config = new MutableConfiguration<String, String>();
|
||||||
|
this.cache = cacheManager.createCache("MyCache", config);
|
||||||
|
this.cache.put("key", "value");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenModifyValue_thenCorrect() {
|
||||||
|
this.cache.invoke("key", new SimpleEntryProcessor());
|
||||||
|
assertEquals("value - modified", cache.get("key"));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import javax.cache.Cache;
|
||||||
|
import javax.cache.CacheManager;
|
||||||
|
import javax.cache.Caching;
|
||||||
|
import javax.cache.configuration.FactoryBuilder;
|
||||||
|
import javax.cache.configuration.MutableCacheEntryListenerConfiguration;
|
||||||
|
import javax.cache.configuration.MutableConfiguration;
|
||||||
|
import javax.cache.spi.CachingProvider;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class EventListenerTest {
|
||||||
|
|
||||||
|
private Cache<String, String> cache;
|
||||||
|
private SimpleCacheEntryListener listener;
|
||||||
|
MutableCacheEntryListenerConfiguration<String, String> listenerConfiguration;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||||
|
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||||
|
MutableConfiguration<String, String> config = new MutableConfiguration<String, String>();
|
||||||
|
this.cache = cacheManager.createCache("MyCache", config);
|
||||||
|
this.listener = new SimpleCacheEntryListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRunEvent_thenCorrect() throws InterruptedException {
|
||||||
|
this.listenerConfiguration = new MutableCacheEntryListenerConfiguration<String, String>(FactoryBuilder.factoryOf(this.listener), null, false, true);
|
||||||
|
this.cache.registerCacheEntryListener(this.listenerConfiguration);
|
||||||
|
|
||||||
|
assertEquals(false, this.listener.getCreated());
|
||||||
|
|
||||||
|
this.cache.put("key", "value");
|
||||||
|
assertEquals(true, this.listener.getCreated());
|
||||||
|
assertEquals(false, this.listener.getUpdated());
|
||||||
|
|
||||||
|
this.cache.put("key", "newValue");
|
||||||
|
assertEquals(true, this.listener.getUpdated());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.baeldung.jcache;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import javax.cache.Cache;
|
||||||
|
import javax.cache.CacheManager;
|
||||||
|
import javax.cache.Caching;
|
||||||
|
import javax.cache.configuration.MutableConfiguration;
|
||||||
|
import javax.cache.spi.CachingProvider;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class JCacheTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void instantiateCache() {
|
||||||
|
CachingProvider cachingProvider = Caching.getCachingProvider();
|
||||||
|
CacheManager cacheManager = cachingProvider.getCacheManager();
|
||||||
|
MutableConfiguration<String, String> config = new MutableConfiguration<>();
|
||||||
|
Cache<String, String> cache = cacheManager.createCache("simpleCache", config);
|
||||||
|
cache.put("key1", "value1");
|
||||||
|
cache.put("key2", "value2");
|
||||||
|
assertEquals("value1", cache.get("key1"));
|
||||||
|
assertEquals("value2", cache.get("key2"));
|
||||||
|
cacheManager.close();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue