Class FsAgent

  • All Implemented Interfaces:
    JrdAgent

    public final class FsAgent
    extends java.lang.Object
    implements JrdAgent
    This class is doing agent-like based operations on filesystem
    • 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 java.util.Map<java.lang.String,​java.lang.String> originals
      This is exact oposite of how remote agent does this.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private FsAgent​(java.util.List<java.io.File> cp)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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)  
      private int cleanOverrides​(java.util.regex.Pattern pattern)  
      static FsAgent get​(VmInfo vmInfo)  
      java.util.List<java.lang.String> getOverrides()  
      private java.lang.String readClasses​(boolean details)  
      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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • AGENTS

        private static final java.util.Map<VmInfo,​FsAgent> AGENTS
      • cp

        private final java.util.List<java.io.File> cp
      • 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

    • Constructor Detail

      • FsAgent

        private FsAgent​(java.util.List<java.io.File> cp)
    • Method Detail

      • 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 interface JrdAgent
        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)