All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.as.clustering.controller.FunctionalCapabilityServiceConfigurator Maven / Gradle / Ivy

Go to download

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));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy