001: /*
002:
003: Derby - Class org.apache.derby.jdbc.EmbeddedXADataSource40
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to You under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.jdbc;
023:
024: import org.apache.derby.iapi.jdbc.ResourceAdapter;
025:
026: import java.sql.SQLException;
027: import javax.sql.DataSource;
028: import javax.sql.XAConnection;
029: import javax.sql.XADataSource;
030:
031: import org.apache.derby.impl.jdbc.Util;
032: import org.apache.derby.iapi.reference.SQLState;
033:
034: /**
035:
036: EmbeddedXADataSource40 is Derby's XADataSource implementation for JDBC4.0.
037:
038:
039: <P>An XADataSource is a factory for XAConnection objects. It represents a
040: RM in a DTP environment. An object that implements the XADataSource
041: interface is typically registered with a JNDI service provider.
042: <P>
043: EmbeddedXADataSource40 supports the JDBC 4.0 specification
044: for the J2SE 6.0 Java Virtual Machine environment. Use EmbeddedXADataSource
045: if your application runs in the following environments:
046: <UL>
047: <LI> JDBC 3.0 - Java 2 - JDK 1.4, J2SE 5.0
048: <LI> JDBC 2.0 - Java 2 - JDK 1.2,1.3
049: </UL>
050:
051: <P>EmbeddedXADataSource40 object only works on a local database. There is no
052: client/server support. An EmbeddedXADataSource40 object must live in the same jvm as
053: the database.
054:
055: <P>EmbeddedXADataSource40 is serializable and referenceable.
056:
057: <P>See EmbeddedDataSource40 for DataSource properties.
058:
059: */
060: public class EmbeddedXADataSource40 extends EmbeddedXADataSource {
061: /** Creates a new instance of EmbeddedXADataSource40 */
062: public EmbeddedXADataSource40() {
063: super ();
064: }
065:
066: /**
067: * Returns false unless <code>interfaces</code> is implemented
068: *
069: * @param interfaces a Class defining an interface.
070: * @return true if this implements the interface or
071: * directly or indirectly wraps an object
072: * that does.
073: * @throws java.sql.SQLException if an error occurs while determining
074: * whether this is a wrapper for an object
075: * with the given interface.
076: */
077: public boolean isWrapperFor(Class<?> interfaces)
078: throws SQLException {
079: return interfaces.isInstance(this );
080: }
081:
082: /**
083: * Returns <code>this</code> if this class implements the interface
084: *
085: * @param interfaces a Class defining an interface
086: * @return an object that implements the interface
087: * @throws java.sql.SQLExption if no object if found that implements the
088: * interface
089: */
090: public <T> T unwrap(java.lang.Class<T> interfaces)
091: throws SQLException {
092: //Derby does not implement non-standard methods on
093: //JDBC objects
094: //hence return this if this class implements the interface
095: //or throw an SQLException
096: try {
097: return interfaces.cast(this );
098: } catch (ClassCastException cce) {
099: throw Util.generateCsSQLException(
100: SQLState.UNABLE_TO_UNWRAP, interfaces);
101: }
102: }
103:
104: /**
105: * Intantiate and returns EmbedXAConnection.
106: * @param user
107: * @param password
108: * @return XAConnection
109: */
110: protected XAConnection createXAConnection(ResourceAdapter ra,
111: String user, String password, boolean requestPassword)
112: throws SQLException {
113: return new EmbedXAConnection40(this, ra, user, password,
114: requestPassword);
115: }
116: }
|