~ubuntu-branches/ubuntu/oneiric/mysql-connector-java/oneiric

« back to all changes in this revision

Viewing changes to src/com/mysql/jdbc/JDBC4DatabaseMetaDataUsingInfoSchema.java

  • Committer: Bazaar Package Importer
  • Author(s): Michael Koch
  • Date: 2007-11-30 10:34:13 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20071130103413-mxm4lpfrr4fnjbuj
Tags: 5.1.5+dfsg-1
* New upstream release. Closes: #450718.
* Add Homepage field to debian/control.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 Copyright (C) 2002-2007 MySQL AB
 
3
 
 
4
 This program is free software; you can redistribute it and/or modify
 
5
 it under the terms of version 2 of the GNU General Public License as 
 
6
 published by the Free Software Foundation.
 
7
 
 
8
 There are special exceptions to the terms and conditions of the GPL 
 
9
 as it is applied to this software. View the full text of the 
 
10
 exception in file EXCEPTIONS-CONNECTOR-J in the directory of this 
 
11
 software distribution.
 
12
 
 
13
 This program is distributed in the hope that it will be useful,
 
14
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
 GNU General Public License for more details.
 
17
 
 
18
 You should have received a copy of the GNU General Public License
 
19
 along with this program; if not, write to the Free Software
 
20
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
21
 
 
22
 */
 
23
 
 
24
package com.mysql.jdbc;
 
25
 
 
26
import java.sql.ResultSet;
 
27
import java.sql.RowIdLifetime;
 
28
import java.sql.SQLException;
 
29
import java.sql.Types;
 
30
import java.util.ArrayList;
 
31
 
 
32
import java.util.List;
 
33
 
 
34
public class JDBC4DatabaseMetaDataUsingInfoSchema extends DatabaseMetaDataUsingInfoSchema {
 
35
        public JDBC4DatabaseMetaDataUsingInfoSchema(ConnectionImpl connToSet, String databaseToSet) throws SQLException {
 
36
                super(connToSet, databaseToSet);
 
37
        }
 
38
 
 
39
        public RowIdLifetime getRowIdLifetime() throws SQLException {
 
40
                return RowIdLifetime.ROWID_UNSUPPORTED;
 
41
        }
 
42
 
 
43
        /**
 
44
     * Returns true if this either implements the interface argument or is directly or indirectly a wrapper
 
45
     * for an object that does. Returns false otherwise. If this implements the interface then return true,
 
46
     * else if this is a wrapper then return the result of recursively calling <code>isWrapperFor</code> on the wrapped
 
47
     * object. If this does not implement the interface and is not a wrapper, return false.
 
48
     * This method should be implemented as a low-cost operation compared to <code>unwrap</code> so that
 
49
     * callers can use this method to avoid expensive <code>unwrap</code> calls that may fail. If this method
 
50
     * returns true then calling <code>unwrap</code> with the same argument should succeed.
 
51
     *
 
52
     * @param interfaces a Class defining an interface.
 
53
     * @return true if this implements the interface or directly or indirectly wraps an object that does.
 
54
     * @throws java.sql.SQLException  if an error occurs while determining whether this is a wrapper
 
55
     * for an object with the given interface.
 
56
     * @since 1.6
 
57
     */
 
58
        public boolean isWrapperFor(Class<?> iface) throws SQLException {
 
59
                // This works for classes that aren't actually wrapping
 
60
                // anything
 
61
                return iface.isInstance(this);
 
62
        }
 
63
 
 
64
    /**
 
65
     * Returns an object that implements the given interface to allow access to non-standard methods,
 
66
     * or standard methods not exposed by the proxy.
 
67
     * The result may be either the object found to implement the interface or a proxy for that object.
 
68
     * If the receiver implements the interface then that is the object. If the receiver is a wrapper
 
69
     * and the wrapped object implements the interface then that is the object. Otherwise the object is
 
70
     *  the result of calling <code>unwrap</code> recursively on the wrapped object. If the receiver is not a
 
71
     * wrapper and does not implement the interface, then an <code>SQLException</code> is thrown.
 
72
     *
 
73
     * @param iface A Class defining an interface that the result must implement.
 
74
     * @return an object that implements the interface. May be a proxy for the actual implementing object.
 
75
     * @throws java.sql.SQLException If no object found that implements the interface 
 
76
     * @since 1.6
 
77
     */
 
78
    public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException {
 
79
        try {
 
80
                // This works for classes that aren't actually wrapping
 
81
                // anything
 
82
            return iface.cast(this);
 
83
        } catch (ClassCastException cce) {
 
84
            throw SQLError.createSQLException("Unable to unwrap to " + iface.toString(), 
 
85
                        SQLError.SQL_STATE_ILLEGAL_ARGUMENT);
 
86
        }
 
87
    }
 
88
 
 
89
        protected int getJDBC4FunctionNoTableConstant() {
 
90
                return functionNoTable;
 
91
        }
 
92
}