org.jboss.as.clustering.controller.FunctionalCapabilityServiceConfigurator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wildfly-clustering-common Show documentation
Show all versions of wildfly-clustering-common Show documentation
The code in this module is not explicitly related to clustering, but rather contains resuable code used by clustering modules
and any modules that integrate with clustering.
The newest version!
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.jboss.as.clustering.controller;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
import org.wildfly.clustering.service.FunctionalService;
import org.wildfly.clustering.service.SimpleServiceNameProvider;
/**
* Configures a service that provides a value created from a generic factory and mapper.
* @author Paul Ferraro
* @param the source type of the mapped value provided by the installed service
* @param the type of the value provided by the installed service
*/
public class FunctionalCapabilityServiceConfigurator extends SimpleServiceNameProvider implements CapabilityServiceConfigurator {
private final Function mapper;
private final Supplier factory;
public FunctionalCapabilityServiceConfigurator(ServiceName name, Function mapper, Supplier factory) {
super(name);
this.mapper = mapper;
this.factory = factory;
}
@Override
public ServiceBuilder> build(ServiceTarget target) {
ServiceName name = this.getServiceName();
ServiceBuilder> builder = target.addService(name);
Consumer injector = builder.provides(name);
return builder.setInstance(new FunctionalService<>(injector, this.mapper, this.factory));
}
}