[204145] fixed url pattern validation in the Servlet wizard
diff --git a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java
index 4813c53..111f8fe 100644
--- a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewServletClassDataModelProvider.java
@@ -456,7 +456,7 @@
 			if (isValidValue != null && isValidValue.length() > 0) {
 				NLS.bind(WebMessages.ERR_SERVLET_MAPPING_URL_PATTERN_INVALID, isValidValue);
 				String resourceString = WebMessages.getResourceString(WebMessages.ERR_SERVLET_MAPPING_URL_PATTERN_INVALID, new String[]{isValidValue});
-				return WTPCommonPlugin.createWarningStatus(resourceString);
+				return WTPCommonPlugin.createErrorStatus(resourceString);
 			}
 		} else {
 			String msg = WebMessages.ERR_SERVLET_MAPPING_URL_PATTERN_EMPTY;
@@ -479,22 +479,49 @@
 		if (prop == null) {
 			return "";
 		}
-		String urlPatternValue = "";
 		int size = prop.size();
 		for (int i = 0; i < size; i++) {
 			String urlMappingValue = ((String[]) prop.get(i))[0];
-			// correct pattern beginning with a ‘/’
-			boolean isSlashCorrect = urlMappingValue.startsWith("/");
-			// correct pattern beginning with a ‘*.’
-			boolean isAsteriskCorrect = urlMappingValue.startsWith("*.") && urlMappingValue.length() > 2;
-			
-			if (!isSlashCorrect && !isAsteriskCorrect) {
-				// no correct pattern
-				urlPatternValue = urlMappingValue;
-				break;
+			if (!isURLPatternValid(urlMappingValue))
+				return urlMappingValue;
+		}
+		return "";
+	}
+	
+	private boolean isURLPatternValid(String urlPattern) {
+		// URL Pattern must not be empty string
+		if (urlPattern.length() == 0)
+			return false;
+		
+		// URL Pattern must not contain Carriage Return characters
+		if (urlPattern.indexOf('\r') != -1) 
+			return false;
+		
+		// URL Pattern must not contain New Line characters
+		if (urlPattern.indexOf('\n') != -1) 
+			return false;
+		
+		// Path Mappings must not contain "*." character sequences
+		if (urlPattern.startsWith("/")) {
+			if (urlPattern.indexOf("*.") == -1) {
+				return true;
+			} else {
+				return false;
 			}
 		}
-		return urlPatternValue;
+		
+		// Extension Mappings must not contain '/' characters
+		if (urlPattern.startsWith("*.")) {
+			if (urlPattern.indexOf('/') == -1) {
+				return true;
+			} else {
+				return false;
+			}
+		}
+		
+		// The URL Pattern is neither a Path Mapping, nor Extension Mapping
+		// Therefore, it is invalid
+		return false;
 	}