src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingImpl.java

changeset 368
0989ad8c0860
parent 286
f50545b5e2f1
child 384
8f2986ff0235
     1.1 --- a/src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingImpl.java	Thu Apr 04 19:05:24 2013 -0700
     1.2 +++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/db/DatabindingImpl.java	Tue Apr 09 14:51:13 2013 +0100
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -32,21 +32,21 @@
    1.11  import java.util.HashMap;
    1.12  import java.util.Map;
    1.13  
    1.14 -import javax.xml.namespace.QName;
    1.15  import javax.xml.ws.WebServiceFeature;
    1.16  
    1.17 -import com.sun.xml.internal.org.jvnet.ws.message.MessageContext;
    1.18 -
    1.19 +import com.oracle.webservices.internal.api.databinding.JavaCallInfo;
    1.20 +import com.oracle.webservices.internal.api.message.MessageContext;
    1.21  import com.sun.xml.internal.ws.api.databinding.EndpointCallBridge;
    1.22 -import com.sun.xml.internal.ws.api.databinding.JavaCallInfo;
    1.23  import com.sun.xml.internal.ws.api.databinding.WSDLGenInfo;
    1.24  import com.sun.xml.internal.ws.api.databinding.Databinding;
    1.25  import com.sun.xml.internal.ws.api.databinding.DatabindingConfig;
    1.26  import com.sun.xml.internal.ws.api.databinding.ClientCallBridge;
    1.27  import com.sun.xml.internal.ws.api.message.Message;
    1.28 +import com.sun.xml.internal.ws.api.message.MessageContextFactory;
    1.29  import com.sun.xml.internal.ws.api.message.Packet;
    1.30  import com.sun.xml.internal.ws.api.model.MEP;
    1.31  import com.sun.xml.internal.ws.api.model.SEIModel;
    1.32 +import com.sun.xml.internal.ws.api.model.WSDLOperationMapping;
    1.33  import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
    1.34  import com.sun.xml.internal.ws.api.pipe.Codec;
    1.35  import com.sun.xml.internal.ws.api.pipe.ContentType;
    1.36 @@ -57,7 +57,6 @@
    1.37  import com.sun.xml.internal.ws.model.JavaMethodImpl;
    1.38  import com.sun.xml.internal.ws.model.RuntimeModeler;
    1.39  import com.sun.xml.internal.ws.server.sei.TieHandler;
    1.40 -import com.sun.xml.internal.ws.util.QNameMap;
    1.41  import com.sun.xml.internal.ws.wsdl.ActionBasedOperationSignature;
    1.42  import com.sun.xml.internal.ws.wsdl.DispatchException;
    1.43  import com.sun.xml.internal.ws.wsdl.OperationDispatcher;
    1.44 @@ -67,22 +66,25 @@
    1.45   *
    1.46   * @author shih-chang.chen@oracle.com
    1.47   */
    1.48 -public class DatabindingImpl implements Databinding, com.sun.xml.internal.org.jvnet.ws.databinding.Databinding {
    1.49 +public class DatabindingImpl implements Databinding {
    1.50  
    1.51      AbstractSEIModelImpl seiModel;
    1.52          Map<Method, StubHandler> stubHandlers;
    1.53 -    QNameMap<TieHandler> wsdlOpMap = new QNameMap<TieHandler>();
    1.54 +//    QNameMap<TieHandler> wsdlOpMap = new QNameMap<TieHandler>();
    1.55 +        Map<JavaMethodImpl, TieHandler> wsdlOpMap = new HashMap<JavaMethodImpl, TieHandler>();
    1.56          Map<Method, TieHandler> tieHandlers = new HashMap<Method, TieHandler>();
    1.57      OperationDispatcher operationDispatcher;
    1.58      OperationDispatcher operationDispatcherNoWsdl;
    1.59      boolean clientConfig = false;
    1.60      Codec codec;
    1.61 +    MessageContextFactory packetFactory = null;
    1.62  
    1.63          public DatabindingImpl(DatabindingProviderImpl p, DatabindingConfig config) {
    1.64                  RuntimeModeler modeler = new RuntimeModeler(config);
    1.65                  modeler.setClassLoader(config.getClassLoader());
    1.66                  seiModel = modeler.buildRuntimeModel();
    1.67                  WSDLPort wsdlport = config.getWsdlPort();
    1.68 +                packetFactory = new MessageContextFactory(seiModel.getWSBinding().getFeatures());
    1.69                  clientConfig = isClientConfig(config);
    1.70                  if ( clientConfig ) initStubHandlers();
    1.71                  seiModel.setDatabinding(this);
    1.72 @@ -90,8 +92,8 @@
    1.73                  if (operationDispatcher == null) operationDispatcherNoWsdl = new OperationDispatcher(null, seiModel.getWSBinding(), seiModel);
    1.74  //    if(!clientConfig) {
    1.75                  for(JavaMethodImpl jm: seiModel.getJavaMethods()) if (!jm.isAsync()) {
    1.76 -            TieHandler th = new TieHandler(jm, seiModel.getWSBinding());
    1.77 -            wsdlOpMap.put(jm.getOperationQName(), th);
    1.78 +            TieHandler th = new TieHandler(jm, seiModel.getWSBinding(), packetFactory);
    1.79 +            wsdlOpMap.put(jm, th);
    1.80              tieHandlers.put(th.getMethod(), th);
    1.81          }
    1.82  //    }
    1.83 @@ -121,7 +123,7 @@
    1.84          // first fill in sychronized versions
    1.85          for (JavaMethodImpl m : seiModel.getJavaMethods()) {
    1.86              if (!m.getMEP().isAsync) {
    1.87 -                StubHandler handler = new StubHandler(m);
    1.88 +                StubHandler handler = new StubHandler(m, packetFactory);
    1.89                  syncs.put(m.getOperationSignature(), m);
    1.90                  stubHandlers.put(m.getMethod(), handler);
    1.91              }
    1.92 @@ -130,22 +132,24 @@
    1.93              JavaMethodImpl sync = syncs.get(jm.getOperationSignature());
    1.94              if (jm.getMEP() == MEP.ASYNC_CALLBACK || jm.getMEP() == MEP.ASYNC_POLL) {
    1.95                  Method m = jm.getMethod();
    1.96 -                StubAsyncHandler handler = new StubAsyncHandler(jm, sync);
    1.97 +                StubAsyncHandler handler = new StubAsyncHandler(jm, sync, packetFactory);
    1.98                  stubHandlers.put(m, handler);
    1.99              }
   1.100          }
   1.101      }
   1.102  
   1.103 -    public QName resolveOperationQName(Packet req) throws DispatchException {
   1.104 -        return (operationDispatcher != null)?
   1.105 -                operationDispatcher.getWSDLOperationQName(req):
   1.106 -                operationDispatcherNoWsdl.getWSDLOperationQName(req);
   1.107 +    public JavaMethodImpl resolveJavaMethod(Packet req) throws DispatchException {
   1.108 +        WSDLOperationMapping m = req.getWSDLOperationMapping();
   1.109 +        if (m == null) m = (operationDispatcher != null) ?
   1.110 +                operationDispatcher.getWSDLOperationMapping(req):
   1.111 +                operationDispatcherNoWsdl.getWSDLOperationMapping(req);
   1.112 +        return (JavaMethodImpl) m.getJavaMethod();
   1.113      }
   1.114  
   1.115          public JavaCallInfo deserializeRequest(Packet req) {
   1.116 -                JavaCallInfo call = new JavaCallInfo();
   1.117 +            com.sun.xml.internal.ws.api.databinding.JavaCallInfo call = new com.sun.xml.internal.ws.api.databinding.JavaCallInfo();
   1.118                  try {
   1.119 -                        QName wsdlOp = resolveOperationQName(req);
   1.120 +                    JavaMethodImpl wsdlOp = resolveJavaMethod(req);
   1.121                          TieHandler tie = wsdlOpMap.get(wsdlOp);
   1.122                          call.setMethod(tie.getMethod());
   1.123                          Object[] args = tie.readRequest(req.getMessage());
   1.124 @@ -173,7 +177,9 @@
   1.125  
   1.126          public Packet serializeRequest(JavaCallInfo call) {
   1.127          StubHandler stubHandler = stubHandlers.get(call.getMethod());
   1.128 -        return stubHandler.createRequestPacket(call);
   1.129 +        Packet p = stubHandler.createRequestPacket(call);
   1.130 +        p.setState(Packet.State.ClientRequest);
   1.131 +        return p;
   1.132          }
   1.133  
   1.134          public Packet serializeResponse(JavaCallInfo call) {
   1.135 @@ -188,9 +194,9 @@
   1.136                  if (call.getException() instanceof DispatchException) {
   1.137                      message = ((DispatchException)call.getException()).fault;
   1.138                  }
   1.139 -        Packet response = new Packet();
   1.140 -        response.setMessage(message);
   1.141 -        return response;
   1.142 +        Packet p = (Packet)packetFactory.createContext(message);
   1.143 +        p.setState(Packet.State.ServerResponse);
   1.144 +        return p;
   1.145          }
   1.146  
   1.147          public ClientCallBridge getClientBridge(Method method) {
   1.148 @@ -205,12 +211,13 @@
   1.149                      seiModel.getWSBinding(),
   1.150                      info.getContainer(), seiModel.getEndpointClass(),
   1.151                      info.isInlineSchemas(),
   1.152 -                    info.getExtensions());
   1.153 +            info.isSecureXmlProcessingDisabled(),
   1.154 +            info.getExtensions());
   1.155          wsdlGen.doGeneration();
   1.156          }
   1.157  
   1.158          public EndpointCallBridge getEndpointBridge(Packet req) throws DispatchException {
   1.159 -                QName wsdlOp = resolveOperationQName(req);
   1.160 +        JavaMethodImpl wsdlOp = resolveJavaMethod(req);
   1.161                  return wsdlOpMap.get(wsdlOp);
   1.162          }
   1.163  
   1.164 @@ -228,24 +235,20 @@
   1.165          getCodec().decode(in, ct, p);
   1.166      }
   1.167  
   1.168 -    public com.sun.xml.internal.org.jvnet.ws.databinding.JavaCallInfo createJavaCallInfo(Method method, Object[] args) {
   1.169 -        return new JavaCallInfo(method, args);
   1.170 +    public com.oracle.webservices.internal.api.databinding.JavaCallInfo createJavaCallInfo(Method method, Object[] args) {
   1.171 +        return new com.sun.xml.internal.ws.api.databinding.JavaCallInfo(method, args);
   1.172      }
   1.173  
   1.174 -    public MessageContext serializeRequest(com.sun.xml.internal.org.jvnet.ws.databinding.JavaCallInfo call) {
   1.175 -        return serializeRequest((JavaCallInfo)call);
   1.176 -    }
   1.177 -
   1.178 -    public com.sun.xml.internal.org.jvnet.ws.databinding.JavaCallInfo deserializeResponse(
   1.179 -            MessageContext message, com.sun.xml.internal.org.jvnet.ws.databinding.JavaCallInfo call) {
   1.180 +    public com.oracle.webservices.internal.api.databinding.JavaCallInfo deserializeResponse(
   1.181 +            MessageContext message, com.oracle.webservices.internal.api.databinding.JavaCallInfo call) {
   1.182          return deserializeResponse((Packet)message, (JavaCallInfo)call);
   1.183      }
   1.184  
   1.185 -    public com.sun.xml.internal.org.jvnet.ws.databinding.JavaCallInfo deserializeRequest(MessageContext message) {
   1.186 +    public com.oracle.webservices.internal.api.databinding.JavaCallInfo deserializeRequest(MessageContext message) {
   1.187          return deserializeRequest((Packet)message);
   1.188      }
   1.189  
   1.190 -    public MessageContext serializeResponse(com.sun.xml.internal.org.jvnet.ws.databinding.JavaCallInfo call) {
   1.191 -        return serializeResponse((JavaCallInfo)call);
   1.192 +    public MessageContextFactory getMessageContextFactory() {
   1.193 +        return packetFactory;
   1.194      }
   1.195  }

mercurial