Index: /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/Utils.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/Utils.java	(revision 1374)
+++ /FCKeditor.Java/branches/2.4/src/main/java/net/fckeditor/tool/Utils.java	(revision 1375)
@@ -117,3 +117,20 @@
 	return strb.toString();
     }
+
+	// TODO code isn't very beautiful, is there a better way besides looping through the filename?
+	static String forceSingleExtension (final String filename) {
+		
+		int lastDotPosition = filename.lastIndexOf(".");
+		StringBuffer sb = new StringBuffer(filename.replaceAll("\\.", "_"));
+		sb.setCharAt(lastDotPosition, '.');
+		
+		return sb.toString(); 
+		
+	}
+
+	static boolean isSingleExtension (final String filename) {
+		
+		return filename.matches("[^\\.]+\\.[^\\.]+");
+		
+	}
 }
Index: /FCKeditor.Java/branches/2.4/src/test/java/net/fckeditor/tool/UtilsTest.java
===================================================================
--- /FCKeditor.Java/branches/2.4/src/test/java/net/fckeditor/tool/UtilsTest.java	(revision 1374)
+++ /FCKeditor.Java/branches/2.4/src/test/java/net/fckeditor/tool/UtilsTest.java	(revision 1375)
@@ -86,3 +86,63 @@
 		assertEquals(str, "faa");
 	}
+	
+	@Test
+	public void isSingleExtension01 () {
+		boolean condition = Utils.isSingleExtension("hacked.txt");
+		assertTrue(condition);
+	}
+	
+	@Test
+	public void isSingleExtension02 () {
+		boolean condition = Utils.isSingleExtension("hacked.php_txt");
+		assertTrue(condition);
+	}
+	
+	@Test
+	public void isSingleExtension03 () {
+		boolean condition = !Utils.isSingleExtension("hacked.php.txt");
+		assertTrue(condition);
+	}
+	
+	@Test
+	public void isSingleExtension04 () {
+		boolean condition = !Utils.isSingleExtension("hacked.txt.");
+		assertTrue(condition);
+	}
+	
+	@Test
+	public void isSingleExtension05 () {
+		boolean condition = !Utils.isSingleExtension("hacked..txt");
+		assertTrue(condition);
+	}
+	
+	@Test
+	public void forceSingleExtension01 () {
+		String actual = Utils.forceSingleExtension("hacked.txt");
+		assertEquals("hacked.txt", actual);
+	}
+	
+	@Test
+	public void forceSingleExtension02 () {
+		String actual = Utils.forceSingleExtension("hacked.php_txt");
+		assertEquals("hacked.php_txt", actual);
+	}
+	
+	@Test
+	public void forceSingleExtension03 () {
+		String actual = Utils.forceSingleExtension("hacked.php.txt");
+		assertEquals("hacked_php.txt", actual);
+	}
+	
+	@Test
+	public void forceSingleExtension04 () {
+		String actual = Utils.forceSingleExtension("hacked.txt.");
+		assertEquals("hacked_txt.", actual);
+	}
+	
+	@Test
+	public void forceSingleExtension05 () {
+		String actual = Utils.forceSingleExtension("hacked..txt");
+		assertEquals("hacked_.txt", actual);
+	}
 }
