34 import com.sun.xml.internal.ws.api.databinding.DatabindingConfig; |
34 import com.sun.xml.internal.ws.api.databinding.DatabindingConfig; |
35 import com.sun.xml.internal.ws.api.databinding.DatabindingFactory; |
35 import com.sun.xml.internal.ws.api.databinding.DatabindingFactory; |
36 import com.sun.xml.internal.ws.api.databinding.MetadataReader; |
36 import com.sun.xml.internal.ws.api.databinding.MetadataReader; |
37 import com.sun.xml.internal.ws.api.databinding.WSDLGenInfo; |
37 import com.sun.xml.internal.ws.api.databinding.WSDLGenInfo; |
38 import com.sun.xml.internal.ws.api.model.SEIModel; |
38 import com.sun.xml.internal.ws.api.model.SEIModel; |
|
39 import com.sun.xml.internal.ws.api.model.wsdl.WSDLModel; |
39 import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort; |
40 import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort; |
|
41 import com.sun.xml.internal.ws.api.model.wsdl.WSDLService; |
40 import com.sun.xml.internal.ws.api.policy.PolicyResolver; |
42 import com.sun.xml.internal.ws.api.policy.PolicyResolver; |
41 import com.sun.xml.internal.ws.api.policy.PolicyResolverFactory; |
43 import com.sun.xml.internal.ws.api.policy.PolicyResolverFactory; |
42 import com.sun.xml.internal.ws.api.server.AsyncProvider; |
44 import com.sun.xml.internal.ws.api.server.AsyncProvider; |
43 import com.sun.xml.internal.ws.api.server.Container; |
45 import com.sun.xml.internal.ws.api.server.Container; |
44 import com.sun.xml.internal.ws.api.server.ContainerResolver; |
46 import com.sun.xml.internal.ws.api.server.ContainerResolver; |
57 import com.sun.xml.internal.ws.binding.WebServiceFeatureList; |
59 import com.sun.xml.internal.ws.binding.WebServiceFeatureList; |
58 import com.sun.xml.internal.ws.model.AbstractSEIModelImpl; |
60 import com.sun.xml.internal.ws.model.AbstractSEIModelImpl; |
59 import com.sun.xml.internal.ws.model.ReflectAnnotationReader; |
61 import com.sun.xml.internal.ws.model.ReflectAnnotationReader; |
60 import com.sun.xml.internal.ws.model.RuntimeModeler; |
62 import com.sun.xml.internal.ws.model.RuntimeModeler; |
61 import com.sun.xml.internal.ws.model.SOAPSEIModel; |
63 import com.sun.xml.internal.ws.model.SOAPSEIModel; |
62 import com.sun.xml.internal.ws.model.wsdl.WSDLModelImpl; |
|
63 import com.sun.xml.internal.ws.model.wsdl.WSDLPortImpl; |
|
64 import com.sun.xml.internal.ws.model.wsdl.WSDLServiceImpl; |
|
65 import com.sun.xml.internal.ws.policy.PolicyMap; |
64 import com.sun.xml.internal.ws.policy.PolicyMap; |
66 import com.sun.xml.internal.ws.policy.jaxws.PolicyUtil; |
65 import com.sun.xml.internal.ws.policy.jaxws.PolicyUtil; |
67 import com.sun.xml.internal.ws.resources.ServerMessages; |
66 import com.sun.xml.internal.ws.resources.ServerMessages; |
68 import com.sun.xml.internal.ws.server.provider.ProviderInvokerTube; |
67 import com.sun.xml.internal.ws.server.provider.ProviderInvokerTube; |
69 import com.sun.xml.internal.ws.server.sei.SEIInvokerTube; |
68 import com.sun.xml.internal.ws.server.sei.SEIInvokerTube; |
71 import com.sun.xml.internal.ws.util.HandlerAnnotationProcessor; |
70 import com.sun.xml.internal.ws.util.HandlerAnnotationProcessor; |
72 import com.sun.xml.internal.ws.util.ServiceConfigurationError; |
71 import com.sun.xml.internal.ws.util.ServiceConfigurationError; |
73 import com.sun.xml.internal.ws.util.ServiceFinder; |
72 import com.sun.xml.internal.ws.util.ServiceFinder; |
74 import com.sun.xml.internal.ws.util.xml.XmlUtil; |
73 import com.sun.xml.internal.ws.util.xml.XmlUtil; |
75 import com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser; |
74 import com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser; |
|
75 |
76 import org.xml.sax.EntityResolver; |
76 import org.xml.sax.EntityResolver; |
77 import org.xml.sax.InputSource; |
77 import org.xml.sax.InputSource; |
78 import org.xml.sax.SAXException; |
78 import org.xml.sax.SAXException; |
79 |
79 |
80 import javax.jws.WebService; |
80 import javax.jws.WebService; |
84 import javax.xml.ws.Provider; |
84 import javax.xml.ws.Provider; |
85 import javax.xml.ws.WebServiceException; |
85 import javax.xml.ws.WebServiceException; |
86 import javax.xml.ws.WebServiceFeature; |
86 import javax.xml.ws.WebServiceFeature; |
87 import javax.xml.ws.WebServiceProvider; |
87 import javax.xml.ws.WebServiceProvider; |
88 import javax.xml.ws.soap.SOAPBinding; |
88 import javax.xml.ws.soap.SOAPBinding; |
|
89 |
89 import java.io.IOException; |
90 import java.io.IOException; |
90 import java.net.URL; |
91 import java.net.URL; |
91 import java.util.ArrayList; |
92 import java.util.ArrayList; |
92 import java.util.Collection; |
93 import java.util.Collection; |
93 import java.util.HashMap; |
94 import java.util.HashMap; |
230 // Finds the primary WSDL and makes sure that metadata doesn't have |
231 // Finds the primary WSDL and makes sure that metadata doesn't have |
231 // two concrete or abstract WSDLs |
232 // two concrete or abstract WSDLs |
232 SDDocumentImpl primaryDoc = primaryWsdl != null ? SDDocumentImpl.create(primaryWsdl,serviceName,portTypeName) : findPrimary(docList); |
233 SDDocumentImpl primaryDoc = primaryWsdl != null ? SDDocumentImpl.create(primaryWsdl,serviceName,portTypeName) : findPrimary(docList); |
233 |
234 |
234 EndpointAwareTube terminal; |
235 EndpointAwareTube terminal; |
235 WSDLPortImpl wsdlPort = null; |
236 WSDLPort wsdlPort = null; |
236 AbstractSEIModelImpl seiModel = null; |
237 AbstractSEIModelImpl seiModel = null; |
237 // create WSDL model |
238 // create WSDL model |
238 if (primaryDoc != null) { |
239 if (primaryDoc != null) { |
239 wsdlPort = getWSDLPort(primaryDoc, docList, serviceName, portName, container, resolver); |
240 wsdlPort = getWSDLPort(primaryDoc, docList, serviceName, portName, container, resolver); |
240 } |
241 } |
707 * @param serviceName service name in wsdl |
708 * @param serviceName service name in wsdl |
708 * @param portName port name in WSDL |
709 * @param portName port name in WSDL |
709 * @param container container in which this service is running |
710 * @param container container in which this service is running |
710 * @return non-null wsdl port object |
711 * @return non-null wsdl port object |
711 */ |
712 */ |
712 private static @NotNull WSDLPortImpl getWSDLPort(SDDocumentSource primaryWsdl, List<? extends SDDocumentSource> metadata, |
713 private static @NotNull WSDLPort getWSDLPort(SDDocumentSource primaryWsdl, List<? extends SDDocumentSource> metadata, |
713 @NotNull QName serviceName, @NotNull QName portName, Container container, |
714 @NotNull QName serviceName, @NotNull QName portName, Container container, |
714 EntityResolver resolver) { |
715 EntityResolver resolver) { |
715 URL wsdlUrl = primaryWsdl.getSystemId(); |
716 URL wsdlUrl = primaryWsdl.getSystemId(); |
716 try { |
717 try { |
717 // TODO: delegate to another entity resolver |
718 // TODO: delegate to another entity resolver |
718 WSDLModelImpl wsdlDoc = RuntimeWSDLParser.parse( |
719 WSDLModel wsdlDoc = RuntimeWSDLParser.parse( |
719 new Parser(primaryWsdl), new EntityResolverImpl(metadata, resolver), |
720 new Parser(primaryWsdl), new EntityResolverImpl(metadata, resolver), |
720 false, container, ServiceFinder.find(WSDLParserExtension.class).toArray()); |
721 false, container, ServiceFinder.find(WSDLParserExtension.class).toArray()); |
721 if(wsdlDoc.getServices().size() == 0) { |
722 if(wsdlDoc.getServices().size() == 0) { |
722 throw new ServerRtException(ServerMessages.localizableRUNTIME_PARSER_WSDL_NOSERVICE_IN_WSDLMODEL(wsdlUrl)); |
723 throw new ServerRtException(ServerMessages.localizableRUNTIME_PARSER_WSDL_NOSERVICE_IN_WSDLMODEL(wsdlUrl)); |
723 } |
724 } |
724 WSDLServiceImpl wsdlService = wsdlDoc.getService(serviceName); |
725 WSDLService wsdlService = wsdlDoc.getService(serviceName); |
725 if (wsdlService == null) { |
726 if (wsdlService == null) { |
726 throw new ServerRtException(ServerMessages.localizableRUNTIME_PARSER_WSDL_INCORRECTSERVICE(serviceName,wsdlUrl)); |
727 throw new ServerRtException(ServerMessages.localizableRUNTIME_PARSER_WSDL_INCORRECTSERVICE(serviceName,wsdlUrl)); |
727 } |
728 } |
728 WSDLPortImpl wsdlPort = wsdlService.get(portName); |
729 WSDLPort wsdlPort = wsdlService.get(portName); |
729 if (wsdlPort == null) { |
730 if (wsdlPort == null) { |
730 throw new ServerRtException(ServerMessages.localizableRUNTIME_PARSER_WSDL_INCORRECTSERVICEPORT(serviceName, portName, wsdlUrl)); |
731 throw new ServerRtException(ServerMessages.localizableRUNTIME_PARSER_WSDL_INCORRECTSERVICEPORT(serviceName, portName, wsdlUrl)); |
731 } |
732 } |
732 return wsdlPort; |
733 return wsdlPort; |
733 } catch (IOException e) { |
734 } catch (IOException e) { |