Using the web for document versioning an implementation report for deltav
Download
1 / 21

Using the Web for Document Versioning: An Implementation Report for DeltaV - PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on

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:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Using the Web for Document Versioning: An Implementation Report for DeltaV' - rowan-holden


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Using the web for document versioning an implementation report for deltav
Using the Web forDocument Versioning:An Implementation Reportfor 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:

    • replace Java-RMI with DeltaV standard


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





Scope
Scope

  • implement early 04.5 draft of DeltaV

  • focus on version control

  • do not consider configuration management

  • focus on client-managed workspaces


Implementation details
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


Deltav vs rce common ground
DeltaV vs. RCE:Common Ground

  • use checkin/checkout model

  • organize revisions as ancestral graph

  • require unique initial revision

  • provide storage space for meta data


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


Version GraphDeltaV vs. RCE


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


Version properties vs attributes version tree navigation
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


Version properties vs attributes
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


Xml confusion
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


Xml confusion1
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


Conclusion
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


Duplicate Use of XML Elements

  • DAV:

    • <!ELEMENT set (prop) >

  • DeltaV:

    • <!ELEMENT set (label-name)>


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>


Limited expressiveness
Limited Expressiveness

<!ELEMENT auto-checkout

(unlocked-update | locked-update)* >

<!ELEMENT unlocked-update EMPTY>

<!ELEMENT locked-update EMPTY>


Marshalling
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>


ad