private synchronized void addMetricInfo(MetricName name, Semantics semantics, Unit<?> unit, Object initialValue, TypeHandler<?> pcpType) { if (metricData.containsKey(name)) { throw new IllegalArgumentException("Metric " + name + " has already been added to writer"); } metricNameValidator.validateNameConstraints(name); PcpMetricInfo metricInfo = getMetricInfo(name.getMetric()); InstanceDomain domain = null; Instance instance = null; if (name.hasInstance()) { domain = getInstanceDomain(name.getInstanceDomainTag()); instance = domain.getInstance(name.getInstance()); metricInfo.setInstanceDomain(domain); } metricInfo.setTypeHandler(pcpType); metricInfo.setUnit(unit); metricInfo.setSemantics(semantics); PcpValueInfo info = new PcpValueInfo(name, metricInfo, instance, initialValue, stringStore); metricData.put(name, info); }