
com.undefinedlabs.scope.socketaddress.AbstractScopeSocketAddressFactoryResolver Maven / Gradle / Ivy
package com.undefinedlabs.scope.socketaddress;
import com.undefinedlabs.scope.socketaddress.factory.InetScopeSocketAddressFactory;
import com.undefinedlabs.scope.socketaddress.factory.NoopScopeSocketAddressFactory;
import java.net.SocketAddress;
import java.util.HashMap;
import java.util.Map;
public abstract class AbstractScopeSocketAddressFactoryResolver {
private final Map factoriesByClass;
public AbstractScopeSocketAddressFactoryResolver() {
this.factoriesByClass = new HashMap<>();
this.factoriesByClass.put("java.net.InetSocketAddress", InetScopeSocketAddressFactory.INSTANCE);
this.factoriesByClass.putAll(specificFactoriesByClassName());
}
protected abstract Map specificFactoriesByClassName();
public ScopeSocketAddressFactory resolve(final SocketAddress socketAddress) {
return resolve(socketAddress.getClass().getName());
}
public ScopeSocketAddressFactory resolve(final String className) {
final ScopeSocketAddressFactory scopeSocketAddressFactory =
this.factoriesByClass.get(className);
return scopeSocketAddressFactory != null
? scopeSocketAddressFactory
: NoopScopeSocketAddressFactory.INSTANCE;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy