Bug 350325 - [1.7] String switch statements break conditional breakpoints
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java
index ee9285b..9bfb89d 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/ASTInstructionCompiler.java
@@ -3584,7 +3584,7 @@
 					statementsDefault= new ArrayList();
 				} else {
 					if(switchCase.getExpression() instanceof StringLiteral) {
-						push(new EqualEqualOperator(Instruction.T_String, Instruction.T_String, true, fCounter));
+						push(new SendMessage("equals", "(Ljava/lang/Object;)Z", 1, null, fCounter)); //$NON-NLS-1$ //$NON-NLS-2$
 					}
 					else {
 						push(new EqualEqualOperator(Instruction.T_int, Instruction.T_int, true, fCounter));
@@ -3665,7 +3665,6 @@
 				}
 			}
 		}
-
 		return false;
 	}
 
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java
index 3573ccf..48f558c 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/instructions/EqualEqualOperator.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.jdt.internal.debug.eval.ast.instructions;
 
-import org.eclipse.debug.core.DebugException;
 import org.eclipse.jdt.debug.core.IJavaObject;
 import org.eclipse.jdt.debug.core.IJavaPrimitiveValue;
 import org.eclipse.jdt.debug.core.IJavaValue;
@@ -50,18 +49,6 @@
 			case T_boolean :
 				equals= ((IJavaPrimitiveValue) leftOperand).getBooleanValue() == ((IJavaPrimitiveValue) rightOperand).getBooleanValue();
 				break;
-			case T_String :
-				try {
-					String lhs = leftOperand.getValueString();
-					if(lhs != null) {
-						equals = lhs.equals(rightOperand.getValueString());
-					}
-					else {
-						equals = rightOperand.getValueString() == null;
-					}
-				}
-				catch(DebugException de) {}
-				break;
 			default :
 				equals= leftOperand.equals(rightOperand);
 				break;