I am using the new object mapping API for the first time with a 2.1
cluster. Recently I hit a problem when using different keyspace names,
i.e. the keyspace in our integration test environment was called
differently from the keyspace we use in our staging environment.

The problem is that the keyspace in the object mapping API is
specified at compile time using the keyspace attribute in the @UDT or
@Table annotation of the annotated bean. This sort of makes it less
flexible as you cannot re-use the bean in different keyspaces, so I
was wondering why the API has been designed like this - I guess there
is a reason?

Looking at MappingManager.getUDTMapper or MappingManager.getMapper,
access to a session instance exists, which could have been used to
fetch the keyspace name instead or as a fallback. Of course the
session could not be connected to a keyspace, but the user can be told
that with a nice Exception.

How do you feel about adding a fallback like this:
- keyspace defined in @UDT or @Table = use it (todays behaviour)
- otherwise if keyspace is empty, use session.getLoggedKeyspace
- if getLoggedKeyspace is empty = improved Exception

Currently you get a NullpointerException in UDTMapper or Mapper if the
keyspace doesn't exist. If you guys agree, I would like to write a
patch.

Cheers,
Reik

Reply via email to