org.ajax4jsf.io.parser.ParserState Maven / Gradle / Ivy
/**
* Licensed under the Common Development and Distribution License,
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.sun.com/cddl/
*
* 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 org.ajax4jsf.io.parser;
import java.io.IOException;
/**
* Interface for curent parsing state in {@link org.ajax4jsf.io.parser.FastHtmlParser}
* @author shura
*
*/
public abstract class ParserState {
/**
* Array of states allowed to transition from this state.
*/
ParserState nextStates[]={};
ParserState getNextState(char c,ParsingContext context){
for (int i = 0; i < nextStates.length; i++) {
ParserState parserState = nextStates[i];
if(parserState.isAcceptChar(c,context)){
return parserState;
}
}
return context.getBaseState();
}
/**
* Ask parser for allowed this state for given char.
* @param c
* @param context
* @return
*/
abstract boolean isAcceptChar(char c, ParsingContext context);
/**
* Send current char or buffer content to output stream.
* @return
* @throws IOException
*/
void send(char c, ParsingContext context) throws IOException{
context.send(c);
}
}