Class JarUtil
java.lang.Object
org.apache.derby.impl.sql.execute.JarUtil
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate DataDictionaryprivate DataDescriptorGeneratorprivate FileResourceprivate LanguageConnectionContextprivate Stringprivate String -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateJarUtil(LanguageConnectionContext lcc, String schemaName, String sqlName) -
Method Summary
Modifier and TypeMethodDescriptionprivate longadd(InputStream is) Add a jar file to the current connection's database.private voiddrop()Drop a jar file from the current connection's database.static voiddrop(LanguageConnectionContext lcc, String schemaName, String sqlName) Drop a jar file from the current connection's database.private static ContextgetContextOrNull(String contextID) Privileged lookup of a Context.private FileInfoDescriptorgetInfo()Get the FileInfoDescriptor for the Jar file or null if it does not exist.static longinstall(LanguageConnectionContext lcc, String schemaName, String sqlName, String externalPath) install a jar file to the current connection's database.static StringmkExternalName(UUID id, String schemaName, String sqlName, char separatorChar) Make an external name for a jar file stored in the database.private static StringmkExternalNameInternal(UUID id, String schemaName, String sqlName, char separatorChar, boolean upgrading, boolean newStyle) private voidnotifyLoader(boolean reload) private static InputStreamopenJarURL(String externalPath) Open an input stream to read a URL or a file.private longreplace(InputStream is) Replace a jar file in the current connection's database with the content of an external file.static longreplace(LanguageConnectionContext lcc, String schemaName, String sqlName, String externalPath) Replace a jar file from the current connection's database with the content of an external file.private longsetJar(String jarExternalName, InputStream contents, boolean add, long currentGenerationId) Copy the jar from the externally obtained input stream into the databasestatic voidUpgrade code: upgrade one jar file to new style (>= 10.9)
-
Field Details
-
lcc
-
schemaName
-
sqlName
-
fr
-
dd
-
ddg
-
-
Constructor Details
-
JarUtil
private JarUtil(LanguageConnectionContext lcc, String schemaName, String sqlName) throws StandardException - Throws:
StandardException
-
-
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
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
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
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
Get the FileInfoDescriptor for the Jar file or null if it does not exist.- Throws:
StandardException- Ooops
-
notifyLoader
- Throws:
StandardException
-
openJarURL
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 replacecurrentGenerationId- 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 controllerfid- the jar file to be upgraded- Throws:
StandardException
-
getContextOrNull
-