protected internal override string GetDescription(MBeanOperationInfo info) { Description description = DescribeMethod(info); if (description != null) { return(description.value()); } return(base.GetDescription(info)); }
protected internal override int GetImpact(MBeanOperationInfo info) { Description description = DescribeMethod(info); if (description != null) { return(description.impact()); } return(base.GetImpact(info)); }
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); }
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); } }
/// <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(); }
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 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); }