org.apache.derby.impl.sql.execute
Class JarUtil

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

public class JarUtil
extends java.lang.Object


Field Summary
private  DataDictionary dd
           
private  DataDescriptorGenerator ddg
           
private  FileResource fr
           
private  LanguageConnectionContext lcc
           
private  java.lang.String schemaName
           
private  java.lang.String sqlName
           
 
Constructor Summary
private JarUtil(LanguageConnectionContext lcc, java.lang.String schemaName, java.lang.String sqlName)
           
 
Method Summary
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  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(java.lang.String schemaName, java.lang.String sqlName, char separatorChar)
          Make an external name for a jar file stored in the database.
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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lcc

private LanguageConnectionContext lcc

schemaName

private java.lang.String schemaName

sqlName

private java.lang.String sqlName

fr

private FileResource fr

dd

private DataDictionary dd

ddg

private DataDescriptorGenerator ddg
Constructor Detail

JarUtil

private JarUtil(LanguageConnectionContext lcc,
                java.lang.String schemaName,
                java.lang.String sqlName)
         throws StandardException
Throws:
StandardException
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

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 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(java.lang.String schemaName,
                                              java.lang.String sqlName,
                                              char separatorChar)
Make an external name for a jar file stored in the database.


Built on Thu 2012-03-29 21:53:33+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.