Class BasicEmbeddedDataSource40

  • All Implemented Interfaces:
    java.io.Serializable, java.sql.Wrapper, javax.sql.CommonDataSource, javax.sql.DataSource, EmbeddedDataSourceInterface
    Direct Known Subclasses:
    BasicEmbeddedConnectionPoolDataSource40, BasicEmbeddedXADataSource40, ReferenceableDataSource

    public class BasicEmbeddedDataSource40
    extends java.lang.Object
    implements javax.sql.DataSource, java.io.Serializable, EmbeddedDataSourceInterface
    This data source is suitable for an application using embedded Derby, running on Java 8 Compact Profile 2 or higher.

    BasicEmbeddedDataSource40 is similar to EmbeddedDataSource, but does not support JNDI naming, i.e. it does not implement javax.naming.Referenceable.

    The standard attributes provided are, cf. e.g. table 9.1 in the JDBC 4.2 specification.

    • databaseName
    • dataSourceName
    • description
    • password
    • user
    These standard attributes are not supported:
    • networkProtocol
    • portNumber
    • roleName
    • serverName
    The embedded Derby driver also supports these attributes:
    • loginTimeout
    • @see javax.sql.CommonDataSource set/get
    • logWriter
    • @see javax.sql.CommonDataSource set/get
    • createDatabase
    • connectionAttributes
    • shutdownDatabase
    • attributesAsPassword

    See the specific Derby DataSource implementation for details on their meaning.

    See also the JDBC specifications for more details.

    See Also:
    EmbeddedDataSource, Serialized Form
    • Constructor Detail

      • BasicEmbeddedDataSource40

        public BasicEmbeddedDataSource40()
        Constructs a basic embedded data source. See the class Javadoc.
    • Method Detail

      • setDatabaseName

        public void setDatabaseName​(java.lang.String databaseName)
        Set the database name. Setting this property is mandatory. If a database named wombat at g:/db needs to be accessed, database name should be set to "g:/db/wombat". The database will be booted if it is not already running in the system.
        Specified by:
        setDatabaseName in interface EmbeddedDataSourceInterface
        Parameters:
        databaseName - the name of the database
      • getShortDatabaseName

        private java.lang.String getShortDatabaseName()
        Return database name with ant attributes stripped off.
      • setDataSourceName

        public void setDataSourceName​(java.lang.String dsn)
        Set the data source name. The property is not mandatory. It is used for informational purposes only.
        Specified by:
        setDataSourceName in interface EmbeddedDataSourceInterface
        Parameters:
        dsn - the name of the data source
      • setDescription

        public void setDescription​(java.lang.String desc)
        Set the data source descripton. This property is not mandatory. It is used for informational purposes only.
        Specified by:
        setDescription in interface EmbeddedDataSourceInterface
        Parameters:
        desc - the description of the data source
      • setUser

        public void setUser​(java.lang.String user)
        Set the user property for the data source.

        This is user name for any data source getConnection() call that takes no arguments.

        Specified by:
        setUser in interface EmbeddedDataSourceInterface
        Parameters:
        user - The user
      • setPassword

        public void setPassword​(java.lang.String password)
        Set the password property for the data source.

        This is user's password for any data source getConnection() call that takes no arguments.

        Specified by:
        setPassword in interface EmbeddedDataSourceInterface
        Parameters:
        password - The password in plain text
      • getLoginTimeout

        public int getLoginTimeout()
                            throws java.sql.SQLException
        Gets the maximum time in seconds that this data source can wait while attempting to connect to a database. A value of zero means that the timeout is the default system timeout if there is one; otherwise it means that there is no timeout. When a data source object is created, the login timeout is initially zero. See setLoginTimeout(int).
        Specified by:
        getLoginTimeout in interface javax.sql.CommonDataSource
        Specified by:
        getLoginTimeout in interface javax.sql.DataSource
        Returns:
        the data source login time limit
        Throws:
        java.sql.SQLException - if a database access error occurs.
      • setLoginTimeout

        public void setLoginTimeout​(int seconds)
                             throws java.sql.SQLException
        Sets the maximum time in seconds that this data source will wait while attempting to connect to a database. A value of zero specifies that the timeout is the default system timeout if there is one; otherwise it specifies that there is no timeout. When a data source object is created, the login timeout is initially zero.

        Derby currently ignores this property.

        Specified by:
        setLoginTimeout in interface javax.sql.CommonDataSource
        Specified by:
        setLoginTimeout in interface javax.sql.DataSource
        Parameters:
        seconds - the data source login time limit
        Throws:
        java.sql.SQLException - if a database access error occurs.
      • getLogWriter

        public java.io.PrintWriter getLogWriter()
                                         throws java.sql.SQLException
        Get the log writer for this data source.

        The log writer is a character output stream to which all logging and tracing messages for this data source object instance will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data source specific log writer are not printed to the log writer associated with the java.sql.Drivermanager class. When a data source object is created the log writer is initially null, in other words, logging is disabled.

        Specified by:
        getLogWriter in interface javax.sql.CommonDataSource
        Specified by:
        getLogWriter in interface javax.sql.DataSource
        Returns:
        the log writer for this data source, null if disabled
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • setLogWriter

        public void setLogWriter​(java.io.PrintWriter out)
                          throws java.sql.SQLException
        Set the log writer for this data source.

        The log writer is a character output stream to which all logging and tracing messages for this data source object instance will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data source specific log writer are not printed to the log writer associated with the java.sql.Drivermanager class. When a data source object is created the log writer is initially null, in other words, logging is disabled.

        Specified by:
        setLogWriter in interface javax.sql.CommonDataSource
        Specified by:
        setLogWriter in interface javax.sql.DataSource
        Parameters:
        out - the new log writer; to disable, set to null
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • update

        protected void update()
        Update jdbcurl from attributes set.
      • setCreateDatabase

        public void setCreateDatabase​(java.lang.String create)
        Set this property to create a new database. If this property is not set, the database (identified by databaseName) is assumed to be already existing.
        Specified by:
        setCreateDatabase in interface EmbeddedDataSourceInterface
        Parameters:
        create - if set to the string "create", this data source will try to create a new database of databaseName, or boot the database if one by that name already exists.
      • findDriver

        InternalDriver findDriver()
                           throws java.sql.SQLException
        Return a handle to the internal driver, possibly instantiating it first if it hasn't been booted or if it has been shut down.
        Returns:
        The internal driver handle
        Throws:
        java.sql.SQLException
      • setConnectionAttributes

        public void setConnectionAttributes​(java.lang.String prop)
        Set this property to pass in more Derby specific connection URL attributes.
        Any attributes that can be set using a property of this DataSource implementation (e.g user, password) should not be set in connection attributes. Conflicting settings in connection attributes and properties of the DataSource will lead to unexpected behaviour.
        Specified by:
        setConnectionAttributes in interface EmbeddedDataSourceInterface
        Parameters:
        prop - set to the list of Derby connection attributes separated by semi-colons. E.g., to specify an encryption bootPassword of "x8hhk2adf", and set upgrade to true, do the following:
             ds.setConnectionAttributes("bootPassword=x8hhk2adf;upgrade=true");
         
        See the Derby documentation for complete list.
      • setShutdownDatabase

        public void setShutdownDatabase​(java.lang.String shutdown)
        Set this property if you wish to shutdown the database identified by databaseName.
        Specified by:
        setShutdownDatabase in interface EmbeddedDataSourceInterface
        Parameters:
        shutdown - if set to the string "shutdown", this data source will shutdown the database if it is running.
      • setAttributesAsPassword

        public void setAttributesAsPassword​(boolean attributesAsPassword)
        Set attributeAsPassword property to enable passing connection request attributes in the password argument of getConnection(String,String). If the property is set to true then the password argument of the getConnection(String, String) method call is taken to be a list of connection attributes with the same format as the connectionAttributes property.
        Specified by:
        setAttributesAsPassword in interface EmbeddedDataSourceInterface
        Parameters:
        attributesAsPassword - Use true to encode password argument as a set of connection attributes in a connection request.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        Attempt to establish a database connection.
        Specified by:
        getConnection in interface javax.sql.DataSource
        Returns:
        a Connection to the database
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • getConnection

        public java.sql.Connection getConnection​(java.lang.String username,
                                                 java.lang.String password)
                                          throws java.sql.SQLException
        Attempt to establish a database connection with the given username and password. If the attributeAsPassword property is set to true then the password argument is taken to be a list of connection attributes with the same format as the connectionAttributes property.
        Specified by:
        getConnection in interface javax.sql.DataSource
        Parameters:
        username - the database user on whose behalf the Connection is being made
        password - the user's password
        Returns:
        a Connection to the database
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • getConnection

        final java.sql.Connection getConnection​(java.lang.String username,
                                                java.lang.String password,
                                                boolean requestPassword)
                                         throws java.sql.SQLException
        Get a user connection: minion method.
        Parameters:
        username - the user name
        password - the password
        requestPassword - true if the password came from the getConnection() call with user and password arguments..
        Returns:
        user connection
        Throws:
        java.sql.SQLException
      • isWrapperFor

        public boolean isWrapperFor​(java.lang.Class<?> interFace)
                             throws java.sql.SQLException
        Returns false unless interFace is implemented.
        Specified by:
        isWrapperFor in interface java.sql.Wrapper
        Parameters:
        interFace - a class defining an interface
        Returns:
        true if this implements the interface or directly or indirectly wraps an object that does
        Throws:
        java.sql.SQLException - if an error occurs while determining whether this is a wrapper for an object with the given interface
      • unwrap

        public <T> T unwrap​(java.lang.Class<T> iface)
                     throws java.sql.SQLException
        Returns this if this class implements the specified interface.
        Specified by:
        unwrap in interface java.sql.Wrapper
        Parameters:
        iface - a class defining an interface
        Returns:
        an object that implements the interface
        Throws:
        java.sql.SQLException - if no object is found that implements the interface
      • setupResourceAdapter

        protected static ResourceAdapter setupResourceAdapter​(EmbeddedXADataSourceInterface ds,
                                                              ResourceAdapter ra,
                                                              java.lang.String user,
                                                              java.lang.String password,
                                                              boolean requestPassword)
                                                       throws java.sql.SQLException
        Return a resource adapter. Use ra if non-null and active, else get the one for the data base.
        Parameters:
        ds - The data source
        ra - The cached value if any
        user - The user name
        password - The password in clear text
        requestPassword - If true, use the supplied user and password to boot the database if required
        Returns:
        the resource adapter
        Throws:
        java.sql.SQLException - An error occurred
      • getParentLogger

        public java.util.logging.Logger getParentLogger()
                                                 throws java.sql.SQLFeatureNotSupportedException
        Specified by:
        getParentLogger in interface javax.sql.CommonDataSource
        Throws:
        java.sql.SQLFeatureNotSupportedException
      • getMonitor

        private static ModuleFactory getMonitor()
        Privileged Monitor lookup. Must be private so that user code can't call this entry point.
      • findService

        private static java.lang.Object findService​(java.lang.String factoryInterface,
                                                    java.lang.String serviceName)
        Privileged service lookup. Must be private so that user code can't call this entry point.