Exemplo n.º 1
0
        private static MBeanParameterInfo CreateMBeanParameterInfo(ParameterInfo info)
        {
            Descriptor descriptor = new Descriptor();
            OpenType   openType   = OpenType.CreateOpenType(info.ParameterType);

            descriptor.SetField(OpenTypeDescriptor.Field, openType);
            object[] tmp = info.GetCustomAttributes(typeof(OpenMBeanAttributeAttribute), false);
            if (tmp.Length > 0)
            {
                OpenMBeanAttributeAttribute attr = (OpenMBeanAttributeAttribute)tmp[0];
                if (attr.LegalValues != null && (attr.MinValue != null || attr.MaxValue != null))
                {
                    throw new OpenDataException("Cannot specify both min/max values and legal values.");
                }
                IComparable defaultValue = (IComparable)attr.DefaultValue;
                OpenInfoUtils.ValidateDefaultValue(openType, defaultValue);
                descriptor.SetField(DefaultValueDescriptor.Field, defaultValue);
                if (attr.LegalValues != null)
                {
                    OpenInfoUtils.ValidateLegalValues(openType, attr.LegalValues);
                    descriptor.SetField(LegalValuesDescriptor.Field, attr.LegalValues);
                }
                else
                {
                    OpenInfoUtils.ValidateMinMaxValue(openType, defaultValue, attr.MinValue, attr.MaxValue);
                    descriptor.SetField(MinValueDescriptor.Field, attr.MinValue);
                    descriptor.SetField(MaxValueDescriptor.Field, attr.MaxValue);
                }
            }
            return(new MBeanParameterInfo(info.Name,
                                          InfoUtils.GetDescrition(info.Member, info, "MBean operation parameter", info.Name),
                                          openType.Representation.AssemblyQualifiedName, descriptor));
        }
Exemplo n.º 2
0
 public MBeanOperationInfo CreateMBeanOperationInfo(MethodInfo info)
 {
     return(new MBeanOperationInfo(info.Name, InfoUtils.GetDescrition(info, info, "MBean operation"),
                                   info.ReturnType != null ? info.ReturnType.AssemblyQualifiedName : null,
                                   info.GetParameters().Select(x => CreateMBeanParameterInfo(x)),
                                   OperationImpact.Unknown));
 }
Exemplo n.º 3
0
 public MBeanInfo CreateMBeanInfo(Type intfType, System.Collections.Generic.IEnumerable <MBeanAttributeInfo> attributes, System.Collections.Generic.IEnumerable <MBeanConstructorInfo> constructors, System.Collections.Generic.IEnumerable <MBeanOperationInfo> operations, System.Collections.Generic.IEnumerable <MBeanNotificationInfo> notifications)
 {
     return(new MBeanInfo(intfType.AssemblyQualifiedName,
                          InfoUtils.GetDescrition(intfType, intfType, "Open MBean"),
                          attributes,
                          constructors,
                          operations, notifications));
 }
Exemplo n.º 4
0
        public MBeanNotificationInfo CreateMBeanNotificationInfo(EventInfo info, Type handlerType)
        {
            MBeanNotificationAttribute attribute =
                (MBeanNotificationAttribute)info.GetCustomAttributes(typeof(MBeanNotificationAttribute), true)[0];

            return(new MBeanNotificationInfo(new[] { attribute.NotifType },
                                             handlerType.GetGenericArguments()[0].AssemblyQualifiedName,
                                             InfoUtils.GetDescrition(info, info, "MBean notification")));
        }
Exemplo n.º 5
0
        public MBeanOperationInfo CreateMBeanOperationInfo(MethodInfo info)
        {
            Descriptor descriptor = new Descriptor();

            object[] attrTmp = info.GetCustomAttributes(typeof(OpenMBeanOperationAttribute), false);
            if (attrTmp.Length == 0)
            {
                throw new OpenDataException("Open MBean operation have to have its impact specified.");
            }
            OpenMBeanOperationAttribute attr = (OpenMBeanOperationAttribute)attrTmp[0];

            if (attr.Impact == OperationImpact.Unknown)
            {
                throw new OpenDataException("Open MBean operation have to have its impact specified.");
            }
            OpenType openType = info.ReturnType != null?OpenType.CreateOpenType(info.ReturnType) : SimpleType.Void;

            descriptor.SetField(OpenTypeDescriptor.Field, openType);
            return(new MBeanOperationInfo(info.Name, InfoUtils.GetDescrition(info, info, "MBean operation"),
                                          openType.Representation.AssemblyQualifiedName,
                                          info.GetParameters().Select(x => CreateMBeanParameterInfo(x)), attr.Impact,
                                          descriptor));
        }
Exemplo n.º 6
0
 public MBeanConstructorInfo CreateMBeanConstructorInfo(ConstructorInfo info)
 {
     return(new MBeanConstructorInfo(info.Name, InfoUtils.GetDescrition(info, info, "MBean constructor"),
                                     info.GetParameters().Select(x => CreateMBeanParameterInfo(x))));
 }
Exemplo n.º 7
0
 private static MBeanParameterInfo CreateMBeanParameterInfo(ParameterInfo info)
 {
     return(new MBeanParameterInfo(info.Name,
                                   InfoUtils.GetDescrition(info.Member, info, "MBean operation parameter", info.Name),
                                   info.ParameterType.AssemblyQualifiedName));
 }
Exemplo n.º 8
0
 public MBeanAttributeInfo CreateMBeanAttributeInfo(PropertyInfo info)
 {
     return(new MBeanAttributeInfo(info.Name, InfoUtils.GetDescrition(info, info, "MBean attribute"),
                                   info.PropertyType.AssemblyQualifiedName, info.CanRead, info.CanWrite));
 }