mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-08-22 09:16:29 +00:00
More work on proxies
This commit is contained in:
@@ -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();
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user