package cz.abclinuxu.datoveschranky.impl; import com.sun.xml.ws.developer.JAXWSProperties; import cz.abclinuxu.datoveschranky.common.impl.Config; import cz.abclinuxu.datoveschranky.common.impl.Utils; import java.security.KeyStore; import java.util.Map; import java.util.logging.Logger; import javax.net.ssl.SSLSocketFactory; import javax.xml.ws.BindingProvider; import javax.xml.ws.Service; /** * * Autentizace * */ public abstract class Authentication { protected final Config config; // protected SSLSocketFactory socketFactory = null; protected final Logger logger = Logger.getLogger(this.getClass().getName()); protected Authentication(Config config) { this.config = config; // KeyStore keyStore = config.getKeyStore(); // this.socketFactory = Utils.createSSLSocketFactory(keyStore); } public <T> T createService(Service serviceBuilder, Class<T> serviceClass, String servicePostfix) { T service = serviceBuilder.getPort(serviceClass); configureService(((BindingProvider) service).getRequestContext(), servicePostfix); return service; } protected void configureService(Map<String, Object> requestContext, String servicePostfix) { requestContext.put(JAXWSProperties.SSL_SOCKET_FACTORY, this.createSSLSocketFactory()); requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, config.getServiceURL() + servicePostfix); this.configureServiceOverride(requestContext, servicePostfix); } protected SSLSocketFactory createSSLSocketFactory() { KeyStore keyStore = config.getKeyStore(); return Utils.createSSLSocketFactory(keyStore); } protected abstract void configureServiceOverride(Map<String, Object> requestContext, String servicePostfix); }