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 */
25
26package com.sun.xml.internal.xsom;
27
28import java.util.Iterator;
29import java.util.Collection;
30
31/**
32 * Common aspect of {@link XSComplexType} and {@link XSAttGroupDecl}
33 * as the container of attribute uses/attribute groups.
34 *
35 * @author
36 *     Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
37 */
38public interface XSAttContainer extends XSDeclaration {
39    XSWildcard getAttributeWildcard();
40
41    /**
42     * Looks for the attribute use with the specified name from
43     * all the attribute uses that are directly/indirectly
44     * referenced from this component.
45     *
46     * <p>
47     * This is the exact implementation of the "attribute use"
48     * schema component.
49     */
50    XSAttributeUse getAttributeUse( String nsURI, String localName );
51
52    /**
53     * Lists all the attribute uses that are directly/indirectly
54     * referenced from this component.
55     *
56     * <p>
57     * This is the exact implementation of the "attribute use"
58     * schema component.
59     */
60    Iterator<? extends XSAttributeUse> iterateAttributeUses();
61
62    /**
63     * Gets all the attribute uses.
64     */
65    Collection<? extends XSAttributeUse> getAttributeUses();
66
67    /**
68     * Looks for the attribute use with the specified name from
69     * the attribute uses which are declared in this complex type.
70     *
71     * This does not include att uses declared in att groups that
72     * are referenced from this complex type, nor does include
73     * att uses declared in base types.
74     */
75    XSAttributeUse getDeclaredAttributeUse( String nsURI, String localName );
76
77    /**
78     * Lists all the attribute uses that are declared in this complex type.
79     */
80    Iterator<? extends XSAttributeUse> iterateDeclaredAttributeUses();
81
82    /**
83     * Lists all the attribute uses that are declared in this complex type.
84     */
85    Collection<? extends XSAttributeUse> getDeclaredAttributeUses();
86
87
88    /**
89     * Iterates all AttGroups which are directly referenced from
90     * this component.
91     */
92    Iterator<? extends XSAttGroupDecl> iterateAttGroups();
93
94    /**
95     * Iterates all AttGroups which are directly referenced from
96     * this component.
97     */
98    Collection<? extends XSAttGroupDecl> getAttGroups();
99}
100