Fix for #239560
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ModelQuery.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ModelQuery.java
index 57ba578..073762e 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ModelQuery.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ModelQuery.java
@@ -117,13 +117,18 @@
 			Object v1 = n1.nodeValue();
 			Object v2 = n2.nodeValue();
 			
-			if (v1 != null) {
-				return v1.equals (v2) ;
-			} else if (v2 != null) {
-				return v2.equals(v1) ;
-			} else {
+			// both identical or null
+			if (v1 == v2) {
 				return true;
 			}
+			
+			// not identical and *not* both null.
+			if (v1 != null) {
+				return v1.equals(v2);
+			}
+			// v1 is null and not identical to v2 so false.
+			return false;
+
 		
 		case TEST_COMPATIBLE_PARTNER_ACTIVITY_MESSAGE:
 			// n1 is source 
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/helpers/ModelQueryImpl.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/helpers/ModelQueryImpl.java
index 2af5ce3..c8489a2 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/helpers/ModelQueryImpl.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/helpers/ModelQueryImpl.java
@@ -135,14 +135,18 @@
 			
 			Object v1 = n1.nodeValue();
 			Object v2 = n2.nodeValue();
-			
-			if (v1 != null) {
-				return v1.equals (v2) ;
-			} else if (v2 != null) {
-				return v2.equals(v1) ;
-			} else {
+
+			// both identical or null
+			if (v1 == v2) {
 				return true;
 			}
+			
+			// not identical and *not* both null.
+			if (v1 != null) {
+				return v1.equals(v2);
+			}
+			// v1 is null and not identical to v2 so false.
+			return false;
 		
 		case TEST_COMPATIBLE_PARTNER_ACTIVITY_MESSAGE:
 			// n1 is source 
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filter.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filter.java
index b7e3212..a79e5bf 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filter.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filter.java
@@ -38,7 +38,12 @@
 		fName = name;
 	}
 	
-	static protected Comparator<QName> QNAME_COMPARATOR = new Comparator<QName>() {
+	/**
+	 * Comparator for QNames.
+	 * 
+	 */
+	
+	public static Comparator<QName> QNAME_COMPARATOR = new Comparator<QName>() {
 		
 		public int compare(QName o1, QName o2) {
 			int result = o1.getLocalPart().compareTo(o2.getLocalPart());
@@ -47,10 +52,17 @@
 			}			
 			return result;
 		}	
-		
-		
 	};
-		
+	
+	/**
+	 * 
+	 */
+	public static Comparator<String> STRING_COMPARATOR = new Comparator<String>() {
+
+		public int compare(String o1, String o2) {
+			return o1.compareTo(o2);
+		}		
+	};
 	
 	/**
 	 * Create a readable values list.
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filters.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filters.java
index 79b4828..5d141ae 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filters.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/Filters.java
@@ -37,16 +37,16 @@
 	public static final IFilter<INode> FLOW = new NodeNameFilter( ND_FLOW );
 	
 	/** Boolean filter values */
-	static public final IFilter<String> BOOLEAN_FILTER = new ValueFilter<String> ( BOOLEAN_VALUES );
+	static public final IFilter<String> BOOLEAN_FILTER = new ValueFilter<String> ( Filter.STRING_COMPARATOR, BOOLEAN_VALUES );
 	
 	/** Initiate filter values */
-	public static final IFilter<String> INITIATE_FILTER = new ValueFilter<String> (INITIATE_VALUES);
+	public static final IFilter<String> INITIATE_FILTER = new ValueFilter<String> (Filter.STRING_COMPARATOR,INITIATE_VALUES);
 
 	/** End point values */
-	public static final IFilter<String> ENDPOINT_FILTER = new ValueFilter<String> (ENDPOINT_VALUES);
+	public static final IFilter<String> ENDPOINT_FILTER = new ValueFilter<String> (Filter.STRING_COMPARATOR,ENDPOINT_VALUES);
 
 	/** Correlation pattern values */
-	public static final IFilter<String> PATTERN_FILTER = new ValueFilter<String> ( PATTERN_VALUES );
+	public static final IFilter<String> PATTERN_FILTER = new ValueFilter<String> ( Filter.STRING_COMPARATOR,PATTERN_VALUES );
 	
 	/** Repeatable nodes */
 	public static final IFilter<INode> REPEATABLE_CONSTRUCT = new NodeNameFilter ( REPEATABLE_NODES );
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/ValueFilter.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/ValueFilter.java
index df8d685..7e503ba 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/ValueFilter.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/ValueFilter.java
@@ -26,18 +26,7 @@
 
 	T[] fList;
 	Comparator<T> fComparator;
-	
-	/**
-	 * Create a filer for the values indicated.
-	 * 
-	 * @param values
-	 */
-
-	public ValueFilter (T... values) {
-		fList = values;
-		Arrays.sort(fList);
-	}
-
+		
 	/**
 	 * @param comparator
 	 * @param values
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java
index 32dec39..5631b1c 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java
@@ -34,7 +34,6 @@
  */
 
 @SuppressWarnings("nls")
-
 public class CValidator extends Validator {
 	
 	/** The parent node */
@@ -136,8 +135,7 @@
 	 * @param min
 	 * @param max
 	 * @return the number of occurrences of this child.
-	 */
-	@SuppressWarnings("nls")
+	 */	
 	
 	public int checkChild (QName node, int min, int max) {
 		return checkChild ( new NodeNameFilter(node),min,max) ;
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchAllValidator.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchAllValidator.java
index 090e17c..fbe4f71 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchAllValidator.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchAllValidator.java
@@ -22,8 +22,6 @@
  *
  */
 
-@SuppressWarnings("nls")
-
 public class CatchAllValidator extends CValidator {
 
 	/**
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchValidator.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchValidator.java
index 3d52fed..807a76f 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchValidator.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CatchValidator.java
@@ -13,6 +13,7 @@
 
 import javax.xml.namespace.QName;
 
+import org.eclipse.bpel.validator.model.Filter;
 import org.eclipse.bpel.validator.model.Filters;
 import org.eclipse.bpel.validator.model.IFilter;
 import org.eclipse.bpel.validator.model.IModelQueryLookups;
@@ -30,10 +31,7 @@
  */
 
 @SuppressWarnings({"nls","boxing"})
-
 public class CatchValidator extends CatchAllValidator {
-
-	
 	
 	protected String fFaultName;
 	
@@ -101,6 +99,7 @@
 	
 	
 	static IFilter<QName> TYPE_DEFS = new ValueFilter<QName> ( 
+			Filter.QNAME_COMPARATOR,
 			AT_FAULT_MESSAGE_TYPE, AT_FAULT_ELEMENT 
 	);
 	
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/ConditionValidator.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/ConditionValidator.java
index 3a32686..4c4f899 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/ConditionValidator.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/ConditionValidator.java
@@ -30,7 +30,7 @@
  *
  */
 
-
+@SuppressWarnings("nls")
 public class ConditionValidator extends CValidator {
 			
 	/** list of my parents */	
@@ -63,6 +63,7 @@
 	 * Checks the expression language attribute for support in the model.
 	 */
 	
+	
 	@ARule(
 		author = "michal.chmielewski@oracle.com",
 		desc = "Checks the expression language for support in the BPEL model",		
@@ -80,7 +81,7 @@
 			
 			problem = createError();
 			problem.fill( 
-					"BPELC__UNSUPPORTED_XML_LANG",  //$NON-NLS-1$
+					"BPELC__UNSUPPORTED_XML_LANG",
 					AT_EXPRESSIONLANGUAGE,
 					fExpressionLanguage);
 			
diff --git a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/OnEventValidator.java b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/OnEventValidator.java
index 48266e7..e15db44 100644
--- a/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/OnEventValidator.java
+++ b/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/OnEventValidator.java
@@ -16,6 +16,7 @@
 
 
 import org.eclipse.bpel.validator.model.ARule;
+import org.eclipse.bpel.validator.model.Filter;
 import org.eclipse.bpel.validator.model.Filters;
 import org.eclipse.bpel.validator.model.IFilter;
 import org.eclipse.bpel.validator.model.IModelQueryLookups;
@@ -48,15 +49,12 @@
 
 
 /**
- * Validate the receive activity.
- * 
  * @author Michal Chmielewski (michal.chmielewski@oracle.com)
- * @date Sep 25, 2006
+ * @date Aug 28, 2008
  *
  */
 
 @SuppressWarnings( {"hiding","nls","boxing"} )
-
 public class OnEventValidator extends CPartnerActivityValidator {
 		
 
@@ -152,7 +150,9 @@
 	
 	
 
-	static IFilter<QName> TYPE_DEFS = new ValueFilter<QName>( AT_MESSAGE_TYPE, AT_ELEMENT);
+	static IFilter<QName> TYPE_DEFS = new ValueFilter<QName>( 
+			Filter.QNAME_COMPARATOR,
+			AT_MESSAGE_TYPE, AT_ELEMENT);
 	
 	
 	/**