Tue, 09 Apr 2013 14:51:13 +0100
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 }