private void resolveParameters() throws UnresolvedParameterException {
Set inputNames = getInputNames();
Iterator inputNamesIterator = inputNames.iterator();
IActionParameter actionParameter;
List variables;
Iterator variablesIterator;
ActionParameterSource variable;
String sourceName;
String sourceValue;
Object variableValue = null;
IParameterProvider parameterProvider;
while ( inputNamesIterator.hasNext() ) {
variableValue = null;
String inputName = (String) inputNamesIterator.next();
actionParameter = paramManager.getCurrentInput( inputName );
if ( actionParameter == null ) {
throw new UnresolvedParameterException( Messages.getInstance().getErrorString(
"RuntimeContext.ERROR_0031_INPUT_NOT_FOUND", inputName ), //$NON-NLS-1$
session.getName(), instanceId, getActionSequence().getSequenceName(), null );
}
variables = actionParameter.getVariables();
variablesIterator = variables.iterator();
while ( variablesIterator.hasNext() ) {
variable = (ActionParameterSource) variablesIterator.next();
sourceName = variable.getSourceName();
sourceValue = variable.getValue();
variableValue = null;
// TODO support accessing the ancestors of the current instance,
// e.g. runtme.parent
if ( "runtime".equals( sourceName ) ) { //$NON-NLS-1$
// first check the standard variables
variableValue = getStringParameter( sourceValue, null );
if ( variableValue == null ) {
// now check the runtime data
variableValue = runtimeData.getStringProperty( sourceValue, null );
}
if ( variableValue != null ) {
break;
}
} else {
parameterProvider = (IParameterProvider) parameterProviders.get( sourceName );
if ( parameterProvider == null ) {
warn( Messages.getInstance().getString(
"RuntimeContext.WARN_REQUESTED_PARAMETER_SOURCE_NOT_AVAILABLE", sourceName, inputName ) ); //$NON-NLS-1$
} else {
variableValue = parameterProvider.getParameter( sourceValue );
if ( variableValue != null ) {
break;
}
}
}
} // while
if ( variableValue == null ) {
if ( actionParameter.getValue() != null ) {
if ( actionParameter.hasDefaultValue() ) {
if ( PentahoSystem.trace ) {
trace( Messages.getInstance().getString( "RuntimeContext.TRACE_USING_DEFAULT_PARAMETER_VALUE", inputName ) ); //$NON-NLS-1$
}
} else {
if ( PentahoSystem.trace ) {
trace( Messages.getInstance().getString(
"RuntimeContext.TRACE_INFO_USING_CURRENT_PARAMETER_VALUE" + inputName ) ); //$NON-NLS-1$
}
}
} else if ( "content".equals( actionParameter.getType() ) ) { //$NON-NLS-1$
variableValue = ""; //$NON-NLS-1$
}
} else {
actionParameter.setValue( variableValue );
}
} // while
}