in src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java [908:949]
private static void readAssign(final XMLStreamReader reader, final Configuration configuration,
final Executable executable, final ActionsContainer parent)
throws XMLStreamException, ModelException {
final Assign assign = new Assign();
assign.setExpr(readAV(reader, SCXMLConstants.ATTR_EXPR));
assign.setLocation(readRequiredAV(reader, SCXMLConstants.ELEM_ASSIGN, SCXMLConstants.ATTR_LOCATION));
assign.setSrc(readAV(reader, SCXMLConstants.ATTR_SRC));
if (assign.getExpr() != null && assign.getSrc() != null) {
reportConflictingAttribute(reader, configuration, SCXMLConstants.ELEM_ASSIGN, SCXMLConstants.ATTR_EXPR, SCXMLConstants.ATTR_SRC);
}
else if (assign.getExpr() != null) {
skipToEndElement(reader);
}
else if (assign.getSrc() != null) {
skipToEndElement(reader);
String resolvedSrc = assign.getSrc();
if (configuration.pathResolver != null) {
resolvedSrc = configuration.pathResolver.resolvePath(resolvedSrc);
}
try {
assign.setParsedValue(ContentParser.DEFAULT_PARSER.parseResource(resolvedSrc));
} catch (final IOException e) {
throw new ModelException(e);
}
}
else {
final Location location = reader.getLocation();
readParsedValue(reader, configuration, assign, false);
if (assign.getParsedValue() == null) {
// report missing expression (as most common use-case)
reportMissingAttribute(location, SCXMLConstants.ELEM_ASSIGN, SCXMLConstants.ATTR_EXPR);
}
}
assign.setParent(executable);
if (parent != null) {
parent.addAction(assign);
} else {
executable.addAction(assign);
}
}