Package org.jrd.backend.communication
Class FsAgent
- java.lang.Object
-
- org.jrd.backend.communication.FsAgent
-
- All Implemented Interfaces:
DelegatingJrdAgent
,JrdAgent
public final class FsAgent extends java.lang.Object implements DelegatingJrdAgent
This class is doing agent-like based operations on filesystem
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static interface
FsAgent.CpOperator<T>
private static class
FsAgent.ListingCpOperator
private static class
FsAgent.OperateOnCp<T>
private static class
FsAgent.ReadingCpOperator
private static class
FsAgent.WritingCpOperator
-
Nested classes/interfaces inherited from interface org.jrd.backend.communication.DelegatingJrdAgent
DelegatingJrdAgent.CommandDelegationOptions, DelegatingJrdAgent.DelegatingHelper
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Map<VmInfo,FsAgent>
AGENTS
private java.util.List<java.io.File>
cp
private DelegatingJrdAgent.DelegatingHelper
delegationCandidates
private java.util.Map<java.lang.String,java.lang.String>
originals
This is exact oposite of how remote agent does this.private java.lang.String
suffix
-
Constructor Summary
Constructors Modifier Constructor Description private
FsAgent(java.util.List<java.io.File> cp, java.lang.String suffix)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JrdAgent
addDelegatingAgent(JrdAgent agent)
private static void
addJustClass(java.lang.String s, java.util.List<java.lang.String> classes, java.lang.String root, boolean details, java.lang.String detailsPath)
int
cleanDelegatingAgents()
private int
cleanOverrides(java.util.regex.Pattern pattern)
static FsAgent
createAdditionalClassPathFsAgent(java.lang.String cp)
static FsAgent
createAdditionalClassPathFsAgent(java.util.List<java.io.File> cp)
static FsAgent
createAdditionalSourcePathFsAgent(java.lang.String cp)
static FsAgent
createAdditionalSourcePathFsAgent(java.util.List<java.io.File> cp)
static FsAgent
get(VmInfo vmInfo)
java.util.List<java.lang.String>
getOverrides()
private java.lang.String
readClasses(boolean details)
JrdAgent
removeDelegatingAgent(JrdAgent agent)
private static java.lang.String
sanitize(java.lang.String s)
private java.lang.String
sendByteCode(java.lang.String clazz)
java.lang.String
submitRequest(java.lang.String request)
Opens a socket and sends the request to the agent via socket.static java.lang.String
toClass(java.lang.String s)
private java.lang.Void
uploadByteCode(java.lang.String clazz, java.lang.String body)
-
-
-
Field Detail
-
cp
private final java.util.List<java.io.File> cp
-
suffix
private final java.lang.String suffix
-
delegationCandidates
private final DelegatingJrdAgent.DelegatingHelper delegationCandidates
-
originals
private final java.util.Map<java.lang.String,java.lang.String> originals
This is exact oposite of how remote agent does this. Remote agent keeps all overrides, because when new class defintion is laoded original is plled, and is modifed (overvritten) by new deffnitio.On contrary, in FS, the class is after writing immediately overriden in file FileSystem. So we keep original, saved during first override. If we keep original, we know class was overwritten. The removal of of override == restore of original (and remvoal of original from map
In addition, insted of byte[] we store base64 encoded String
-
-
Method Detail
-
createAdditionalClassPathFsAgent
public static FsAgent createAdditionalClassPathFsAgent(java.lang.String cp)
-
createAdditionalClassPathFsAgent
public static FsAgent createAdditionalClassPathFsAgent(java.util.List<java.io.File> cp)
-
createAdditionalSourcePathFsAgent
public static FsAgent createAdditionalSourcePathFsAgent(java.lang.String cp)
-
createAdditionalSourcePathFsAgent
public static FsAgent createAdditionalSourcePathFsAgent(java.util.List<java.io.File> cp)
-
getOverrides
public java.util.List<java.lang.String> getOverrides()
-
cleanOverrides
private int cleanOverrides(java.util.regex.Pattern pattern)
-
submitRequest
public java.lang.String submitRequest(java.lang.String request)
Opens a socket and sends the request to the agent via socket.- Specified by:
submitRequest
in interfaceDelegatingJrdAgent
- Specified by:
submitRequest
in interfaceJrdAgent
- Parameters:
request
- either "CLASSES" or "BYTES \n className", other formats are refused- Returns:
- agents response or null
-
uploadByteCode
private java.lang.Void uploadByteCode(java.lang.String clazz, java.lang.String body)
-
sendByteCode
private java.lang.String sendByteCode(java.lang.String clazz)
-
readClasses
private java.lang.String readClasses(boolean details) throws java.io.IOException
- Throws:
java.io.IOException
-
addJustClass
private static void addJustClass(java.lang.String s, java.util.List<java.lang.String> classes, java.lang.String root, boolean details, java.lang.String detailsPath)
-
toClass
public static java.lang.String toClass(java.lang.String s)
-
sanitize
private static java.lang.String sanitize(java.lang.String s)
-
addDelegatingAgent
public JrdAgent addDelegatingAgent(JrdAgent agent)
- Specified by:
addDelegatingAgent
in interfaceDelegatingJrdAgent
-
removeDelegatingAgent
public JrdAgent removeDelegatingAgent(JrdAgent agent)
- Specified by:
removeDelegatingAgent
in interfaceDelegatingJrdAgent
-
cleanDelegatingAgents
public int cleanDelegatingAgents()
- Specified by:
cleanDelegatingAgents
in interfaceDelegatingJrdAgent
-
-