blob: fe1a7f58a0d638ed61af3f3d72e8fc4bd1beb2b0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.batchee.extras.jdbc;
import org.apache.batchee.doc.api.Documentation;
import javax.batch.api.BatchProperty;
import javax.batch.operations.BatchRuntimeException;
import javax.inject.Inject;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DriverManager;
public abstract class JdbcConnectionConfiguration {
@Inject
@BatchProperty
@Documentation("The JNDI name of the datasource")
private String jndi;
@Inject
@BatchProperty
@Documentation("The datasource driver to use if jndi is null")
protected String driver;
@Inject
@BatchProperty
@Documentation("The datasource url to use if jndi is null")
protected String url;
@Inject
@BatchProperty
@Documentation("The datasource user to use if jndi is null")
protected String user;
@Inject
@BatchProperty
@Documentation("The datasource password to use if jndi is null")
protected String password;
protected Connection connection() throws Exception {
if (jndi != null) {
return DataSource.class.cast(new InitialContext().lookup(jndi)).getConnection();
}
try {
Class.forName(driver);
} catch (final ClassNotFoundException e) {
throw new BatchRuntimeException(e);
}
return DriverManager.getConnection(url, user, password);
}
}