using the web for document versioning: an implementation report for deltav

Post on 31-Dec-2015

25 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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: - PowerPoint PPT Presentation

TRANSCRIPT

Using the Web forDocument Versioning:

An Implementation Reportfor DeltaV

James J. Hunt, Jürgen Reuter

Department of Computer ScienceUniversitä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

DeltaV Protocol

DeltaV

DAV

HTTP XML

Starting Point

RCE

VRCE

RCErepository

RCEserver

RMI

server client

file systemworking files

user

archives

Goal

RCE

VRCE

DeltaVrepository

Webserver

DeltaVprotocol

server client

file systemworking files

user

file system

working resources

archives

DeltaV- >RCE

RCE- >DeltaV

attributedfile system

Scope

implement early 04.5 draft of DeltaV focus on version control do not consider configuration

management focus on client-managed workspaces

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

use checkin/checkout model organize revisions as ancestral graph require unique initial revision provide storage space for meta data

Working Resources vs. Templates

in 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

1.1

1.2

1.3

1.4

1.5

1.6

1.1.1.1

1.1.1.21.2.1.1

1.2.1.2

1.2.1.3

1.5.1.1 1.5.2.1

1.2.1.3

1.3

trunk

merge

Legend:

template

revision

sucessor relation

branch 1.2.1

branch 1.1.1

branch

branch

rev01

rev02

rev04

rev08

rev09

wr02

rev03

rev06rev05

rev07

wr01

rev10 wr03

wr02

rev08

merge

Legend:

working resource

revision

sucessor relation

branch

branch

working resourceof a revision

initial revision

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

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

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

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 mostone DAV:unlocked-update element and at mostone DAV:locked-update element.

<!ELEMENT unlocked-update EMPTY>

<!ELEMENT locked-update EMPTY>

Limited Expressiveness

<!ELEMENT auto-checkout (unlocked-update | locked-update)* >

<!ELEMENT unlocked-update EMPTY>

<!ELEMENT locked-update EMPTY>

MarshallingPROPFIND /foo.java HTTP/1.1Content-Length: 0

HTTP/1.1 207 Multi-StatusContent-Type: text/xmlContent-Length: 1418DAV: 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>

top related