package service;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import javax.xml.namespace.QName;
import javax.xml.ws.Binding;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.Handler;

import com.checkm8.advantage.admin.user.model.service.impl.IUserService;
import com.checkm8.advantage.admin.user.model.service.impl.UserWebService;

public class ServiceFacade {
	
	public static void main(String[] arg) throws MalformedURLException{

		QName serviceName = new QName("http://impl.service.model.user.admin.advantage.checkm8.com/", "UserWebService");
		URL wsdlUrl = new URL("https://adminapi.checkm8.com/AdminServer/services/UserService?wsdl");
		
		UserWebService userWebService = new UserWebService(wsdlUrl,serviceName);
		IUserService client= userWebService.getUserWebServicePort();
		
		// SecurityHandler impl
		SecurityHandler securityHandler = new SecurityHandler();
		Binding repositoryBinding =
              ((BindingProvider) client).getBinding();
	    
		List<Handler> repositoryHandlerChain =
	            repositoryBinding.getHandlerChain();
	    repositoryHandlerChain.add(securityHandler);
	    repositoryBinding.setHandlerChain(repositoryHandlerChain);
		
	    /*
        WSBindingProvider bindingProvider = (WSBindingProvider)client;
        
        Map<String, Object> requestContext = bindingProvider.getRequestContext();
        
		requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY , true);
		requestContext.put(BindingProvider.USERNAME_PROPERTY , "...");
		requestContext.put(BindingProvider.PASSWORD_PROPERTY , "...");
		requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY , "https://adminapi.checkm8.com/AdminServer/services/UserService");
		*/

		System.out.println("User ID: "+client.getLoggedInUser().getId());
		
        
	}
}
