Skip to content

Commit

Permalink
Final MVP for Scripting (#170)
Browse files Browse the repository at this point in the history
MVP for Scripting
  • Loading branch information
farion authored Jan 18, 2024
1 parent 0434be7 commit 3369a0c
Show file tree
Hide file tree
Showing 232 changed files with 7,105 additions and 1,581 deletions.
1 change: 1 addition & 0 deletions assets/icons/play.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions assets/icons/stop.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 29 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@
<sonar.organization>farion</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
<javafx.version>22-ea+16</javafx.version>
<lombok.version>1.18.22</lombok.version>
<lombok.version>1.18.30</lombok.version>
<graalvm.version>23.1.1</graalvm.version>
</properties>

<repositories>
Expand Down Expand Up @@ -212,12 +213,37 @@
<artifactId>windpapi4j</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.graalvm.polyglot</groupId>
<artifactId>polyglot</artifactId>
<version>${graalvm.version}</version>
</dependency>
<dependency>
<groupId>org.graalvm.polyglot</groupId>
<!-- Select language: js, ruby, python, java, llvm, wasm, languages-->
<artifactId>js</artifactId>
<version>${graalvm.version}</version>
<type>pom</type>
</dependency>
<!-- add additional languages if needed -->
<dependency>
<groupId>org.graalvm.polyglot</groupId>
<!-- Select tools: profiler, inspect, coverage, dap, tools -->
<artifactId>tools</artifactId>
<version>${graalvm.version}</version>
<type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/org.graalvm.truffle/truffle-api -->
<dependency>
<groupId>org.graalvm.truffle</groupId>
<artifactId>truffle-api</artifactId>
<version>${graalvm.version}</version>
</dependency>
<dependency>
<groupId>io.github.classgraph</groupId>
<artifactId>classgraph</artifactId>
<version>4.8.161</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.github.qupath/logviewer-ui-richtextfx -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
Expand Down Expand Up @@ -269,7 +295,7 @@
<configuration>
<jlinkImageName>CorreoMQTT</jlinkImageName>
<launcher>launcher</launcher>
<mainClass>correomqtt.client/org.correomqtt.CorreoMqtt</mainClass>
<mainClass>org.correomqtt.CorreoMqtt</mainClass>
</configuration>
</plugin>
<plugin>
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/org/correomqtt/CorreoMqtt.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
import org.correomqtt.business.model.SettingsDTO;
import org.correomqtt.business.shortcut.ShortcutConnectionIdEvent;
import org.correomqtt.business.utils.VersionUtils;
import org.correomqtt.gui.views.AlertController;
import org.correomqtt.gui.views.MainViewController;
import org.correomqtt.gui.utils.AlertHelper;
import org.correomqtt.gui.keyring.KeyringHandler;
import org.correomqtt.gui.utils.AlertHelper;
import org.correomqtt.gui.utils.CheckNewVersionUtils;
import org.correomqtt.gui.utils.HostServicesHolder;
import org.correomqtt.gui.utils.PluginCheckUtils;
import org.correomqtt.gui.views.AlertController;
import org.correomqtt.gui.views.MainViewController;
import org.correomqtt.plugin.PluginLauncher;
import org.correomqtt.plugin.PreloadingProgressEvent;
import org.correomqtt.plugin.manager.PluginManager;
Expand Down Expand Up @@ -59,7 +59,6 @@ public static void main(String[] args) {
@Override
public void init() throws IOException {

// TODO cleanup
EventBus.register(this);

if (LOGGER.isInfoEnabled()) {
Expand Down Expand Up @@ -176,6 +175,7 @@ private void loadPrimaryStage() throws IOException {
mainViewController = loader.getController();
primaryStage.setTitle("CorreoMQTT v" + VersionUtils.getVersion());
scene = new Scene(root, 900, 800);
scene.setFill(SettingsProvider.getInstance().getActiveTheme().getBackgroundColor());

if (cssPath != null) {
scene.getStylesheets().add(cssPath);
Expand Down Expand Up @@ -218,9 +218,9 @@ private void saveGlobalUISettings() {
}

private void saveConnectionUISettings() {
mainViewController.tabPane.getTabs().forEach(tab -> {
if (mainViewController.getConntectionViewControllers().get(tab.getId()) != null) {
mainViewController.getConntectionViewControllers().get(tab.getId()).saveConnectionUISettings();
mainViewController.getTabPane().getTabs().forEach(tab -> {
if (mainViewController.getConnectionViewControllers().get(tab.getId()) != null) {
mainViewController.getConnectionViewControllers().get(tab.getId()).saveConnectionUISettings();
}
});
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/correomqtt/CorreoPreloader.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ public class CorreoPreloader extends Preloader {

public CorreoPreloader() {
EventBus.register(this);
// TODO Cleanup
}

@Override
Expand All @@ -49,6 +48,7 @@ public void init() throws IOException {
preloaderViewController = loader.getController();
preloaderViewController.getPreloaderVersionLabel().setText("v" + VersionUtils.getVersion());
scene = new Scene(root, 500, 300);
scene.setFill(SettingsProvider.getInstance().getActiveTheme().getBackgroundColor());

if (cssPath != null) {
scene.getStylesheets().add(cssPath);
Expand All @@ -62,7 +62,7 @@ private void setLoggerFilePath() {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
loggerContext.reset();
JoranConfigurator configurator = new JoranConfigurator();
try(InputStream configStream = CorreoPreloader.class.getResourceAsStream("logger-config.xml")) {
try (InputStream configStream = CorreoPreloader.class.getResourceAsStream("logger-config.xml")) {
configurator.setContext(loggerContext);
configurator.doConfigure(configStream);
} catch (JoranException | IOException e) {
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/org/correomqtt/Launcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ public class Launcher {
public static void main(String[] args) {
try {

Thread.setDefaultUncaughtExceptionHandler((t,e) -> LOGGER.error("Uncaught Exception: ", e));

System.setProperty("javafx.preloader", CorreoPreloader.class.getCanonicalName());

// Loading lib secret keyring requires org.objectweb.asm, but including it clashes with lombok.
// See: https://github.com/projectlombok/lombok/issues/2973
// Workaround is to disable the use of asm library.
System.setProperty("jnr.ffi.asm.enabled", "false");

Thread.setDefaultUncaughtExceptionHandler((t, e) -> LOGGER.error("Uncaught Exception: ", e));

System.setProperty("javafx.preloader", CorreoPreloader.class.getCanonicalName());

launch(CorreoMqtt.class, args);
}catch(Exception e){
} catch (Exception e) {
LOGGER.error("Uncaught Main Exception: ", e);
}
}
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.correomqtt.business.concurrent;

@FunctionalInterface
public interface ErrorListener<E> {
void error(E error);
public interface FinallyListener {
void run();
}
80 changes: 80 additions & 0 deletions src/main/java/org/correomqtt/business/concurrent/FullTask.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package org.correomqtt.business.concurrent;

public abstract class FullTask<T, P, E> extends TaskImpl<T, P, E, TaskErrorResult<E>> {

public FullTask<T, P, E> onStarted(StartListener listener) {
onStartedImpl(listener);
return this;
}

public FullTask<T, P, E> onProgress(ProgressListener<P> listener) {
onProgressImpl(listener);
return this;
}

public FullTask<T, P, E> onSuccess(SuccessListener<T> listener) {
onSuccessImpl(listener);
return this;
}

public FullTask<T, P, E> onError(TaskErrorResultListener<TaskErrorResult<E>> listener) {
onErrorImpl(listener);
return this;
}

public FullTask<T, P, E> onFinally(FinallyListener listener) {
onFinallyImpl(listener);
return this;
}

protected void reportProgress(P progress) {
reportProgressImpl(progress);
}

protected abstract T execute() throws Exception;

@Override
T executeImpl() throws Exception {
return execute();
}

TaskErrorResult<E> createTaskErrorResult(E expectedError, Throwable throwable) {
return new TaskErrorResult<>(expectedError, throwable);
}

protected void beforeHook() {
// to be overridden by child on demand
}

protected void successHook(T result) {
// to be overridden by child on demand
}

protected void errorHook(TaskErrorResult<E> errorResult) {
// to be overridden by child on demand
}

protected void finalHook() {
// to be overridden by child on demand
}

@Override
void beforeHookImpl() {
beforeHook();
}

@Override
void successHookImpl(T result) {
successHook(result);
}

@Override
void errorHookImpl(TaskErrorResult<E> errorResult) {
errorHook(errorResult);
}

@Override
void finalHookImpl() {
finalHook();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.correomqtt.business.concurrent;

public abstract class NoProgressTask<T, E> extends TaskImpl<T, Void, E, TaskErrorResult<E>> {

public NoProgressTask<T, E> onStarted(StartListener listener) {
onStartedImpl(listener);
return this;
}

public NoProgressTask<T, E> onSuccess(SuccessListener<T> listener) {
onSuccessImpl(listener);
return this;
}

public NoProgressTask<T, E> onError(TaskErrorResultListener<TaskErrorResult<E>> listener) {
onErrorImpl(listener);
return this;
}

public NoProgressTask<T, E> onFinally(FinallyListener listener) {
onFinallyImpl(listener);
return this;
}

protected abstract T execute() throws Exception;

@Override
T executeImpl() throws Exception {
return execute();
}

TaskErrorResult<E> createTaskErrorResult(E expectedError, Throwable throwable) {
return new TaskErrorResult<>(expectedError, throwable);
}

protected void beforeHook() {
// to be overridden by child on demand
}

protected void successHook(T result) {
// to be overridden by child on demand
}

protected void errorHook(TaskErrorResult<E> errorResult) {
// to be overridden by child on demand
}

protected void finalHook() {
// to be overridden by child on demand
}

@Override
void beforeHookImpl() {
beforeHook();
}

@Override
void successHookImpl(T result) {
successHook(result);
}

@Override
void errorHookImpl(TaskErrorResult<E> errorResult) {
errorHook(errorResult);
}

@Override
void finalHookImpl() {
finalHook();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.correomqtt.business.concurrent;

@FunctionalInterface
public interface ProgressListener<P> {

void progress(P progress);
}
Loading

0 comments on commit 3369a0c

Please sign in to comment.