[hibernate-commits] Hibernate SVN: r16857 - validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Jun 22 10:22:20 EDT 2009


Author: hardy.ferentschik
Date: 2009-06-22 10:22:20 -0400 (Mon, 22 Jun 2009)
New Revision: 16857

Modified:
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolator.java
Log:
HV-174 Made sure that replacement string are properly escaped

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolator.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolator.java	2009-06-22 14:21:28 UTC (rev 16856)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolator.java	2009-06-22 14:22:20 UTC (rev 16857)
@@ -199,7 +199,7 @@
 					parameter, bundle, locale, recurse
 			);
 
-			matcher.appendReplacement( sb, resolvedParameterValue );
+			matcher.appendReplacement( sb, escapeMetaCharacters( resolvedParameterValue ) );
 		}
 		matcher.appendTail( sb );
 		return sb.toString();
@@ -213,7 +213,7 @@
 			String parameter = matcher.group( 1 );
 			Object variable = annotationParameters.get( removeCurlyBrace( parameter ) );
 			if ( variable != null ) {
-				resolvedParameterValue = variable.toString();
+				resolvedParameterValue = escapeMetaCharacters( variable.toString() );
 			}
 			else {
 				resolvedParameterValue = message;
@@ -269,4 +269,15 @@
 		}
 		return bundle;
 	}
+
+	/**
+	 * @param s The string in which to replace the meta characters '$' and '\'.
+	 *
+	 * @return A string where meta characters relevant for {@link Matcher#appendReplacement} are escaped.
+	 */
+	private String escapeMetaCharacters(String s) {
+		String escapedString = s.replace( "\\", "\\\\" );
+		escapedString = escapedString.replace( "$", "\\$" );
+		return escapedString;
+	}
 }




More information about the hibernate-commits mailing list