Entity Bundle Plugin
After weeks of work Commerce License is finally up, as well as Commerce File 7.x-2.x to go along with it.
Commerce License provides a framework for selling access to local or remote resources.
In practice, this means that there's a license entity, usually created during order checkout, that holds information about accessing the purchased resource, and it has a status and an optional expiration date.
This allows selling access to anything from files to node types, or perhaps ZenDesk tickets and accounts on remote sites, all using a common API, while always having a record of the purchased access.
At the heart of that API is the entity bundle plugin, which allows different license types to have different logic.
What is entity bundle plugin? The project page says only this:
This API module allow developers to build an entity type which is attached to strong behaviors.
That doesn't help much, so let's dive in. Let's start by looking at how entities are built on D7.