...
- In fcrepo-kernel-api and fcrepo-kernel-modeshape
- Repurpose isVersioned(), enableVersioning() and disableVersioning() in FedoraResource interface, add getTimeMap() function this is our LDPRv.
- Create TimeMap interace defining getVersions(), getVersion(final Date/Instant d), createVersion(), createVersion(final Date/Instant d), getOriginal() and Modeshape implementing class (LDPCv)
- VersionService interface and VersionServiceImpl functions/code (if useful) can be moved to TimeMap class. createVersion() for instance.
- Repurpose FedoraVersion interface and FedoraVersionImpl, perhaps need getOriginal() and getTimemap() for them (LDPRm)
- In fcrepo-http-api
- Repurpose FedoraVersioning paths for use with TimeMap
- Repurpose FedoraVersions to allow direct access to a specific Memento via its URI. (/fcrepo/rest/foo/fcr:versions/1234-5678)
- Add new handing of headers and setting of response headers in FedoraLdp (
)Jira server DuraSpace JIRA serverId c815ca92-fd23-34c2-8fe3-956808caf8c5 key FCREPO-2612 - Handle DateTime negotiation on LDPRvs in FedoraLdp (
)Jira server DuraSpace JIRA serverId c815ca92-fd23-34c2-8fe3-956808caf8c5 key FCREPO-2613
...
REST Interaction questions
(POST w/o body) → LDPCv → (copy) LDPRv → LDPRm
- POST to LDPCv without body and with or without Memento-Datetime header
- (If WebAC enabled)
- Locate ACL on LDPCv, and up tree.
- Verify Read/Write permissions.
- Throw Exception if not permitted
- Get LDPRv and create new child of LDPCv with this body.
- Add rdf:type or identifier of Memento type (Identify as a Memento)
- If we use a rdf:type to mark a Memento then should we display that when the Memento is requested?
- Should we just call Mementos anything inside of a TimeMap?
- Add snapshot datetime as property
- Where do we store the snapshot datetime? Property on the node?
(POST w body) → LDPCv → (compare LDP subtype) LDPRv → LDPRm
- POST to LDPCv with a new body and with or without Memento-Datetime header
- Can you provide a body and NOT provide a date?
- (If WebAC enabled)
- Locate ACL on LDPCv, and up tree.
- Verify Read/Write permissions.
- Throw Exception if not permitted
- Compare the rdf:type of resource because we can't provide a LDP-NR as a Memento of a LDP-RS or vice versa
- Set the entity body as the new resource.
- Identify as a Memento?
- Add snapshot datetime as property.
(GET/HEAD w Accept: application/link-format) → LDPCv
- GET/HEAD to LDPCv
- (If WebAC enabled)
- Locate ACL on LDPCv, and up tree.
- Verify Read permissions.
- Throw Exception if not permitted
- Locate ACL on ??? for LDPRm(s)
- where do we put the ACL for all the Mementos?
- Verify Read permissions.
- Throw Exception if not permitted.
- Get all children Mementos, generate list of Mementos and return
(GET/HEAD w Accept-Datetime: header) → LDPRv
- GET/HEAD to LDPRv
- (If WebAC enabled)
- Locate ACL on LDPRv and up tree
- Verify Read permissions.
- Throw Exception if not permitted.
- Locate ACL on LDPCv and up tree
- Verify Read permissions.
- Throw Exception if not permitted.
- Locate ACL on LDPRm(s)
- Verify Read permissions.
- Throw Exception if not permitted.
- Get list of all LDPRm(s) and snapshot datetimes.
- Find closest LDPRm(s)
- Return 302 Found and Location: <path to chosen LDPRm>
General interaction questions.
- How do you set the ACL that covers all Mementos?
- Can't POST/PUT to LDPRm(s) as Mementos are immutable