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    }