| /* |
| * Copyright (c) 1998, 2019 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation from Oracle TopLink |
| package org.eclipse.persistence.sessions; |
| |
| import java.util.Properties; |
| |
| import org.eclipse.persistence.core.sessions.CoreLogin; |
| import org.eclipse.persistence.exceptions.DatabaseException; |
| import org.eclipse.persistence.internal.databaseaccess.Accessor; |
| import org.eclipse.persistence.internal.databaseaccess.Platform; |
| import org.eclipse.persistence.platform.database.DatabasePlatform; |
| |
| /** |
| * <p> |
| * <b>Purpose</b>: Define the information required to connect to an EclipseLink session. |
| * <p> |
| * <b>Description</b>: This interface represents a generic concept of a login to be used |
| * when connecting to a data-store. It is independent of JDBC so that the EclipseLink |
| * session interface can be used for JCA, XML, non-relational or three-tiered frameworks. |
| * |
| * @see DatabaseLogin |
| */ |
| public interface Login extends CoreLogin<Platform> { |
| |
| /** |
| * PUBLIC: |
| * All logins must take a user name and password. |
| */ |
| String getPassword(); |
| |
| /** |
| * PUBLIC: |
| * All logins must take a user name and password. |
| */ |
| String getUserName(); |
| |
| /** |
| * PUBLIC: |
| * This value defaults to false when not on a DatabaseLogin as the functionality has not been implemented |
| * for other datasource type. On an SQL Exception EclipseLink will ping the database to determine |
| * if the connection used can continue to be used for queries. This should have no impact on applications |
| * unless the user is using pessimistic locking queries with 'no wait' or are using a query timeout feature. |
| * If that is the case and the application is experiencing a performance impact from the health check then |
| * this feature can be turned off. Turning this feature off will prevent EclipseLink from being able to |
| * retry queries in the case of database failure. |
| */ |
| boolean isConnectionHealthValidatedOnError(); |
| |
| /** |
| * PUBLIC: |
| * All logins must take a user name and password. |
| */ |
| void setPassword(String password); |
| |
| /** |
| * PUBLIC: |
| * All logins must take a user name and password. |
| */ |
| void setUserName(String userName); |
| |
| /** |
| * PUBLIC: |
| * Return whether EclipseLink uses some externally managed connection pooling. |
| */ |
| boolean shouldUseExternalConnectionPooling(); |
| |
| /** |
| * PUBLIC: |
| * Return whether EclipseLink uses some externally managed transaction service such as JTS. |
| */ |
| boolean shouldUseExternalTransactionController(); |
| |
| /** |
| * INTERNAL: |
| * Return the database platform specific information. |
| * This allows EclipseLink to configure certain advanced features for the database desired. |
| * The platform also allows configuration of sequence information. |
| * NOTE: this must only be used for relational specific usage and will not work for |
| * non-relational datasources. |
| */ |
| DatabasePlatform getPlatform(); |
| |
| /** |
| * PUBLIC: |
| * Return the datasource platform specific information. |
| * This allows EclipseLink to configure certain advanced features for the datasource desired. |
| * The platform also allows configuration of sequence information. |
| */ |
| @Override |
| Platform getDatasourcePlatform(); |
| |
| /** |
| * INTERNAL: |
| * Set the database platform specific information. |
| * This allows EclipseLink to configure certain advanced features for the database desired. |
| * The platform also allows configuration of sequence information. |
| */ |
| void setPlatform(Platform platform); |
| |
| /** |
| * PUBLIC: |
| * Set the database platform specific information. |
| * This allows EclipseLink to configure certain advanced features for the database desired. |
| * The platform also allows configuration of sequence information. |
| */ |
| void setDatasourcePlatform(Platform platform); |
| |
| /** |
| * INTERNAL: |
| * Connect to the datasource, and return the driver level connection object. |
| */ |
| Object connectToDatasource(Accessor accessor, Session session) throws DatabaseException; |
| |
| /** |
| * INTERNAL: |
| * Build the correct datasource Accessor for this login instance. |
| */ |
| Accessor buildAccessor(); |
| |
| /** |
| * INTERNAL: |
| * Clone the login. |
| */ |
| Login clone(); |
| |
| /** |
| * PUBLIC: |
| * Return the qualifier for the all of the tables. |
| */ |
| String getTableQualifier(); |
| |
| /** |
| * INTERNAL: |
| * Used for cache isolation. |
| */ |
| boolean shouldAllowConcurrentReadWrite(); |
| |
| /** |
| * INTERNAL: |
| * Used for Cache Isolation. Causes EclipseLink to lock at the class level on |
| * cache updates. |
| */ |
| boolean shouldSynchronizeWrites(); |
| |
| /** |
| * INTERNAL: |
| * Used for Cache Isolation. Causes EclipseLink to lock at the object level on |
| * cache updates and cache access. |
| */ |
| boolean shouldSynchronizeObjectLevelReadWrite(); |
| |
| /** |
| * INTERNAL: |
| * Used for Cache Isolation. Causes EclipseLink to lock at the object level on |
| * cache updates and cache access, based on database transaction. |
| */ |
| boolean shouldSynchronizeObjectLevelReadWriteDatabase(); |
| |
| /** |
| * INTERNAL: |
| * Used for cache isolation. |
| */ |
| boolean shouldSynchronizedReadOnWrite(); |
| |
| /** |
| * PUBLIC: |
| * The properties are additional, driver-specific, connection information |
| * to be passed to the driver.<p> |
| * NOTE: Do not set the password directly by getting the properties and |
| * setting the "password" property directly. Use the method DatabaseLogin.setPassword(String). |
| */ |
| Object getProperty(String name); |
| |
| /** |
| * PUBLIC: |
| * The properties are additional, driver-specific, connection information |
| * to be passed to the JDBC driver. |
| */ |
| void setProperties(Properties properties); |
| |
| /** |
| * PUBLIC: |
| * Some JDBC drivers require additional, driver-specific, properties. |
| * Add the specified property to those to be passed to the JDBC driver. |
| */ |
| void setProperty(String propertyName, Object propertyValue); |
| } |