GH-191 Made 'name' required in FunctionRegistration
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2017 the original author or authors.
|
* Copyright 2012-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -38,7 +38,6 @@ import reactor.core.publisher.Mono;
|
|||||||
/**
|
/**
|
||||||
* @author Dave Syer
|
* @author Dave Syer
|
||||||
* @author Oleg Zhurakousky
|
* @author Oleg Zhurakousky
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class FunctionRegistration<T> {
|
public class FunctionRegistration<T> {
|
||||||
|
|
||||||
@@ -50,11 +49,30 @@ public class FunctionRegistration<T> {
|
|||||||
|
|
||||||
private FunctionType type;
|
private FunctionType type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated as of v1.0.0 in favor of {@link #FunctionRegistration(Object, String, String...)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public FunctionRegistration(T target) {
|
public FunctionRegistration(T target) {
|
||||||
Assert.notNull(target, "'target' must not be null");
|
Assert.notNull(target, "'target' must not be null");
|
||||||
this.target = target;
|
this.target = target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates instance of FunctionRegistration.
|
||||||
|
*
|
||||||
|
* @param target instance of {@link Supplier}, {@link Function} or {@link Consumer}
|
||||||
|
* @param name initial name for this registration.
|
||||||
|
* @param names additional set of names for this registration. Additional names
|
||||||
|
* can be provided {@link #name(String)} or {@link #names(String...)} operations.
|
||||||
|
*/
|
||||||
|
public FunctionRegistration(T target, String name, String... additionalNames) {
|
||||||
|
Assert.notNull(target, "'target' must not be null");
|
||||||
|
this.target = target;
|
||||||
|
this.names(name);
|
||||||
|
this.names(additionalNames);
|
||||||
|
}
|
||||||
|
|
||||||
public Map<String, String> getProperties() {
|
public Map<String, String> getProperties() {
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public class InMemoryFunctionCatalog
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void register(FunctionRegistration<T> registration) {
|
public <T> void register(FunctionRegistration<T> registration) {
|
||||||
|
Assert.notEmpty(registration.getNames(), "'registration' must contain at least one name before it is registered in catalog.");
|
||||||
Class<?> type = Object.class;
|
Class<?> type = Object.class;
|
||||||
if (registration.getTarget() instanceof Function) {
|
if (registration.getTarget() instanceof Function) {
|
||||||
type = Function.class;
|
type = Function.class;
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ import org.springframework.core.io.Resource;
|
|||||||
import org.springframework.core.type.StandardMethodMetadata;
|
import org.springframework.core.type.StandardMethodMetadata;
|
||||||
import org.springframework.core.type.classreading.MethodMetadataReadingVisitor;
|
import org.springframework.core.type.classreading.MethodMetadataReadingVisitor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
import org.springframework.util.ReflectionUtils;
|
import org.springframework.util.ReflectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
@@ -128,6 +129,7 @@ public class ContextFunctionCatalogAutoConfiguration {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> void register(FunctionRegistration<T> registration) {
|
public <T> void register(FunctionRegistration<T> registration) {
|
||||||
|
Assert.notEmpty(registration.getNames(), "'registration' must contain at least one name before it is registered in catalog.");
|
||||||
processor.register(registration);
|
processor.register(registration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2018 the original author or authors.
|
* Copyright 2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -34,7 +34,7 @@ public class InMemoryFunctionCatalogTests {
|
|||||||
@Test
|
@Test
|
||||||
public void testFunctionRegistration() {
|
public void testFunctionRegistration() {
|
||||||
TestFunction function = new TestFunction();
|
TestFunction function = new TestFunction();
|
||||||
FunctionRegistration<TestFunction> registration = new FunctionRegistration<>(function)
|
FunctionRegistration<TestFunction> registration = new FunctionRegistration<>(function, "foo")
|
||||||
.type(FunctionType.of(TestFunction.class).getType());
|
.type(FunctionType.of(TestFunction.class).getType());
|
||||||
InMemoryFunctionCatalog catalog = new InMemoryFunctionCatalog();
|
InMemoryFunctionCatalog catalog = new InMemoryFunctionCatalog();
|
||||||
catalog.register(registration);
|
catalog.register(registration);
|
||||||
|
|||||||
Reference in New Issue
Block a user