1 /*
   2  * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package com.sun.xml.internal.ws.api.databinding;
  27 
  28 import java.io.IOException;
  29 import java.io.InputStream;
  30 import java.io.OutputStream;
  31 import java.lang.reflect.Method;
  32 
  33 import com.sun.xml.internal.ws.api.message.MessageContextFactory;
  34 import com.sun.xml.internal.ws.api.message.Packet;
  35 import com.sun.xml.internal.ws.api.pipe.ContentType;
  36 import com.sun.xml.internal.ws.wsdl.DispatchException;
  37 
  38 /**
  39  * {@code Databinding} is the entry point for all the WebService databinding
  40  * runtime functionality. Primarily, a Databinding is to serialize/deserialize an
  41  * XML(SOAP) message to/from a JAVA method invocation and return value which
  42  * are represented as <code>JavaCallInfo</code> instances.
  43  * <p>
  44  * </p>
  45  * Each Databinding is associated with a <code>MessageFactory</code> instance
  46  * which can be used to create <code>Message</code> instances that can be
  47  * deserialized by the Databinding. The <code>MessageFactory</code> also supports
  48  * the conversion of Oracle Fabric Normalized messages.
  49  * <p>
  50  * </p>
  51  * <blockquote> Following is an example that creates a {@code Databinding} which
  52  * provides the operations to serialize/deserialize a JavaCallInfo to/from a
  53  * SOAP message:<br />
  54  *
  55  * <pre>
  56  * DatabindingFactory wsfac = DatabindingFactory();
  57  * Databinding rt = wsfac.createDatabinding(DatabindingConfig);
  58  * </pre>
  59  *
  60  * </blockquote>
  61  *
  62  * @author shih-chang.chen@oracle.com
  63  */
  64 public interface Databinding extends com.oracle.webservices.internal.api.databinding.Databinding {
  65 
  66         /**
  67          * Gets the MessageFactory instance associated with this WsRuntime
  68          *
  69          * @return the MessageFactory instance associated with this WsRuntime
  70          */
  71 //      MessageFactory getMessageFactory();
  72 
  73         /**
  74          * Deserializes a request XML(SOAP) message to a JavaCallInfo instance
  75          * representing a JAVA method call.
  76          *
  77          * @param soap
  78          *            the request message
  79          *
  80          * @return the JavaCallInfo representing a method call
  81          */
  82 //      JavaCallInfo deserializeRequest(Packet req);
  83 
  84         EndpointCallBridge getEndpointBridge(Packet soap) throws DispatchException;
  85 
  86         ClientCallBridge getClientBridge(Method method);
  87 
  88         /**
  89          * Serializes a JavaCallInfo instance representing a JAVA method call to a
  90          * request XML(SOAP) message.
  91          *
  92          * @param call
  93          *            the JavaCallInfo representing a method call
  94          *
  95          * @return the request XML(SOAP) message
  96          */
  97 //      Packet serializeRequest(JavaCallInfo call);
  98 
  99         /**
 100          * Serializes a JavaCallInfo instance representing the return value or
 101          * exception of a JAVA method call to a response XML(SOAP) message.
 102          *
 103          * @param call
 104          *            the JavaCallInfo representing the return value or exception of
 105          *            a JAVA method call
 106          *
 107          * @return the response XML(SOAP) message
 108          */
 109 //      Packet serializeResponse(JavaCallInfo call);
 110 
 111         /**
 112          * Deserializes a response XML(SOAP) message to a JavaCallInfo instance
 113          * representing the return value or exception of a JAVA method call.
 114          *
 115          * @param soap
 116          *            the response message
 117          *
 118          * @param call
 119          *            the JavaCallInfo instance to be updated
 120          *
 121          * @return the JavaCallInfo updated with the return value or exception of a
 122          *         JAVA method call
 123          */
 124 //      JavaCallInfo deserializeResponse(Packet res, JavaCallInfo call);
 125 
 126         /**
 127          * Gets the WSDL operation metadata of the specified JAVA method.
 128          *
 129          * @param method
 130          *            the JAVA method
 131          * @return the operationMetadata
 132          */
 133 //      OperationMetadata getOperationMetadata(java.lang.reflect.Method method);
 134 
 135         /**
 136          * Gets the WebServiceFeatures of this webservice endpoint.
 137          *
 138          * @return the features
 139          */
 140 //      WebServiceFeature[] getFeatures();
 141 
 142         void generateWSDL(WSDLGenInfo info);
 143 
 144         /**
 145          * @deprecated use MessageContextFactory
 146          */
 147         public ContentType encode( Packet packet, OutputStream out ) throws IOException ;
 148 
 149     /**
 150      * @deprecated use MessageContextFactory
 151      */
 152         public void decode( InputStream in, String ct, Packet packet ) throws IOException;
 153 
 154         public MessageContextFactory getMessageContextFactory();
 155 }