Configuration class
import io.airlift.configuration.Config;
import io.airlift.configuration.ConfigDescription;
import io.airlift.configuration.ConfigSecuritySensitive;
import io.airlift.units.Duration;
import io.airlift.units.MaxDuration;
import io.airlift.units.MinDuration;
import javax.validation.constraints.NotNull;
public class ExampleConfig
{
private String secret;
private Duration timeout = Duration.succinctDuration(10, TimeUnit.SECONDS);
public String getSecret()
{
return secret;
}
@Config("secret")
@ConfigDescription("Secret required to access the data source")
@ConfigSecuritySensitive
public ExampleConfig setSecret(String secret)
{
this.secret = secret;
return this;
}
@NotNull
@MaxDuration("10m")
@MinDuration("1ms")
public Duration getTimeout()
{
return timeout;
}
@Config("timeout")
public ExampleConfig setTimeout(Duration timeout)
{
this.timeout = timeout;
return this;
}
}
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ (bound) Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Guice:
import com.google.inject.Binder;
import com.google.inject.Module;
import static io.airlift.configuration.ConfigBinder.configBinder;
public class ExampleModule
implements Module
{
public ExampleModule()
{
}
@Override
public void configure(Binder binder)
{
configBinder(binder).bindConfig(ExampleConfig.class);
}
}
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π°Π΄ΠΎ Π½Π°Π΄ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π² connector factory ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠ°:
@Override
public Connector create(String connectorName, Map<String, String> config, ConnectorContext context)
{
requireNonNull(config, "config is null");
Bootstrap app = new Bootstrap(new ExampleModule());
Injector injector = app
.doNotInitializeLogging()
.setRequiredConfigurationProperties(config)
.initialize();
return injector.getInstance(ExampleConnector.class);
}