/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package net.sourceforge.phpdt.core; import org.eclipse.core.runtime.IProgressMonitor; /** * A package fragment is a portion of the workspace corresponding to an entire * package, or to a portion thereof. The distinction between a package fragment * and a package is that a package with some name is the union of all package * fragments in the class path which have the same name. *
* Package fragments elements need to be opened before they can be navigated or
* manipulated. The children are of type ICompilationUnit
* (representing a source file) or IClassFile
(representing a
* binary class file). The children are listed in no particular order.
*
* This interface is not intended to be implemented by clients. *
*/ public interface IPackageFragment extends IParent, IJavaElement, IOpenable { // ISourceManipulation { /** *
* The name of package fragment for the default package (value: the empty
* string, ""
).
*
* It is possible that a compilation unit with the same name already exists
* in this package fragment. The value of the force
parameter
* effects the resolution of such a conflict:
*
true
- in this case the compilation is created with
* the new contentsfalse
- in this case a
* JavaModelException
is thrownCoreException
occurred while
* creating an underlying resource
* null
* (INVALID_CONTENTS)
* "Object.class"
). The ".class" suffix is
* required. This is a handle-only method. The class file may or may not be
* present.
*
* @param name
* the given name
* @return the class file with the specified name in this package
*/
// IClassFile getClassFile(String name);
/**
* Returns all of the class files in this package fragment.
*
*
* Note: it is possible that a package fragment contains only compilation
* units (in other words, its kind is K_SOURCE
), in which
* case this method returns an empty collection.
*
* @exception JavaModelException
* if this element does not exist or if an exception occurs
* while accessing its corresponding resource.
* @return all of the class files in this package fragment
*/
// IClassFile[] getClassFiles() throws JavaModelException;
/**
* Returns the compilation unit with the specified name in this package (for
* example, "Object.java"
). The name has to be a valid
* compilation unit name. This is a handle-only method. The compilation unit
* may or may not be present.
*
* @see JavaConventions#validateCompilationUnitName
* @param name
* the given name
* @return the compilation unit with the specified name in this package
*/
ICompilationUnit getCompilationUnit(String name);
/**
* Returns all of the compilation units in this package fragment.
*
*
* Note: it is possible that a package fragment contains only class files
* (in other words, its kind is K_BINARY
), in which case
* this method returns an empty collection.
*
* @exception JavaModelException
* if this element does not exist or if an exception occurs
* while accessing its corresponding resource.
* @return all of the compilation units in this package fragment
*/
ICompilationUnit[] getCompilationUnits() throws JavaModelException;
/**
* Returns the dot-separated package name of this fragment, for example
* "java.lang"
, or ""
(the empty string), for
* the default package.
*
* @return the dot-separated package name of this fragment
*/
String getElementName();
/**
* Returns this package fragment's root kind encoded as an integer. A
* package fragment can contain .java
source files, or
* .class
files. This is a convenience method.
*
* @see IPackageFragmentRoot#K_SOURCE
* @see IPackageFragmentRoot#K_BINARY
*
* @exception JavaModelException
* if this element does not exist or if an exception occurs
* while accessing its corresponding resource.
* @return this package fragment's root kind encoded as an integer
*/
int getKind() throws JavaModelException;
/**
* Returns an array of non-Java resources contained in this package
* fragment.
*
* Non-Java resources includes other files and folders located in the same * directory as the compilation units or class files for this package * fragment. Source files excluded from this package by one or more * exclusion patterns on the corresponding source classpath entry are * considered non-Java resources and will appear in the result (possibly in * a folder). *
* * @return an array of non-Java resources contained in this package fragment * @see IClasspathEntry#getExclusionPatterns */ // Object[] getNonJavaResources() throws JavaModelException; /** * Returns whether this package fragment's name is a prefix of other package * fragments in this package fragment's root. * * @exception JavaModelException * if this element does not exist or if an exception occurs * while accessing its corresponding resource. * @return true if this package fragment's name is a prefix of other package * fragments in this package fragment's root, false otherwise */ // boolean hasSubpackages() throws JavaModelException; /** * Returns whether this package fragment is a default package. This is a * handle-only method. * * @return true if this package fragment is a default package */ boolean isDefaultPackage(); }