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 interfaceFsAgent.CpOperator<T>private static classFsAgent.ListingCpOperatorprivate static classFsAgent.OperateOnCp<T>private static classFsAgent.ReadingCpOperatorprivate static classFsAgent.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>AGENTSprivate java.util.List<java.io.File>cpprivate DelegatingJrdAgent.DelegatingHelperdelegationCandidatesprivate java.util.Map<java.lang.String,java.lang.String>originalsThis is exact oposite of how remote agent does this.private java.lang.Stringsuffix
-
Constructor Summary
Constructors Modifier Constructor Description privateFsAgent(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 JrdAgentaddDelegatingAgent(JrdAgent agent)private static voidaddJustClass(java.lang.String s, java.util.List<java.lang.String> classes, java.lang.String root, boolean details, java.lang.String detailsPath)intcleanDelegatingAgents()private intcleanOverrides(java.util.regex.Pattern pattern)static FsAgentcreateAdditionalClassPathFsAgent(java.lang.String cp)static FsAgentcreateAdditionalClassPathFsAgent(java.util.List<java.io.File> cp)static FsAgentcreateAdditionalSourcePathFsAgent(java.lang.String cp)static FsAgentcreateAdditionalSourcePathFsAgent(java.util.List<java.io.File> cp)static FsAgentget(VmInfo vmInfo)java.util.List<java.lang.String>getOverrides()private java.lang.StringreadClasses(boolean details)JrdAgentremoveDelegatingAgent(JrdAgent agent)private static java.lang.Stringsanitize(java.lang.String s)private java.lang.StringsendByteCode(java.lang.String clazz)java.lang.StringsubmitRequest(java.lang.String request)Opens a socket and sends the request to the agent via socket.static java.lang.StringtoClass(java.lang.String s)private java.lang.VoiduploadByteCode(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:
submitRequestin interfaceDelegatingJrdAgent- Specified by:
submitRequestin 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:
addDelegatingAgentin interfaceDelegatingJrdAgent
-
removeDelegatingAgent
public JrdAgent removeDelegatingAgent(JrdAgent agent)
- Specified by:
removeDelegatingAgentin interfaceDelegatingJrdAgent
-
cleanDelegatingAgents
public int cleanDelegatingAgents()
- Specified by:
cleanDelegatingAgentsin interfaceDelegatingJrdAgent
-
-