@Override
protected void offer(final T source) {
- final T present = cache.getIfPresent(source.getIdentifier());
- if (present == null) {
- cache.put(source.getIdentifier(), source);
+ final var srcId = source.getIdentifier();
+ if (cache.getIfPresent(srcId) != null) {
+ // We already have this source, do not track it
+ return;
+ }
- final SchemaSourceRegistration<T> reg = register(source.getIdentifier());
- final FinalizablePhantomReference<T> ref = new FinalizablePhantomReference<>(source, queue) {
- @Override
- public void finalizeReferent() {
- reg.close();
- regs.remove(this);
- }
- };
+ // Make the source available
+ cache.put(srcId, source);
+ final var reg = register(srcId);
- regs.add(ref);
- }
+ final FinalizablePhantomReference<T> ref = new FinalizablePhantomReference<>(source, queue) {
+ @Override
+ public void finalizeReferent() {
+ reg.close();
+ regs.remove(this);
+ }
+ };
+
+ regs.add(ref);
}
@Override