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