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)); }
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())); }
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)); }
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()); } }
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()); }