package io.pcp.parfait.dxm;
public interface IdentifierSourceSet {
public static IdentifierSourceSet DEFAULT_SET = new IdentifierSourceSet() {
private final IdentifierSource instanceDomainSource = new HashingIdentifierSource(1 << 22);
private final IdentifierSource instanceSource = new HashingIdentifierSource(Integer.MAX_VALUE);
private final IdentifierSource metricSource = new HashingIdentifierSource(1 << 10);
@Override
public IdentifierSource metricSource() {
return metricSource;
}
@Override
public IdentifierSource instanceSource(String domain) {
return instanceSource;
}
@Override
public IdentifierSource instanceDomainSource() {
return instanceDomainSource;
}
};
/**
* {@link IdentifierSourceSet} which will fail for indoms and metrics, but allow default hashed
* values for Instances
*/
public static IdentifierSourceSet EXPLICIT_SET = new IdentifierSourceSet() {
private final IdentifierSource DEFAULT_SOURCE = new HashingIdentifierSource(Integer.MAX_VALUE);
private final IdentifierSource ERROR_SOURCE = new ErrorThrowingIdentifierSource();
@Override
public IdentifierSource metricSource() {
return ERROR_SOURCE;
}
@Override
public IdentifierSource instanceSource(String domain) {
return DEFAULT_SOURCE;
}
@Override
public IdentifierSource instanceDomainSource() {
return ERROR_SOURCE;
}
};
/**
* An IdentifierSourceSet for use in contexts where identifiers truly do not matter and are not limited in range
* -- e.g. test cases or writers which do not need to limit identifiers
*/
public static IdentifierSourceSet LIMITLESS_SET = new IdentifierSourceSet() {
private final IdentifierSource defaultSource = new HashingIdentifierSource(Integer.MAX_VALUE);
@Override
public IdentifierSource metricSource() {
return defaultSource;
}
@Override
public IdentifierSource instanceSource(String domain) {
return defaultSource;
}
@Override
public IdentifierSource instanceDomainSource() {
return defaultSource;
}
};
public IdentifierSource instanceDomainSource();
public IdentifierSource instanceSource(String domain);
public IdentifierSource metricSource();
}