src/share/jaxws_classes/com/oracle/webservices/internal/api/message/MessageContextFactory.java

Tue, 09 Apr 2013 14:51:13 +0100

author
alanb
date
Tue, 09 Apr 2013 14:51:13 +0100
changeset 368
0989ad8c0860
child 374
72e03566f0a6
permissions
-rw-r--r--

8010393: Update JAX-WS RI to 2.2.9-b12941
Reviewed-by: alanb, erikj
Contributed-by: miroslav.kos@oracle.com, martin.grebac@oracle.com

     1 /*
     2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     3  *
     4  * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved.
     5  *
     6  * The contents of this file are subject to the terms of either the GNU
     7  * General Public License Version 2 only ("GPL") or the Common Development
     8  * and Distribution License("CDDL") (collectively, the "License").  You
     9  * may not use this file except in compliance with the License.  You can
    10  * obtain a copy of the License at
    11  * http://glassfish.java.net/public/CDDL+GPL_1_1.html
    12  * or packager/legal/LICENSE.txt.  See the License for the specific
    13  * language governing permissions and limitations under the License.
    14  *
    15  * When distributing the software, include this License Header Notice in each
    16  * file and include the License file at packager/legal/LICENSE.txt.
    17  *
    18  * GPL Classpath Exception:
    19  * Oracle designates this particular file as subject to the "Classpath"
    20  * exception as provided by Oracle in the GPL Version 2 section of the License
    21  * file that accompanied this code.
    22  *
    23  * Modifications:
    24  * If applicable, add the following below the License Header, with the fields
    25  * enclosed by brackets [] replaced by your own identifying information:
    26  * "Portions Copyright [year] [name of copyright owner]"
    27  *
    28  * Contributor(s):
    29  * If you wish your version of this file to be governed by only the CDDL or
    30  * only the GPL Version 2, indicate your decision by adding "[Contributor]
    31  * elects to include this software in this distribution under the [CDDL or GPL
    32  * Version 2] license."  If you don't indicate a single choice of license, a
    33  * recipient has the option to distribute your version of this file under
    34  * either the CDDL, the GPL Version 2 or to extend the choice of license to
    35  * its licensees as provided above.  However, if you add GPL Version 2 code
    36  * and therefore, elected the GPL Version 2 license, then the option applies
    37  * only if the new code is made subject to such option by the copyright
    38  * holder.
    39  */
    41 package com.oracle.webservices.internal.api.message;
    43 import java.io.IOException;
    44 import java.io.InputStream;
    46 import com.oracle.webservices.internal.api.EnvelopeStyle;
    47 import com.sun.xml.internal.ws.api.SOAPVersion; // TODO leaking RI APIs
    48 import com.sun.xml.internal.ws.util.ServiceFinder;
    50 import javax.xml.soap.MimeHeaders;
    51 import javax.xml.soap.SOAPMessage;
    52 import javax.xml.transform.Source;
    53 import javax.xml.ws.WebServiceFeature;
    55 public abstract class MessageContextFactory
    56 {
    57     private static final MessageContextFactory DEFAULT = new com.sun.xml.internal.ws.api.message.MessageContextFactory(new WebServiceFeature[0]);
    59     protected abstract MessageContextFactory newFactory(WebServiceFeature ... f);
    61     public abstract MessageContext createContext();
    63     public abstract MessageContext createContext(SOAPMessage m);
    65     public abstract MessageContext createContext(Source m);
    67     public abstract MessageContext createContext(Source m, EnvelopeStyle.Style envelopeStyle);
    69     public abstract MessageContext createContext(InputStream in, String contentType) throws IOException;
    71     /**
    72      * @deprecated http://java.net/jira/browse/JAX_WS-1077
    73      */
    74     @Deprecated
    75     public abstract MessageContext createContext(InputStream in, MimeHeaders headers) throws IOException;
    77     static public MessageContextFactory createFactory(WebServiceFeature ... f) {
    78         return createFactory(null, f);
    79     }
    81     static public MessageContextFactory createFactory(ClassLoader cl, WebServiceFeature ...f) {
    82         for (MessageContextFactory factory : ServiceFinder.find(MessageContextFactory.class, cl)) {
    83             MessageContextFactory newfac = factory.newFactory(f);
    84             if (newfac != null) return newfac;
    85         }
    86         return new com.sun.xml.internal.ws.api.message.MessageContextFactory(f);
    87     }
    89     @Deprecated
    90     public abstract MessageContext doCreate();
    92     @Deprecated
    93     public abstract MessageContext doCreate(SOAPMessage m);
    95     //public abstract MessageContext doCreate(InputStream x);
    97     @Deprecated
    98     public abstract MessageContext doCreate(Source x, SOAPVersion soapVersion);
   100     @Deprecated
   101     public static MessageContext create(final ClassLoader... classLoader) {
   102         return serviceFinder(classLoader,
   103                              new Creator() {
   104                                  public MessageContext create(final MessageContextFactory f) {
   105                                      return f.doCreate();
   106                                  }
   107                              });
   108     }
   110     @Deprecated
   111     public static MessageContext create(final SOAPMessage m, final ClassLoader... classLoader) {
   112         return serviceFinder(classLoader,
   113                              new Creator() {
   114                                  public MessageContext create(final MessageContextFactory f) {
   115                                      return f.doCreate(m);
   116                                  }
   117                              });
   118     }
   120     @Deprecated
   121     public static MessageContext create(final Source m, final SOAPVersion v, final ClassLoader... classLoader) {
   122         return serviceFinder(classLoader,
   123                              new Creator() {
   124                                  public MessageContext create(final MessageContextFactory f) {
   125                                      return f.doCreate(m, v);
   126                                  }
   127                              });
   128     }
   130     @Deprecated
   131     private static MessageContext serviceFinder(final ClassLoader[] classLoader, final Creator creator) {
   132         final ClassLoader cl = classLoader.length == 0 ? null : classLoader[0];
   133         for (MessageContextFactory factory : ServiceFinder.find(MessageContextFactory.class, cl)) {
   134             final MessageContext messageContext = creator.create(factory);
   135             if (messageContext != null)
   136                 return messageContext;
   137         }
   138         return creator.create(DEFAULT);
   139     }
   141     @Deprecated
   142     private static interface Creator {
   143         public MessageContext create(MessageContextFactory f);
   144     }
   145 }

mercurial