Repository: metamodel Updated Branches: refs/heads/master 406422c67 -> 3a7483c89
METAMODEL-109: CassandraDataContext throws IllegalArgumentException with proper message instead of NPE when keystore does not exist. Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/3a7483c8 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/3a7483c8 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/3a7483c8 Branch: refs/heads/master Commit: 3a7483c89b2e4ab15ca6a2af514fe7679718603c Parents: 406422c Author: tomaszguzialek <[email protected]> Authored: Fri Jan 30 13:33:26 2015 +0100 Committer: tomaszguzialek <[email protected]> Committed: Fri Jan 30 13:33:26 2015 +0100 ---------------------------------------------------------------------- .../metamodel/cassandra/CassandraDataContext.java | 3 +++ .../metamodel/cassandra/CassandraDataContextTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/3a7483c8/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java ---------------------------------------------------------------------- diff --git a/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java b/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java index 03f35ae..f7af49b 100644 --- a/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java +++ b/cassandra/src/main/java/org/apache/metamodel/cassandra/CassandraDataContext.java @@ -105,6 +105,9 @@ public class CassandraDataContext extends QueryPostprocessDataContext implements public static SimpleTableDef[] detectSchema(Cluster cluster, String keyspaceName) { final Metadata metadata = cluster.getMetadata(); final KeyspaceMetadata keyspace = metadata.getKeyspace(keyspaceName); + if (keyspace == null) { + throw new IllegalArgumentException("Keyspace '" + keyspaceName + "' does not exist in the database"); + } final Collection<TableMetadata> tables = keyspace.getTables(); final SimpleTableDef[] result = new SimpleTableDef[tables.size()]; int i = 0; http://git-wip-us.apache.org/repos/asf/metamodel/blob/3a7483c8/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java ---------------------------------------------------------------------- diff --git a/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java b/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java index b736ab1..a48e3a9 100644 --- a/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java +++ b/cassandra/src/test/java/org/apache/metamodel/cassandra/CassandraDataContextTest.java @@ -197,6 +197,19 @@ public class CassandraDataContextTest extends CassandraTestCase { assertTrue(thrown); } + public void testNonExistentKeystore() { + if (!isConfigured()) { + System.err.println(getInvalidConfigurationMessage()); + return; + } + try { + new CassandraDataContext(cluster, "nonExistentKeyspace"); + fail(); + } catch (IllegalArgumentException e) { + assertNotNull(e); + } + } + private void createCassandraKeySpaceAndTable(Session session) { session.execute("CREATE KEYSPACE IF NOT EXISTS " + getKeyspaceName() + " WITH replication " + "= {'class':'SimpleStrategy', 'replication_factor':1};");
