- private void processChoiceNode(
- final Iterable<? extends DataSchemaNode> nodes, final String parentName, final ObjectNode definitions,
- final DefinitionNames definitionNames, final boolean isConfig,
- final SchemaInferenceStack stack, final ObjectNode properties, final OAversion oaversion)
- throws IOException {
- for (final DataSchemaNode node : nodes) {
- stack.enterSchemaTree(node.getQName());
- /*
- Add module name prefix to property name, when needed, when ServiceNow can process colons,
- use RestDocGenUtil#resolveNodesName for creating property name
- */
- final String name = node.getQName().getLocalName();
- final ObjectNode property;
-
- /*
- Ignore mandatoriness(passing unreferenced arrayNode to process...Node), because choice produces multiple
- properties
- */
- if (node instanceof LeafSchemaNode) {
- processLeafNode((LeafSchemaNode) node, name, properties,
- JsonNodeFactory.instance.arrayNode(), stack, definitions, definitionNames, oaversion);
- } else if (node instanceof AnyxmlSchemaNode) {
- processAnyXMLNode((AnyxmlSchemaNode) node, name, properties,
- JsonNodeFactory.instance.arrayNode());
- } else if (node instanceof AnydataSchemaNode) {
- processAnydataNode((AnydataSchemaNode) node, name, properties,
- JsonNodeFactory.instance.arrayNode());
- } else {
- if (node instanceof ListSchemaNode || node instanceof ContainerSchemaNode) {
- property = processDataNodeContainer((DataNodeContainer) node, parentName, definitions,
- definitionNames, isConfig, stack, oaversion);
- if (!isConfig) {
- processActionNodeContainer(node, parentName, definitions, definitionNames, stack,
- oaversion);
- }
- } else if (node instanceof LeafListSchemaNode) {
- property = processLeafListNode((LeafListSchemaNode) node, stack, definitions,
- definitionNames, oaversion);
-
- } else if (node instanceof ChoiceSchemaNode) {
- for (final CaseSchemaNode variant : ((ChoiceSchemaNode) node).getCases()) {
- processChoiceNode(variant.getChildNodes(), parentName, definitions, definitionNames, isConfig,
- stack, properties, oaversion);
- }
- continue;
- } else {
- throw new IllegalArgumentException("Unknown DataSchemaNode type: " + node.getClass());
- }
- properties.set(name, property);
- }
- stack.exit();
- }
- }
-