diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalog.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalog.java index 467921dc1..069722957 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalog.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalog.java @@ -90,7 +90,7 @@ public class InMemoryFunctionCatalog for (String name : registration.getNames()) { map.put(name, registration.getTarget()); } - publisher.publishEvent(event); + this.publishEvent(event); } @Override @@ -102,7 +102,7 @@ public class InMemoryFunctionCatalog public void init() { if (publisher != null && !functions.isEmpty()) { functions.keySet() - .forEach(type -> publisher.publishEvent(new FunctionRegistrationEvent(this, type, functions.get(type).keySet()))); + .forEach(type -> this.publishEvent(new FunctionRegistrationEvent(this, type, functions.get(type).keySet()))); } } @@ -110,7 +110,7 @@ public class InMemoryFunctionCatalog public void close() { if (publisher != null && !functions.isEmpty()) { functions.keySet() - .forEach(type -> publisher.publishEvent(new FunctionUnregistrationEvent(this, type, functions.get(type).keySet()))); + .forEach(type -> this.publishEvent(new FunctionUnregistrationEvent(this, type, functions.get(type).keySet()))); } } @@ -133,4 +133,10 @@ public class InMemoryFunctionCatalog .map(key -> functions.get(key)) .findFirst().orElse(functions.get(Object.class)); } + + private void publishEvent(Object event) { + if (this.publisher != null) { + this.publisher.publishEvent(event); + } + } } diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalogTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalogTests.java new file mode 100644 index 000000000..9ad3b45f0 --- /dev/null +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/InMemoryFunctionCatalogTests.java @@ -0,0 +1,51 @@ +/* + * Copyright 2016-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.cloud.function.context.catalog; + +import static org.junit.Assert.assertSame; + +import java.util.function.Function; + +import org.junit.Test; +import org.springframework.cloud.function.context.FunctionRegistration; +import org.springframework.cloud.function.context.FunctionType; + +/** + * + * @author Oleg Zhurakousky + * + */ +public class InMemoryFunctionCatalogTests { + + @Test + public void testFunctionRegistration() { + TestFunction function = new TestFunction(); + FunctionRegistration registration = new FunctionRegistration<>(function) + .type(FunctionType.of(TestFunction.class).getType()); + InMemoryFunctionCatalog catalog = new InMemoryFunctionCatalog(); + catalog.register(registration); + FunctionRegistration registration2 = catalog.getRegistration(function); + assertSame(registration, registration2); + } + + private static class TestFunction implements Function { + @Override + public String apply(Integer t) { + return "i=" + t; + } + } +}