in jspwiki-main/src/main/java/org/apache/wiki/plugin/DefaultPluginManager.java [304:377]
public Map< String, String > parseArgs( final String argstring ) throws IOException {
final Map< String, String > arglist = new HashMap<>();
// Protection against funny users.
if( argstring == null ) {
return arglist;
}
arglist.put( PARAM_CMDLINE, argstring );
final StringReader in = new StringReader( argstring );
final StreamTokenizer tok = new StreamTokenizer( in );
tok.eolIsSignificant( true );
String param = null;
String value;
boolean potentialEmptyLine = false;
boolean quit = false;
while( !quit ) {
final String s;
final int type = tok.nextToken();
switch( type ) {
case StreamTokenizer.TT_EOF:
quit = true;
s = null;
break;
case StreamTokenizer.TT_WORD:
s = tok.sval;
potentialEmptyLine = false;
break;
case StreamTokenizer.TT_EOL:
quit = potentialEmptyLine;
potentialEmptyLine = true;
s = null;
break;
case StreamTokenizer.TT_NUMBER:
s = Integer.toString( ( int )tok.nval );
potentialEmptyLine = false;
break;
case '\'':
s = tok.sval;
break;
default:
s = null;
}
// Assume that alternate words on the line are parameter and value, respectively.
if( s != null ) {
if( param == null ) {
param = s;
} else {
value = s;
arglist.put( param, value );
param = null;
}
}
}
// Now, we'll check the body.
if( potentialEmptyLine ) {
final StringWriter out = new StringWriter();
FileUtil.copyContents( in, out );
final String bodyContent = out.toString();
if( bodyContent != null ) {
arglist.put( PARAM_BODY, bodyContent );
}
}
return arglist;
}