//TimerNode, Seconds, Int32 public static INamedParameterNode CreateNamedParameterNode(INode parent, Type type, Type argType) { Type argRawClass = ReflectionUtilities.GetRawClass(argType); bool isSet = false; //TODO string simpleName = type.Name; string fullName = type.FullName; string fullArgName = argType.FullName; string simpleArgName = argType.Name; NamedParameterAttribute namedParameter = type.GetCustomAttribute <NamedParameterAttribute>(); //if (namedParameter == null) //{ // throw new IllegalStateException("Got name without named parameter post-validation!"); //} string[] defaultInstanceAsStrings = new string[] {}; string documentation = namedParameter.Documentation; string shortName = namedParameter.ShortName; return(new NamedParameterNodeImpl(parent, simpleName, fullName, fullArgName, simpleArgName, isSet, documentation, shortName, defaultInstanceAsStrings)); }
public void Ctor_WhenCalled_SetsProperties() { // arrange, act var sut = new NamedParameterAttribute("name", "value"); // assert Assert.Equal("name", sut.Name); Assert.Equal("value", sut.ValuePlaceholderText); }
public static INamedParameterNode CreateNamedParameterNode(INode parent, Type clazz, Type argClass) { Type setRawArgType = ReflectionUtilities.GetInterfaceTarget(typeof(ISet <>), argClass); bool isSet = setRawArgType != null; if (isSet) { argClass = setRawArgType; } Type listRawArgType = ReflectionUtilities.GetInterfaceTargetForType(typeof(IList <>), argClass); bool isList = listRawArgType != null; if (isList) { argClass = listRawArgType; } string simpleName = ReflectionUtilities.GetName(clazz); string fullName = ReflectionUtilities.GetAssemblyQualifiedName(clazz); string fullArgName = ReflectionUtilities.GetAssemblyQualifiedName(argClass); string simpleArgName = ReflectionUtilities.GetName(argClass); NamedParameterAttribute namedParameter = clazz.GetCustomAttribute <NamedParameterAttribute>(); if (namedParameter == null) { Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new IllegalStateException("Got name without named parameter post-validation!"), LOGGER); } bool hasStringDefault, hasClassDefault, hasStringSetDefault, hasClassSetDefault; int default_count = 0; if (namedParameter.DefaultValue == null || namedParameter.DefaultValue.Equals(NamedParameterAttribute.ReefUninitializedValue)) { hasStringDefault = false; } else { hasStringDefault = true; default_count++; } if (namedParameter.DefaultClass != null /*Void.class*/) { hasClassDefault = true; default_count++; } else { hasClassDefault = false; } if (namedParameter.DefaultValues != null && namedParameter.DefaultValues.Length > 0) { hasStringSetDefault = true; default_count++; } else { hasStringSetDefault = false; } if (namedParameter.DefaultClasses != null && namedParameter.DefaultClasses.Length > 0) { hasClassSetDefault = true; default_count++; } else { hasClassSetDefault = false; } if (default_count > 1) { var e = new ClassHierarchyException("Named parameter " + fullName + " defines more than one of default_value, default_class, default_values and default_classes"); Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(e, LOGGER); } string[] defaultInstanceAsStrings = new string[] { }; if (default_count == 0) { defaultInstanceAsStrings = new string[] { }; } else if (hasClassDefault) { Type default_class = namedParameter.DefaultClass; AssertIsSubclassOf(clazz, default_class, argClass); defaultInstanceAsStrings = new string[] { ReflectionUtilities.GetAssemblyQualifiedName(default_class) }; } else if (hasStringDefault) { // Don't know if the string is a class or literal here, so don't bother validating. defaultInstanceAsStrings = new string[] { namedParameter.DefaultValue }; } else if (hasClassSetDefault) { Type[] clzs = namedParameter.DefaultClasses; defaultInstanceAsStrings = new string[clzs.Length]; for (int i = 0; i < clzs.Length; i++) { AssertIsSubclassOf(clazz, clzs[i], argClass); defaultInstanceAsStrings[i] = ReflectionUtilities.GetAssemblyQualifiedName(clzs[i]); } } else if (hasStringSetDefault) { defaultInstanceAsStrings = namedParameter.DefaultValues; } else { Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new IllegalStateException(), LOGGER); } string documentation = namedParameter.Documentation; string shortName = namedParameter.ShortName; if (namedParameter.ShortName != null && namedParameter.ShortName.Length == 0) { shortName = null; } return(new NamedParameterNodeImpl(parent, simpleName, fullName, fullArgName, simpleArgName, isSet, isList, documentation, shortName, defaultInstanceAsStrings, namedParameter.Alias, namedParameter.AliasLanguage)); }