diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/api/progress/APIProgressScanner.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/api/progress/APIProgressScanner.java index e6edb05cd60e59de0c28d9c0fd61d1ddfde4b431..82d3d7cfc03a732df6ff719c987c5e9817c77a61 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/api/progress/APIProgressScanner.java +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/api/progress/APIProgressScanner.java @@ -19,8 +19,8 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -111,6 +111,8 @@ public class APIProgressScanner extends AbstractEmitter final StringBuffer apiProgress = new StringBuffer(); apiProgress.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); apiProgress.append("<root>"); + if (src != null && api != null) + apiProgress.append(validatePlugins()); ILocation loc = Location.createLocation(new File(outputDir)); loc.accept( new ILocationVisitor() @@ -121,13 +123,35 @@ public class APIProgressScanner extends AbstractEmitter { apiProgress.append("<api-info file=\"./"); apiProgress.append(location.getAbsolutePath().substring(outputDir.length())); + try + { + ComponentAPI compAPI = new ComponentAPI(); + compAPI.setLocation(location); + compAPI.load(); + String id = compAPI.getName(); + if (id != null) + { + String compName = (String)pluginId2CompName.get(id); + if (compName != null) + { + OverviewDocLoader loader = new OverviewDocLoader(compName); + String url = loader.getOverviewDocURL(); + if (url != null) + { + apiProgress.append("\" overviewDoc=\""); + apiProgress.append(url); + } + } + } + } + catch (Throwable t) + { + } apiProgress.append("\"/>"); } return true; } }); - if (src != null && api != null) - apiProgress.append(validatePlugins()); apiProgress.append("</root>"); try { @@ -173,6 +197,8 @@ public class APIProgressScanner extends AbstractEmitter } } + private Map pluginId2CompName = new HashMap(); + private String validatePlugins() { StringBuffer sb = new StringBuffer(); @@ -190,9 +216,11 @@ public class APIProgressScanner extends AbstractEmitter for (Iterator it = compXMLVisitor.getCompXMLs().iterator(); it.hasNext();) { ComponentXML compXML = (ComponentXML)it.next(); + String compName = compXML.getName(); for (Iterator it2 = compXML.getPlugins().iterator(); it2.hasNext();) { String id = ((Plugin)it2.next()).getId(); + pluginId2CompName.put(id, compName); if (pluginIds.contains(id)) pluginsInMoreThan1Comp.add(id); else @@ -371,61 +399,43 @@ public class APIProgressScanner extends AbstractEmitter System.out.println("\t-progressDir\t<progressDir>\tdirectory containing API progress documents"); } - private class OverviewDocLoader extends Thread + private class OverviewDocLoader { - private APIProgressEntry entry; - private boolean done; + private String componentName; - public OverviewDocLoader(APIProgressEntry entry) + public OverviewDocLoader(String componentName) { - this.entry = entry; - this.done = false; + this.componentName = componentName; } - public void run() + public String getOverviewDocURL() { + InputStream is = null; try { - String compName = entry.getCompName(); - String subproject = null; - String component = null; - if (compName.startsWith("org.eclipse.")) - { - compName = compName.substring(12); - int index = compName.indexOf('.'); - if (index != -1) - { - subproject = compName.substring(0, index); - component = compName.substring(index + 1); - } - } - if (subproject != null && component != null) - { - StringBuffer url = new StringBuffer("http://eclipse.org/webtools/"); - url.append(subproject); - url.append("/components/"); - url.append(component); - url.append("/overview.html"); - URL overviewDoc = new URL(url.toString()); - InputStream is = overviewDoc.openStream(); - is.close(); - entry.setOverviewDoc(url.toString()); - } + StringBuffer url = new StringBuffer("http://www.eclipse.org/webtools/components/"); + url.append(componentName); + url.append("/"); + URL overviewDoc = new URL(url.toString()); + is = overviewDoc.openStream(); + return url.toString(); } catch (Throwable t) { } finally { - done = true; + try + { + if (is != null) + is.close(); + } + catch (Throwable t) + { + t.printStackTrace(); + } } - } - - public void waitFor() - { - long start = Calendar.getInstance().getTimeInMillis(); - while (!done && (Calendar.getInstance().getTimeInMillis() - start) < 60000) - Thread.yield(); + return null; } } } \ No newline at end of file diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/api-progress.xsl b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/api-progress.xsl index 47d218006fd2ff63fcfd2380c103973d3f6da625..bc77f6eaabd5d9dc7fbef6054f83e233852bc19b 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/api-progress.xsl +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/api-progress.xsl @@ -345,7 +345,7 @@ <td align="center" valign="top"> <xsl:choose> <xsl:when test="$overviewDoc"> - <a href="{$overviewDoc}">Yes</a> + <a href="{$overviewDoc}" target="_blank">Yes</a> </xsl:when> <xsl:otherwise> No