Skip to content
This repository has been archived by the owner on Dec 14, 2017. It is now read-only.

Commit

Permalink
Safer naming and the addition of metadata mbean registration.
Browse files Browse the repository at this point in the history
  • Loading branch information
gorzell committed Mar 23, 2012
1 parent fe9b883 commit 182a07d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 17 deletions.
Expand Up @@ -84,24 +84,27 @@ public JmxMetric(String registryName, MetricName metricName, Metric obj) throws
}

private ObjectName createObjectName(String registryName, MetricName metricName, String field) {
StringBuilder buf = new StringBuilder();
buf.append((registryName == null) ? "default" : registryName)
.append(":group=")
.append(metricName.getType())
.append(",type=")
.append(metricName.getGroup())
.append(",name=")
.append(metricName.getName())
.append(",scope=")
.append(metricName.getScope());

String name = buf.toString();
StringBuilder nameBuilder = new StringBuilder();
nameBuilder.append((registryName == null) ? "DefaultMetricRegistry" : registryName)
.append(":type=")
.append(metricName.getType());

addIfNotNull(nameBuilder, "group", metricName.getGroup());
addIfNotNull(nameBuilder, "name", metricName.getName());
addIfNotNull(nameBuilder, "scope", metricName.getScope());
addIfNotNull(nameBuilder, "feild", field);

String name = nameBuilder.toString();
try {
return new ObjectName(buf.toString());
return new ObjectName(nameBuilder.toString());
} catch (MalformedObjectNameException e) {
throw new IllegalArgumentException("invalid ObjectName " + name, e);
}
}

private void addIfNotNull(StringBuilder builder, String key, String value){
if(value!=null) builder.append(String.format(",%s=", key)).append(value);
}

public ObjectName getObjectName() {
return name;
Expand Down
Expand Up @@ -65,10 +65,8 @@ public JmxReporter(MetricsRegistry registry) {
super(registry);
this.registeredBeans = new ConcurrentHashMap<MetricName, ObjectName>(100);
this.server = ManagementFactory.getPlatformMBeanServer();

for(Map.Entry<MetricName, Metric> metric : registry.allMetrics().entrySet()){
onMetricAdded(registry, metric.getKey(), metric.getValue());
}

registry.addListener(this);
}

@Override
Expand Down Expand Up @@ -132,7 +130,12 @@ private void registerBean(String registryName, MetricName name, Metric metric)
throws MBeanRegistrationException, OperationsException {
try{
JmxMetric jmxMetric = new JmxMetric(registryName, name, metric);
//TODO Not sure this matters
if(server.isRegistered(jmxMetric.getObjectName())){
server.unregisterMBean(jmxMetric.getObjectName());
}
server.registerMBean(jmxMetric, jmxMetric.getObjectName());
server.registerMBean(jmxMetric.getMetadataMBean(), jmxMetric.getMetadataMBean().getObjectName());
registeredBeans.put(name, jmxMetric.getObjectName());
} catch (Exception e){
throw new MBeanRegistrationException(e, "Problem creating mBean.");
Expand Down

0 comments on commit 182a07d

Please sign in to comment.