Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Notes:

(question) TODO:   How does an admin determine which of the files listed in the directory above map to Fedora nodes? In other words, what is the algorithm for generating these filenames?

(question) TODO: The  The pasted text in boxes below need detailed description. They are not fully "self-evident".

...

These generated files contain serialized data about each of the JCR/Fedora nodes. Running the cURL command above, for example, generates binary files. Some things to note about these files and their contents:

  • The file names in the case of FileCacheStore are generated

...

  • by calculating the Java hashcode of the node's UUID string (and shifting it by 22 fixed bit mask). For example, for root node, file -

...

  • 891938816 gets generated, containing the root node

...

  • children.
  • Each of the files contain serialized ModeShape nodes. Although the generated files are binary, the data

...

  • can be read using a tool that understands both BSON and JBoss serialization, or by using ModeShape API itself (It does not seem possible to read these files using existing bson tools, like mongoDB bsondump).
  • The serialization is done by a JBoss serialization library, not JDK's native object serialization machinery. For this reason the generated serialized files look different from an ordinary JDK serialized file. (Please refer to section on node contents for details.)

Using a tool can help in reading the contents of the file. For example, for our root node file (-891938816) , a tool could show the root node data isas following:

Code Block
{ "properties" : { "http://www.jcp.org/jcr/1.0" : { "primaryType" : { "$name" : "mode:root" } , "uuid" : "87a0a8c7505d64/" } } , "children" : [ { "key" : "87a0a8c317f1e7jcr:system" , "name" : "jcr:system" } , 
{ "key" : "87a0a8c7505d646988a17a-ad2f-48f6-aef5-e7d411e184d9" , "name" : "chandni" } ] , "childrenInfo" : { "count" : 2 } }

 

The actual binary looks file (in this case -891938816) looks something like this when opened up in a text editor:

> ls  -891938816
File

87a0a8c7505d641/7org.infinispan.schematic.internal.SchematicEntryLiteral6org.infinispan.marshall.jboss.JBossExternalizerAdapterq externalizer$org.infinispan.marshall.ExternalizerDorg.infinispan.schematic.internal.SchematicEntryLiteral$Externalizer7org.infinispan.schematic.internal.SchematicExternalizer8org.infinispan.schematic.internal.document.BasicDocument;?org.infinispan.schematic.internal.document.DocumentExternalizer2;23metadata?id87a0a8c7505d64/contentTypeapplication/jsoncontent>propertiesghttp://www.jcp.org/jcr/1.0FprimaryType$namemode:rootuuid

  87a0a8c7505d64/children03<key87a0a8c317f1e7jcr:systemnamejcr:system1Skey387a0a8c7505d64

53f49a07-8e14-41a1-bab3-abc59d86846enamechandni4

 

Some of these elements are:

  1. 87a0a8c7505d64 refers to root node UUID

  2. The grayed out text refers to Modeshape classes responsible for data representation and serialization. The serialization is done by the framework JBoss Marshalling, which can be configured to use custom serialization classes that read and write content in the format of their choosing (in this case it's BSON). The serialization format contains the name of datastructures and ModeShape custom marshallers (classes in org.infinispan.schematic.internal.*)

  3. The file contains binary data for specifying different internal attributes, so the file might show garbage characters or numbers in strings. /children0<key87a0a8c317f1e7jcr:systemnamejcr:system1Skey387a0a8c7505d64 . Similarly, if object 'chandni' had siblings, the array would appear in the binary as:
  4. Name/string (53f49a076988a17a-8e14ad2f-41a148f6-bab3aef5-abc59d86846enamee7d411e184d9namechandni)
 

SimilarySimilarly, for the datastream:

87a0a8c7505d64

8e6504dd-1fb8-4011-8d38-4fcd2e46c0f77org.infinispan.schematic.internal.SchematicEntryLiteral6org.infinispan.marshall.jboss.JBossExternalizerAdapterq externalizer$org.infinispan.marshall.ExternalizerDorg.infinispan.schematic.internal.SchematicEntryLiteral$Externalizer7org.infinispan.schematic.internal.SchematicExternalizer8org.infinispan.schematic.internal.document.BasicDocument; ?org.infinispan.schematic.internal.document.DocumentExternalizer;23metadatabid387a0a8c7505d64

8e6504dd-1fb8-4011-8d38-4fcd2e46c0f7

contentTypeapplication/jsoncontentkey

87a0a8c7505d64

8e6504dd-1fb8-4011-8d38-4fcd2e46c0f7

parent387a0a8c7505d64

46c11a1e-b2d9-496c-a950-5bd8cf7f2096

propertieshttp://www.jcp.org/jcr/1.0+primaryType$name nt:resourcedatachandni o meri chandni

lastModified.$date2013-12-05T18:52:00.714-05:00

mixinTypesL0D$name4{http://fedora.info/definitions/v4/rest-api#}binarylastModifiedBy bypassAdminmimeTypeapplication/octet-streamhttp://fedora.info/definitions/v4/rest-api

#NdigestA$uri2urn:sha1:1c63b638cab226a394ea27819c18397dd96687fchttp://www.loc.gov/premis/rdf/v1#hasSize55

...