More work on proxies

This commit is contained in:
Christopher Schnick
2022-11-27 21:39:41 +01:00
parent de70b0d5b0
commit 803ff2ccf2
9 changed files with 107 additions and 35 deletions
@@ -0,0 +1,26 @@
package io.xpipe.core.impl;
import io.xpipe.core.process.ShellProcessControl;
import java.util.ServiceLoader;
public abstract class LocalProcessControlProvider {
private static LocalProcessControlProvider INSTANCE;
public static void init(ModuleLayer layer) {
INSTANCE = layer != null
? ServiceLoader.load(layer, LocalProcessControlProvider.class)
.findFirst()
.orElseThrow()
: ServiceLoader.load(LocalProcessControlProvider.class)
.findFirst()
.orElseThrow();
}
public static ShellProcessControl create() {
return INSTANCE.createProcessControl();
}
public abstract ShellProcessControl createProcessControl();
}
@@ -10,7 +10,6 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ServiceLoader;
@JsonTypeName("local")
public class LocalStore extends JacksonizedValue implements FileSystemStore, MachineStore {
@@ -51,18 +50,4 @@ public class LocalStore extends JacksonizedValue implements FileSystemStore, Mac
return LocalProcessControlProvider.create();
}
public static abstract class LocalProcessControlProvider {
private static LocalProcessControlProvider INSTANCE;
public static void init(ModuleLayer layer) {
INSTANCE = ServiceLoader.load(layer, LocalProcessControlProvider.class).findFirst().orElseThrow();
}
public static ShellProcessControl create() {
return INSTANCE.createProcessControl();
}
public abstract ShellProcessControl createProcessControl();
}
}
@@ -1,21 +0,0 @@
package io.xpipe.core.util;
import io.xpipe.core.store.ShellStore;
public interface Proxyable {
public static ShellStore getProxy(Object base) {
var proxy = base instanceof Proxyable p ? p.getProxy() : null;
return ShellStore.isLocal(proxy) ? null : proxy;
}
public static boolean isRemote(Object base) {
if (base == null) {
throw new IllegalArgumentException("Proxy base is null");
}
return base instanceof Proxyable p && !ShellStore.isLocal(p.getProxy());
}
ShellStore getProxy();
}
+2 -2
View File
@@ -1,4 +1,4 @@
import io.xpipe.core.impl.LocalStore;
import io.xpipe.core.impl.LocalProcessControlProvider;
import io.xpipe.core.source.WriteMode;
import io.xpipe.core.util.CoreJacksonModule;
@@ -24,7 +24,7 @@ open module io.xpipe.core {
uses com.fasterxml.jackson.databind.Module;
uses io.xpipe.core.source.WriteMode;
uses LocalStore.LocalProcessControlProvider;
uses LocalProcessControlProvider;
provides WriteMode with WriteMode.Replace, WriteMode.Append, WriteMode.Prepend;
provides com.fasterxml.jackson.databind.Module with