Hi folks,

I thought over simplifying Database and ContextPartition, and here's my idea:

1) Do we need that much modification operations (add, delete, move
...) in Database?

No we don't need that much, all we need is:

* Put (used to add and replace entries)
* Remove (used to delete entries)

We could be able to combine put and remove operation to move or rename
entries, and therefore rename and move operation is splitted into many
small operations, so we need transaction here:

Database db = ...;
Transaction tx = db.beginTransaction();
tx.delete( entryWithOldName );
tx.put( entryWithNewName );
tx.commit();

2) Let's remove ContextPartition

If once the behavior of Database is defined in detail, we will be able
to create concrete implementation of
frontend to Database, and users won't need to reimplement it and just
use it.  So we can hide it easily:

ContextPartitionConfiguration cfg = ...;
cfg.setDatabase( new InMemoryDatabase() );

3) DatabaseNexus and RootNexus

The role of DatabaseNexus is similar to that of RootNexus.  We could
forward any operations to appropriate Database implementation.  Using
DatabaseNexus, we will be able to make RootNexus just a frontend to
DatabaseNexus that translates complex JNDI operations into small
Database operations.

Plus we'll need to expose DatabaseNexus to Interceptors for
interceptors that need a fine-grained control over database.

I attached class diagram and sequence diagram for this change to help
you understand this easily.

Any feedbacks are welcome!

Trustin
-- 
what we call human nature is actually human habit
--
http://gleamynode.net/

Attachment: classes.gif
Description: GIF image

Attachment: interactions.gif
Description: GIF image

Reply via email to