diff --git a/firebase-common/src/main/java/com/google/firebase/components/ComponentRuntime.java b/firebase-common/src/main/java/com/google/firebase/components/ComponentRuntime.java index ea024c015e0..41b5b9bd44d 100644 --- a/firebase-common/src/main/java/com/google/firebase/components/ComponentRuntime.java +++ b/firebase-common/src/main/java/com/google/firebase/components/ComponentRuntime.java @@ -75,7 +75,7 @@ private void processInstanceComponents() { for (Map.Entry, Lazy> entry : components.entrySet()) { Component component = entry.getKey(); if (!component.isValue()) { - return; + continue; } Lazy lazy = entry.getValue(); diff --git a/firebase-common/src/test/java/com/google/firebase/components/ComponentRuntimeTest.java b/firebase-common/src/test/java/com/google/firebase/components/ComponentRuntimeTest.java index 28197e1e377..ba081e8abe7 100644 --- a/firebase-common/src/test/java/com/google/firebase/components/ComponentRuntimeTest.java +++ b/firebase-common/src/test/java/com/google/firebase/components/ComponentRuntimeTest.java @@ -266,4 +266,22 @@ public void setComponents_shouldParticipateInCycleDetection() { // success. } } + + @Test + public void setComponents_shouldNotPreventValueComponentsFromBeingRegistered() { + ComponentRuntime runtime = + new ComponentRuntime( + EXECUTOR, + Collections.emptySet(), + Component.intoSet(1, Integer.class), + Component.intoSet(2, Integer.class), + Component.of(2f, Float.class), + Component.intoSet(3, Integer.class), + Component.intoSet(4, Integer.class), + Component.of(4d, Double.class)); + + assertThat(runtime.setOf(Integer.class)).containsExactly(1, 2, 3, 4); + assertThat(runtime.get(Float.class)).isEqualTo(2f); + assertThat(runtime.get(Double.class)).isEqualTo(4d); + } }