//parameterParsers are classes that extends from IExternalConstructor
        public ClassHierarchyImpl(string[] assemblies, Type[] parameterParsers)
        {
            this.assemblies = assemblies;
            rootNode        = NodeFactory.CreateRootPackageNode();
            loader          = new AssemblyLoader(assemblies);

            foreach (Type p in parameterParsers) //p must be extend from IExternalConstructor
            {
                try
                {
                    Parameterparser.AddParser(p);
                }
                catch (BindException e)
                {
                    Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER);
                    Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentException("Could not register parameter parsers", e), LOGGER);
                }
            }

            foreach (var a in loader.Assemblies)
            {
                foreach (var t in a.GetTypes())
                {
                    RegisterType(t);
                }
            }
        }
Example #2
0
        // parameterParsers are classes that extends from IExternalConstructor
        public ClassHierarchyImpl(string[] assemblies, Type[] parameterParsers)
        {
            this.assemblies = assemblies;
            rootNode        = NodeFactory.CreateRootPackageNode();
            loader          = new AssemblyLoader(assemblies);

            foreach (Type p in parameterParsers)
            {
                // p must be extend from IExternalConstructor
                try
                {
                    Parameterparser.AddParser(p);
                }
                catch (BindException e)
                {
                    Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER);
                    Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentException("Could not register parameter parsers", e), LOGGER);
                }
            }

            foreach (var a in loader.Assemblies)
            {
                Type[] types;
                try
                {
                    types = a.GetTypes();
                }
                catch (ReflectionTypeLoadException exception)
                {
                    LOGGER.Log(Level.Warning,
                               "GetTypes failed for assembly: {0} LoaderExceptions: {1}",
                               a,
                               string.Join <Exception>("; ", exception.LoaderExceptions));
                    continue;
                }

                foreach (var t in types)
                {
                    try
                    {
                        RegisterType(t);
                    }
                    catch (FileNotFoundException exception)
                    {
                        LOGGER.Log(Level.Warning, "Could not register type: {0} Exception: {1}", t, exception);
                    }
                }
            }
        }