src/share/jaxws_classes/com/oracle/webservices/internal/api/databinding/DatabindingFactory.java

Tue, 23 Apr 2013 18:33:20 -0700

author
katleman
date
Tue, 23 Apr 2013 18:33:20 -0700
changeset 374
72e03566f0a6
parent 368
0989ad8c0860
child 637
9c07ef4934dd
permissions
-rw-r--r--

8012643: JDK8 b86 source with GPL header errors
Reviewed-by: dholmes, alanb

alanb@368 1 /*
katleman@374 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
katleman@374 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
alanb@368 4 *
katleman@374 5 * This code is free software; you can redistribute it and/or modify it
katleman@374 6 * under the terms of the GNU General Public License version 2 only, as
katleman@374 7 * published by the Free Software Foundation. Oracle designates this
katleman@374 8 * particular file as subject to the "Classpath" exception as provided
katleman@374 9 * by Oracle in the LICENSE file that accompanied this code.
alanb@368 10 *
katleman@374 11 * This code is distributed in the hope that it will be useful, but WITHOUT
katleman@374 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
katleman@374 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
katleman@374 14 * version 2 for more details (a copy is included in the LICENSE file that
katleman@374 15 * accompanied this code).
alanb@368 16 *
katleman@374 17 * You should have received a copy of the GNU General Public License version
katleman@374 18 * 2 along with this work; if not, write to the Free Software Foundation,
katleman@374 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
alanb@368 20 *
katleman@374 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
katleman@374 22 * or visit www.oracle.com if you need additional information or have any
katleman@374 23 * questions.
alanb@368 24 */
alanb@368 25
alanb@368 26 package com.oracle.webservices.internal.api.databinding;
alanb@368 27
alanb@368 28 import java.util.Map;
alanb@368 29
alanb@368 30 /**
alanb@368 31 * {@code DatabindingFactory} is the entry point of all the WebService
alanb@368 32 * Databinding APIs. A DatabindingFactory instance can be used to create
alanb@368 33 * <code>Databinding.Builder</code> instances, and <code>Databinding.Builder</code>
alanb@368 34 * instances are used to configure and build <code>Databinding</code> instances.
alanb@368 35 * <p>
alanb@368 36 * </P>
alanb@368 37 * <blockquote>
alanb@368 38 * Following is an example that creates a {@code Databinding} which provides the
alanb@368 39 * operations to serialize/deserialize a JavaCallInfo to/from a SOAP message:<br/>
alanb@368 40 * <pre>
alanb@368 41 * DatabindingFactory factory = DatabindingFactory.newInstance();
alanb@368 42 * Databinding.Builder builder = factory.createBuilder(seiClass, endpointClass);
alanb@368 43 * Databinding databinding = builder.build();
alanb@368 44 * </pre>
alanb@368 45 * </blockquote>
alanb@368 46 *
alanb@368 47 * @see com.oracle.webservices.internal.api.databinding.Databinding
alanb@368 48 *
alanb@368 49 * @author shih-chang.chen@oracle.com
alanb@368 50 */
alanb@368 51 public abstract class DatabindingFactory {
alanb@368 52
alanb@368 53 /**
alanb@368 54 * Creates a new instance of a <code>Databinding.Builder</code> which is
alanb@368 55 * initialized with the specified contractClass and endpointClass. The most
alanb@368 56 * importance initial states of a Builder object is the contract class which
alanb@368 57 * is also called "service endpoint interface" or "SEI" in JAX-WS and JAX-RPC,
alanb@368 58 * and the implementation bean class (endpointClass). The the implementation
alanb@368 59 * bean class (endpointClass) should be null if the Builder is to create
alanb@368 60 * the client side proxy databinding.
alanb@368 61 *
alanb@368 62 * @param contractClass The service endpoint interface class
alanb@368 63 * @param endpointClass The service implementation bean class
alanb@368 64 *
alanb@368 65 * @return New instance of a <code>Databinding.Builder</code>
alanb@368 66 */
alanb@368 67 abstract public Databinding.Builder createBuilder(Class<?> contractClass, Class<?> endpointClass);
alanb@368 68
alanb@368 69 /**
alanb@368 70 * Access properties on the <code>DatabindingFactory</code> instance.
alanb@368 71 *
alanb@368 72 * @return properties of this WsFactory
alanb@368 73 */
alanb@368 74 abstract public Map<String, Object> properties();
alanb@368 75
alanb@368 76 /**
alanb@368 77 * The default implementation class name.
alanb@368 78 */
alanb@368 79 static final String ImplClass = "com.sun.xml.internal.ws.db.DatabindingFactoryImpl";
alanb@368 80
alanb@368 81 /**
alanb@368 82 * Create a new instance of a <code>DatabindingFactory</code>. This static method
alanb@368 83 * creates a new factory instance.
alanb@368 84 *
alanb@368 85 * Once an application has obtained a reference to a <code>DatabindingFactory</code>
alanb@368 86 * it can use the factory to obtain and configure a <code>Databinding.Builder</code>
alanb@368 87 * to build a <code>Databinding</code> instances.
alanb@368 88 *
alanb@368 89 * @return New instance of a <code>DatabindingFactory</code>
alanb@368 90 */
alanb@368 91 static public DatabindingFactory newInstance() {
alanb@368 92 try {
alanb@368 93 Class<?> cls = Class.forName(ImplClass);
alanb@368 94 return convertIfNecessary(cls);
alanb@368 95 } catch (Exception e) {
alanb@368 96 e.printStackTrace();
alanb@368 97 }
alanb@368 98 return null;
alanb@368 99 }
alanb@368 100
alanb@368 101 @SuppressWarnings("deprecation")
alanb@368 102 private static DatabindingFactory convertIfNecessary(Class<?> cls) throws InstantiationException, IllegalAccessException {
alanb@368 103 return (DatabindingFactory) cls.newInstance();
alanb@368 104 }
alanb@368 105 }

mercurial