Class JarUtil

java.lang.Object
org.apache.derby.impl.sql.execute.JarUtil

public class JarUtil extends Object
  • Field Details

  • Constructor Details

  • Method Details

    • install

      public static long install(LanguageConnectionContext lcc, String schemaName, String sqlName, 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(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, String schemaName, 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, String schemaName, String sqlName, 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(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
    • getInfo

      private FileInfoDescriptor getInfo() throws StandardException
      Get the FileInfoDescriptor for the Jar file or null if it does not exist.
      Throws:
      StandardException - Ooops
    • notifyLoader

      private void notifyLoader(boolean reload) throws StandardException
      Throws:
      StandardException
    • openJarURL

      private static InputStream openJarURL(String externalPath) throws 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:
      IOException
    • setJar

      private long setJar(String jarExternalName, 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 String mkExternalName(UUID id, String schemaName, String sqlName, char separatorChar) throws StandardException
      Make an external name for a jar file stored in the database.
      Throws:
      StandardException
    • mkExternalNameInternal

      private static String mkExternalNameInternal(UUID id, String schemaName, String sqlName, char separatorChar, boolean upgrading, boolean newStyle) throws StandardException
      Throws:
      StandardException
    • upgradeJar

      public static void upgradeJar(TransactionController tc, FileInfoDescriptor fid) throws StandardException
      Upgrade code: upgrade one jar file to new style (>= 10.9)
      Parameters:
      tc - transaction controller
      fid - the jar file to be upgraded
      Throws:
      StandardException
    • getContextOrNull

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