Esempio n. 1
0
        protected internal override string GetDescription(MBeanOperationInfo info)
        {
            Description description = DescribeMethod(info);

            if (description != null)
            {
                return(description.value());
            }
            return(base.GetDescription(info));
        }
Esempio n. 2
0
        protected internal override int GetImpact(MBeanOperationInfo info)
        {
            Description description = DescribeMethod(info);

            if (description != null)
            {
                return(description.impact());
            }
            return(base.GetImpact(info));
        }
Esempio n. 3
0
        public MBeanInfo GetMBeanInfo()
        {
            if (_beanInfoDirty)
            {
                string description;
                if (_perfInstanceName != null)
                {
                    description = string.Format(CultureInfo.CurrentCulture, "Performance counter MBean for {0} of {1}.", _perfObjectName, _perfInstanceName);
                }
                else
                {
                    description = string.Format(CultureInfo.CurrentCulture, "Performance counter MBean for {0}.", _perfObjectName);
                }
                List <object> legalCountersToCreate = new List <object>();
                List <object> legalCountersToRemove = new List <object>();

                foreach (PerformanceCounter counter in _category.GetCounters(_perfInstanceName))
                {
                    if (_counters.ContainsKey(counter.CounterName))
                    {
                        legalCountersToRemove.Add(counter.CounterName);
                    }
                    else
                    {
                        legalCountersToCreate.Add(counter.CounterName);
                    }
                }

                MBeanOperationInfo addOperation =
                    MBean.MutatorOperation("AddPerformanceCounter", "Adds new performance counter")
                    .WithParameters(
                        MBean.Parameter("counterName", "Name of new counter")
                        .WithLimitedValues(legalCountersToCreate)
                        .TypedAs(SimpleType.String)
                        )
                    .Returning(SimpleType.Boolean)();

                MBeanOperationInfo removeOperation =
                    MBean.MutatorOperation("RemovePerformanceCounter", "Removes existing performance counter")
                    .WithParameters(
                        MBean.Parameter("counterName", "Name of new counter")
                        .WithLimitedValues(legalCountersToRemove)
                        .TypedAs(SimpleType.String)
                        )
                    .Returning(SimpleType.Boolean)();

                _beanInfo = MBean.Info(typeof(PerfCounterMBean).AssemblyQualifiedName, description)
                            .WithAttributes(GetCurrentAttributes)
                            .WithOperations(addOperation, removeOperation)
                            .AndNothingElse()();

                _beanInfoDirty = false;
            }
            return(_beanInfo);
        }
Esempio n. 4
0
 public OperationModelInfoType(MBeanOperationInfo operationInfo) : base(operationInfo)
 {
     Input  = operationInfo.Signature.Select(x => new ParameterModelInfoType(x)).ToArray();
     impact = "";
     if ((operationInfo.Impact & OperationImpact.Info) == OperationImpact.Info)
     {
         impact += "r";
     }
     if ((operationInfo.Impact & OperationImpact.Action) == OperationImpact.Action)
     {
         impact += "w";
     }
     if (impact.Length == 0)
     {
         impact = "unknown";
     }
     if (operationInfo.ReturnType != typeof(void).AssemblyQualifiedName)
     {
         Output = new ParameterModelInfoType(operationInfo.ReturnType);
     }
 }
 public OperationModelInfoType(MBeanOperationInfo operationInfo)
     : base(operationInfo)
 {
     Input = operationInfo.Signature.Select(x => new ParameterModelInfoType(x)).ToArray();
      impact = "";
      if ((operationInfo.Impact & OperationImpact.Info) == OperationImpact.Info)
      {
     impact += "r";
      }
      if ((operationInfo.Impact & OperationImpact.Action) == OperationImpact.Action)
      {
     impact += "w";
      }
      if (impact.Length == 0)
      {
     impact = "unknown";
      }
      if (operationInfo.ReturnType != typeof(void).AssemblyQualifiedName)
      {
     Output = new ParameterModelInfoType(operationInfo.ReturnType);
      }
 }
Esempio n. 6
0
 /// <summary>
 /// Creates new instance of <see cref="OpenMBeanOperationInfoSupport"/> wrapping provided <see cref="MBeanOperationInfo"/>.
 /// </summary>
 /// <param name="wrappedInfo"></param>
 public OpenMBeanOperationInfoSupport(MBeanOperationInfo wrappedInfo)
 {
     _wrappedInfo       = wrappedInfo;
     _wrappedParameters = _wrappedInfo.Signature.Select <MBeanParameterInfo, IOpenMBeanParameterInfo>(x => new OpenMBeanParameterInfoSupport(x)).ToList().AsReadOnly();
 }
Esempio n. 7
0
        public ProxyBean(MBeanInfo originalBeanInfo, ObjectName originalName, OpenTypeCache typeCache)
        {
            _originalName = originalName;
            _typeCache    = typeCache;

            List <MBeanAttributeInfo>   attributes   = new List <MBeanAttributeInfo>();
            List <MBeanOperationInfo>   operations   = new List <MBeanOperationInfo>();
            List <MBeanConstructorInfo> constructors = new List <MBeanConstructorInfo>();

            foreach (MBeanAttributeInfo attributeInfo in originalBeanInfo.Attributes)
            {
                if (attributeInfo.Readable)
                {
                    Type     attributeType = Type.GetType(attributeInfo.Type, true);
                    OpenType mappedType    = _typeCache.MapType(attributeType);
                    if (mappedType != null)
                    {
                        Descriptor descriptor = new Descriptor(); //TODO: Copty fields
                        descriptor.SetField(OpenTypeDescriptor.Field, mappedType);
                        MBeanAttributeInfo openInfo = new MBeanAttributeInfo(
                            attributeInfo.Name, attributeInfo.Description, mappedType.Representation.AssemblyQualifiedName,
                            attributeInfo.Readable, false, descriptor);
                        attributes.Add(openInfo);
                        _attributeTypes[attributeInfo.Name] = new OpenAndClrType(attributeType, mappedType);
                    }
                }
            }
            foreach (MBeanOperationInfo operationInfo in originalBeanInfo.Operations)
            {
                Type     returnType       = Type.GetType(operationInfo.ReturnType, true);
                OpenType mappedReturnType = _typeCache.MapType(returnType);
                if (mappedReturnType == null)
                {
                    continue;
                }
                Descriptor descriptor = new Descriptor();
                descriptor.SetField(OpenTypeDescriptor.Field, mappedReturnType);
                bool success = true;
                List <MBeanParameterInfo> openParameters = new List <MBeanParameterInfo>();
                foreach (MBeanParameterInfo parameterInfo in operationInfo.Signature)
                {
                    OpenType mappedParamType = _typeCache.MapType(Type.GetType(parameterInfo.Type, true));
                    if (mappedParamType == null || mappedParamType.Kind != OpenTypeKind.SimpleType)
                    {
                        success = false;
                        break;
                    }
                    Descriptor paramDescriptor = new Descriptor(); //TODO: Copy fields
                    paramDescriptor.SetField(OpenTypeDescriptor.Field, mappedParamType);
                    openParameters.Add(new MBeanParameterInfo(parameterInfo.Name, parameterInfo.Description,
                                                              mappedParamType.Representation.AssemblyQualifiedName,
                                                              paramDescriptor));
                }
                if (!success)
                {
                    continue;
                }
                MBeanOperationInfo openInfo = new MBeanOperationInfo(operationInfo.Name, operationInfo.Description,
                                                                     mappedReturnType.Representation.AssemblyQualifiedName,
                                                                     openParameters, operationInfo.Impact, descriptor);
                operations.Add(openInfo);
                _operationReturnTypes[operationInfo.Name] = new OpenAndClrType(returnType, mappedReturnType);
            }

            _info = new MBeanInfo(originalBeanInfo.ClassName, originalBeanInfo.Description,
                                  attributes, constructors, operations, originalBeanInfo.Notifications);
        }
Esempio n. 8
0
        public ProxyBean(MBeanInfo originalBeanInfo, ObjectName originalName, OpenTypeCache typeCache)
        {
            _originalName = originalName;
             _typeCache = typeCache;

             List<MBeanAttributeInfo> attributes = new List<MBeanAttributeInfo>();
             List<MBeanOperationInfo> operations = new List<MBeanOperationInfo>();
             List<MBeanConstructorInfo> constructors = new List<MBeanConstructorInfo>();

             foreach (MBeanAttributeInfo attributeInfo in originalBeanInfo.Attributes)
             {
            if (attributeInfo.Readable)
            {
               Type attributeType = Type.GetType(attributeInfo.Type, true);
               OpenType mappedType = _typeCache.MapType(attributeType);
               if (mappedType != null)
               {
                  Descriptor descriptor = new Descriptor(); //TODO: Copty fields
                  descriptor.SetField(OpenTypeDescriptor.Field, mappedType);
                  MBeanAttributeInfo openInfo = new MBeanAttributeInfo(
                     attributeInfo.Name, attributeInfo.Description, mappedType.Representation.AssemblyQualifiedName,
                     attributeInfo.Readable, false, descriptor);
                  attributes.Add(openInfo);
                  _attributeTypes[attributeInfo.Name] = new OpenAndClrType(attributeType, mappedType);
               }
            }
             }
             foreach (MBeanOperationInfo operationInfo in originalBeanInfo.Operations)
             {
            Type returnType = Type.GetType(operationInfo.ReturnType, true);
            OpenType mappedReturnType = _typeCache.MapType(returnType);
            if (mappedReturnType == null)
            {
               continue;
            }
            Descriptor descriptor = new Descriptor();
            descriptor.SetField(OpenTypeDescriptor.Field, mappedReturnType);
            bool success = true;
            List<MBeanParameterInfo> openParameters = new List<MBeanParameterInfo>();
            foreach (MBeanParameterInfo parameterInfo in operationInfo.Signature)
            {
               OpenType mappedParamType = _typeCache.MapType(Type.GetType(parameterInfo.Type, true));
               if (mappedParamType == null || mappedParamType.Kind != OpenTypeKind.SimpleType)
               {
                  success = false;
                  break;
               }
               Descriptor paramDescriptor = new Descriptor(); //TODO: Copy fields
               paramDescriptor.SetField(OpenTypeDescriptor.Field, mappedParamType);
               openParameters.Add(new MBeanParameterInfo(parameterInfo.Name, parameterInfo.Description,
                                                         mappedParamType.Representation.AssemblyQualifiedName,
                                                         paramDescriptor));
            }
            if (!success)
            {
               continue;
            }
            MBeanOperationInfo openInfo = new MBeanOperationInfo(operationInfo.Name, operationInfo.Description,
                                                                 mappedReturnType.Representation.AssemblyQualifiedName,
                                                                 openParameters, operationInfo.Impact, descriptor);
            operations.Add(openInfo);
            _operationReturnTypes[operationInfo.Name] = new OpenAndClrType(returnType, mappedReturnType);
             }

             _info = new MBeanInfo(originalBeanInfo.ClassName, originalBeanInfo.Description,
                                          attributes, constructors, operations, originalBeanInfo.Notifications);
        }
 public MBeanInternalOperationInfo(MethodInfo method, IMBeanInfoFactory factory)
 {
     _methodInfo = method;
      _operationInfo = factory.CreateMBeanOperationInfo(method);
 }
        private void CreateMBeanInfo()
        {
            bool needsMinMaxResetOperation            = false;
            IList <MBeanAttributeInfo> attributesInfo = new AList <MBeanAttributeInfo>();

            MBeanOperationInfo[] operationsInfo = null;
            numEntriesInRegistry = metricsRegistry.Size();
            foreach (MetricsBase o in metricsRegistry.GetMetricsList())
            {
                if (typeof(MetricsTimeVaryingRate).IsInstanceOfType(o))
                {
                    // For each of the metrics there are 3 different attributes
                    attributesInfo.AddItem(new MBeanAttributeInfo(o.GetName() + NumOps, "java.lang.Integer"
                                                                  , o.GetDescription(), true, false, false));
                    attributesInfo.AddItem(new MBeanAttributeInfo(o.GetName() + AvgTime, "java.lang.Long"
                                                                  , o.GetDescription(), true, false, false));
                    attributesInfo.AddItem(new MBeanAttributeInfo(o.GetName() + MinTime, "java.lang.Long"
                                                                  , o.GetDescription(), true, false, false));
                    attributesInfo.AddItem(new MBeanAttributeInfo(o.GetName() + MaxTime, "java.lang.Long"
                                                                  , o.GetDescription(), true, false, false));
                    needsMinMaxResetOperation = true;
                    // the min and max can be reset.
                    // Note the special attributes (AVG_TIME, MIN_TIME, ..) are derived from metrics
                    // Rather than check for the suffix we store them in a map.
                    metricsRateAttributeMod[o.GetName() + NumOps]  = o;
                    metricsRateAttributeMod[o.GetName() + AvgTime] = o;
                    metricsRateAttributeMod[o.GetName() + MinTime] = o;
                    metricsRateAttributeMod[o.GetName() + MaxTime] = o;
                }
                else
                {
                    if (typeof(MetricsIntValue).IsInstanceOfType(o) || typeof(MetricsTimeVaryingInt).
                        IsInstanceOfType(o))
                    {
                        attributesInfo.AddItem(new MBeanAttributeInfo(o.GetName(), "java.lang.Integer", o
                                                                      .GetDescription(), true, false, false));
                    }
                    else
                    {
                        if (typeof(MetricsLongValue).IsInstanceOfType(o) || typeof(MetricsTimeVaryingLong
                                                                                   ).IsInstanceOfType(o))
                        {
                            attributesInfo.AddItem(new MBeanAttributeInfo(o.GetName(), "java.lang.Long", o.GetDescription
                                                                              (), true, false, false));
                        }
                        else
                        {
                            MetricsUtil.Log.Error("unknown metrics type: " + o.GetType().FullName);
                        }
                    }
                }
                if (needsMinMaxResetOperation)
                {
                    operationsInfo = new MBeanOperationInfo[] { new MBeanOperationInfo(ResetAllMinMaxOp
                                                                                       , "Reset (zero) All Min Max", null, "void", MBeanOperationInfo.Action) };
                }
            }
            MBeanAttributeInfo[] attrArray = new MBeanAttributeInfo[attributesInfo.Count];
            mbeanInfo = new MBeanInfo(this.GetType().FullName, mbeanDescription, Collections.ToArray
                                          (attributesInfo, attrArray), null, operationsInfo, null);
        }
Esempio n. 11
0
 public MBeanInternalOperationInfo(MethodInfo method, IMBeanInfoFactory factory)
 {
     _methodInfo    = method;
     _operationInfo = factory.CreateMBeanOperationInfo(method);
 }