Class JarUtil


  • public class JarUtil
    extends java.lang.Object
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private JarUtil​(LanguageConnectionContext lcc, java.lang.String schemaName, java.lang.String sqlName)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private long add​(java.io.InputStream is)
      Add a jar file to the current connection's database.
      private void drop()
      Drop a jar file from the current connection's database.
      static void drop​(LanguageConnectionContext lcc, java.lang.String schemaName, java.lang.String sqlName)
      Drop a jar file from the current connection's database.
      private static Context getContextOrNull​(java.lang.String contextID)
      Privileged lookup of a Context.
      private FileInfoDescriptor getInfo()
      Get the FileInfoDescriptor for the Jar file or null if it does not exist.
      static long install​(LanguageConnectionContext lcc, java.lang.String schemaName, java.lang.String sqlName, java.lang.String externalPath)
      install a jar file to the current connection's database.
      static java.lang.String mkExternalName​(UUID id, java.lang.String schemaName, java.lang.String sqlName, char separatorChar)
      Make an external name for a jar file stored in the database.
      private static java.lang.String mkExternalNameInternal​(UUID id, java.lang.String schemaName, java.lang.String sqlName, char separatorChar, boolean upgrading, boolean newStyle)  
      private void notifyLoader​(boolean reload)  
      private static java.io.InputStream openJarURL​(java.lang.String externalPath)
      Open an input stream to read a URL or a file.
      private long replace​(java.io.InputStream is)
      Replace a jar file in the current connection's database with the content of an external file.
      static long replace​(LanguageConnectionContext lcc, java.lang.String schemaName, java.lang.String sqlName, java.lang.String externalPath)
      Replace a jar file from the current connection's database with the content of an external file.
      private long setJar​(java.lang.String jarExternalName, java.io.InputStream contents, boolean add, long currentGenerationId)
      Copy the jar from the externally obtained input stream into the database
      static void upgradeJar​(TransactionController tc, FileInfoDescriptor fid)
      Upgrade code: upgrade one jar file to new style (>= 10.9)
      • Methods inherited from class java.lang.Object

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

      • install

        public static long install​(LanguageConnectionContext lcc,
                                   java.lang.String schemaName,
                                   java.lang.String sqlName,
                                   java.lang.String externalPath)
                            throws StandardException
        install a jar file to the current connection's database.
        Parameters:
        schemaName - the name for the schema that holds the jar file.
        sqlName - the sql name for the jar file.
        externalPath - the path for the jar file to add.
        Returns:
        The generationId for the jar file we add.
        Throws:
        StandardException - Opps
      • add

        private long add​(java.io.InputStream is)
                  throws StandardException
        Add a jar file to the current connection's database.

        The reason for adding the jar file in this private instance method is that it allows us to share set up logic with drop and replace.

        Parameters:
        is - A stream for reading the content of the file to add.
        Throws:
        StandardException - Opps
      • drop

        public static void drop​(LanguageConnectionContext lcc,
                                java.lang.String schemaName,
                                java.lang.String sqlName)
                         throws StandardException
        Drop a jar file from the current connection's database.
        Parameters:
        schemaName - the name for the schema that holds the jar file.
        sqlName - the sql name for the jar file.
        Throws:
        StandardException - Opps
      • drop

        private void drop()
                   throws StandardException
        Drop a jar file from the current connection's database.

        The reason for dropping the jar file in this private instance method is that it allows us to share set up logic with add and replace.

        Throws:
        StandardException - Opps
      • replace

        public static long replace​(LanguageConnectionContext lcc,
                                   java.lang.String schemaName,
                                   java.lang.String sqlName,
                                   java.lang.String externalPath)
                            throws StandardException
        Replace a jar file from the current connection's database with the content of an external file.
        Parameters:
        schemaName - the name for the schema that holds the jar file.
        sqlName - the sql name for the jar file.
        externalPath - the path for the jar file to add.
        Returns:
        The new generationId for the jar file we replace.
        Throws:
        StandardException - Opps
      • replace

        private long replace​(java.io.InputStream is)
                      throws StandardException
        Replace a jar file in the current connection's database with the content of an external file.

        The reason for adding the jar file in this private instance method is that it allows us to share set up logic with add and drop.

        Parameters:
        is - An input stream for reading the new content of the jar file.
        Throws:
        StandardException - Opps
      • openJarURL

        private static java.io.InputStream openJarURL​(java.lang.String externalPath)
                                               throws java.io.IOException
        Open an input stream to read a URL or a file. URL is attempted first, if the string does not conform to a URL then an attempt to open it as a regular file is tried.
        Attempting the file first can throw a security execption when a valid URL is passed in. The security exception is due to not have the correct permissions to access the bogus file path. To avoid this the order was reversed to attempt the URL first and only attempt a file open if creating the URL throws a MalformedURLException.
        Throws:
        java.io.IOException
      • setJar

        private long setJar​(java.lang.String jarExternalName,
                            java.io.InputStream contents,
                            boolean add,
                            long currentGenerationId)
                     throws StandardException
        Copy the jar from the externally obtained input stream into the database
        Parameters:
        jarExternalName - Name of jar with database structure.
        contents - Contents of jar file.
        add - true to add, false to replace
        currentGenerationId - generation id of existing version, ignored when adding.
        Throws:
        StandardException
      • mkExternalName

        public static java.lang.String mkExternalName​(UUID id,
                                                      java.lang.String schemaName,
                                                      java.lang.String sqlName,
                                                      char separatorChar)
                                               throws StandardException
        Make an external name for a jar file stored in the database.
        Throws:
        StandardException
      • mkExternalNameInternal

        private static java.lang.String mkExternalNameInternal​(UUID id,
                                                               java.lang.String schemaName,
                                                               java.lang.String sqlName,
                                                               char separatorChar,
                                                               boolean upgrading,
                                                               boolean newStyle)
                                                        throws StandardException
        Throws:
        StandardException
      • getContextOrNull

        private static Context getContextOrNull​(java.lang.String contextID)
        Privileged lookup of a Context. Must be private so that user code can't call this entry point.