THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
The repository has the following use cases:
- Checkout, which checks out a specific (or the latest, if you don't specify anything) version.
- Update, which updates an existing object to the latest one (or a specific one, if you specify a version).
- Commit, which commits the changed object to a new version, possibly dealing with conflicts in the process.
What manipulation is actually required, depends:
- A client will do the most complex manipulations:
- filtering the graph to show only relevant subsets
- querying the graph to find certain objects
- editing the graph
- access control that restricts visibility and/or edit-ability of the graph
- A relay server will only get part of the graph
- A server, or anything that talks to management agents, will do specific queries
Context
Possible solutions
...
For the manipulation, we need a system that can do queries on streams, and a system that can do it on object graphs in memory. We have several options here:
- JXPath, which can operate on XML or object graphs.
- JoSQL, a SQL dialect that operates on object graphs.
- LDAP queries, as included in OSGi.
Also, we need to define where to do the actual access control. We have two choices here:
...
Let's start by doing access control on the client. If we really run into problems we can always move that code to the server.
Conclusion
- Use XStream as a repository implementation.
- Start with LDAP or JXPath for querying.