Copyright (c) 2000, 2015 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation Frits Jalvingh - Contribution for Bug 459831 - [launching] Support attaching external annotations to a JRE container
/******************************************************************************* * Copyright (c) 2000, 2015 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation * Frits Jalvingh - Contribution for Bug 459831 - [launching] Support attaching * external annotations to a JRE container *******************************************************************************/
package org.eclipse.jdt.launching; import java.net.URL; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.internal.launching.LaunchingMessages; import org.eclipse.jdt.internal.launching.LaunchingPlugin;
The location of a library (for example rt.jar).

Clients may instantiate this class.

/** * The location of a library (for example rt.jar). * <p> * Clients may instantiate this class. * </p> */
public final class LibraryLocation { private IPath fSystemLibrary; private IPath fSystemLibrarySource; private IPath fExternalAnnotations; private IPath fPackageRootPath; private URL fJavadocLocation; private URL fIndexLocation;
Creates a new library location.
Params:
  • libraryPath – The location of the JAR containing java.lang.Object Must not be null.
  • sourcePath – The location of the zip file containing the sources for library Must not be null (Use Path.EMPTY instead)
  • packageRoot – The path inside the source zip file where packages names begin. If the source for java.lang.Object source is found at "src/java/lang/Object.java" in the zip file, the packageRoot should be "src" Must not be null. (Use Path.EMPTY or IPath.ROOT)
Throws:
/** * Creates a new library location. * * @param libraryPath The location of the JAR containing java.lang.Object * Must not be <code>null</code>. * @param sourcePath The location of the zip file containing the sources for <code>library</code> * Must not be <code>null</code> (Use Path.EMPTY instead) * @param packageRoot The path inside the <code>source</code> zip file where packages names * begin. If the source for java.lang.Object source is found at * "src/java/lang/Object.java" in the zip file, the * packageRoot should be "src" * Must not be <code>null</code>. (Use Path.EMPTY or IPath.ROOT) * @throws IllegalArgumentException If the library path is <code>null</code>. */
public LibraryLocation(IPath libraryPath, IPath sourcePath, IPath packageRoot) { this(libraryPath, sourcePath, packageRoot, null); }
Creates a new library location.
Params:
  • libraryPath – The location of the JAR containing java.lang.Object Must not be null.
  • sourcePath – The location of the zip file containing the sources for library Must not be null (Use Path.EMPTY instead)
  • packageRoot – The path inside the source zip file where packages names begin. If the source for java.lang.Object source is found at "src/java/lang/Object.java" in the zip file, the packageRoot should be "src" Must not be null. (Use Path.EMPTY or IPath.ROOT)
  • javadocLocation – The location of the javadoc for library
Throws:
Since:3.1
/** * Creates a new library location. * * @param libraryPath The location of the JAR containing java.lang.Object * Must not be <code>null</code>. * @param sourcePath The location of the zip file containing the sources for <code>library</code> * Must not be <code>null</code> (Use Path.EMPTY instead) * @param packageRoot The path inside the <code>source</code> zip file where packages names * begin. If the source for java.lang.Object source is found at * "src/java/lang/Object.java" in the zip file, the * packageRoot should be "src" * Must not be <code>null</code>. (Use Path.EMPTY or IPath.ROOT) * @param javadocLocation The location of the javadoc for <code>library</code> * @throws IllegalArgumentException If the library path is <code>null</code>. * @since 3.1 */
public LibraryLocation(IPath libraryPath, IPath sourcePath, IPath packageRoot, URL javadocLocation) { this(libraryPath, sourcePath, packageRoot, javadocLocation, null, null); }
Creates a new library location.
Params:
  • libraryPath – The location of the JAR containing java.lang.Object Must not be null.
  • sourcePath – The location of the zip file containing the sources for library Must not be null (Use Path.EMPTY instead)
  • packageRoot – The path inside the source zip file where packages names begin. If the source for java.lang.Object source is found at "src/java/lang/Object.java" in the zip file, the packageRoot should be "src" Must not be null. (Use Path.EMPTY or IPath.ROOT)
  • javadocLocation – The location of the javadoc for library
  • indexLocation – The location of the index for library
Throws:
Since:3.7
/** * Creates a new library location. * * @param libraryPath The location of the JAR containing java.lang.Object * Must not be <code>null</code>. * @param sourcePath The location of the zip file containing the sources for <code>library</code> * Must not be <code>null</code> (Use Path.EMPTY instead) * @param packageRoot The path inside the <code>source</code> zip file where packages names * begin. If the source for java.lang.Object source is found at * "src/java/lang/Object.java" in the zip file, the * packageRoot should be "src" * Must not be <code>null</code>. (Use Path.EMPTY or IPath.ROOT) * @param javadocLocation The location of the javadoc for <code>library</code> * @param indexLocation The location of the index for <code>library</code> * @throws IllegalArgumentException If the library path is <code>null</code>. * @since 3.7 */
public LibraryLocation(IPath libraryPath, IPath sourcePath, IPath packageRoot, URL javadocLocation, URL indexLocation) { this(libraryPath, sourcePath, packageRoot, javadocLocation, indexLocation, null); }
Creates a new library location.
Params:
  • libraryPath – The location of the JAR containing java.lang.Object Must not be null.
  • sourcePath – The location of the zip file containing the sources for library Must not be null (Use Path.EMPTY instead)
  • packageRoot – The path inside the source zip file where packages names begin. If the source for java.lang.Object source is found at "src/java/lang/Object.java" in the zip file, the packageRoot should be "src" Must not be null. (Use Path.EMPTY or IPath.ROOT)
  • javadocLocation – The location of the javadoc for library
  • indexLocation – The location of the index for library
  • externalAnnotations – The file or directory containing external annotations, or null if not applicable.
Throws:
Since:3.8
/** * Creates a new library location. * * @param libraryPath The location of the JAR containing java.lang.Object * Must not be <code>null</code>. * @param sourcePath The location of the zip file containing the sources for <code>library</code> * Must not be <code>null</code> (Use Path.EMPTY instead) * @param packageRoot The path inside the <code>source</code> zip file where packages names * begin. If the source for java.lang.Object source is found at * "src/java/lang/Object.java" in the zip file, the * packageRoot should be "src" * Must not be <code>null</code>. (Use Path.EMPTY or IPath.ROOT) * @param javadocLocation The location of the javadoc for <code>library</code> * @param indexLocation The location of the index for <code>library</code> * @param externalAnnotations The file or directory containing external annotations, or <code>null</code> if not applicable. * @throws IllegalArgumentException If the library path is <code>null</code>. * @since 3.8 */
public LibraryLocation(IPath libraryPath, IPath sourcePath, IPath packageRoot, URL javadocLocation, URL indexLocation, IPath externalAnnotations) { if (libraryPath == null) { throw new IllegalArgumentException(LaunchingMessages.libraryLocation_assert_libraryNotNull); } fSystemLibrary= libraryPath; fSystemLibrarySource= sourcePath; fPackageRootPath= packageRoot; fJavadocLocation= javadocLocation; fIndexLocation = indexLocation; fExternalAnnotations = externalAnnotations == null ? Path.EMPTY : externalAnnotations; }
Returns the JRE library jar location.
Returns:The JRE library jar location.
/** * Returns the JRE library jar location. * * @return The JRE library jar location. */
public IPath getSystemLibraryPath() { return fSystemLibrary; }
Returns the JRE library source zip location.
Returns:The JRE library source zip location.
/** * Returns the JRE library source zip location. * * @return The JRE library source zip location. */
public IPath getSystemLibrarySourcePath() { return fSystemLibrarySource; }
Return the JRE library external annotations location.
Since:3.8
Returns:The file or directory holding external annotations, or Path.EMPTY if not applicable. This will never be null.
/** * Return the JRE library external annotations location. * * @since 3.8 * @return The file or directory holding external annotations, or Path.EMPTY if not applicable. This will never be null. */
public IPath getExternalAnnotationsPath() { return fExternalAnnotations; }
Returns the path to the default package in the sources zip file
Returns:The path to the default package in the sources zip file.
/** * Returns the path to the default package in the sources zip file * * @return The path to the default package in the sources zip file. */
public IPath getPackageRootPath() { return fPackageRootPath; }
Returns the Javadoc location associated with this Library location.
Returns:a URL pointing to the Javadoc location associated with this Library location, or null if none
Since:3.1
/** * Returns the Javadoc location associated with this Library location. * * @return a {@link URL} pointing to the Javadoc location associated with * this Library location, or <code>null</code> if none * @since 3.1 */
public URL getJavadocLocation() { return fJavadocLocation; }
Returns the index location associated with this library location.
Returns:a URL pointing to the index location associated with this Library location, or null if none
Since:3.7
/** * Returns the index location associated with this library location. * * @return a {@link URL} pointing to the index location associated with * this Library location, or <code>null</code> if none * @since 3.7 */
public URL getIndexLocation() { return fIndexLocation; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (obj instanceof LibraryLocation) { LibraryLocation lib = (LibraryLocation)obj; return getSystemLibraryPath().equals(lib.getSystemLibraryPath()) && equals(getSystemLibrarySourcePath(), lib.getSystemLibrarySourcePath()) && equals(getExternalAnnotationsPath(), lib.getExternalAnnotationsPath()) && equals(getPackageRootPath(), lib.getPackageRootPath()) && LaunchingPlugin.sameURL(getJavadocLocation(), lib.getJavadocLocation()); } return false; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return getSystemLibraryPath().hashCode(); }
Returns whether the given paths are equal - either may be null.
Params:
  • path1 – path to be compared
  • path2 – path to be compared
Returns:whether the given paths are equal
/** * Returns whether the given paths are equal - either may be <code>null</code>. * @param path1 path to be compared * @param path2 path to be compared * @return whether the given paths are equal */
protected boolean equals(IPath path1, IPath path2) { return equalsOrNull(path1, path2); }
Returns whether the given objects are equal - either may be null.
Params:
  • o1 – object to be compared
  • o2 – object to be compared
Returns:whether the given objects are equal or both null
Since:3.1
/** * Returns whether the given objects are equal - either may be <code>null</code>. * @param o1 object to be compared * @param o2 object to be compared * @return whether the given objects are equal or both null * @since 3.1 */
private boolean equalsOrNull(Object o1, Object o2) { if (o1 == null) { return o2 == null; } if (o2 == null) { return false; } return o1.equals(o2); }
Sets the JRE library source zip location.
Params:
  • source – the source to set
Since:3.4
/** * Sets the JRE library source zip location. * * @param source the source to set * @since 3.4 */
public void setSystemLibrarySource(IPath source) { fSystemLibrarySource = source; }
Sets the index location to the given URL.
Params:
  • indexLoc –
Since:3.7
/** * Sets the index location to the given {@link URL}. * * @param indexLoc * @since 3.7 */
public void setIndexLocation(URL indexLoc) { fIndexLocation = indexLoc; } }