diff --git a/operator-framework-core/pom.xml b/operator-framework-core/pom.xml
index eafb9ec1b1..47fc3f9881 100644
--- a/operator-framework-core/pom.xml
+++ b/operator-framework-core/pom.xml
@@ -105,20 +105,5 @@
awaitility
test
-
- javax.cache
- cache-api
- ${jcache.version}
-
-
- com.github.ben-manes.caffeine
- caffeine
- test
-
-
- com.github.ben-manes.caffeine
- jcache
- test
-
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java
index 9a2be41a70..cf0e709253 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/CachingEventSource.java
@@ -1,11 +1,9 @@
package io.javaoperatorsdk.operator.processing.event.source;
+import java.util.Collections;
+import java.util.Map;
import java.util.Optional;
-
-import javax.cache.Cache;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.concurrent.ConcurrentHashMap;
import io.javaoperatorsdk.operator.OperatorException;
import io.javaoperatorsdk.operator.processing.event.Event;
@@ -25,13 +23,9 @@
*/
public abstract class CachingEventSource extends LifecycleAwareEventSource {
- private static final Logger log = LoggerFactory.getLogger(CachingEventSource.class);
+ protected Map cache = new ConcurrentHashMap<>();
- protected Cache cache;
-
- public CachingEventSource(Cache cache) {
- this.cache = cache;
- }
+ public CachingEventSource() {}
protected void handleDelete(ResourceID relatedResourceID) {
if (!isRunning()) {
@@ -56,8 +50,8 @@ protected void handleEvent(T value, ResourceID relatedResourceID) {
}
}
- public Cache getCache() {
- return cache;
+ public Map getCache() {
+ return Collections.unmodifiableMap(cache);
}
public Optional getCachedValue(ResourceID resourceID) {
@@ -67,6 +61,5 @@ public Optional getCachedValue(ResourceID resourceID) {
@Override
public void stop() throws OperatorException {
super.stop();
- cache.close();
}
}
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/inbound/CachingInboundEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/inbound/CachingInboundEventSource.java
index 51d1ed287d..308b4a36de 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/inbound/CachingInboundEventSource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/inbound/CachingInboundEventSource.java
@@ -1,16 +1,10 @@
package io.javaoperatorsdk.operator.processing.event.source.inbound;
-import javax.cache.Cache;
-
import io.javaoperatorsdk.operator.processing.event.ResourceID;
import io.javaoperatorsdk.operator.processing.event.source.CachingEventSource;
public class CachingInboundEventSource extends CachingEventSource {
- public CachingInboundEventSource(Cache cache) {
- super(cache);
- }
-
public void handleResourceEvent(T resource, ResourceID relatedResourceID) {
super.handleEvent(resource, relatedResourceID);
}
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java
index 8095289221..07d1e20f54 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java
@@ -1,8 +1,11 @@
package io.javaoperatorsdk.operator.processing.event.source.informer;
import java.util.Objects;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -16,8 +19,10 @@
import io.javaoperatorsdk.operator.processing.event.Event;
import io.javaoperatorsdk.operator.processing.event.ResourceID;
import io.javaoperatorsdk.operator.processing.event.source.AbstractEventSource;
+import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceCache;
-public class InformerEventSource extends AbstractEventSource {
+public class InformerEventSource extends AbstractEventSource
+ implements ResourceCache {
private static final Logger log = LoggerFactory.getLogger(InformerEventSource.class);
@@ -132,4 +137,22 @@ public T getAssociated(HasMetadata resource) {
public SharedInformer getSharedInformer() {
return sharedInformer;
}
+
+ @Override
+ public Optional get(ResourceID resourceID) {
+ return Optional.ofNullable(sharedInformer.getStore()
+ .getByKey(Cache.namespaceKeyFunc(resourceID.getNamespace().orElse(null),
+ resourceID.getName())));
+ }
+
+ @Override
+ public Stream list(Predicate predicate) {
+ return sharedInformer.getStore().list().stream().filter(predicate);
+ }
+
+ @Override
+ public Stream list(String namespace, Predicate predicate) {
+ return sharedInformer.getStore().list().stream()
+ .filter(v -> namespace.equals(v.getMetadata().getNamespace()) && predicate.test(v));
+ }
}
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PerResourcePollingEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PerResourcePollingEventSource.java
index bf9b41cf0e..61b76a5863 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PerResourcePollingEventSource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PerResourcePollingEventSource.java
@@ -7,8 +7,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
-import javax.cache.Cache;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,14 +42,13 @@ public class PerResourcePollingEventSource
private final long period;
public PerResourcePollingEventSource(ResourceSupplier resourceSupplier,
- ResourceCache resourceCache, long period, Cache cache) {
- this(resourceSupplier, resourceCache, period, cache, null);
+ ResourceCache resourceCache, long period) {
+ this(resourceSupplier, resourceCache, period, null);
}
public PerResourcePollingEventSource(ResourceSupplier resourceSupplier,
- ResourceCache resourceCache, long period, Cache cache,
+ ResourceCache resourceCache, long period,
Predicate registerPredicate) {
- super(cache);
this.resourceSupplier = resourceSupplier;
this.resourceCache = resourceCache;
this.period = period;
diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java
index b2c3fdff78..c979d35558 100644
--- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java
+++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java
@@ -2,9 +2,6 @@
import java.util.*;
import java.util.function.Supplier;
-import java.util.stream.StreamSupport;
-
-import javax.cache.Cache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -22,8 +19,7 @@ public class PollingEventSource extends CachingEventSource {
private final long period;
public PollingEventSource(Supplier