1 /*
2 * Copyright (c) 2004, 2015, 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 javax.xml.soap;
27
28 /**
29 * The access point for the implementation classes of the factories defined in the
30 * SAAJ API. The {@code newInstance} methods defined on factories {@link SOAPFactory} and
31 * {@link MessageFactory} in SAAJ 1.3 defer to instances of this class to do the actual object creation.
32 * The implementations of {@code newInstance()} methods (in SOAPFactory and MessageFactory)
33 * that existed in SAAJ 1.2 have been updated to also delegate to the SAAJMetaFactory when the SAAJ 1.2
34 * defined lookup fails to locate the Factory implementation class name.
35 *
36 * <p>
37 * SAAJMetaFactory is a service provider interface and it uses similar lookup mechanism as other SAAJ factories
38 * to get actual instance:
39 *
40 * <ul>
41 * <li>If a system property with name {@code javax.xml.soap.SAAJMetaFactory} exists then its value is assumed
42 * to be the fully qualified name of the implementation class. This phase of the look up enables per-JVM
43 * override of the SAAJ implementation.
44 * <li>If a system property with name {@code javax.xml.soap.MetaFactory} exists then its value is assumed
45 * to be the fully qualified name of the implementation class. This property, defined by previous specifications
46 * (up to 1.3), is still supported, but it is strongly recommended to migrate to new property
47 * {@code javax.xml.soap.SAAJMetaFactory}.
48 * <li>Use the configuration file "jaxm.properties". The file is in standard {@link java.util.Properties} format
49 * and typically located in the {@code conf} directory of the Java installation. It contains the fully qualified
50 * name of the implementation class with key {@code javax.xml.soap.SAAJMetaFactory}. If no such property is defined,
51 * again, property with key {@code javax.xml.soap.MetaFactory} is used. It is strongly recommended to migrate to
52 * new property {@code javax.xml.soap.SAAJMetaFactory}.
77 * single place. Changing out the SAAJMetaFactory has the effect of changing out the entire SAAJ
78 * implementation. Service providers provide the name of their {@code SAAJMetaFactory}
79 * implementation.
80 *
81 * This method uses the lookup procedure specified in {@link javax.xml.soap} to locate and load the
82 * {@link javax.xml.soap.SAAJMetaFactory} class.
83 *
84 * @return a concrete {@code SAAJMetaFactory} object
85 * @exception SOAPException if there is an error in creating the {@code SAAJMetaFactory}
86 */
87 static SAAJMetaFactory getInstance() throws SOAPException {
88 try {
89 return FactoryFinder.find(
90 SAAJMetaFactory.class,
91 DEFAULT_META_FACTORY_CLASS,
92 true,
93 META_FACTORY_DEPRECATED_CLASS_PROPERTY);
94
95 } catch (Exception e) {
96 throw new SOAPException(
97 "Unable to create SAAJ meta-factory" + e.getMessage());
98 }
99 }
100
101 protected SAAJMetaFactory() { }
102
103 /**
104 * Creates a {@code MessageFactory} object for
105 * the given {@code String} protocol.
106 *
107 * @param protocol a {@code String} indicating the protocol
108 * @return a {@link MessageFactory}, not null
109 * @exception SOAPException if there is an error in creating the
110 * MessageFactory
111 * @see SOAPConstants#SOAP_1_1_PROTOCOL
112 * @see SOAPConstants#SOAP_1_2_PROTOCOL
113 * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
114 */
115 protected abstract MessageFactory newMessageFactory(String protocol)
116 throws SOAPException;
117
|
1 /*
2 * Copyright (c) 2004, 2017, 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 javax.xml.soap;
27
28 /**
29 * The access point for the implementation classes of the factories defined in the
30 * SAAJ API. The {@code newInstance} methods defined on factories {@link SOAPFactory} and
31 * {@link MessageFactory} in SAAJ 1.3 defer to instances of this class to do the actual object creation.
32 * The implementations of {@code newInstance()} methods (in {@link SOAPFactory} and {@link MessageFactory})
33 * that existed in SAAJ 1.2 have been updated to also delegate to the SAAJMetaFactory when the SAAJ 1.2
34 * defined lookup fails to locate the Factory implementation class name.
35 *
36 * <p>
37 * SAAJMetaFactory is a service provider interface and it uses similar lookup mechanism as other SAAJ factories
38 * to get actual instance:
39 *
40 * <ul>
41 * <li>If a system property with name {@code javax.xml.soap.SAAJMetaFactory} exists then its value is assumed
42 * to be the fully qualified name of the implementation class. This phase of the look up enables per-JVM
43 * override of the SAAJ implementation.
44 * <li>If a system property with name {@code javax.xml.soap.MetaFactory} exists then its value is assumed
45 * to be the fully qualified name of the implementation class. This property, defined by previous specifications
46 * (up to 1.3), is still supported, but it is strongly recommended to migrate to new property
47 * {@code javax.xml.soap.SAAJMetaFactory}.
48 * <li>Use the configuration file "jaxm.properties". The file is in standard {@link java.util.Properties} format
49 * and typically located in the {@code conf} directory of the Java installation. It contains the fully qualified
50 * name of the implementation class with key {@code javax.xml.soap.SAAJMetaFactory}. If no such property is defined,
51 * again, property with key {@code javax.xml.soap.MetaFactory} is used. It is strongly recommended to migrate to
52 * new property {@code javax.xml.soap.SAAJMetaFactory}.
77 * single place. Changing out the SAAJMetaFactory has the effect of changing out the entire SAAJ
78 * implementation. Service providers provide the name of their {@code SAAJMetaFactory}
79 * implementation.
80 *
81 * This method uses the lookup procedure specified in {@link javax.xml.soap} to locate and load the
82 * {@link javax.xml.soap.SAAJMetaFactory} class.
83 *
84 * @return a concrete {@code SAAJMetaFactory} object
85 * @exception SOAPException if there is an error in creating the {@code SAAJMetaFactory}
86 */
87 static SAAJMetaFactory getInstance() throws SOAPException {
88 try {
89 return FactoryFinder.find(
90 SAAJMetaFactory.class,
91 DEFAULT_META_FACTORY_CLASS,
92 true,
93 META_FACTORY_DEPRECATED_CLASS_PROPERTY);
94
95 } catch (Exception e) {
96 throw new SOAPException(
97 "Unable to create SAAJ meta-factory: " + e.getMessage());
98 }
99 }
100
101 protected SAAJMetaFactory() { }
102
103 /**
104 * Creates a {@code MessageFactory} object for
105 * the given {@code String} protocol.
106 *
107 * @param protocol a {@code String} indicating the protocol
108 * @return a {@link MessageFactory}, not null
109 * @exception SOAPException if there is an error in creating the
110 * MessageFactory
111 * @see SOAPConstants#SOAP_1_1_PROTOCOL
112 * @see SOAPConstants#SOAP_1_2_PROTOCOL
113 * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL
114 */
115 protected abstract MessageFactory newMessageFactory(String protocol)
116 throws SOAPException;
117
|