java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java
changeset 97 a72d55ff30c9
parent 79 3581fe8cd4fe
child 101 fd83cd102325
     1.1 --- a/java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java	Sun Sep 07 00:26:38 2014 +0200
     1.2 +++ b/java/alt2xml-out-xpath/src/cz/frantovo/alt2xml/out/xpath/XPathAction.java	Sun Sep 07 01:28:07 2014 +0200
     1.3 @@ -30,6 +30,7 @@
     1.4  import javax.xml.xpath.XPathExpression;
     1.5  import javax.xml.xpath.XPathExpressionException;
     1.6  import javax.xml.xpath.XPathFactory;
     1.7 +import javax.xml.xpath.XPathVariableResolver;
     1.8  
     1.9  /**
    1.10   *
    1.11 @@ -39,8 +40,10 @@
    1.12  
    1.13  	public static final String PARAMETER_TYPED_PARAMETERS = "typed-parameters";
    1.14  	public static final String PARAMETER_LINE_BREAK = "line-break";
    1.15 +	public static final String PARAMETER_ENVIRONMENT_VARIABLES = "environment-variables";
    1.16  	private final boolean typedParameters;
    1.17  	private final boolean lineBreak;
    1.18 +	private final boolean environmentVariables;
    1.19  	private final XPathFactory xpathFactory;
    1.20  	private final XPath xpath;
    1.21  	private final String expressionString;
    1.22 @@ -59,6 +62,7 @@
    1.23  
    1.24  			typedParameters = Boolean.parseBoolean(actionContext.getActionProperties().getProperty(PARAMETER_TYPED_PARAMETERS));
    1.25  			lineBreak = Boolean.parseBoolean(actionContext.getActionProperties().getProperty(PARAMETER_LINE_BREAK, Boolean.TRUE.toString()));
    1.26 +			environmentVariables = Boolean.parseBoolean(actionContext.getActionProperties().getProperty(PARAMETER_ENVIRONMENT_VARIABLES, Boolean.FALSE.toString()));
    1.27  
    1.28  			Map<String, Object> xpathParameters = new HashMap<>();
    1.29  
    1.30 @@ -69,7 +73,10 @@
    1.31  				xpathParameters.put(parameterName, parameterValue);
    1.32  			}
    1.33  
    1.34 -			xpath.setXPathVariableResolver(new PropertiesVariableResolver(xpathParameters));
    1.35 +			XPathVariableResolver cliVariableResolver = new PropertiesVariableResolver(xpathParameters);
    1.36 +			XPathVariableResolver variableResolver = environmentVariables ? new CompoundVariableResolver(cliVariableResolver, new EnvironmentVariableResolver()) : cliVariableResolver;
    1.37 +
    1.38 +			xpath.setXPathVariableResolver(variableResolver);
    1.39  
    1.40  			expressionString = actionData.get(0);
    1.41  			try {