Francesco Mari created OAK-6378: ----------------------------------- Summary: Move the SegmentWriter API to its own interface Key: OAK-6378 URL: https://issues.apache.org/jira/browse/OAK-6378 Project: Jackrabbit Oak Issue Type: Bug Components: segment-tar Reporter: Francesco Mari Assignee: Francesco Mari Fix For: 1.8
In order to isolate {{SegmentWriter}} from the rest of the implementation, and to match the corresponding {{SegmentReader}}, I extracted the API exposed by {{SegmentWriter}} to its own interface and moved its implementation in a separate class. Moreover, I cleaned up the {{SegmentWriter}} a bit by letting. every method of its interface always return a {{RecordId}}. Before the refactoring, some methods returned concrete implementations of record classes. The cleanup improves the uniformity of the {{SegmentWriter}} interface. I see potential in this change for the following reasons. * The concrete record implementations ({{SegmentNodeState}}, {{Template}}, {{MapRecord}}, etc.) might be implemented directly on top of the {{SegmentReader}} and {{SegmentWriter}} API, moved to a different package and tested separately from the rest of the code. * {{SegmentWrier}} and {{SegmentReader}} provide a higher level API that isolates the {{SegmentStore}} and its supporting classes. Code using only {{SegmentWriter}} and {{SegmentReader}} might be able to use {{RecordId}} instances as opaque handles to the underlying records, with beneficial effects on code decoupling. I have a working version of the refactoring in [this branch on GitHub|https://github.com/francescomari/jackrabbit-oak/tree/segment-writer]. -- This message was sent by Atlassian JIRA (v6.4.14#64029)