Class JarUtil
java.lang.Object
org.apache.derby.impl.sql.execute.JarUtil
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate DataDictionary
private DataDescriptorGenerator
private FileResource
private LanguageConnectionContext
private String
private String
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
JarUtil
(LanguageConnectionContext lcc, String schemaName, String sqlName) -
Method Summary
Modifier and TypeMethodDescriptionprivate long
add
(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, String schemaName, String sqlName) Drop a jar file from the current connection's database.private static Context
getContextOrNull
(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, String schemaName, String sqlName, String externalPath) install a jar file to the current connection's database.static String
mkExternalName
(UUID id, String schemaName, String sqlName, char separatorChar) Make an external name for a jar file stored in the database.private static String
mkExternalNameInternal
(UUID id, String schemaName, String sqlName, char separatorChar, boolean upgrading, boolean newStyle) private void
notifyLoader
(boolean reload) private static InputStream
openJarURL
(String externalPath) Open an input stream to read a URL or a file.private long
replace
(InputStream is) Replace a jar file in the current connection's database with the content of an external file.static long
replace
(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 long
setJar
(String jarExternalName, InputStream contents, boolean add, long currentGenerationId) Copy the jar from the externally obtained input stream into the databasestatic void
Upgrade 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
Privileged lookup of a Context. Must be private so that user code can't call this entry point.
-