Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

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.