From 9c61714dec4fa2cdfe018e2538d7815b54fa8a48 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Fri, 18 Jul 2014 17:42:57 +0200 Subject: [PATCH] Switch to CXF 3.0 --- build-system/pom.xml | 38 +++++++++++++++++-- infra/common/pom.xml | 2 - infra/prism/pom.xml | 11 +++++- .../prism/schema/SchemaDescription.java | 2 +- infra/schema/pom.xml | 6 ++- .../META-INF/jax-ws-catalog-compile-time.xml | 3 ++ .../resources/META-INF/jax-ws-catalog.xml | 7 +++- .../xml/ns/public/model/model-3.wsdl | 2 +- infra/ws-util/pom.xml | 8 ++-- .../wsutil/AbstractWebServiceClient.java | 4 +- .../infra/wsutil/ClientPasswordHandler.java | 2 +- model/model-client/pom.xml | 9 ++++- .../src/compile/resources/catalog.xml | 4 +- .../src/compile/resources/jax-ws-catalog.xml | 5 ++- .../model/client/ModelClientUtil.java | 8 ++-- .../src/main/resources/META-INF/catalog.xml | 3 ++ .../resources/META-INF/jax-ws-catalog.xml | 3 ++ model/model-impl/pom.xml | 23 +++++------ .../MidpointRestAuthenticationHandler.java | 28 ++++++++++---- .../model/impl/security/PasswordCallback.java | 4 +- ...ringAuthenticationInjectorInterceptor.java | 8 ++-- ...pringAuthenticationJanitorInterceptor.java | 4 +- samples/model-client-sample/pom.xml | 11 ++++-- .../client/sample/ClientPasswordHandler.java | 2 +- .../testing/model/client/sample/Main.java | 6 +-- .../model/client/sample/RunScript.java | 6 ++- 26 files changed, 147 insertions(+), 62 deletions(-) diff --git a/build-system/pom.xml b/build-system/pom.xml index bc540e12bcd..1b237133505 100644 --- a/build-system/pom.xml +++ b/build-system/pom.xml @@ -45,8 +45,8 @@ 2.0.1 2.6 1.2 - 2.7.6 - 2.4.0 + 3.0.1.e1 + 3.0.1 2.4.7 2.2.7 2.2.7 @@ -70,6 +70,7 @@ 5.15.1 5.15.1 1.3 + 2.0.1 1.4.0.0-SNAPSHOT @@ -267,6 +268,11 @@ + + org.apache.cxf + cxf-core + ${cxf.version} + org.apache.cxf cxf-rt-frontend-simple @@ -274,7 +280,12 @@ org.apache.cxf - cxf-api + cxf-rt-wsdl + ${cxf.version} + + + org.apache.cxf + cxf-tools-common ${cxf.version} @@ -322,6 +333,21 @@ cxf-rt-ws-security ${cxf.version} + + org.apache.cxf + cxf-rt-frontend-jaxrs + ${cxf.version} + + + org.apache.cxf + cxf-rt-rs-extension-providers + ${cxf.version} + + + org.apache.cxf.xjc-utils + cxf-xjc-runtime + ${cxf-xjc.version} + org.apache.felix org.osgi.core @@ -413,6 +439,12 @@ quartz ${quartz.version} + + org.apache.santuario + xmlsec + ${xmlsec.version} + + diff --git a/infra/common/pom.xml b/infra/common/pom.xml index 5bd5e8ad062..0663adde07d 100644 --- a/infra/common/pom.xml +++ b/infra/common/pom.xml @@ -57,7 +57,6 @@ org.codehaus.groovy groovy - 1.8.6 net.sf.saxon @@ -66,7 +65,6 @@ org.apache.santuario xmlsec - 1.4.5 org.codehaus.staxmate diff --git a/infra/prism/pom.xml b/infra/prism/pom.xml index f27a82b62e0..71fec27c7da 100644 --- a/infra/prism/pom.xml +++ b/infra/prism/pom.xml @@ -49,7 +49,15 @@ org.apache.cxf - cxf-api + cxf-rt-frontend-jaxws + + + org.apache.cxf + cxf-rt-wsdl + + + org.apache.cxf + cxf-tools-common commons-lang @@ -58,7 +66,6 @@ org.apache.santuario xmlsec - 1.4.5 diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/SchemaDescription.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/SchemaDescription.java index 63c1520c79f..dd50498a1cf 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/SchemaDescription.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/schema/SchemaDescription.java @@ -32,7 +32,7 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; -import org.apache.cxf.common.WSDLConstants; +import org.apache.cxf.wsdl.WSDLConstants; import org.apache.commons.lang.StringUtils; import org.w3c.dom.Element; import org.w3c.dom.Node; diff --git a/infra/schema/pom.xml b/infra/schema/pom.xml index 0e97033fa34..7588f7735da 100644 --- a/infra/schema/pom.xml +++ b/infra/schema/pom.xml @@ -55,7 +55,7 @@ org.apache.cxf - cxf-rt-core + cxf-core org.apache.cxf @@ -77,6 +77,10 @@ org.apache.cxf cxf-rt-transports-http + + org.apache.cxf.xjc-utils + cxf-xjc-runtime + diff --git a/infra/schema/src/main/resources/META-INF/jax-ws-catalog-compile-time.xml b/infra/schema/src/main/resources/META-INF/jax-ws-catalog-compile-time.xml index 18de0d9778f..4c38985e474 100644 --- a/infra/schema/src/main/resources/META-INF/jax-ws-catalog-compile-time.xml +++ b/infra/schema/src/main/resources/META-INF/jax-ws-catalog-compile-time.xml @@ -24,6 +24,9 @@ + + + diff --git a/infra/schema/src/main/resources/META-INF/jax-ws-catalog.xml b/infra/schema/src/main/resources/META-INF/jax-ws-catalog.xml index f6bd7fd8396..1f6e6fafd7d 100644 --- a/infra/schema/src/main/resources/META-INF/jax-ws-catalog.xml +++ b/infra/schema/src/main/resources/META-INF/jax-ws-catalog.xml @@ -18,10 +18,15 @@ - + + + + + + diff --git a/infra/schema/src/main/resources/xml/ns/public/model/model-3.wsdl b/infra/schema/src/main/resources/xml/ns/public/model/model-3.wsdl index f491d24022e..f8154782382 100644 --- a/infra/schema/src/main/resources/xml/ns/public/model/model-3.wsdl +++ b/infra/schema/src/main/resources/xml/ns/public/model/model-3.wsdl @@ -46,7 +46,7 @@ + location="http://midpoint.evolveum.com/xml/ns/public/common/fault-3"/> diff --git a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java index a1a31d87198..dc4d70606b6 100644 --- a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java +++ b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/AbstractWebServiceClient.java @@ -33,8 +33,8 @@ import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; -import org.apache.ws.security.WSConstants; -import org.apache.ws.security.handler.WSHandlerConstants; +import org.apache.wss4j.dom.WSConstants; +import org.apache.wss4j.dom.handler.WSHandlerConstants; /** * @author semancik diff --git a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/ClientPasswordHandler.java b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/ClientPasswordHandler.java index 02f763b25e6..23c6e7fefc6 100644 --- a/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/ClientPasswordHandler.java +++ b/infra/ws-util/src/main/java/com/evolveum/midpoint/infra/wsutil/ClientPasswordHandler.java @@ -21,7 +21,7 @@ import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; -import org.apache.ws.security.WSPasswordCallback; +import org.apache.wss4j.common.ext.WSPasswordCallback; /** * @author semancik diff --git a/model/model-client/pom.xml b/model/model-client/pom.xml index ff89389bf31..200a01e26e0 100644 --- a/model/model-client/pom.xml +++ b/model/model-client/pom.xml @@ -53,6 +53,10 @@ com.sun.xml.bind jaxb-impl + + org.apache.cxf + cxf-core + org.apache.cxf cxf-rt-frontend-jaxws @@ -65,6 +69,10 @@ org.apache.cxf cxf-rt-ws-security + + org.apache.cxf.xjc-utils + cxf-xjc-runtime + org.springframework spring-core @@ -72,7 +80,6 @@ commons-io commons-io - 2.0.1 diff --git a/model/model-client/src/compile/resources/jax-ws-catalog.xml b/model/model-client/src/compile/resources/jax-ws-catalog.xml index f7e4081e1a7..29772d3c998 100644 --- a/model/model-client/src/compile/resources/jax-ws-catalog.xml +++ b/model/model-client/src/compile/resources/jax-ws-catalog.xml @@ -17,7 +17,10 @@ - + + + + diff --git a/model/model-client/src/main/java/com/evolveum/midpoint/model/client/ModelClientUtil.java b/model/model-client/src/main/java/com/evolveum/midpoint/model/client/ModelClientUtil.java index 4cfa109ae9c..424a7f73abd 100644 --- a/model/model-client/src/main/java/com/evolveum/midpoint/model/client/ModelClientUtil.java +++ b/model/model-client/src/main/java/com/evolveum/midpoint/model/client/ModelClientUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Evolveum + * Copyright (c) 2014 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,8 +46,6 @@ import org.apache.commons.lang.Validate; import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; -import org.apache.ws.security.WSConstants; -import org.apache.ws.security.handler.WSHandlerConstants; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -85,8 +83,8 @@ public static JAXBContext instantiateJaxbContext() throws JAXBException { "com.evolveum.prism.xml.ns._public.annotation_3:" + "com.evolveum.prism.xml.ns._public.query_3:" + "com.evolveum.prism.xml.ns._public.types_3:" + - "org.w3._2000._09.xmldsig:" + - "org.w3._2001._04.xmlenc"); + "org.w3._2000._09.xmldsig_:" + + "org.w3._2001._04.xmlenc_"); } public static Element createPathElement(String stringPath, Document doc) { diff --git a/model/model-client/src/main/resources/META-INF/catalog.xml b/model/model-client/src/main/resources/META-INF/catalog.xml index 0daf0755460..635888cba97 100644 --- a/model/model-client/src/main/resources/META-INF/catalog.xml +++ b/model/model-client/src/main/resources/META-INF/catalog.xml @@ -54,6 +54,9 @@ + + + diff --git a/model/model-client/src/main/resources/META-INF/jax-ws-catalog.xml b/model/model-client/src/main/resources/META-INF/jax-ws-catalog.xml index b7af38e1fa3..e862876bf64 100644 --- a/model/model-client/src/main/resources/META-INF/jax-ws-catalog.xml +++ b/model/model-client/src/main/resources/META-INF/jax-ws-catalog.xml @@ -17,6 +17,9 @@ + + + diff --git a/model/model-impl/pom.xml b/model/model-impl/pom.xml index cd0845cf1bf..324d9ff05a7 100644 --- a/model/model-impl/pom.xml +++ b/model/model-impl/pom.xml @@ -86,6 +86,10 @@ security-api 3.1-SNAPSHOT + + org.apache.cxf + cxf-core + org.apache.cxf cxf-rt-ws-security @@ -93,19 +97,16 @@ org.apache.cxf cxf-rt-frontend-jaxrs - 2.7.6 - org.apache.cxf - cxf-rt-rs-extension-providers - 2.7.6 - - - org.codehaus.jettison - jettison - 1.3.3 - - + org.apache.cxf + cxf-rt-rs-extension-providers + + + org.codehaus.jettison + jettison + 1.3.3 + org.springframework.security spring-security-core diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/MidpointRestAuthenticationHandler.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/MidpointRestAuthenticationHandler.java index a7724ae8a2c..7ba5a805d09 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/MidpointRestAuthenticationHandler.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/MidpointRestAuthenticationHandler.java @@ -1,5 +1,6 @@ package com.evolveum.midpoint.model.impl.security; +import java.io.IOException; import java.lang.annotation.Annotation; import java.net.URI; import java.util.Date; @@ -7,7 +8,10 @@ import java.util.Map; import java.util.Set; -import javax.ws.rs.MessageProcessingException; +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerRequestFilter; +import javax.ws.rs.container.ContainerResponseContext; +import javax.ws.rs.container.ContainerResponseFilter; import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.Link; @@ -21,8 +25,6 @@ import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; import org.apache.cxf.configuration.security.AuthorizationPolicy; -import org.apache.cxf.jaxrs.ext.RequestHandler; -import org.apache.cxf.jaxrs.ext.ResponseHandler; import org.apache.cxf.jaxrs.model.ClassResourceInfo; import org.apache.cxf.jaxrs.model.OperationResourceInfo; import org.apache.cxf.message.Message; @@ -38,7 +40,7 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; -public class MidpointRestAuthenticationHandler implements RequestHandler, ResponseHandler { +public class MidpointRestAuthenticationHandler implements ContainerRequestFilter, ContainerResponseFilter { @Autowired(required =true) private UserProfileService userDetails; @@ -133,11 +135,23 @@ public Response handleRequest(Message m, ClassResourceInfo resourceClass) { // return Response.status(401).header("WWW-Authenticate", "Basic").build(); // } } +// +// @Override +// public Response handleResponse(Message m, OperationResourceInfo ori, Response response) { +// securityEnforcer.setupPreAuthenticatedSecurityContext((PrismObject) null); +// return null; +// } @Override - public Response handleResponse(Message m, OperationResourceInfo ori, Response response) { - securityEnforcer.setupPreAuthenticatedSecurityContext((PrismObject) null); - return null; + public void filter(ContainerRequestContext arg0, ContainerResponseContext arg1) throws IOException { + // TODO Auto-generated method stub + + } + + @Override + public void filter(ContainerRequestContext arg0) throws IOException { + // TODO Auto-generated method stub + } } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java index 395577b3d6e..27771878ba2 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/PasswordCallback.java @@ -19,6 +19,8 @@ import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; +import org.apache.wss4j.common.ext.WSPasswordCallback; + import java.io.IOException; import com.evolveum.midpoint.prism.crypto.EncryptionException; @@ -32,8 +34,6 @@ import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType; import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; -import org.apache.ws.security.WSPasswordCallback; - /** * @author Igor Farinic */ diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationInjectorInterceptor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationInjectorInterceptor.java index 0bf8bb075fd..8530bf2969d 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationInjectorInterceptor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationInjectorInterceptor.java @@ -44,8 +44,8 @@ import org.apache.cxf.phase.PhaseInterceptor; import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor; import org.apache.ws.commons.schema.utils.DOMUtil; -import org.apache.ws.security.WSSecurityException; -import org.apache.ws.security.util.WSSecurityUtil; +import org.apache.wss4j.common.ext.WSSecurityException; +import org.apache.wss4j.dom.util.WSSecurityUtil; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -160,7 +160,7 @@ public void handleMessage(SoapMessage message) throws Fault { LOGGER.debug("Access to web service denied for user '{}': not authorized", new Object[]{username}); auditLoginFailure(username); - throw new Fault(new WSSecurityException("Unauthorized")); + throw new Fault(new WSSecurityException(WSSecurityException.ErrorCode.FAILURE, "Not authorized")); } } } catch (WSSecurityException e) { @@ -172,7 +172,7 @@ public void handleMessage(SoapMessage message) throws Fault { LOGGER.debug("Access to web service denied for user '{}': object not found: {}", new Object[]{username, e.getMessage(), e}); auditLoginFailure(username); - throw new Fault(new WSSecurityException("Unauthorized")); + throw new Fault(new WSSecurityException(WSSecurityException.ErrorCode.FAILURE, "Not authorized")); } LOGGER.debug("Access to web service allowed for user '{}'", username); diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationJanitorInterceptor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationJanitorInterceptor.java index 392fae90f89..15a523a8d50 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationJanitorInterceptor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/SpringAuthenticationJanitorInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2013 Evolveum + * Copyright (c) 2010-2014 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,8 +24,6 @@ import org.apache.cxf.phase.Phase; import org.apache.cxf.phase.PhaseInterceptor; import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor; -import org.apache.ws.security.WSSecurityException; -import org.apache.ws.security.util.WSSecurityUtil; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; diff --git a/samples/model-client-sample/pom.xml b/samples/model-client-sample/pom.xml index 2278371b791..be9265e51cd 100644 --- a/samples/model-client-sample/pom.xml +++ b/samples/model-client-sample/pom.xml @@ -141,18 +141,23 @@ org.apache.cxf + cxf-core + 3.0.0 + + + org.apache.cxf cxf-rt-frontend-jaxws - 2.7.6 + 3.0.0 org.apache.cxf cxf-rt-transports-http - 2.7.6 + 3.0.0 org.apache.cxf cxf-rt-ws-security - 2.7.6 + 3.0.0 commons-io diff --git a/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/ClientPasswordHandler.java b/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/ClientPasswordHandler.java index 95cb7bfdab7..64a9cd12aea 100644 --- a/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/ClientPasswordHandler.java +++ b/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/ClientPasswordHandler.java @@ -21,7 +21,7 @@ import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; -import org.apache.ws.security.WSPasswordCallback; +import org.apache.wss4j.common.ext.WSPasswordCallback; /** * @author semancik diff --git a/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/Main.java b/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/Main.java index 95458944254..d9ce6fbbd6e 100644 --- a/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/Main.java +++ b/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/Main.java @@ -51,11 +51,11 @@ import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; import org.apache.commons.io.IOUtils; import org.apache.cxf.frontend.ClientProxy; +import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; +import org.apache.wss4j.dom.handler.WSHandlerConstants; +import org.apache.wss4j.dom.WSConstants; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; -import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; -import org.apache.ws.security.WSConstants; -import org.apache.ws.security.handler.WSHandlerConstants; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; diff --git a/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/RunScript.java b/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/RunScript.java index 3a56c26893b..71e821107be 100644 --- a/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/RunScript.java +++ b/samples/model-client-sample/src/main/java/com/evolveum/midpoint/testing/model/client/sample/RunScript.java @@ -25,6 +25,7 @@ import com.evolveum.midpoint.xml.ns._public.model.model_3.ExecuteScriptsType; import com.evolveum.midpoint.xml.ns._public.model.model_3.ModelPortType; import com.evolveum.midpoint.xml.ns._public.model.model_3.ModelService; + import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.GnuParser; @@ -34,8 +35,8 @@ import org.apache.commons.io.IOUtils; import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; -import org.apache.ws.security.WSConstants; -import org.apache.ws.security.handler.WSHandlerConstants; +import org.apache.wss4j.dom.WSConstants; +import org.apache.wss4j.dom.handler.WSHandlerConstants; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBElement; @@ -44,6 +45,7 @@ import javax.xml.bind.Unmarshaller; import javax.xml.namespace.QName; import javax.xml.ws.BindingProvider; + import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream;