Thu, 31 Aug 2017 15:18:52 +0800
merge
1 /*
2 * Copyright (c) 1997, 2013, 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.model.wsdl;
28 import java.util.List;
30 import javax.xml.namespace.QName;
32 import org.xml.sax.Locator;
34 /**
35 * Interface that represents WSDL concepts that
36 * can have extensions.
37 *
38 * @author Vivek Pandey
39 * @author Kohsuke Kawaguchi
40 */
41 public interface WSDLExtensible extends WSDLObject {
42 /**
43 * Gets all the {@link WSDLExtension}s
44 * added through {@link #addExtension(WSDLExtension)}.
45 *
46 * @return
47 * never null.
48 */
49 Iterable<WSDLExtension> getExtensions();
51 /**
52 * Gets all the extensions that is assignable to the given type.
53 *
54 * <p>
55 * This allows clients to find specific extensions in a type-safe
56 * and convenient way.
57 *
58 * @param type
59 * The type of the extension to obtain. Must not be null.
60 *
61 * @return
62 * Can be an empty fromjava.collection but never null.
63 */
64 <T extends WSDLExtension> Iterable<T> getExtensions(Class<T> type);
66 /**
67 * Gets the extension that is assignable to the given type.
68 *
69 * <p>
70 * This is just a convenient version that does
71 *
72 * <pre>
73 * Iterator itr = getExtensions(type);
74 * if(itr.hasNext()) return itr.next();
75 * else return null;
76 * </pre>
77 *
78 * @return
79 * null if the extension was not found.
80 */
81 <T extends WSDLExtension> T getExtension(Class<T> type);
83 /**
84 * Adds a new {@link WSDLExtension}
85 * to this object.
86 *
87 * @param extension
88 * must not be null.
89 */
90 void addExtension(WSDLExtension extension);
92 /**
93 * True if all required WSDL extensions on Port and Binding are understood
94 * @return true if all wsdl required extensions on Port and Binding are understood
95 */
96 public boolean areRequiredExtensionsUnderstood();
98 /**
99 * Marks extension as not understood
100 * @param extnEl QName of extension
101 * @param locator Locator
102 */
103 public void addNotUnderstoodExtension(QName extnEl, Locator locator);
105 /**
106 * Lists extensions marked as not understood
107 * @return List of not understood extensions
108 */
109 public List<? extends WSDLExtension> getNotUnderstoodExtensions();
110 }