public ConfigurationModuleBuilder BindList <U, T>(GenericType <U> iface, IList <string> impl) where U : Name <IList <T> > { ConfigurationModuleBuilder c = DeepCopy(); try { ICsInternalConfigurationBuilder b = (ICsInternalConfigurationBuilder)c.B; b.BindList(typeof(U), impl); } catch (BindException ex) { Utilities.Diagnostics.Exceptions.CaughtAndThrow(new ClassHierarchyException("Error in BindList: " + ex), Level.Error, LOGGER); } return(c); }
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()); }