litesoft
@ 151
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.testplan; import java.util.*; import org.litesoft.GWT.client.dev.ui.actions.*; import org.litesoft.GWT.client.dev.ui.inspection.*; import org.litesoft.GWT.client.dev.ui.testplan.*; import org.litesoft.xml.*; public class TestPlanParserActionFactoryAction implements TestPlanActionFactory { private static final String TAG_NAME = "Action"; private static final SelectionParserJQuery sSelectorParser = new SelectionParserJQuery(); private static final Map<String, ActionParserBase> sActionParsers = new HashMap<String, ActionParserBase>(); { addAction( new ActionParserClick() ); addAction( new ActionParserKeystrokes() ); addAction( new ActionParserSetAttribute() ); } private static void addAction( ActionParserBase pAction ) { sActionParsers.put( pAction.getTagName(), pAction ); } @Override public TestPlanAction parse( PullParserProxy pParser ) { pParser.validateIsStartTag( TAG_NAME ); SelectionSpec selector; pParser.getNextStartTag(); selector = sSelectorParser.parse( pParser ); ActionSpec action; ActionParserBase actionParser = sActionParsers.get( pParser.getNextStartTag() ); assert0( ActionParserBase.class.getSimpleName() + " parser not found for ", actionParser != null ); action = actionParser.parse( pParser ); pParser.validateNextIsEndTag( TAG_NAME ); return new GeneralizedTestPlanAction( selector, action ); } private static void assert0( String pMessage, boolean pExpression ) { if ( !pExpression ) { throw new XML_RuntimeException( pMessage ); } } } |