io.scalecube.services.ServiceInfo Maven / Gradle / Ivy
package io.scalecube.services;
import io.scalecube.services.auth.Authenticator;
import io.scalecube.services.exceptions.ServiceProviderErrorMapper;
import io.scalecube.services.transport.api.ServiceMessageDataDecoder;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class ServiceInfo {
private final Object serviceInstance;
private final Map tags;
private final ServiceProviderErrorMapper errorMapper;
private final ServiceMessageDataDecoder dataDecoder;
private final Authenticator authenticator;
private ServiceInfo(Builder builder) {
this.serviceInstance = builder.serviceInstance;
this.tags = Collections.unmodifiableMap(new HashMap<>(builder.tags));
this.errorMapper = builder.errorMapper;
this.dataDecoder = builder.dataDecoder;
this.authenticator = builder.authenticator;
}
public static Builder fromServiceInstance(Object serviceInstance) {
return new Builder(serviceInstance);
}
public Object serviceInstance() {
return serviceInstance;
}
public Map tags() {
return tags;
}
public ServiceProviderErrorMapper errorMapper() {
return errorMapper;
}
public ServiceMessageDataDecoder dataDecoder() {
return dataDecoder;
}
public Authenticator authenticator() {
return authenticator;
}
public static class Builder {
private final Object serviceInstance;
private final Map tags = new HashMap<>();
private ServiceProviderErrorMapper errorMapper;
private ServiceMessageDataDecoder dataDecoder;
private Authenticator authenticator;
public Builder(Object serviceInstance) {
this.serviceInstance = serviceInstance;
}
public Builder tag(String key, String value) {
tags.put(key, value);
return this;
}
public Builder errorMapper(ServiceProviderErrorMapper errorMapper) {
this.errorMapper = errorMapper;
return this;
}
public Builder dataDecoder(ServiceMessageDataDecoder dataDecoder) {
this.dataDecoder = dataDecoder;
return this;
}
public Builder authenticator(Authenticator authenticator) {
this.authenticator = authenticator;
return this;
}
public ServiceInfo build() {
return new ServiceInfo(this);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy