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);
}