Fix for excessively long documentation strings/HTML docstrings in WSDL.
diff --git a/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java b/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java
index 0b9f9fa..ae2a8ca 100644
--- a/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java
+++ b/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java
@@ -118,7 +118,7 @@
 					item.setUse(use);
 					item.setStyle(style);
 					item.setURI(wsdl);
-					item.setDescription(parser.getOperationDocumentation(name));
+					item.setDescription(shortenDocumentation(parser.getOperationDocumentation(name)));
 					items.add(item);
 				} catch (UnknownOperationException e) {
 					String message = "Encountered an unexpected operation name:"
@@ -152,6 +152,40 @@
 		}
 	}
 
+	/**
+	 * Maximum number of characters to show from an operation description
+	 * string.
+	 */
+	private static final int MAX_LENGTH = 40;
+	/**
+	 * Characters that may not appear in an operation description string. The
+	 * order matters; more strictly prohibited things should come first.
+	 */
+	private static final char[] PROHIBITED_CHARS = new char[] { '\u0000', '\n',
+			'\r', '\f' };
+
+	/**
+	 * Create a shortened version of an operation description string.
+	 * 
+	 * @param doc
+	 *            The string to trim if necessary.
+	 * @return The possibly-shortened string. An ellipsis may be added if
+	 *         trimming has happened earlier.
+	 */
+	private String shortenDocumentation(String doc) {
+		if (doc.matches(".*\\<\\s*[a-zA-Z].*"))
+			doc = doc.replaceAll("\\<.*?\\>", "");
+		for (char c : PROHIBITED_CHARS) {
+			int idx = doc.indexOf(c);
+			if (idx >= 0)
+				doc = doc.substring(0, idx - 1);
+		}
+		doc = doc.trim().replaceAll("\\s+", " ");
+		if (doc.length() > MAX_LENGTH)
+			doc = doc.substring(0, MAX_LENGTH - 1) + "\u2026";
+		return doc;
+	}
+
 	@Override
 	public String toString() {
 		return getName() + " " + getConfiguration().getURI();