Esempio n. 1
0
        private InjectionPlan CreateSetInjectionPlan <T>(INode n, IDictionary <INode, InjectionPlan> memo, ISet <T> entries)
        {
            ISet <InjectionPlan> plans = new MonotonicHashSet <InjectionPlan>();

            CreateInjectionPlanForCollectionElements(n, memo, entries, plans);
            return(new SetInjectionPlan(n, plans));
        }
Esempio n. 2
0
        public IClassHierarchy Merge(IClassHierarchy ch)
        {
            if (this == ch)
            {
                return(this);
            }

            if (!(ch is ClassHierarchyImpl))
            {
                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new NotSupportedException("Can't merge java and non-java class hierarchies yet!"), LOGGER);
            }

            if (this.assemblies.Count == 0)
            {
                return(ch);
            }

            ClassHierarchyImpl        chi       = (ClassHierarchyImpl)ch;
            MonotonicHashSet <string> otherJars = new MonotonicHashSet <string>();

            otherJars.AddAll(chi.assemblies);
            MonotonicHashSet <string> myJars = new MonotonicHashSet <string>();

            myJars.AddAll(this.assemblies);
            if (myJars.ContainsAll(otherJars))
            {
                return(this);
            }
            if (otherJars.ContainsAll(myJars))
            {
                return(ch);
            }
            myJars.AddAll(otherJars);
            return(new ClassHierarchyImpl(myJars.ToArray()));
        }
Esempio n. 3
0
        public ConfigurationModule Build()
        {
            ConfigurationModuleBuilder c = DeepCopy();

            if (!(c.reqUsed.ContainsAll(c.ReqDecl) && c.optUsed.ContainsAll(c.OptDecl)))
            {
                ISet <FieldInfo> fset = new MonotonicHashSet <FieldInfo>();
                foreach (FieldInfo f in c.ReqDecl)
                {
                    if (!c.reqUsed.Contains(f))
                    {
                        fset.Add(f);
                    }
                }
                foreach (FieldInfo f in c.OptDecl)
                {
                    if (!c.optUsed.Contains(f))
                    {
                        fset.Add(f);
                    }
                }
                var e = new ClassHierarchyException(
                    "Found declared options that were not used in binds: "
                    + ToString(fset));
                Utilities.Diagnostics.Exceptions.Throw(e, LOGGER);
            }
            foreach (Type clz in c.lateBindClazz.Keys)
            {
                try
                {
                    c.B.Bind(ReflectionUtilities.GetAssemblyQualifiedName(clz), c.lateBindClazz.Get(clz));
                }
                catch (NameResolutionException e)
                {
                    Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER);
                    var ex = new ClassHierarchyException("ConfigurationModule refers to unknown class: " + c.lateBindClazz.Get(clz), e);
                    Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
                }
                catch (BindException e)
                {
                    Utilities.Diagnostics.Exceptions.Caught(e, Level.Error, LOGGER);
                    var ex = new ClassHierarchyException("bind failed while initializing ConfigurationModuleBuilder", e);
                    Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
                }
            }
            return(new ConfigurationModule(c));
        }
Esempio n. 4
0
        public IClassHierarchy Merge(IClassHierarchy ch)
        {
            if (this == ch) 
            { 
                return this; 
            }

            if (!(ch is ClassHierarchyImpl)) 
            {
                Utilities.Diagnostics.Exceptions.Throw(new NotSupportedException("Can't merge java and non-java class hierarchies yet!"), LOGGER);
            }

            if (this.assemblies.Count == 0) 
            {
                return ch;
            }

            lock (_mergeLock)
            {
                ClassHierarchyImpl chi = (ClassHierarchyImpl)ch;
                MonotonicHashSet<string> otherJars = new MonotonicHashSet<string>();
                otherJars.AddAll(chi.assemblies);
                MonotonicHashSet<string> myJars = new MonotonicHashSet<string>();
                myJars.AddAll(this.assemblies);
                if (myJars.ContainsAll(otherJars))
                {
                    return this;
                }
                if (otherJars.ContainsAll(myJars))
                {
                    return ch;
                }
                myJars.Union(otherJars);
                return new ClassHierarchyImpl(myJars.ToArray());
            }
        }
Esempio n. 5
0
        public IConfiguration Build()
        {
            ConfigurationModule c = DeepCopy();

            if (!c.reqSet.ContainsAll(c.Builder.ReqDecl))
            {
                ISet <FieldInfo> missingSet = new MonotonicHashSet <FieldInfo>();
                foreach (FieldInfo f in c.Builder.ReqDecl)
                {
                    if (!c.reqSet.Contains(f))
                    {
                        missingSet.Add(f);
                    }
                }
                var e = new BindException(
                    "Attempt to build configuration before setting required option(s): "
                    + Builder.ToString(missingSet));
                Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(e, LOGGER);
            }

            foreach (Type clazz in c.Builder.FreeImpls.Keys)
            {
                object i = c.Builder.FreeImpls.Get(clazz);
                if (c.setImpls.ContainsKey(i))
                {
                    var cb = (ICsInternalConfigurationBuilder)c.Builder.B;
                    cb.Bind(clazz, c.setImpls.Get(i));
                }
                else if (c.setLateImpls.ContainsKey(i))
                {
                    c.Builder.B.Bind(ReflectionUtilities.GetAssemblyQualifiedName(clazz), c.setLateImpls.Get(i));
                }
                else if (c.setImplSets.ContainsKey(i) || c.setLateImplSets.ContainsKey(i))
                {
                    foreach (Type clz in c.setImplSets.GetValuesForKey(i))
                    {
                        ICsInternalConfigurationBuilder b = (ICsInternalConfigurationBuilder)c.Builder.B;
                        b.BindSetEntry(clazz, clz);
                    }
                    foreach (string s in c.setLateImplSets.GetValuesForKey(i))
                    {
                        ICsInternalConfigurationBuilder b = (ICsInternalConfigurationBuilder)c.Builder.B;
                        b.BindSetEntry(clazz, s);
                    }
                }
                else if (c.setImplLists.ContainsKey(i))
                {
                    ICsConfigurationBuilder b = (ICsConfigurationBuilder)c.Builder.B;
                    b.BindList(clazz, setImplLists.Get(i));
                }
                else if (c.setLateImplLists.ContainsKey(i))
                {
                    ICsInternalConfigurationBuilder b = (ICsInternalConfigurationBuilder)c.Builder.B;
                    b.BindList(clazz, setLateImplLists.Get(i));
                }
            }

            foreach (Type clazz in c.Builder.FreeParams.Keys)
            {
                object p        = c.Builder.FreeParams.Get(clazz);
                string s        = c.setParams.Get(p);
                bool   foundOne = false;
                if (s != null)
                {
                    ICsConfigurationBuilder cb = c.Builder.B;
                    cb.BindNamedParameter(clazz, s);
                    foundOne = true;
                }

                IList <string> paramListStr = c.setParamLists.Get(p);
                if (paramListStr != null)
                {
                    ICsInternalConfigurationBuilder b = (ICsInternalConfigurationBuilder)c.Builder.B;
                    b.BindList(clazz, paramListStr);
                    foundOne = true;
                }

                foreach (string paramStr in c.setParamSets.GetValuesForKey(p))
                {
                    ICsInternalConfigurationBuilder b = (ICsInternalConfigurationBuilder)c.Builder.B;
                    b.BindSetEntry(clazz, paramStr);
                    foundOne = true;
                }

                if (!foundOne)
                {
                    if (!ReflectionUtilities.IsInstanceOfGeneric(p, typeof(OptionalParameter <>)))
                    {
                        Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new IllegalStateException(), LOGGER);
                    }
                }
            }
            return(c.Builder.B.Build());
        }