1 / 21

Using the Web for Document Versioning: An Implementation Report for DeltaV

Using the Web for Document Versioning: An Implementation Report for DeltaV. James J. Hunt, Jürgen Reuter. Department of Computer Science Universität Karlsruhe. Task. Starting Point: client/server versioning system client/server communication via proprietary protocol over Java-RMI Task:

Download Presentation

Using the Web for Document Versioning: An Implementation Report for DeltaV

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using the Web forDocument Versioning:An Implementation Reportfor DeltaV James J. Hunt, Jürgen Reuter Department of Computer Science Universität Karlsruhe

  2. Task • Starting Point: • client/server versioning system • client/server communication via proprietary protocol over Java-RMI • Task: • replace Java-RMI with DeltaV standard

  3. DeltaV Protocol • Protocol Design Goals: • support most common versioning models • provide versioning for Web and DAV clients in standardized fashion • ensure backwards compatibility to versioning-unaware Web and DAV clients • Protocol Implementation: • as extension of DAV, which itself extends HTTP

  4. DeltaV Protocol

  5. Starting Point

  6. Goal

  7. Scope • implement early 04.5 draft of DeltaV • focus on version control • do not consider configuration management • focus on client-managed workspaces

  8. Implementation Details • coded in Java • code size: • core HTTP server: 16720 lines • attributed file system: 5357 lines • DAV implementation: >8500 lines • DeltaV implementation: >10000 lines

  9. DeltaV vs. RCE:Common Ground • use checkin/checkout model • organize revisions as ancestral graph • require unique initial revision • provide storage space for meta data

  10. Working Resources vs. Templatesin a checkin/checkout model • DeltaV Working Resource: • server-side modifiable copy of existing version • holds working resource properties • RCE Template: • placeholder for new revision in archive; modifiable copy of previous revision in user's file system space • holds pre-initialized revision attributes

  11. Version GraphDeltaV vs. RCE

  12. Version Properties vs. Attributes • Trivial mapping: • DAV:Author <-> REV_AUTHOR • DAV:Comment <-> REV_DESCRIPTION • Needs date format conversion: • DAV:creationdate <-> REV_DATE_IN • DAV:getlastmodified <-> REV_TIMESTAMP

  13. Version Properties vs. Attributes:Version Tree Navigation • DAV:successor-set property: • no designated line of development • includes revisions only, use DAV:working-resource-id-set to get working resources • RCE's REV_NEXT, REV_BRANCHES attribute: • tracks current line of development with REV_NEXT • includes revisions and templates

  14. Version Properties vs. Attributes • Problem: • no DeltaV equivalent for RCE's ARCH_USERS, ARCH_COMMENT_LEADER attributes • Solution: • use user-defined resource properties • Drawback: • client-specific use, interoperability problems when incompatible clients share same server

  15. XML Confusion • DAV, DeltaV: • make heavy use of XML • use XML namespaces • specify DTD syntax informally • do not consider namespaces in DTD • do not support XML validation

  16. XML Confusion • problems: • unclear how to specify namespaces in DTD • namespaces do not seem to be supported by validating parser • many people tend to disregard XML validation • limited expressiveness of DTD • prospect: • maybe XML schemata are more appropriate

  17. Conclusion • applicability of DeltaV on RCE proven • provided feedback for development of DeltaV • issues left (mostly DAV issues) • DeltaV ongoing effort • various implementations underway (e.g. Apache) • ultimate test still pending: run our client/server against someone else's server/client

  18. Duplicate Use of XML Elements • DAV: • <!ELEMENT set (prop) > • DeltaV: • <!ELEMENT set (label-name)>

  19. Limited Expressiveness <!ELEMENT auto-checkout ANY> ANY value: A sequence of elements with at most one DAV:unlocked-update element and at most one DAV:locked-update element. <!ELEMENT unlocked-update EMPTY> <!ELEMENT locked-update EMPTY>

  20. Limited Expressiveness <!ELEMENT auto-checkout (unlocked-update | locked-update)* > <!ELEMENT unlocked-update EMPTY> <!ELEMENT locked-update EMPTY>

  21. Marshalling PROPFIND /foo.java HTTP/1.1 Content-Length: 0 HTTP/1.1 207 Multi-Status Content-Type: text/xml Content-Length: 1418 DAV: 1,2 <?xml version="1.0"?> <A:multistatus xmlns:A="DAV:"> <A:response> <A:href>http://Rom.ira.uka.de:4711/foo.java</A:href> <A:propstat> <A:prop xmlns:B="RCE:"> <A:auto-version>F</A:auto-version> <A:working-resource-id-set /> <B:access-list>reuter(RWX),jjh(RW)</B:access-list> ... <A:revision-set> <A:href>http://Rom.ira.uka.de:4711/xkr1.1</A:href> <A:href>http://Rom.ira.uka.de:4711/xkr1.2</A:href> </A:revision-set> </A:prop> <A:status>HTTP/1.0 200 OK</A:status> </A:propstat> </A:response> </A:multistatus>

More Related