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 }