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