/**
* Copyright 2015-2016 Red Hat, Inc, and individual contributors.
*
* 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.
*/
package org.wildfly.swarm.datasources;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.Assignable;
import org.wildfly.swarm.config.datasources.DataSource;
import org.wildfly.swarm.config.datasources.DataSourceConsumer;
/** A simplistic archive to allow deployment-based creation of datasources.
*
* <p>While not the recommended method for deploying datasources, this archive
* type helps with the creation of WildFly-specific {@code -ds.xml} files
* within an archive. It can be driver by exactly the same API for creating
* datasources through {@link DatasourcesFraction} configuration</p>
*
* @see DatasourcesFraction
*
* @author Bob McWhirter
*/
public interface DatasourceArchive extends Assignable, Archive<DatasourceArchive> {
/** Create an configure a datasource.
*
* @param key The key of the datasource.
* @param consumer The configuring consumer.
* @return This archive.
*/
DatasourceArchive dataSource(String key, DataSourceConsumer consumer);
/** Create a configured datasource
*
* @param ds The completely configured datasource.
* @return This archive.
*/
DatasourceArchive dataSource(DataSource ds);
}