Add support for using the Apache Geode/Pivotal GemFire o.a.g.cache.CacheLoader interface as a @FunctionalInterface.

Add example implementation of the Apache Geode/Pivotal GemFire o.a.g.cache.CacheLoader interface, which echos the key as the value, dubbed EchoCacheLoader.
This commit is contained in:
John Blum
2018-05-24 20:35:12 -07:00
parent 2721df2003
commit 7897f8edb4
2 changed files with 80 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package org.springframework.boot.data.geode.cache.support;
import org.apache.geode.cache.CacheLoader;
/**
* The {@link CacheLoaderSupport} interface is an extension of {@link CacheLoader} and a {@link FunctionalInterface}
* useful in Lambda expressions.
*
* @author John Blum
* @see org.apache.geode.cache.CacheLoader
* @since 1.0.0
*/
@FunctionalInterface
public interface CacheLoaderSupport<K, V> extends CacheLoader<K, V> {
/**
* Closes any resources opened and used by this {@link CacheLoader}.
*
* @see org.apache.geode.cache.CacheLoader#close()
*/
@Override
default void close() {}
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package example.geode.cache;
import org.apache.geode.cache.CacheLoader;
import org.apache.geode.cache.CacheLoaderException;
import org.apache.geode.cache.LoaderHelper;
import org.springframework.boot.data.geode.cache.support.CacheLoaderSupport;
/**
* The {@link EchoCacheLoader} class is an implementation of {@link CacheLoader} that echos the key as the value.
*
* @author John Blum
* @see org.springframework.boot.data.geode.cache.support.CacheLoaderSupport
* @since 1.0.0
*/
@SuppressWarnings("unused")
public class EchoCacheLoader implements CacheLoaderSupport<String, String> {
public static final EchoCacheLoader INSTANCE = new EchoCacheLoader();
@Override
public String load(LoaderHelper<String, String> helper) throws CacheLoaderException {
return helper.getKey();
}
}