Dear Geode contributors,
I just got some detail about support for Apache Geode by Apache Zest in its
persistence abstraction.  It will be a while before they have a new
release, but this support is available in their github already.

Here is the implementation,
https://github.com/apache/zest-java/blob/develop/extensions/entitystore-geode/src/main/java/org/apache/zest/entitystore/geode/GeodeEntityStoreMixin.java

AND the configuration options that are supported initially can be seen in;
https://github.com/apache/zest-java/blob/develop/extensions/entitystore-geode/src/main/java/org/apache/zest/entitystore/geode/GeodeConfiguration.java


What does this mean? Well, Zest has a persistence abstraction for its
runtime model, and users can swap out any of the other Entity Stores
without code changes beyond the "assembly" (start up).

Entities are declared like this;

public interface Book
{
    @Optional
    Property<ISBN> isbn();

    @Immutable
    Property<String> title();

    @Immutable
    Association<Author> author();

    @UseDefaults
    ManyAssociation<Review> reviews();

    @UseDefaults
    NamedAssociation<Distributor> distributors();
}

We can then do

@UnitOfWorkPropagation(MANDATORY)
public void createNewBook( String title, Author author )
{
    UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork() )
    EntityBuilder<Book> builder = uow.newEntityBuilder(Book.class);
    builder.instance().title().set( title );
    builder.instance().author().set( author );
    builder.newInstance();
}

No implementation class needed for the Book interface. But if we had
additional methods on the Book interface, we can assign one or more
"Mixins", and each mixin can handle one or more of those methods.

Regards,

-Greg

Reply via email to