Пример #1
0
        //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));
        }
Пример #2
0
        public void Ctor_WhenCalled_SetsProperties()
        {
            // arrange, act
            var sut = new NamedParameterAttribute("name", "value");

            // assert
            Assert.Equal("name", sut.Name);
            Assert.Equal("value", sut.ValuePlaceholderText);
        }
Пример #3
0
        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));
        }