jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Meschberger <fmesc...@adobe.com>
Subject Getting a value by its data identifier
Date Tue, 12 Mar 2013 11:32:01 GMT
Hi all

we have a couple of use cases, where we would like to leverage the global data store to prevent
sending around and copying around large binary data unnecessarily: We have two separate Jackrabbit
instances configured to use the same DataStore (for the sake of this discussion assume we
have the problems of concurrent access and garbage collection under control). When sending
content from one instance to the other instance we don't want to send potentially large binary
data (e.g. video files) if not needed.

The idea is for the sender to just send the content identity from JackrabbitValue.getContentIdentity().
The receiver would then check whether the such content already exists and would reuse if so:

  String ci = contentIdentity_from_sender;
  try {
    Value v = session.getValueByContentIdentity(ci);
    Property p = targetNode.setProperty(propName, v);
  } catch (ItemNotFoundException ie) {
    // unknown or invalid content Identity
  } catch (RepositoryException re) {
    // some other exception

Thus the proposed JackrabbitSession.getValueByContentIdentity(String) method would allow for
round tripping the JackrabbitValue.getContentIdentity() preventing superfluous binary data
copying and moving.


(a) Would such a method technically be possible (preventing actual large binary data copy
!) ?
(b) Would a patch be accepted ?
(c) Can we and if yes, how can we control access ?
(c) What else ?


Felix Meschberger | Principal Scientist | Adobe

View raw message