UP-4484 Improve performance of MessageBusImpl processing

This commit is contained in:
Denis Zhdanov
2015-07-05 14:27:14 +03:00
parent b0fd5a4bf7
commit bb411f0576
@@ -23,14 +23,44 @@ import com.intellij.util.messages.impl.MessageBusImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.atomic.AtomicReference;
public class MessageBusFactory {
private static final AtomicReference<Impl> ourImpl = new AtomicReference<Impl>(new Impl() {
@NotNull
@Override
public MessageBus newMessageBus(@NotNull Object owner) {
return new MessageBusImpl.RootBus(owner);
}
@NotNull
@Override
public MessageBus newMessageBus(@NotNull Object owner, @Nullable MessageBus parentBus) {
return parentBus == null ? newMessageBus(owner) : new MessageBusImpl(owner, parentBus);
}
});
private MessageBusFactory() {}
public static MessageBus newMessageBus(@NotNull Object owner) {
return new MessageBusImpl.RootBus(owner);
return ourImpl.get().newMessageBus(owner);
}
public static MessageBus newMessageBus(@NotNull Object owner, @Nullable MessageBus parentBus) {
return parentBus == null ? newMessageBus(owner) : new MessageBusImpl(owner, parentBus);
return ourImpl.get().newMessageBus(owner, parentBus);
}
public static void setImpl(@NotNull Impl impl) {
ourImpl.set(impl);
}
public interface Impl {
@NotNull
MessageBus newMessageBus(@NotNull Object owner);
@NotNull
MessageBus newMessageBus(@NotNull Object owner, @Nullable MessageBus parentBus);
}
}