| /* |
| * Copyright 2000-2014 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.xdebugger.impl.breakpoints; |
| |
| import com.intellij.lang.Language; |
| import com.intellij.xdebugger.XExpression; |
| import com.intellij.xdebugger.evaluation.EvaluationMode; |
| import org.jetbrains.annotations.Contract; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * @author egor |
| */ |
| public class XExpressionImpl implements XExpression { |
| public static final XExpression EMPTY_EXPRESSION = fromText("", EvaluationMode.EXPRESSION); |
| public static final XExpression EMPTY_CODE_FRAGMENT = fromText("", EvaluationMode.CODE_FRAGMENT); |
| |
| @NotNull private final String myExpression; |
| private final Language myLanguage; |
| private final String myCustomInfo; |
| private final EvaluationMode myMode; |
| |
| public XExpressionImpl(@NotNull String expression, Language language, String customInfo) { |
| this(expression, language, customInfo, EvaluationMode.EXPRESSION); |
| } |
| |
| public XExpressionImpl(@NotNull String expression, Language language, String customInfo, EvaluationMode mode) { |
| myExpression = expression; |
| myLanguage = language; |
| myCustomInfo = customInfo; |
| myMode = mode; |
| } |
| |
| @NotNull |
| @Override |
| public String getExpression() { |
| return myExpression; |
| } |
| |
| @Override |
| public Language getLanguage() { |
| return myLanguage; |
| } |
| |
| @Override |
| public String getCustomInfo() { |
| return myCustomInfo; |
| } |
| |
| @Override |
| public EvaluationMode getMode() { |
| return myMode; |
| } |
| |
| @Contract("null -> null; !null -> !null") |
| public static XExpressionImpl fromText(@Nullable String text) { |
| return text != null ? new XExpressionImpl(text, null, null, EvaluationMode.EXPRESSION) : null; |
| } |
| |
| @Contract("null, _ -> null; !null, _ -> !null") |
| public static XExpressionImpl fromText(@Nullable String text, EvaluationMode mode) { |
| return text != null ? new XExpressionImpl(text, null, null, mode) : null; |
| } |
| |
| public static XExpressionImpl changeMode(XExpression expression, EvaluationMode mode) { |
| return new XExpressionImpl(expression.getExpression(), expression.getLanguage(), expression.getCustomInfo(), mode); |
| } |
| |
| @Override |
| public String toString() { |
| return myExpression; |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (this == o) return true; |
| if (o == null || getClass() != o.getClass()) return false; |
| |
| XExpressionImpl that = (XExpressionImpl)o; |
| |
| if (myCustomInfo != null ? !myCustomInfo.equals(that.myCustomInfo) : that.myCustomInfo != null) return false; |
| if (!myExpression.equals(that.myExpression)) return false; |
| if (myLanguage != null ? !myLanguage.equals(that.myLanguage) : that.myLanguage != null) return false; |
| if (myMode != that.myMode) return false; |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| int result = myExpression.hashCode(); |
| result = 31 * result + (myLanguage != null ? myLanguage.hashCode() : 0); |
| result = 31 * result + (myCustomInfo != null ? myCustomInfo.hashCode() : 0); |
| result = 31 * result + (myMode != null ? myMode.hashCode() : 0); |
| return result; |
| } |
| } |