/** * Add multiple tags delimited by commas. * The format must be in the form 'key1=value1, key2=value2'. * This method will call {@link #addTag(String)} on each tag. * * @param tagsString a string containing multiple tags */ public void addTags(String tagsString) { if (tagsString == null || tagsString.isEmpty()) { return; } String[] singleTags = tagsString.split(","); for (String singleTag : singleTags) { addTag(singleTag.trim()); } }
@Test public void addTagsTest() { metadata.addTags("colour=green,size=medium"); metadata.addTag("number=5"); Assert.assertNotNull(metadata); Assert.assertTrue(metadata.getTags().containsKey("size")); Assert.assertTrue(metadata.getTags().containsValue("green")); Assert.assertFalse(metadata.getTags().containsValue("blue")); Assert.assertTrue(metadata.getTags().containsKey("number")); }
@Override public <T extends Metric> T register(Metadata metadata, T t) throws IllegalArgumentException { // add default tags ServiceConfigInfo configInfo = ServiceConfigInfo.getInstance(); if(configInfo.shouldAddToTags()) { metadata.addTag("environment=" + configInfo.getEnvironment()); metadata.addTag("serviceName=" + configInfo.getServiceName()); metadata.addTag("serviceVersion=" + configInfo.getServiceVersion()); metadata.addTag("instanceId=" + configInfo.getInstanceId()); } Optional<String> tagsFromConfig = ConfigurationUtil.getInstance().get("MP_METRICS_TAGS"); tagsFromConfig.ifPresent(metadata::addTags); try { metricRegistry.register(metadata.getName(), new MetricAdapter(t, metadata)); } catch (IllegalArgumentException e) { com.codahale.metrics.Metric m = metricRegistry.getMetrics().get(metadata.getName()); if (m instanceof MetricAdapter) { Metadata existingMetadata = ((MetricAdapter) m).getMetadata(); if (existingMetadata.isReusable() && metadata.isReusable() && existingMetadata.getTypeRaw().equals(metadata.getTypeRaw())) { return t; } else { throw e; } } } return t; }