package org.infinispan.server.jgroups.subsystem;
import org.infinispan.server.commons.service.InjectedValueDependency;
import org.infinispan.server.commons.service.ValueDependency;
import org.infinispan.server.jgroups.spi.SaslConfiguration;
import org.infinispan.server.jgroups.spi.service.ProtocolStackServiceName;
import org.jboss.as.domain.management.SecurityRealm;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
public class SaslConfigurationBuilder extends AbstractProtocolConfigurationBuilder<SaslConfiguration>
implements SaslConfiguration {
private String mech;
private String clusterRole;
private ValueDependency<SecurityRealm> securityRealm;
public SaslConfigurationBuilder(String stackName) {
super(stackName, SaslConfiguration.PROTOCOL_NAME);
}
@Override
public ServiceName getServiceName() {
return ProtocolStackServiceName.CHANNEL_FACTORY.getServiceName(this.stackName).append("sasl");
}
@Override
public ServiceBuilder<SaslConfiguration> build(ServiceTarget target) {
ServiceBuilder<SaslConfiguration> builder = super.build(target);
if (this.securityRealm != null) {
this.securityRealm.register(builder);
}
return builder;
}
public SaslConfigurationBuilder setMech(String mech) {
this.mech = mech;
return this;
}
public SaslConfigurationBuilder setSecurityRealm(String securityRealm) {
this.securityRealm = new InjectedValueDependency<>(SecurityRealm.ServiceUtil.createServiceName(securityRealm), SecurityRealm.class);
return this;
}
public SaslConfigurationBuilder setClusterRole(String clusterRole) {
this.clusterRole = clusterRole;
return this;
}
@Override
public SaslConfigurationBuilder addProperty(String name, String value) {
super.addProperty(name, value);
return this;
}
@Override
public SaslConfiguration getValue() throws IllegalStateException, IllegalArgumentException {
return this;
}
@Override
public String getClusterRole() {
return clusterRole;
}
@Override
public SecurityRealm getSecurityRealm() {
return (this.securityRealm != null) ? this.securityRealm.getValue() : null;
}
@Override
public String getMech() {
return mech;
}
}