private void ParseSubHierarchy(INode parent, AvroNode n) { INode parsed = null; if (n.packageNode != null && !n.packageNode.Equals(string.Empty)) { parsed = new PackageNodeImpl(parent, n.name, n.fullName); } else if (n.namedParameterNode != null && !n.namedParameterNode.Equals(string.Empty)) { AvroNamedParameterNode np = (AvroNamedParameterNode)n.namedParameterNode; parsed = new NamedParameterNodeImpl(parent, n.name, n.fullName, np.fullArgClassName, np.simpleArgClassName, np.isSet, np.isList, np.documentation, np.shortName, np.instanceDefault.ToArray()); } else if (n.classNode != null && !n.classNode.Equals(string.Empty)) { AvroClassNode cn = (AvroClassNode)n.classNode; IList <IConstructorDef> injectableConstructors = new List <IConstructorDef>(); IList <IConstructorDef> allConstructors = new List <IConstructorDef>(); foreach (AvroConstructorDef injectable in cn.injectableConstructors) { IConstructorDef def = ParseConstructorDef(injectable, true); injectableConstructors.Add(def); allConstructors.Add(def); } foreach (AvroConstructorDef other in cn.otherConstructors) { IConstructorDef def = ParseConstructorDef(other, false); allConstructors.Add(def); } parsed = new ClassNodeImpl(parent, n.name, n.fullName, cn.isUnit, cn.isInjectionCandidate, cn.isExternalConstructor, injectableConstructors, allConstructors, cn.defaultImplementation); } else { Utilities.Diagnostics.Exceptions.Throw(new IllegalStateException("Bad protocol buffer: got abstract node" + n), LOGGER); } foreach (AvroNode child in n.children) { ParseSubHierarchy(parsed, child); } }
private AvroNode NewNamedParameterNode(string name, string fullName, string simpleArgClassName, string fullArgClassName, bool isSet, bool isList, string documentation, // can be null string shortName, // can be null string[] instanceDefault, // can be null IList <AvroNode> children) { AvroNamedParameterNode namedParameterNode = new AvroNamedParameterNode(); namedParameterNode.simpleArgClassName = simpleArgClassName; namedParameterNode.fullArgClassName = fullArgClassName; namedParameterNode.isSet = isSet; namedParameterNode.isList = isList; if (documentation != null) { namedParameterNode.documentation = documentation; } if (shortName != null) { namedParameterNode.shortName = shortName; } namedParameterNode.instanceDefault = new List <string>(); foreach (var id in instanceDefault) { namedParameterNode.instanceDefault.Add(id); } AvroNode n = new AvroNode(); n.name = name; n.fullName = fullName; n.namedParameterNode = namedParameterNode; n.children = new List <AvroNode>(); foreach (var c in children) { n.children.Add(c); } return(n); }