Bug 251313 Failed assertion in API tooling build
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java
index 932f85f..67bc469 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BaseApiAnalyzer.java
@@ -1336,14 +1336,19 @@
/**
* Collects details from the given delta listing for version problems
* @param deltas
- * @return
+ * @return a {@link String} of the details why the version number should be changed
*/
private String collectDetails(final IDelta[] deltas) {
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
- for (int i = 0, max = deltas.length; i < max ; i++) {
+ //TODO contrived default for https://bugs.eclipse.org/bugs/show_bug.cgi?id=251313
+ int max = Math.min(20, deltas.length);
+ for (int i = 0; i < max; i++) {
printWriter.print("- "); //$NON-NLS-1$
printWriter.println(deltas[i].getMessage());
+ if(i == max-1 && max < deltas.length) {
+ printWriter.println(NLS.bind(BuilderMessages.BaseApiAnalyzer_more_version_problems, new Integer(deltas.length - max)));
+ }
}
printWriter.flush();
printWriter.close();
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildState.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildState.java
index 2ff8815..360e852 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildState.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuildState.java
@@ -157,38 +157,36 @@
}
}
+ /**
+ * @return the complete list of recorded breaking changes with duplicates removed, or
+ * an empty array, never <code>null</code>
+ */
public IDelta[] getBreakingChanges() {
if (this.breakingChanges == null || this.breakingChanges.size() == 0) {
return EMPTY_DELTAS;
}
- ArrayList collector = new ArrayList();
+ HashSet collector = new HashSet();
Collection values = this.breakingChanges.values();
for (Iterator iterator = values.iterator(); iterator.hasNext(); ) {
- HashSet set = (HashSet) iterator.next();
- for (Iterator iterator2 = set.iterator(); iterator2.hasNext(); ) {
- collector.add(iterator2.next());
- }
+ collector.addAll((HashSet) iterator.next());
}
- IDelta[] result = new IDelta[collector.size()];
- collector.toArray(result);
- return result;
+ return (IDelta[]) collector.toArray(new IDelta[collector.size()]);
}
+ /**
+ * @return the complete list of recorded compatible changes with duplicates removed,
+ * or an empty array, never <code>null</code>
+ */
public IDelta[] getCompatibleChanges() {
if (this.compatibleChanges == null || this.compatibleChanges.size() == 0) {
return EMPTY_DELTAS;
}
- ArrayList collector = new ArrayList();
+ HashSet collector = new HashSet();
Collection values = this.compatibleChanges.values();
for (Iterator iterator = values.iterator(); iterator.hasNext(); ) {
- HashSet set = (HashSet) iterator.next();
- for (Iterator iterator2 = set.iterator(); iterator2.hasNext(); ) {
- collector.add(iterator2.next());
- }
+ collector.addAll((HashSet) iterator.next());
}
- IDelta[] result = new IDelta[collector.size()];
- collector.toArray(result);
- return result;
+ return (IDelta[]) collector.toArray(new IDelta[collector.size()]);
}
/**
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuilderMessages.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuilderMessages.java
index dbfa74a..1bc348d 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuilderMessages.java
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/BuilderMessages.java
@@ -25,6 +25,7 @@
public static String CleaningAPIDescription;
public static String BaseApiAnalyzer_analyzing_api;
public static String BaseApiAnalyzer_comparing_api_profiles;
+ public static String BaseApiAnalyzer_more_version_problems;
public static String BaseApiAnalyzer_scanning_0;
public static String BaseApiAnalyzer_validating_javadoc_tags;
public static String build_wrongFileFormat;
diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/buildermessages.properties b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/buildermessages.properties
index be32d48..d05bd4e 100644
--- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/buildermessages.properties
+++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/buildermessages.properties
@@ -18,6 +18,7 @@
CleaningAPIDescription=Cleaning API description for {0}
BaseApiAnalyzer_analyzing_api=Analyzing API
BaseApiAnalyzer_comparing_api_profiles=Comparing ''{0}'' to API baseline...
+BaseApiAnalyzer_more_version_problems={0} more change(s)...
BaseApiAnalyzer_scanning_0=Scanning ''{0}'' for unsupported API Javadoc tags...
BaseApiAnalyzer_validating_javadoc_tags=Validating API Javadoc tags
build_saveStateComplete = Saved in {0} ms