Add internal (for now) API to download pre-identified IPackageFragmentRoot

Change-Id: Ic409a0d6412b2d20ed071b9e96f21101e8f98774
Signed-off-by: Fred Bricon <fbricon@gmail.com>
diff --git a/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/internal/BuildPathManager.java b/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/internal/BuildPathManager.java
index d01e5fb..48a5123 100644
--- a/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/internal/BuildPathManager.java
+++ b/org.eclipse.m2e.jdt/src/org/eclipse/m2e/jdt/internal/BuildPathManager.java
@@ -815,12 +815,29 @@
   }
 
   public void scheduleDownload(IPackageFragmentRoot fragment, boolean downloadSources, boolean downloadJavadoc) {
+    if(fragment == null) {
+      return;
+    }
     ArtifactKey artifact = fragment.getAdapter(ArtifactKey.class);
-
     if(artifact == null) {
       // we don't know anything about this JAR/ZIP
       return;
     }
+    scheduleDownload(fragment, artifact, downloadSources, downloadJavadoc);
+  }
+
+  /**
+   * Download sources for an {@link IPackageFragmentRoot} that has already been identified as the given
+   * <code>artifact</code>. <br/>
+   * TODO promote to API in {@link IClasspathManager} once this as been battle-tested.
+   * 
+   * @since 1.16.0
+   */
+  public void scheduleDownload(IPackageFragmentRoot fragment, ArtifactKey artifact, boolean downloadSources,
+      boolean downloadJavadoc) {
+    if(fragment == null || artifact == null) {
+      return;
+    }
 
     IProject project = fragment.getJavaProject().getProject();