String nameStr = "";
NodeList nameList = (NodeList) xpath.evaluate("./ns1:name/text()",
document.getDocumentElement(), XPathConstants.NODESET);
if (null != nameList && 1 < nameList.getLength()) {
throw new XPathExpressionException("<faces-config> must have at most one <name> element.");
}
if (null != nameList && 1 == nameList.getLength()) {
nameStr = nameList.item(0).getNodeValue().trim();
if (0 < nameStr.length()) {
ApplicationAssociate associate = ApplicationAssociate.getInstance(context.getExternalContext());
try {
associate.relateUrlToDefiningDocumentInJar(definingDocumentURI.toURL(), nameStr);
} catch (MalformedURLException ex) {
throw new XPathExpressionException(ex);
}
}
}
for (int c = 0, size = flowDefinitions.getLength(); c < size; c++) {
Node flowDefinition = flowDefinitions.item(c);
String flowId = getIdAttribute(flowDefinition);
String uriStr = definingDocumentURI.toASCIIString();
if (uriStr.endsWith(RIConstants.FLOW_DEFINITION_ID_SUFFIX)) {
nameStr = "";
}
FlowBuilderImpl flowBuilder = new FlowBuilderImpl(context);
flowBuilder.id(nameStr, flowId);
processViews(xpath, flowDefinition, flowBuilder);
processNavigationRules(xpath, flowDefinition, flowBuilder);
processReturns(xpath, flowDefinition, flowBuilder);
processInboundParameters(xpath, flowDefinition, flowBuilder);
processFlowCalls(xpath, flowDefinition, flowBuilder);
processSwitches(xpath, flowDefinition, flowBuilder);
processMethodCalls(context, xpath, flowDefinition, flowBuilder);
processInitializerFinalizer(xpath, flowDefinition, flowBuilder);
String startNodeId = processStartNode(xpath, flowDefinition, flowBuilder);
if (null != startNodeId) {
FlowImpl toAdd = flowBuilder._getFlow();
FlowNode startNode = toAdd.getNode(startNodeId);
if (null == startNode) {
throw new XPathExpressionException("Unable to find flow node with id " + startNodeId + " to mark as start node");
} else {
toAdd.setStartNodeId(startNodeId);
}
} else {
flowBuilder.viewNode(flowId, "/" + flowId + "/" + flowId + ".xhtml").markAsStartNode();