@@ -26,7 +26,7 @@ public class Register<T> {
2626 protected final String namespace ;
2727 protected final Map <String , Supplier <T >> entries = new LinkedHashMap <>();
2828
29- protected Register (String registryKey , String namespace ) {
29+ public Register (String registryKey , String namespace ) {
3030 this .registryKey = registryKey ;
3131 this .namespace = namespace ;
3232 }
@@ -36,6 +36,31 @@ public T register(String factoryName, Supplier<T> factory) {
3636 return factory .get ();
3737 }
3838
39+ public Map <String , Supplier <T >> getEntries () {
40+ return entries ;
41+ }
42+
43+ public void forEach (Consumer <T > action ) {
44+ entries .values ().forEach (s -> action .accept (s .get ()));
45+ }
46+
47+ public static <T > Register <T > create (String registryKey , String namespace , String displayName ) {
48+ registerNamespace (registryKey , namespace , displayName );
49+ return new Register <>(registryKey , namespace );
50+ }
51+
52+ public static void registerNamespace (String registryKey , String namespace , String displayName ) {
53+ if (!REGISTERED_NAMESPACES .containsKey (registryKey ))
54+ REGISTERED_NAMESPACES .put (registryKey , new ArrayList <>());
55+
56+ if (REGISTERED_NAMESPACES .get (registryKey ).contains (namespace )) {
57+ LogWriter .error ("REGISTER: Namespace " + namespace + " already registered for registry " + registryKey + "!" );
58+ }
59+
60+ REGISTERED_NAMESPACES .get (registryKey ).add (namespace );
61+ NAMESPACE_DISPLAY_NAMES .put (namespace , displayName );
62+ }
63+
3964 public static boolean isEmpty (String registryKey ) {
4065 if (REGISTERED_NAMESPACES .isEmpty ()) return true ;
4166
0 commit comments