fix test failures
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
index f9e1286..2530cf4 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/core/model/DefaultSiteParser.java
@@ -253,8 +253,17 @@
stateStack.pop();
text = ""; //$NON-NLS-1$
while (objectStack.peek() instanceof String) {
- text = (String) objectStack.pop() + text;
+ // add text, preserving at most one space between text fragments
+ String newText = (String) objectStack.pop();
+ if (trailingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text;
+ }
+ text = newText.trim() + text;
+ if (leadingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text;
+ }
}
+ text = text.trim();
info = (URLEntryModel) objectStack.pop();
if (text != null)
@@ -275,8 +284,17 @@
stateStack.pop();
text = ""; //$NON-NLS-1$
while (objectStack.peek() instanceof String) {
- text = (String) objectStack.pop() + text;
+ // add text, preserving at most one space between text fragments
+ String newText = (String) objectStack.pop();
+ if (trailingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text;
+ }
+ text = newText.trim() + text;
+ if (leadingSpace(newText) && !leadingSpace(text)) {
+ text = " " + text;
+ }
}
+ text = text.trim();
info = (URLEntryModel) objectStack.pop();
if (text != null)
@@ -307,7 +325,7 @@
* @since 2.0
*/
public void characters(char[] ch, int start, int length) {
- String text = new String(ch, start, length).trim();
+ String text = new String(ch, start, length);
//only push if description
int state = ((Integer) stateStack.peek()).intValue();
if (state == STATE_DESCRIPTION_SITE || state == STATE_DESCRIPTION_CATEGORY_DEF)
@@ -708,4 +726,16 @@
return Policy.bind("DefaultSiteParser.UnknownState"); //$NON-NLS-1$
}
}
+ private boolean leadingSpace(String str) {
+ if (str.length() <= 0) {
+ return false;
+ }
+ return Character.isWhitespace(str.charAt(0));
+ }
+ private boolean trailingSpace(String str) {
+ if (str.length() <= 0) {
+ return false;
+ }
+ return Character.isWhitespace(str.charAt(str.length() - 1));
+ }
}
diff --git a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java
index bc00473..231b9a6 100644
--- a/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java
+++ b/update/org.eclipse.update.tests.core/src/org/eclipse/update/tests/parser/TestSiteParse.java
@@ -94,7 +94,7 @@
assertTrue("Wrong number of categories", categories.length == 1);
assertTrue("Wrong number of archives", archives.length == 2);
- String valideString = "This category contains all of the<currently>available versions of Red Dot feature.<greeting>Hello, world!</greeting>";
+ String valideString = "This category contains all of the <currently> available versions of Red Dot feature. <greeting>Hello, world!</greeting>";
assertEquals(valideString, remoteSite.getCategoryModels()[0].getDescriptionModel().getAnnotation());
String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();
@@ -120,7 +120,7 @@
assertTrue("Wrong number of categories", categories.length == 1);
assertTrue("Wrong number of archives", archives.length == 2);
- String valideString = "This category contains all of the<currently>available versions of Red Dot feature.";
+ String valideString = "This category contains all of the <currently> available versions of Red Dot feature.";
assertEquals(valideString, remoteSite.getCategoryModels()[0].getDescriptionModel().getAnnotation());
String path = new URL(SOURCE_FILE_SITE + "parsertests/").getFile();