001 package com.oxygenxml.validate.nvdl;
002
003 import org.xml.sax.SAXException;
004
005 /**
006 * A no result action that rejects any element.
007 */
008 class RejectAction extends NoResultAction {
009 /**
010 * Creates a reject action.
011 * @param modeUsage The mode usage.
012 */
013 RejectAction(ModeUsage modeUsage) {
014 super(modeUsage);
015 }
016
017 /**
018 * Perform this action on the session state.
019 * @param state The section state.
020 */
021 void perform(SectionState state) throws SAXException {
022 final ModeUsage modeUsage = getModeUsage();
023 state.reject();
024 state.addChildMode(modeUsage, null);
025 state.addAttributeValidationModeUsage(modeUsage);
026 }
027
028 /**
029 * Get a new reject action with a mode usage with the current mode changed.
030 * This is useful when we have modes extending other modes as we need to get
031 * the actions from the base mode as actions on the new mode.
032 */
033 NoResultAction changeCurrentMode(Mode mode) {
034 return new RejectAction(getModeUsage().changeCurrentMode(mode));
035 }
036 }