From defceef8afef538555c13d33e344a89a828a3d97 Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Fri, 20 Dec 2013 12:35:28 +0100 Subject: inital --- .../java/at/gv/util/client/mis/usp/USPClient.java | 150 +++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 src/main/java/at/gv/util/client/mis/usp/USPClient.java (limited to 'src/main/java/at/gv/util/client/mis/usp/USPClient.java') diff --git a/src/main/java/at/gv/util/client/mis/usp/USPClient.java b/src/main/java/at/gv/util/client/mis/usp/USPClient.java new file mode 100644 index 0000000..ac8315a --- /dev/null +++ b/src/main/java/at/gv/util/client/mis/usp/USPClient.java @@ -0,0 +1,150 @@ +package at.gv.util.client.mis.usp; + +import java.net.URL; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.net.ssl.SSLContext; +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.namespace.QName; +import javax.xml.ws.BindingProvider; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.Handler; + +import org.apache.commons.lang.RandomStringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.util.LaxHostNameVerifier; +import at.gv.util.LoggingHandler; +import at.gv.util.MiscUtil; +import at.gv.util.client.szr.SZRSOAPHandler; +import at.gv.util.config.EgovUtilConfiguration; +import at.gv.util.ex.EgovUtilException; +import at.gv.util.wsdl.mis.usp.GetMandatesPortType; +import at.gv.util.wsdl.mis.usp.GetMandatesService; +import at.gv.util.xsd.mis.usp.GetMandatesRequest; +import at.gv.util.xsd.mis.usp.GetMandatesRequest.MandateFilters; +import at.gv.util.xsd.mis.usp.GetMandatesResponse; +import at.gv.util.xsd.mis.usp.IdentificationType; +import at.gv.util.xsd.szr.pvp.PvpTokenType; + +import com.sun.xml.ws.developer.JAXWSProperties; + +public class USPClient { + + @Resource + WebServiceContext wsContext; + + private EgovUtilConfiguration config = null; + private Logger log = LoggerFactory.getLogger(USPClient.class); + private boolean logEnabled = true; + private GetMandatesPortType uspSuche = null; + + public USPClient(EgovUtilConfiguration config, boolean logEnabled) throws EgovUtilException { + MiscUtil.assertNotNull(config, "config"); + this.config = config; + this.logEnabled = logEnabled; + initialize(); + } + + public GetMandatesResponse getMandates(String bpkType, String bpkValue, List mandateFilters) { + + // assemble request + GetMandatesRequest request = new GetMandatesRequest(); + String requestId = createUSPRequestId(); + log.debug("USP request id: " + requestId); + request.setRequestId(requestId); + Date date = new Date(); + try { + request.setTimestamp(MiscUtil.getXMLGregorianCalendar(date)); + } catch (DatatypeConfigurationException e) { + log.warn("Error initializing USP client.", e); + return null; + } + log.debug("USP time stamp: " + date.toString()); + request.setApplicationId(config.getUSPApplicationId()); + log.debug("USP application id: " + config.getUSPApplicationId()); + + // set identification + IdentificationType idt = new IdentificationType(); + idt.setType(bpkType); + idt.setValue(bpkValue); + request.setIdentification(idt); + + // set filters + if (mandateFilters != null && mandateFilters.size() > 0) { + MandateFilters mf = new MandateFilters(); + mf.getMandateFilter().addAll(mandateFilters); + request.setMandateFilters(mf); + } + + return this.uspSuche.getMandatesOperation(request); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private void initialize() throws EgovUtilException { + URL url = USPClient.class.getResource("/wsdl/mis/usp/mis-usp-1.0.2.wsdl"); + GetMandatesService uspService = null; + String uspURL = null; + uspService = new GetMandatesService(url, new QName("http://reference.e-government.gv.at/namespace/mandates/mis/usp/1.0.2/wsdl", "GetMandatesService")); + uspSuche = uspService.getGetMandatesPort(); + if (config.isUSPTestEnvironment()) { + log.trace("Initializing USP test configuration."); + uspURL = config.getUSPTestEnvironmentURL(); + } else { + log.trace("Initializing USP productive configuration."); + uspURL = config.getUSPProductionEnvironmentURL(); + } + log.trace("USP connection URL: " + uspURL); + BindingProvider bindingProvider = (BindingProvider) uspSuche; + Map requestContext = bindingProvider.getRequestContext(); + requestContext.put( + BindingProvider.ENDPOINT_ADDRESS_PROPERTY, uspURL); + + log.trace("Adding JAX-WS request/response trace handler."); + List handlerList = bindingProvider.getBinding().getHandlerChain(); + if (handlerList == null) { + handlerList = new ArrayList(); + } + LoggingHandler loggingHandler = new LoggingHandler(); + if (this.logEnabled) { + handlerList.add(loggingHandler); + } + // PV authentication + log.trace("Adding WS-Security Header handler."); + PvpTokenType pvpToken = config.getURPVPToken(); + SZRSOAPHandler szrSOAPHandler = new SZRSOAPHandler(); + szrSOAPHandler.configure(pvpToken); + handlerList.add(szrSOAPHandler); + bindingProvider.getBinding().setHandlerChain(handlerList); + + + //set HTTP Client Timeout (Default Timeout 60sec) + requestContext.put(JAXWSProperties.CONNECT_TIMEOUT, this.config.getHTTPRequestTimeout()); + + // check for ssl + if (uspURL.toLowerCase().startsWith("https")) { + log.trace("Using ssl for SZR client request."); + SSLContext sslContext = this.config.getUSPsslConfiguration().getSSLContext(false); + if (sslContext == null) { + throw new EgovUtilException("SSL context from configuration is empty. Please configure an SSL context in the configuration first."); + } + requestContext.put(JAXWSProperties.SSL_SOCKET_FACTORY, sslContext.getSocketFactory()); + + // check for lax hostname + if (this.config.getURsslConfiguration().useLaxHostNameVerifier()) { + log.trace("LaxHostnameVerifier enabled. This setting is not recommended to use."); + requestContext.put(JAXWSProperties.HOSTNAME_VERIFIER, new LaxHostNameVerifier()); + } + } + } + + private String createUSPRequestId() { + return RandomStringUtils.randomAlphanumeric(12); + } + +} -- cgit v1.2.3