001/*
002 *  Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
003 *  <p>
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *  <p>
008 *  http://www.apache.org/licenses/LICENSE-2.0
009 *  <p>
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package com.mybatisflex.core.datasource;
017
018
019import javax.sql.DataSource;
020import java.io.PrintWriter;
021import java.sql.SQLException;
022import java.util.logging.Logger;
023
024
025public abstract class AbstractDataSource implements DataSource {
026
027
028    /**
029     * Returns 0, indicating the default system timeout is to be used.
030     */
031    @Override
032    public int getLoginTimeout() throws SQLException {
033        return 0;
034    }
035
036    /**
037     * Setting a login timeout is not supported.
038     */
039    @Override
040    public void setLoginTimeout(int timeout) throws SQLException {
041        throw new UnsupportedOperationException("setLoginTimeout");
042    }
043
044    /**
045     * LogWriter methods are not supported.
046     */
047    @Override
048    public PrintWriter getLogWriter() {
049        throw new UnsupportedOperationException("getLogWriter");
050    }
051
052    /**
053     * LogWriter methods are not supported.
054     */
055    @Override
056    public void setLogWriter(PrintWriter pw) throws SQLException {
057        throw new UnsupportedOperationException("setLogWriter");
058    }
059
060
061    @Override
062    @SuppressWarnings("unchecked")
063    public <T> T unwrap(Class<T> iface) throws SQLException {
064        if (iface.isInstance(this)) {
065            return (T) this;
066        }
067        throw new SQLException("DataSource of type [" + getClass().getName() +
068            "] cannot be unwrapped as [" + iface.getName() + "]");
069    }
070
071    @Override
072    public boolean isWrapperFor(Class<?> iface) throws SQLException {
073        return iface.isInstance(this);
074    }
075
076
077    @Override
078    public Logger getParentLogger() {
079        return Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
080    }
081
082}