Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-33

Values in oak-core

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.3
    • core
    • None

    Description

      There is no JCR API in oak-core, but we still need to deal with values and data types. We have multiple options, I can think of:

      (A) String everywhere, as in oak-mk

      (B) Use javax.jcr.Value

      (C) An immutable "Value" class (but doesn't need to be called "Value")

      There are multiple problems with (A), for example compile time safety, and I fear the code would get unnecessarily complex, not as efficient as it could get (specially when dealing with numbers), memory usage would be higher.

      I think we said (B) isn't an option because we don't want to use the JCR API in oak-core (see also OAK-16).

      As for (C), I have a first prototype, mainly because I needed it to be able to migrate the query feature to oak-core. The prototype is in

      org.apache.jackrabbit.oak.query.ValueFactory
      org.apache.jackrabbit.oak.query.Value
      org.apache.jackrabbit.oak.query.PropertyType

      It's very similar to javax.jcr (even the property types are the same), but the values are immutable. They currently implement Comparable<Value>, but that's also open for discussion. One sub-problem is binaries: should they contain a reference to the MicroKernel instance, or some other "storage backend" (possibly a temp file backend)?

      Concrete suggestions (and patches) are welcome.

      Attachments

        Issue Links

          Activity

            People

              angela Angela Schreiber
              thomasm Thomas Mueller
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: