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);
}