View | Details | Raw Unified | Return to bug 40658
Collapse All | Expand All

(-)model/org/eclipse/jdt/core/IJavaProject.java (+56 lines)
Lines 464-469 Link Here
464
	 * A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows
464
	 * A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows
465
	 * a classpath to no longer refer directly to external JARs located in some user specific location. The classpath
465
	 * a classpath to no longer refer directly to external JARs located in some user specific location. The classpath
466
	 * can simply refer to some variables defining the proper locations of these external JARs.
466
	 * can simply refer to some variables defining the proper locations of these external JARs.
467
	 * TODO (jim) please reformulate to include classpath containers in resolution aspects
467
	 *  <p>
468
	 *  <p>
468
	 * Note that in case the project isn't yet opened, the classpath will directly be read from the associated <tt>.classpath</tt> file.
469
	 * Note that in case the project isn't yet opened, the classpath will directly be read from the associated <tt>.classpath</tt> file.
469
	 * <p>
470
	 * <p>
Lines 801-804 Link Here
801
	 */
802
	 */
802
	void setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor)
803
	void setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor)
803
		throws JavaModelException;
804
		throws JavaModelException;
805
806
807
	/**
808
	 * Returns the raw classpath for the project as defined by its <code>.classpath</code> file from disk, or <code>null</code>
809
	 * if unable to read the file. 
810
	 * <p>This classpath may differ from the in-memory classpath returned by <code>getRawClasspath</code>, in case the 
811
	 * automatic reconciliation mechanism has not been performed yet. Usually, any change to the <code>.classpath</code> file 
812
	 * is automatically noticed and reconciled at the next resource change notification event. 
813
	 * However, if the file is modified within an operation, where this change needs to be taken into account before the 
814
	 * operation ends, then the classpath from disk can be read using this method, and further assigned to the project 
815
	 * using <code>setRawClasspath(...)</code>.
816
	 * <p>
817
	 * A raw classpath may contain classpath variable and/or container entries. Classpath variable entries can be resolved 
818
	 * individually (see <code>JavaCore#getClasspathVariable</code>), or the full classpath can be resolved at once using the 
819
	 * helper method <code>getResolvedClasspath</code>.
820
	 * TODO (jim) please reformulate to include classpath containers in resolution aspects
821
	 * <p>
822
	 * Note that no check is performed whether the project has the Java nature set, allowing an existing <code>.classpath</code> 
823
	 * file to be considered independantly (unlike <code>getRawClasspath</code> which requires the Java nature to be associated 
824
	 * with the project). 
825
	 * 
826
	 * @return the raw classpath from disk for the project, as a list of classpath entries
827
	 * @exception JavaModelException if this element does not exist or if an
828
	 *		exception occurs while accessing its corresponding resource
829
	 * @see #getRawClassPath
830
	 * @see IClasspathEntry
831
	 * @since 3.0
832
	 */
833
	IClasspathEntry[] readRawClasspath() throws JavaModelException;
834
835
	/**
836
	 * Returns the default output location for the project as defined by its <code>.classpath</code> file from disk, or <code>null</code>
837
	 * if unable to read the file. 
838
	 * <p>This output location may differ from the in-memory one returned by <code>getOutputLocation</code>, in case the 
839
	 * automatic reconciliation mechanism has not been performed yet. Usually, any change to the <code>.classpath</code> file 
840
	 * is automatically noticed and reconciled at the next resource change notification event. 
841
	 * However, if the file is modified within an operation, where this change needs to be taken into account before the 
842
	 * operation ends, then the output location from disk can be read using this method, and further assigned to the project 
843
	 * using <code>setRawClasspath(...)</code>.
844
	 * <p>
845
	 * The default output location is where class files are ordinarily generated
846
	 * (and resource files, copied). Each source classpath entry can also
847
	 * specify an output location for the generated class files (and copied
848
	 * resource files) corresponding to compilation units under that source
849
	 * folder. This makes it possible to arrange generated class files for
850
	 * different source folders in different output folders, and not
851
	 * necessarily the default output folder. This means that the generated
852
	 * class files for the project may end up scattered across several folders,
853
	 * rather than all in the default output folder (which is more standard).
854
	 * 
855
	 * @return the workspace-relative absolute path of the default output folder
856
	 * @exception JavaModelException if this element does not exist
857
	 * @see #getOutputLocation
858
	 */
859
	IPath readOutputLocation() throws JavaModelException;
804
}
860
}
(-)model/org/eclipse/jdt/internal/core/JavaProject.java (-2 / +4 lines)
Lines 2121-2127 Link Here
2121
	 */
2121
	 */
2122
	public IPath readOutputLocation() throws JavaModelException {
2122
	public IPath readOutputLocation() throws JavaModelException {
2123
2123
2124
		IClasspathEntry[] classpath = this.readClasspathFile(false/*don't create markers*/, false/*log problems*/);
2124
		// Read classpath file without creating markers nor logging problems
2125
		IClasspathEntry[] classpath = this.readClasspathFile(false, false);
2125
		// extract the output location
2126
		// extract the output location
2126
		IPath outputLocation = null;
2127
		IPath outputLocation = null;
2127
		if (classpath != null && classpath.length > 0) {
2128
		if (classpath != null && classpath.length > 0) {
Lines 2138-2144 Link Here
2138
	 */
2139
	 */
2139
	public IClasspathEntry[] readRawClasspath() throws JavaModelException {
2140
	public IClasspathEntry[] readRawClasspath() throws JavaModelException {
2140
2141
2141
		IClasspathEntry[] classpath = this.readClasspathFile(false/*don't create markers*/, false/*log problems*/);
2142
		// Read classpath file without creating markers nor logging problems
2143
		IClasspathEntry[] classpath = this.readClasspathFile(false, false);
2142
		// discard the output location
2144
		// discard the output location
2143
		if (classpath != null && classpath.length > 0) {
2145
		if (classpath != null && classpath.length > 0) {
2144
			IClasspathEntry entry = classpath[classpath.length - 1];
2146
			IClasspathEntry entry = classpath[classpath.length - 1];

Return to bug 40658