All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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