From bb499f84aca9c3ddd07971da6ded2030e32d6b42 Mon Sep 17 00:00:00 2001
From: Thorsten Vitt <thorsten.vitt@uni-wuerzburg.de>
Date: Mon, 27 May 2013 12:01:25 +0000
Subject: [PATCH] Improved mime.types parser RE.

Previously, lines containing a comment at the end and lines starting
with whitespace were not recognized.

git-svn-id: https://develop.sub.uni-goettingen.de/repos/textgrid/trunk/services/aggregator@14095 7c539038-3410-0410-b1ec-0f2a7bf1c452
---
 .../services/aggregator/tree/FileExtensionMap.java         | 7 ++++++-
 .../services/aggregator/tree/FileExtensionMapTest.java     | 5 +++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java b/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java
index 6c48449..89a852c 100644
--- a/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java
+++ b/src/main/java/info/textgrid/services/aggregator/tree/FileExtensionMap.java
@@ -27,7 +27,12 @@ public class FileExtensionMap {
 	private static Logger logger = Logger.getLogger(FileExtensionMap.class);
 
 	protected FileExtensionMap() throws IOException {
-		final Pattern mapLine = Pattern.compile("^([^# \t]+)[ \t]*([^#]+)$");
+		
+		// Comments start with # and reach to the end of line.
+		// A matching line contains of a mime type and one or more extensions
+		// comments are stripped
+		// <whitespace>? <mimetype>¹ <whitespace> <extensions>² <whitespace>? <comment>? 
+		final Pattern mapLine = Pattern.compile("^[ \t]*([^# \t]+)[ \t]*([^#]+)[ \t]*(#.*)?$");
 		final Pattern space = Pattern.compile("[ \t]+");
 		final LineNumberReader reader = new LineNumberReader(
 				new InputStreamReader(getClass().getClassLoader()
diff --git a/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java b/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java
index 8e2f0c1..dc7d245 100644
--- a/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java
+++ b/src/test/java/info/textgrid/services/aggregator/tree/FileExtensionMapTest.java
@@ -25,6 +25,11 @@ public void testGetExtensions() {
 		Assert.assertEquals("Wrong extensions for XHTML",
 				ImmutableList.of("xhtml", "xht"), xhtml);
 	}
+	
+	@Test
+	public void testTextGridTypes() {
+		Assert.assertEquals("aggregation", ext.getFirstExtension("text/tg.aggregation+xml").orNull());
+	}
 
 	@Test
 	public void testGetFirstExtension() {
-- 
GitLab