Thu, 31 Aug 2017 15:18:52 +0800
merge
1 /*
2 * Copyright (c) 1997, 2012, 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 */
26 package com.sun.xml.internal.ws.api;
28 import com.sun.xml.internal.ws.api.server.Container;
29 import com.sun.xml.internal.ws.api.server.WSEndpoint;
30 import com.sun.xml.internal.ws.client.Stub;
31 import javax.xml.ws.WebServiceFeature;
33 /**
34 * Allows registration of a {@link Component} against the {@link ComponentRegistry} implementations
35 * of the {@link Container}, {@link WSEndpoint}, {@link WSService}, or {@link Stub}. The
36 * registration is guaranteed to occur early in the initialization of these objects prior to tubeline creation
37 * (applicable to endpoint and stub only).
38 * <p>
39 * Because the Container is shared among all Stubs created from a common WSService object, this feature must
40 * be passed during WSService initialization in order to register a Component against the client-side Container.
41 * <p>
42 * IllegalArgumentException will be thrown if the feature is used with an inappropriate target, e.g. stub target
43 * used during WSEndpoint initialization.
44 *
45 * @since 2.2.6
46 */
47 public class ComponentFeature extends WebServiceFeature implements ServiceSharedFeatureMarker {
48 /**
49 * Targets the object on which the Component will be registered
50 *
51 */
52 public static enum Target {
53 CONTAINER, ENDPOINT, SERVICE, STUB
54 }
56 private final Component component;
57 private final Target target;
59 /**
60 * Constructs ComponentFeature with indicated component and that is targeted at the Container.
61 * @param component component
62 */
63 public ComponentFeature(Component component) {
64 this(component, Target.CONTAINER);
65 }
67 /**
68 * Constructs ComponentFeature with indicated component and target
69 * @param component component
70 * @param target target
71 */
72 public ComponentFeature(Component component, Target target) {
73 this.enabled = true;
74 this.component = component;
75 this.target = target;
76 }
78 @Override
79 public String getID() {
80 return ComponentFeature.class.getName();
81 }
83 /**
84 * Retrieves component
85 * @return component
86 */
87 public Component getComponent() {
88 return component;
89 }
91 /**
92 * Retrieves target
93 * @return target
94 */
95 public Target getTarget() {
96 return target;
97 }
98 }