コード例 #1
0
ファイル: AvroClassHierarchy.cs プロジェクト: shulmanb/reef
        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);
            }
        }
コード例 #2
0
        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);
        }