SecretPGXADataSource.java
/*
* Copyright 2010-2019 James Pether Sörling
*
* Licensed 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.
*
* $Id$
* $HeadURL$
*/
package com.hack23.cia.service.data.impl.util;
import java.sql.SQLException;
import javax.naming.Reference;
import javax.sql.XAConnection;
import org.postgresql.xa.PGXADataSource;
/**
* The Class SecretPGXADataSource.
*/
public class SecretPGXADataSource extends PGXADataSource {
/** The secret credentials manager. */
private final SecretCredentialsManager secretCredentialsManager;
/**
* Instantiates a new secret PGXA data source.
*
* @param secretCredentialsManager the secret credentials manager
*/
public SecretPGXADataSource(final SecretCredentialsManager secretCredentialsManager) {
super();
this.secretCredentialsManager = secretCredentialsManager;
}
@Override
public XAConnection getXAConnection() throws SQLException {
return getXAConnection(secretCredentialsManager.getUsername(), secretCredentialsManager.getPassword());
}
@Override
protected Reference createReference() {
return new SecretReference(secretCredentialsManager,getClass().getName(), SecretPGXADataSourceFactory.class.getName(), null);
}
/**
* The Class SecretReference.
*/
public static class SecretReference extends Reference {
/** The Constant serialVersionUID. */
private static final long serialVersionUID = 1L;
/** The secret credentials manager. */
private final SecretCredentialsManager secretCredentialsManager;
/**
* Instantiates a new secret reference.
*
* @param secretCredentialsManager the secret credentials manager
* @param className the class name
* @param factory the factory
* @param factoryLocation the factory location
*/
public SecretReference(final SecretCredentialsManager secretCredentialsManager,final String className, final String factory, final String factoryLocation) {
super(className,factory, factoryLocation);
this.secretCredentialsManager = secretCredentialsManager;
}
/**
* Gets the secret credentials manager.
*
* @return the secret credentials manager
*/
public final SecretCredentialsManager getSecretCredentialsManager() {
return secretCredentialsManager;
}
}
}