001 package com.oxygenxml.validate.nvdl;
002
003 /**
004 * Base action class.
005 */
006 abstract class Action {
007 /**
008 * Use mode when performing this action.
009 */
010 private final ModeUsage modeUsage;
011
012 /**
013 * Creates an action with a given mode usage.
014 * @param modeUsage The mode usage.
015 */
016 Action(ModeUsage modeUsage) {
017 this.modeUsage = modeUsage;
018 }
019
020 /**
021 * Getter for the mode usage.
022 * @return The mode usage for this action.
023 */
024 ModeUsage getModeUsage() {
025 return modeUsage;
026 }
027
028 /**
029 * Checks for equality, we need to have the same action class with the same modeUsage.
030 */
031 public boolean equals(Object obj) {
032 return obj != null && obj.getClass() == getClass() && ((Action)obj).modeUsage.equals(modeUsage);
033 }
034
035 /**
036 * Computes a hashCode for this action.
037 */
038 public int hashCode() {
039 return getClass().hashCode() ^ modeUsage.hashCode();
040 }
041 }