public Object construct()

in extension-base/src/main/java/com/azure/autorest/extension/base/model/codemodel/CodeModelCustomConstructor.java [77:319]


        public Object construct(Node node) {
            MappingNode mappingNode = (MappingNode) node;
            for (NodeTuple tuple : mappingNode.getValue()) {
                ScalarNode key = (ScalarNode) tuple.getKeyNode();
                switch (key.getValue()) {
                    case "arrays": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ArraySchema.class);
                        break;
                    }
                    case "ands": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(AndSchema.class);
                        break;
                    }
                    case "ors": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(OrSchema.class);
                        break;
                    }
                    case "xors": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(XorSchema.class);
                        break;
                    }
                    case "objects": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ObjectSchema.class);
                        break;
                    }
                    case "choices": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ChoiceSchema.class);
                        break;
                    }
                    case "parameterGroups": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ParameterGroupSchema.class);
                        break;
                    }
                    case "sealedChoices": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(SealedChoiceSchema.class);
                        break;
                    }
                    case "flags": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(FlagSchema.class);
                        break;
                    }
                    case "dictionaries": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(DictionarySchema.class);
                        break;
                    }
                    case "constants": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ConstantSchema.class);
                        break;
                    }
                    case "primitives": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(Object.class);
                        break;
                    }
                    case "properties": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(Property.class);
                        break;
                    }
                    case "binaries": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(BinarySchema.class);
                        break;
                    }
                    case "booleans": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(BooleanSchema.class);
                        break;
                    }
                    case "bytearrays": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ByteArraySchema.class);
                        break;
                    }
                    case "numbers": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(NumberSchema.class);
                        break;
                    }
                    case "uris": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(UriSchema.class);
                        break;
                    }
                    case "anyObjects":
                    case "any": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(AnySchema.class);
                        break;
                    }
                    case "times": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(TimeSchema.class);
                        break;
                    }
                    case "armIds": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(ArmIdSchema.class);
                        break;
                    }
                    case "requests": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(Request.class);
                        break;
                    }
                    case "exceptions":
                    case "responses": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        value.setListType(Response.class);
                        break;
                    }
                    case "immediate":
                    case "all":
                        if (tuple.getValueNode() instanceof SequenceNode) {
                            SequenceNode value = (SequenceNode) tuple.getValueNode();
                            for (Node item : value.getValue()) {
                                item.setType(getSchemaTypeFromMappingNode((MappingNode) item));
                            }
                            break;
                        } else if (tuple.getValueNode() instanceof MappingNode) {
                            MappingNode value = (MappingNode) tuple.getValueNode();
                            for (NodeTuple item : value.getValue()) {
                                item.getValueNode()
                                    .setType(getSchemaTypeFromMappingNode((MappingNode) (item.getValueNode())));
                            }
                            break;
                        }
                    case "allOf": {
                        SequenceNode value = (SequenceNode) tuple.getValueNode();
                        for (Node item : value.getValue()) {
                            item.setType(getSchemaTypeFromMappingNode((MappingNode) item));
                        }
                        break;
                    }
                    case "choiceType":
                    case "elementType":
                    case "valueType":
                    case "schema": {
                        MappingNode value = (MappingNode) tuple.getValueNode();
                        value.setType(getSchemaTypeFromMappingNode(value));
                        break;
                    }
                    case "extensions": {
                        MappingNode value = (MappingNode) tuple.getValueNode();
                        List<NodeTuple> actualValues = new ArrayList<>();
                        for (NodeTuple extension : value.getValue()) {
                            ScalarNode keyNode = (ScalarNode) extension.getKeyNode();
                            if ("x-ms-pageable".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsPageable", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-skip-url-encoding".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsSkipUrlEncoding", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-client-flatten".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsClientFlatten", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-long-running-operation".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsLongRunningOperation", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-flattened".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsFlattened", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-azure-resource".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsAzureResource", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-mutability".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsMutability", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-header-collection-prefix".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsHeaderCollectionPrefix",
                                        keyNode.getStartMark(), keyNode.getEndMark(), keyNode.getScalarStyle()),
                                    extension.getValueNode()));
                            } else if ("x-internal-autorest-anonymous-schema".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsInternalAutorestAnonymousSchema",
                                        keyNode.getStartMark(), keyNode.getEndMark(), keyNode.getScalarStyle()),
                                    extension.getValueNode()));
                            } else if ("x-ms-long-running-operation-options".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsLongRunningOperationOptions",
                                        keyNode.getStartMark(), keyNode.getEndMark(), keyNode.getScalarStyle()),
                                    extension.getValueNode()));
                            } else if ("x-ms-examples".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsExamples", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-arm-id-details".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsArmIdDetails", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-secret".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsSecret", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else if ("x-ms-versioning-added".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "xmsVersioningAdded", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            } else {
                                // handle properties that do not contain hyphen in name
                                actualValues.add(new NodeTuple(keyNode, extension.getValueNode()));
                            }
                        }
                        value.setValue(actualValues);
                        break;
                    }
                    case "xmsLongRunningOperationOptions": {
                        MappingNode value = (MappingNode) tuple.getValueNode();
                        List<NodeTuple> actualValues = new ArrayList<>();
                        for (NodeTuple extension : value.getValue()) {
                            ScalarNode keyNode = (ScalarNode) extension.getKeyNode();
                            if ("final-state-via".equals(keyNode.getValue())) {
                                actualValues.add(new NodeTuple(
                                    new ScalarNode(keyNode.getTag(), "finalStateVia", keyNode.getStartMark(),
                                        keyNode.getEndMark(), keyNode.getScalarStyle()), extension.getValueNode()));
                            }
                        }
                        value.setValue(actualValues);
                        break;
                    }
                }
            }
            return super.construct(mappingNode);
        }