Skip to content

Commit

Permalink
TEIID-2256 undoing the ill-conceived previous refinement and instead
Browse files Browse the repository at this point in the history
adding a SimpleConnectionFactoryProvider
  • Loading branch information
shawkins committed Nov 1, 2012
1 parent d77c1cd commit 7838a88
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 86 deletions.
Expand Up @@ -41,7 +41,7 @@
import org.teiid.core.util.ReflectionHelper;


public abstract class BasicManagedConnectionFactory implements ManagedConnectionFactory, ResourceAdapterAssociation, ValidatingManagedConnectionFactory, ConnectionFactoryProvider<BasicConnectionFactory> {
public abstract class BasicManagedConnectionFactory implements ManagedConnectionFactory, ResourceAdapterAssociation, ValidatingManagedConnectionFactory {

private static final long serialVersionUID = -7302713800883776790L;
private PrintWriter log;
Expand Down

This file was deleted.

Expand Up @@ -148,12 +148,7 @@ public static void main(String[] args) throws Exception {
final JdbcDataSource h2ds = new JdbcDataSource();
h2ds.setURL("jdbc:h2:accounts");

EmbeddedServer.ConnectionFactoryProvider<DataSource> jdbcProvider = new EmbeddedServer.ConnectionFactoryProvider<DataSource>() {
@Override
public DataSource getConnectionFactory() throws TranslatorException {
return h2ds;
}
};
EmbeddedServer.ConnectionFactoryProvider<DataSource> jdbcProvider = new EmbeddedServer.SimpleConnectionFactoryProvider<DataSource>(h2ds);
Connection conn = jdbcProvider.getConnectionFactory().getConnection();
String schema = ObjectConverterUtil.convertFileToString(new File("data/customer-schema.sql"));
StringTokenizer st = new StringTokenizer(schema, ";");
Expand All @@ -175,17 +170,12 @@ public DataSource getConnectionFactory() throws TranslatorException {
// NOTE: every source that is being integrated, needs its connection provider and its translator
// check out https://docs.jboss.org/author/display/TEIID/Built-in+Translators prebuit translators
final ConnectionFactory cf = new FileConnectionFactory();
teiidServer.addConnectionFactoryProvider("source-file", new EmbeddedServer.ConnectionFactoryProvider<ConnectionFactory>() {
@Override
public ConnectionFactory getConnectionFactory() throws TranslatorException {
return cf;
}
});
teiidServer.addTranslator(new FileExecutionFactory());
teiidServer.addConnectionFactoryProvider("source-file", new EmbeddedServer.SimpleConnectionFactoryProvider<ConnectionFactory>(cf));
teiidServer.addTranslator(FileExecutionFactory.class);

// configure the connection provider and translator for jdbc based source
teiidServer.addConnectionFactoryProvider("source-jdbc", jdbcProvider);
teiidServer.addTranslator(new H2ExecutionFactory());
teiidServer.addTranslator(H2ExecutionFactory.class);

buildDeployVDB(teiidServer);

Expand Down
54 changes: 22 additions & 32 deletions runtime/src/main/java/org/teiid/runtime/EmbeddedServer.java
Expand Up @@ -189,35 +189,35 @@ public Object getConnectionFactory() throws TranslatorException {
if (getConnectionName() == null) {
return null;
}
org.teiid.resource.spi.ConnectionFactoryProvider<?> connectionFactoryProvider = connectionFactoryProviders.get(getConnectionName());
ConnectionFactoryProvider<?> connectionFactoryProvider = connectionFactoryProviders.get(getConnectionName());
if (connectionFactoryProvider != null) {
try {
return connectionFactoryProvider.createConnectionFactory();
} catch (Exception e) {
if (e instanceof TranslatorException) {
throw (TranslatorException)e;
}
if (e instanceof RuntimeException) {
throw (RuntimeException)e;
}
throw new TranslatorException(e);
}
return connectionFactoryProvider.getConnectionFactory();
}
return super.getConnectionFactory();
}
};
}
}

/**
*
* @Deprecated
* @see org.teiid.resource.spi.ConnectionFactoryProvider
*/
public interface ConnectionFactoryProvider<T> {
T getConnectionFactory() throws TranslatorException;
}

public static class SimpleConnectionFactoryProvider<T> implements ConnectionFactoryProvider<T> {

private T connectionFactory;

public SimpleConnectionFactoryProvider(T connectionFactory) {
this.connectionFactory = connectionFactory;
}

@Override
public T getConnectionFactory() throws TranslatorException {
return connectionFactory;
}

}

private static class VDBValidationError extends TeiidRuntimeException {

private VDBValidationError(Event event, String message) {
Expand All @@ -242,7 +242,7 @@ protected boolean processMetadataValidatorReport(VDBKey key, ValidatorReport rep
};
protected boolean throwMetadataErrors = true;
private ConcurrentHashMap<String, ExecutionFactory<?, ?>> translators = new ConcurrentHashMap<String, ExecutionFactory<?, ?>>();
private ConcurrentHashMap<String, org.teiid.resource.spi.ConnectionFactoryProvider<?>> connectionFactoryProviders = new ConcurrentHashMap<String, org.teiid.resource.spi.ConnectionFactoryProvider<?>>();
private ConcurrentHashMap<String, ConnectionFactoryProvider<?>> connectionFactoryProviders = new ConcurrentHashMap<String, ConnectionFactoryProvider<?>>();
protected SessionServiceImpl sessionService = new SessionServiceImpl();
protected ObjectReplicator replicator;
protected BufferServiceImpl bufferService = new BufferServiceImpl();
Expand Down Expand Up @@ -289,26 +289,16 @@ public EmbeddedServer() {
}

/**
* @deprecated
* @see #addConnectionFactoryProvider(String, ConnectionFactoryProvider)
* Adds the {@link ConnectionFactoryProvider} with the given connection name to replace the default JNDI lookup strategy.
* @param name
* @param connectionFactoryProvider
* @see SimpleConnectionFactoryProvider for a basic wrapper
*/
public void addConnectionFactoryProvider(String name,
final ConnectionFactoryProvider<?> connectionFactoryProvider) {
this.connectionFactoryProviders.put(name, new org.teiid.resource.spi.ConnectionFactoryProvider() {
@Override
public Object createConnectionFactory() throws Exception {
return connectionFactoryProvider.getConnectionFactory();
}
});
}

public void addConnectionFactoryProvider(String name,
org.teiid.resource.spi.ConnectionFactoryProvider<?> connectionFactoryProvider) {
ConnectionFactoryProvider<?> connectionFactoryProvider) {
this.connectionFactoryProviders.put(name, connectionFactoryProvider);
}

public synchronized void start(@SuppressWarnings("hiding") EmbeddedConfiguration config) {
if (running != null) {
throw new IllegalStateException();
Expand Down
Expand Up @@ -251,13 +251,7 @@ public int[] getUpdateCounts() throws DataNotAvailableException,
}
});
final AtomicInteger counter = new AtomicInteger();
ConnectionFactoryProvider<AtomicInteger> cfp = new ConnectionFactoryProvider<AtomicInteger>() {
@Override
public AtomicInteger getConnectionFactory()
throws TranslatorException {
return counter;
}
};
ConnectionFactoryProvider<AtomicInteger> cfp = new EmbeddedServer.SimpleConnectionFactoryProvider<AtomicInteger>(counter);

es.addConnectionFactoryProvider("z", cfp);

Expand Down

0 comments on commit 7838a88

Please sign in to comment.