001    /*
002     * Copyright 2004 Sun Microsystems, Inc.  All Rights Reserved.
003     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004     *
005     * This code is free software; you can redistribute it and/or modify it
006     * under the terms of the GNU General Public License version 2 only, as
007     * published by the Free Software Foundation.  Sun designates this
008     * particular file as subject to the "Classpath" exception as provided
009     * by Sun in the LICENSE file that accompanied this code.
010     *
011     * This code is distributed in the hope that it will be useful, but WITHOUT
012     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
014     * version 2 for more details (a copy is included in the LICENSE file that
015     * accompanied this code).
016     *
017     * You should have received a copy of the GNU General Public License version
018     * 2 along with this work; if not, write to the Free Software Foundation,
019     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020     *
021     * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022     * CA 95054 USA or visit www.sun.com if you need additional information or
023     * have any questions.
024     */
025    
026    package com.sun.mirror.declaration;
027    
028    
029    import java.util.Collection;
030    
031    
032    /**
033     * Represents the declaration of a package.  Provides access to information
034     * about the package and its members.
035     *
036     * <p> {@link com.sun.mirror.util.DeclarationFilter}
037     * provides a simple way to select just the items of interest
038     * when a method returns a collection of declarations.
039     *
040     * @author Joseph D. Darcy
041     * @author Scott Seligman
042     * @since 1.5
043     */
044    
045    public interface PackageDeclaration extends Declaration {
046    
047        /**
048         * Returns the fully qualified name of this package.
049         * This is also known as the package's <i>canonical</i> name.
050         *
051         * @return the fully qualified name of this package, or the
052         * empty string if this is the unnamed package
053         */
054        String getQualifiedName();
055    
056        /**
057         * Returns the declarations of the top-level classes in this package.
058         * Interfaces are not included, but enum types are.
059         *
060         * @return the declarations of the top-level classes in this package
061         *
062         * @see com.sun.mirror.util.DeclarationFilter
063         */
064        Collection<ClassDeclaration> getClasses();
065    
066        /**
067         * Returns the declarations of the top-level enum types in this package.
068         *
069         * @return the declarations of the top-level enum types in this package
070         *
071         * @see com.sun.mirror.util.DeclarationFilter
072         */
073        Collection<EnumDeclaration> getEnums();
074    
075        /**
076         * Returns the declarations of the top-level interfaces in this package.
077         * Annotation types are included.
078         *
079         * @return the declarations of the top-level interfaces in this package
080         *
081         * @see com.sun.mirror.util.DeclarationFilter
082         */
083        Collection<InterfaceDeclaration> getInterfaces();
084    
085        /**
086         * Returns the declarations of the top-level annotation types in this
087         * package.
088         *
089         * @return the declarations of the top-level annotation types in this
090         * package
091         *
092         * @see com.sun.mirror.util.DeclarationFilter
093         */
094        Collection<AnnotationTypeDeclaration> getAnnotationTypes();
095    }