instance.setStatus( InstanceStatus.whichStatus( state ));
/** * Constructor. * @param context * @param instruction * @param line */ ChangeStateCommandInstruction( Context context, String instruction, int line ) { super( context, instruction, line ); Pattern p = Pattern.compile( PREFIX + "\\s+status\\s+of\\s+(/.*)\\s+to\\b(.*)", Pattern.CASE_INSENSITIVE ); Matcher m = p.matcher( instruction ); if( m.matches()) { this.syntaxicallyCorrect = true; this.targetStatusAsString = m.group( 2 ).trim().toUpperCase().replace( ' ', '_' ).replace( "_AND_", "_" ); this.targetStatus = InstanceStatus.exactStatus( this.targetStatusAsString ); this.instancePath = m.group( 1 ).trim(); } }
@Override public List<ParsingError> doValidate() { List<ParsingError> result = new ArrayList<> (); if( this.targetStatus == null ) result.add( error( ErrorCode.CMD_INVALID_INSTANCE_STATUS, value( this.targetStatusAsString ))); else if( ! this.targetStatus.isStable()) result.add( error( ErrorCode.CMD_INSTABLE_INSTANCE_STATUS )); if( ! this.context.instanceExists( this.instancePath )) result.add( error( ErrorCode.CMD_NO_MATCHING_INSTANCE )); return result; }
p = new BlockProperty( file, ParsingConstants.PROPERTY_INSTANCE_STATE, instance.getStatus().toString()); currentBlock.getInnerBlocks().add( p );
instance.setStatus( InstanceStatus.whichStatus( n.textValue()));
/** * A secured alternative to {@link InstanceStatus#valueOf(String)}. * @param s a string (can be null) * @return the associated runtime status, or null otherwise */ public static InstanceStatus exactStatus( String s ) { InstanceStatus result = null; for( InstanceStatus status : InstanceStatus.values()) { if( status.toString().equalsIgnoreCase( s )) { result = status; break; } } return result; }
/** * A secured way to determine whether a string designates an existing status. * @param s a string (can be null) * @return true if it is a state name, false otheriwse */ public static boolean isValidState( String s ) { boolean valid = false; for( InstanceStatus status : InstanceStatus.values()) { if( status.toString().equalsIgnoreCase( s )) { valid = true; break; } } return valid; }
/** * A secured alternative to {@link InstanceStatus#valueOf(String)}. * @param s a string (can be null) * @return the associated runtime status, or {@link InstanceStatus#NOT_DEPLOYED} otherwise */ public static InstanceStatus whichStatus( String s ) { InstanceStatus result = exactStatus( s ); return result == null ? NOT_DEPLOYED : result; }
@Test public void testWichStatus() { Assert.assertEquals( InstanceStatus.STARTING, InstanceStatus.whichStatus( "starting" )); Assert.assertEquals( InstanceStatus.STARTING, InstanceStatus.whichStatus( "startiNG" )); Assert.assertEquals( InstanceStatus.NOT_DEPLOYED, InstanceStatus.whichStatus( "start" )); }
@Test public void testIsValidState() { Assert.assertTrue( InstanceStatus.isValidState( "starting" )); Assert.assertTrue( InstanceStatus.isValidState( "StarTing" )); Assert.assertFalse( InstanceStatus.isValidState( "Startin" )); }