package org.wildfly.swarm.remoting.runtime;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.jboss.logging.Logger;
import org.wildfly.swarm.container.runtime.config.DefaultSocketBindingGroupProducer;
import org.wildfly.swarm.remoting.RemotingFraction;
import org.wildfly.swarm.spi.api.Customizer;
import org.wildfly.swarm.spi.api.SocketBinding;
import org.wildfly.swarm.spi.api.SocketBindingGroup;
import org.wildfly.swarm.spi.runtime.annotations.Post;
/**
* Configures the legacy remoting socketing binding and connector if required.
*
* <p>In the event {@link RemotingFraction#requireLegacyConnector(boolean)}</p> has been
* set to <code>true</code> or if configuration property <code>swarm.remoting.port</code>
* is set to any value, this customizer will install a socket-binding named
* <code>legacy-remoting</code> for port <code>4447</code> or whatever value
* configuration property <code>swarm.remoting.port</code> is set to.</p>
*
* @author Bob McWhirter
*/
@Post
@ApplicationScoped
public class RemotingLegacyConnectorCustomizer implements Customizer {
private static Logger LOG = Logger.getLogger("org.wildfly.swarm.remoting");
@Inject
private RemotingFraction remoting;
@Inject
@Named(DefaultSocketBindingGroupProducer.STANDARD_SOCKETS)
private SocketBindingGroup group;
@Override
public void customize() {
if (this.remoting.isRequireLegacyConnector()) {
LOG.info("Remoting installed but Undertow not available. Enabled legacy connector on port 4447.");
this.remoting.connector("legacy", (connector) -> {
connector.socketBinding("legacy-remoting");
});
group.socketBinding(new SocketBinding("legacy-remoting").port(this.remoting.port()));
}
}
}