diff --git a/plugin/META-INF/MANIFEST.MF b/plugin/META-INF/MANIFEST.MF index bb80724d..f9a6c8a7 100644 --- a/plugin/META-INF/MANIFEST.MF +++ b/plugin/META-INF/MANIFEST.MF @@ -52,7 +52,6 @@ Bundle-Classpath: target/classes/, target/dependency/jackson-databind-2.17.2.jar, target/dependency/jakarta.inject-api-2.0.1.jar, target/dependency/json-utils-2.28.26.jar, - target/dependency/maven-artifact-3.9.9.jar, target/dependency/metrics-spi-2.28.26.jar, target/dependency/netty-nio-client-2.28.26.jar, target/dependency/nimbus-jose-jwt-9.41.2.jar, diff --git a/plugin/pom.xml b/plugin/pom.xml index dfc5a524..24120ad0 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -42,6 +42,11 @@ + + io.reactivex.rxjava3 + rxjava + 3.1.5 + jakarta.inject jakarta.inject-api diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/EventBroker.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/EventBroker.java index 66e1a8d4..551028f9 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/EventBroker.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/EventBroker.java @@ -9,7 +9,6 @@ import io.reactivex.rxjava3.subjects.PublishSubject; import io.reactivex.rxjava3.subjects.Subject; import software.aws.toolkits.eclipse.amazonq.broker.api.EventObserver; -import software.aws.toolkits.eclipse.amazonq.broker.api.Subscription; public final class EventBroker { @@ -22,7 +21,7 @@ public void post(final T event) { eventBus.onNext(event); } - public Subscription subscribe(final EventObserver observer) { + public Disposable subscribe(final Class eventType, final EventObserver observer) { Consumer consumer = new Consumer<>() { @Override public void accept(final T event) { @@ -30,17 +29,9 @@ public void accept(final T event) { } }; - Disposable disposable = eventBus.ofType(observer.getEventType()).distinct() + return eventBus.ofType(eventType).distinct() .observeOn(Schedulers.computation()) .subscribe(consumer); - - Subscription subscription = new Subscription() { - @Override - public void cancel() { - disposable.dispose(); - } - }; - return subscription; } } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/EventObserver.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/EventObserver.java index 0518b21d..1785cf93 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/EventObserver.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/EventObserver.java @@ -3,31 +3,7 @@ package software.aws.toolkits.eclipse.amazonq.broker.api; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; - +@FunctionalInterface public interface EventObserver { - - // Reference: - // https://stackoverflow.com/questions/3437897/how-do-i-get-a-class-instance-of-generic-type-t - @SuppressWarnings("unchecked") - default Class getEventType() { - Class currentClass = getClass(); - while (currentClass != null) { - for (Type type : currentClass.getGenericInterfaces()) { - if (type instanceof ParameterizedType paramType && (paramType.getRawType() == EventObserver.class)) { - Type typeArg = paramType.getActualTypeArguments()[0]; - if (typeArg instanceof Class) { - return (Class) typeArg; - } - throw new IllegalStateException("Generic type parameter is not a Class"); - } - } - currentClass = currentClass.getSuperclass(); - } - throw new IllegalStateException("Could not determine generic type"); - } - void onEvent(T event); - } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/Subscription.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/Subscription.java deleted file mode 100644 index 7f1746e9..00000000 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/broker/api/Subscription.java +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.eclipse.amazonq.broker.api; - -@FunctionalInterface -public interface Subscription { - void cancel(); -} diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQView.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQView.java index d4bb6b77..c6a01445 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQView.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQView.java @@ -9,8 +9,8 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.ui.part.ViewPart; +import io.reactivex.rxjava3.disposables.Disposable; import software.aws.toolkits.eclipse.amazonq.broker.api.EventObserver; -import software.aws.toolkits.eclipse.amazonq.broker.api.Subscription; import software.aws.toolkits.eclipse.amazonq.controllers.AmazonQViewController; import software.aws.toolkits.eclipse.amazonq.lsp.auth.model.AuthState; import software.aws.toolkits.eclipse.amazonq.plugin.Activator; @@ -23,7 +23,7 @@ public abstract class AmazonQView extends ViewPart implements EventObserver