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

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

mercurial