This is the most simple and straightforward COR Bean Processor Spring Boot Starter example. It contains a chain or responsibility to find out which type is an object: double, integer, null or string.
TypeFinderLink
interface extends COR Bean Processor Spring Boot Starter ChainLink<T>
interface passing a self-reference as parameter. It also contains the entry method used to find an object type.
public interface TypeFinderLink extends ChainLink<TypeFinderLink> {
String findType(Object object);
}
AbstractTypeFinderLink
, as the name says, is an abstract class that implements TypeFinderLink
interface.
It also implements findType
demanded by TypeFinderLink
and setNext
demanded by ChainLink
. The latter is implemented using Lombok @Setter
annotation.
public abstract class AbstractTypeFinderLink implements TypeFinderLink {
@Setter
private TypeFinderLink next;
@Override
public String findType(Object object) { /* Full logic can be checked in the code implementation. */ }
}
TypeFinder
encapsulates the components required to find an object type. It contains a findType
method which invokes the first link findType
method, starting the chain analysis.
public class TypeFinder {
private final TypeFinderLink firstLink;
public String findType(Object object) {
return firstLink.findType(object);
}
}
COR Bean Processor Spring Boot Starter will be responsible to chain all TypeFinderLink
implementations and inject the first chain link on firstLink
field.
The complete integration with Spring Boot can be checked on SingleChainExampleIT
class. It is an integration test and can be executed through an IDE like IntelliJ IDEA, Eclipse or Visual Studio Code.
Alternatively, the test can also be executed through a terminal using the following command.
mvn test-compile failsafe:integration-test