package com.custardsource.parfait.dxm;

public interface IdentifierSourceSet {
    public IdentifierSource instanceDomainSource();
    public IdentifierSource instanceSource(String domain);
    public IdentifierSource metricSource();
    
    
    public static IdentifierSourceSet DEFAULT_SET = new IdentifierSourceSet() {
        private final IdentifierSource DEFAULT_SOURCE = new HashingIdentifierSource();
        
        @Override
        public IdentifierSource metricSource() {
            return DEFAULT_SOURCE;
        }
        
        @Override
        public IdentifierSource instanceSource(String domain) {
            return DEFAULT_SOURCE;
        }
        
        @Override
        public IdentifierSource instanceDomainSource() {
            return DEFAULT_SOURCE;
        }
    };
}

@@ -232,21 +232,16 @@
 );%0A    %0A
-    %0A
     publ
@@ -308,24 +308,24 @@
 urceSet() %7B%0A
+
         priv
@@ -732,32 +732,32 @@
 omainSource() %7B%0A
-
             retu
@@ -792,10 +792,807 @@
 %0A    %7D;%0A
+    %0A    /**%0A     * %7B@link IdentifierSourceSet%7D which will fail for indoms and metrics, but allow default hashed%0A     * values for Instances%0A     */%0A    public static IdentifierSourceSet EXPLICIT_SET = new IdentifierSourceSet() %7B%0A        private final IdentifierSource DEFAULT_SOURCE = new HashingIdentifierSource();%0A        private final IdentifierSource ERROR_SOURCE = new ErrorThrowingIdentifierSource();%0A        %0A        @Override%0A        public IdentifierSource metricSource() %7B%0A            return ERROR_SOURCE;%0A        %7D%0A        %0A        @Override%0A        public IdentifierSource instanceSource(String domain) %7B%0A            return DEFAULT_SOURCE;%0A        %7D%0A        %0A        @Override%0A        public IdentifierSource instanceDomainSource() %7B%0A            return ERROR_SOURCE;%0A        %7D%0A    %7D;%0A
 %7D%0A

Add an explicit metric set for the most typical use case (caring about metric + indom identifiers, but not instance ones)