You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2007/04/01 20:56:03 UTC

svn commit: r524654 - in /jackrabbit/trunk/jackrabbit-site/src/site: apt/dev/ resources/dev/ resources/dev/ngp/

Author: jukka
Date: Sun Apr  1 11:56:00 2007
New Revision: 524654

URL: http://svn.apache.org/viewvc?view=rev&rev=524654
Log:
Added a proposal for "next generation persistence"

Added:
    jackrabbit/trunk/jackrabbit-site/src/site/apt/dev/
    jackrabbit/trunk/jackrabbit-site/src/site/apt/dev/ngp.apt
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.uxf
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.jpg   (with props)
    jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.uxf

Added: jackrabbit/trunk/jackrabbit-site/src/site/apt/dev/ngp.apt
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/apt/dev/ngp.apt?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/apt/dev/ngp.apt (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/apt/dev/ngp.apt Sun Apr  1 11:56:00 2007
@@ -0,0 +1,486 @@
+                       ---------------------------
+                       Next Generation Persistence
+                       ---------------------------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one or more
+~~ contributor license agreements.  See the NOTICE file distributed with
+~~ this work for additional information regarding copyright ownership.
+~~ The ASF licenses this file to You under the Apache License, Version 2.0
+~~ (the "License"); you may not use this file except in compliance with
+~~ the License.  You may obtain a copy of the License at
+~~
+~~     http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
+
+Next Generation Persistence
+
+   <NOTE: This page describes a proposed persistence model for a future
+   Jackrabbit core. This is not how Jackrabbit currently works.>
+
+   This document describes a radically new persistence model,
+   "Next Generation Persistence", that is designed to solve some of the
+   architectural issues that the current Jackrabbit persistence model
+   introduces (for example the need for synchronization and locking in many
+   places). The proposed model would also offer many nice features that are
+   difficult or even impossible to achieve with the current architecture.
+
+   There are a number of open questions related to this model, especially
+   how to make it perform well and to avoid excessive resource usage, but
+   it is believed that these issues can be solved. The purpose of presenting
+   this model now is to gather feedback and comments, and to determine whether
+   it makes sense to continue solving the open issues and to perhaps build
+   some sort of a prototype start experimenting with the model in practice. 
+
+Revision Basics
+
+   A JCR workspace is a content tree that consists of two kinds of items,
+   nodes and properties. This content tree typically changes by time as
+   items are added, modified, and removed. This model uses a sequence of
+   revisions to manage these dynamic state changes. A new revision is created
+   for each state change, and the current state of a workspace is expressed
+   as the sequence of persisted revisions. A persisted revision is never
+   modified.
+
+* Initial Revision
+
+   The initial revision contains just an empty root node. The root node
+   can never be removed, but it can of course be modified in later revisions.
+
+----
+Session session = ...;
+Node root = session.getRootNode();
+----
+
+   In this case the JCR view of the content would be identical to the
+   contents of the revision.
+
+[ngp/rev0.jpg] Initial revision
+
+* Adding Nodes
+
+   Adding a node results in a revision that contains the added node and
+   a modification to the parent node. The following code would create a
+   revision that modifies the root node and adds a single new node called A: 
+
+----
+Node a = root.addNode("A");
+session.save();
+----
+
+   The resulting revision would look like this:
+
+[ngp/rev1.jpg] First node added
+
+   A revision is linked to the previous revision to indicate where to look
+   for content that was not modified in that revision.
+
+   Adding another node to the same parent creates a new revision:
+
+----
+Node b = root.addNode("B");
+session.save();
+----
+
+   Now the workspace already contains three revisions: 
+
+[ngp/rev2.jpg] Second node added
+
+   More than one node can be added in a single revision:
+
+----
+Node c = b.addNode("C");
+Node d = b.addNode("D");
+session.save();
+----
+
+   In this case the revision would contain the modified parent node and
+   the two new nodes:
+
+[ngp/rev3.jpg] Two new nodes added
+
+* Removing nodes
+
+   Removing nodes is similar to adding them.
+
+----
+d.remove();
+session.save();
+----
+
+   A revision that removes a single leaf node contains the modified parent
+   node and a <removed> marker for the removed node.
+
+[ngp/rev4.jpg] Leaf node removed
+
+   The only difference in removing non-leaf nodes, is that now all the nodes
+   in the removed subtrees are marked as removed.
+
+----
+b.remove();
+session.save();
+----
+
+   The resulting revision looks like this:
+
+[ngp/rev5.jpg] Subtree removed
+
+* Handling properties and values
+
+   Properties are handled just like leaf nodes. Property values are stored
+   as a part of the revision where they are introduced. In fact the JCR
+   value factory can use the revision also to store any large binaries or
+   other created values that should not be kept in memory. This way an
+   operation like the following only needs to make a single copy of the value:
+
+----
+Property property = ...;
+InputStream stream = ...;
+Value value = session.getValueFactory().createValue(stream);
+property.setValue(value);
+session.save();
+----
+
+* Multiple operations per revision
+
+   A single revision can contain any number of item operations and is not
+   restricted to just a single subtree at a time. A revision can for example
+   remove one subtree, add another, and modify the properties in a third one.
+   This would produce a revision that contains entries for all the modifed
+   subtrees.
+
+* Revision scope
+
+   The revision model described above can be used to manage any content tree,
+   and a straightforward application in JCR would be to manage each workspace
+   as a sequence of revisions. This approach has benefits in explicitly
+   enforcing separation across workspaces and making each workspace separately
+   manageable for backups and other similar operations described below.
+
+   However, there are some cross-workspace operations like versioning and
+   node type and namespace administration that would become much easier if
+   the revisions model would in fact cover the entire repository and include
+   also all the versioning, node type, namespace, and other global content
+   and metadata. Such an approach would have a repository root node under
+   which the global <<<jcr:system>>> tree would be kept and which could have
+   the root nodes of the individual workspaces as normal subnodes.
+
+   It is not clear which scope, workspace or repository, would be better in
+   practice.
+
+Sessions
+
+   Each JCR session is associated with two revisions, a <base revision> and
+   a <draft revision>. The revision model is also used for transaction support.
+
+[ngp/session.jpg] The base and draft revisions
+
+* Base Revision
+
+   The base revision of a JCR session is the latest persisted revision that
+   was available when the session was started. The session uses this revision
+   as the basis for providing the <JCR view> of the content tree. The base
+   revision of a session can optionally be changed when more recent revisions
+   are persisted during the session lifetime. These base revision updates can
+   happen automatically if the session always wants to see the latest
+   content, or the base revision can remain constant until the session is
+   explicitly refreshed.
+
+[ngp/refresh.jpg] Session refresh
+
+   The explicit refresh option is beneficial for many JCR clients as they do
+   not need to worry about the underlying content tree unexpectedly changing
+   while they are accessing it. 
+
+* Draft Revision
+
+   The draft revision of a JCR session is the place where all transient
+   changes are stored. The draft revision always uses the base revision
+   as the previous revision against which all changes are made. If the
+   base revision of a session is changed either automatically or because
+   of an explicit refresh, then the draft revision is updated accordingly.
+   Draft revisions are the only kinds of revisions that can be modified.
+
+   Persisting a draft revision consists of four steps:
+
+      [[1]] The previous revision of the draft is updated to the latest
+            persisted revision of the workspace. Conflicts against revisions
+            between the session base revision and the latest persisted
+            revision are detected.
+
+      [[2]] Referential integrity of the updated draft revision is checked.
+
+      [[3]] Type constraints of the updated draft revision are checked.
+
+      [[4]] If no problems were detected, the draft revision is persisted as
+            the new latest revision of the workspace.
+
+      []
+
+[ngp/save.jpg] Session save
+
+   The persisted revision becomes the base revision of the session and a
+   new draft revision is created.
+
+* Persisting a Subtree
+
+   JCR allows a client to persist just a part of the transient space with
+   the Node.save() method. In this case only changes to that subtree are
+   persisted. This use case is handled by splitting the draft revision to
+   two revisions, one with changes to that subtree and one with all the other
+   changes. The subtree revision is then persisted as described above, and
+   the session is updated to use the persisted revision as the base revision
+   and the revision with the remaining changes as the draft revision. If the
+   operation fails, then the two new revisions are discarded and no changes
+   are made to the session.
+
+[ngp/subtree.jpg] Node.save()
+
+* Workspace Operations
+
+   Some JCR operations are defined to affect the persistent workspace storage
+   directly without going through the transient space of the session. Such
+   operations are handled by creating a new draft revision for just that
+   operation and persisting it as described above. If the operation succeeds,
+   the session is updated to use the persisted revision as the new base
+   revision.
+
+[ngp/workspace.jpg] Workspace operation
+
+Advanced Features
+
+   The revision model offers very straightforward implementations of many
+   advanced features. This section discusses some of the most prominent
+   examples.
+
+* Transactions
+
+   Transactions that span multiple Session.save() operations are handled
+   with an alternative branch of persisted revisions. Instead of making a
+   persisted revision globally available as the latest revision of the
+   workspace, it is kept local to the transaction. When the transaction is
+   committed, all the revisions in the transaction branch are merged into
+   a single draft revision that is then persisted normally as described above. 
+
+[ngp/transaction.jpg] Transaction
+
+   If the merged revision can not be persisted (causing the commit to fail) or
+   if the transaction is explicitly rolled back, then the revisions in the
+   transaction branch are discarded. 
+
+   This model can also easily support two-phase commits in a distributed
+   transaction.
+
+* Namespace and Node Type Management
+
+   If the revision model was repository-scoped as discussed above, then
+   the namespace and node type registries could be managed as normal
+   (write-protected) content under the global <<<jcr:system>>> subtree as
+   described in the JCR specification. Such a solution, while probably more
+   complex than having the registries in custom data structures, would have
+   many nice features.
+
+   If these global registries were managed as normal content then most of
+   the other advanced features would cover also repository management. For
+   example it would be possible to transactionally register or modify node
+   types or to make the node type and namespace registries versionable!
+   Backup and recovery operations would automatically contain also this
+   repository metadata, and no extra code would be required for clustering
+   support of node type or namespace changes. Even observation of the
+   <<<jcr:system/jcr:nodeTypes>>> subtree would come for free.
+
+* Versioning
+
+   Since the revision model by default maintains a full change history of
+   the entire repository it is possible to heavily optimize versioning
+   operations. For example a check-in operation can be performed by simply
+   recording the persisted revision where the checked in node was found. 
+
+* Observation
+
+   All the information needed for sending JCR observation events is
+   permanently stored in the persisted revisions, which not only simplifies
+   the observation implementation but also enables many advanced observation
+   features.
+
+   One tricky issue that this model solves quite nicely is the problem on how
+   to handle access control of item removal events. If the item in question
+   has already been removed, then many access control implementations no
+   longer have a way to determine whether access to that item should be
+   granted to a given session. With the revision model it is possible to ask
+   whether a session would have been allowed to access the item in question
+   when it still did exist, and to filter access to the remove events based
+   on that information.
+
+   The full change history kept by the revision model enables a new feature,
+   <persistent observation>, in which a client can request all events since
+   a given checkpoint to be replayed to the registered event listeners
+   of a session.
+
+   The revision history can also be used as a full write-level audit trail
+   of the content repository.
+
+* Hot and Incremental Backups
+
+   Implementing hot backups is almost trivial since persisted revisions are
+   never modified. Thus it is possible for a backup tool to simply copy the
+   persisted revisions even if the repository that created them is still
+   running.
+
+   Once a full repository or workspace backup has been made, only new revision
+   files need to be copied to keep the backed up copy up to date. If the
+   revisions are stored as files on disk, then standard tools like <<<rsync>>>
+   can be used to maintain an incremental hot backup of the repository. 
+
+* Point-in-Time Recovery
+
+   The revision model allows a repository or a workspace to be "rewinded" back
+   to a previous point in time without doing a full recovery from backups.
+   This makes it very easy and efficient to undo operations like accidental
+   removals of large parts of the repository. 
+
+* Clustering
+
+   A repository cluster can be implemented on top of the revision model by
+   making sure that operations to persist revisions are synchronized across
+   cluster nodes.
+
+   For example a token passing system can be used to ensure that only one
+   cluster node can persist changes at a time. Once the node has persisted
+   a revision it can multicast it to the other nodes and release the
+   synchronization token. Since all change information is included in the
+   revision the other nodes can for example easily send the appropriate
+   observation events.
+
+   A node can easily be added to or removed from a cluster. A fresh node
+   will bootstrap itself by streaming the entire repository contents from
+   the other nodes.
+   
+   An isolated cluster node can continue normal operation as a standalone
+   repository. When the node is returned to the cluster it will first stream
+   any new revisions from the other cluster nodes and request the
+   synchronization token to merge those changes with any revisions that were
+   persisted while the node was isolated. If the merge succeeds, the merged
+   revisions are multicasted to the cluster and the node takes back its place
+   within the cluster. If the merge fails, the node will release the
+   synchronization token and remain isolated from the cluster. In such a case
+   an administrator needs to either manually resolve the merge failure or
+   use the point-in-time recovery feature to revert the isolated repository
+   to a state where it can rejoin the cluster.
+
+Performance
+
+   It is still an open question how the revisions could be organized
+   internally to implement efficient access across histories that might
+   consists of thousands or even millions of individual revisions.
+ 
+   Efficient internal data structures are a key to achieving this goal,
+   but there are also a number of high-level optimizations that can be used
+   on top of the revision level to achieve better performance. Many of these
+   optimizations are independent of each other and require little or no
+   changes in other repository operations. 
+
+* Internal Data Structures
+
+   Simply persisting a list of added, modified, and removed items in a
+   revision is not likely to produce good performance as any content accesses
+   would then potentially need to traverse all the revisions to find the
+   item in question. Even if each revision is internally indexed so that
+   each item can be accessed in constant time, item access can still take
+   O(n) time where n is the number of persisted revisions. Thus a key to
+   improving performance is finding a way to avoid having to iterate through
+   all past revisions when locating a given node.
+
+   One potential approach could be to assign each node a sequence number
+   based on it's location in the document order of the repository and to
+   manage these sequence numbers as they change over revisions. Each revision
+   would list the sequence number ranges that the changes in the revision
+   affect. With this information it could in many cases infer whether it
+   even is possible for a node to exist in certain revisions, and thus
+   the implementation could skip those revisions when looking for the node.
+
+   Another alternative would be to use some sort of a backward-looking
+   item index that indicates the revision in which a given item was last
+   stored. Unless such an index is stored as a part of the revisions (probably
+   not in each revision), maintaining it could introduce an unwanted
+   synchronization block.
+
+   Since persisted revisions are never modified it is possible to heavily
+   read-optimize and index each revision. Especially for common situations
+   where read performance is heavily prioritized over write performance it
+   makes sense to spend extra time preparing complex read-only indexes or
+   other data structures when the revision is persisted. For example it might
+   be worth the effort to use some statistical access pattern data to find
+   the best possible ordering and indexing for a persisted revision. 
+
+* Combined Revisions
+
+   The number and granularity of revisions will likely be a limiting factor
+   in how efficiently the repository contents can be accessed. Many of the
+   potential internal revision data structures also work better the more
+   content there is in a revision. Thus it would be beneficial to increase
+   the size of individual revisions.
+
+   A repository implementation can not affect how large the revisions
+   persisted by JCR clients are, but it can transparently combine or merge
+   any number of subsequent small revisions into one larger revision.
+
+[ngp/merge.jpg] Combined revision
+
+   The combined revision can be used instead of the smaller revisions for all
+   operations where the exact revision of a modified item does not matter.
+   For example when querying and traversing the repository such transparent
+   combined revisions can speed things up considerably. 
+
+   Revisions can be combined for example in a low-priority background thread.
+   Alternatively the repository implementation can offer an administrative
+   interface for explicitly combining selected revisions. The combine
+   operation can also be limited to just selected subtrees to optimize
+   access to those parts of the repository.
+
+   As an extreme case the combine operation can be performed on <all> revisions
+   up to a specified checkpoint. The combined revision will then contain the
+   full content tree up to that point in time. If the original revisions
+   are no longer needed for things like point-in-time recovery or persistent
+   observation, the combined revision could actually even replace all the
+   individual revisions it contains to avoid using excessive amounts of disk
+   space.
+
+* Caching and Lazy Loading
+
+   Since the persisted revisions are never modified, it is possible to cache
+   their contents very aggressively. The caches can be very simple since there
+   is no need for any cache coherency algorithms.
+
+   The read-only nature of the revisions also allows many operations to be
+   postponed to the very last moment the relevant information is needed. For
+   example a JCR Node instance can simply keep a reference to the on-disk
+   storage of the last version of the node and load any related information
+   like property values or child node references only when it is actually
+   requested.
+
+* Concurrency
+
+   In a world where multiprocessor servers and multicore or soon even
+   manycore processors are commonplace it is essential for best performance
+   that a software system like a content repository  
+
+   The revision model makes it possible to avoid all blocking of read
+   operations and requires write synchronization only when new revisions are
+   persisted. With optimistic constraint checking and a fallback mechanism the
+   write synchronization can even be limited to just the very last step of
+   the operation to persist a revision. However, this and the clustering
+   support mentioned above are not the only opportunities of concurrency
+   that the model allows. 
+
+   Repository operations like search queries, XML exports, and many
+   consistency and constraint checks can be formulated as map-reduce
+   operations that can concurrently operate (map) on many past revisions
+   and combine (reduce) the partial outcomes into the final result of the
+   operation. Such algorithms might not be worthwhile on normal repositories,
+   but offer a way to harness the benefits of massive parallelism in huge
+   content repositories that may reside in grid environments.

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/merge.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>180</x><y>80</y><w>230</w><h>30</h></coordinates><panel_attributes>combined revision y-z
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>110</x><y>30</y><w>90</w><h>80</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;20;60;70;60</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>10</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>240</x><y>30</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>10</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><elem
 ent><type>com.umlet.element.base.Relation</type><coordinates><x>370</x><y>30</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-
+</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>260</x><y>10</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>310</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>revision z
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>180</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>revision y
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>50</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>revision x
+bg=green</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/refresh.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Relation</type><coordinates><x>230</x><y>-4</y><w>200</w><h>54</h></coordinates><panel_attributes>lt=&lt;.
+refresh</panel_attributes><additional_attributes>180;34;20;34</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>410</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>Session</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>350</x><y>30</y><w>80</w><h>80</h></coordinates><panel_attributes>lt=&lt;</panel_attributes><additional_attributes>20;60;60;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>150</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>Session</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>30</y><w>80</w><h>80</h></coordinates><panel_attributes>lt=&lt;-
+</panel_attributes><additional_attributes>20;60;60;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>80</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>80</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>260</x><y>80</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>310</x><y>90</y><w>100</w><h>30</h></coordinates><panel_attributes>revision z
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>180</x><y>90</y><w>100</w><h>30</h></coordinates><panel_attributes>revision y
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>50</x><y>90</y><w>100</w><h>30</h></coordinates><panel_attributes>revision x
+bg=green</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev0.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>180</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>160</x><y>20</y><w>100</w><h>80</h></coordinates><panel_attributes>JCR view</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>40</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>20</x><y>20</y><w>100</w><h>80</h></coordinates><panel_attributes>revision 0</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev1.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>300</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>310</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>300</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>170</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>160</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>20</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>0</x><y>20</y><w>100</w><h>80</h></coordinates><panel_attributes>revision 0
+</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>280</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>JCR view</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>140</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>revision 1
+</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>160</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>80</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev2.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>440</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>360</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>400</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>380</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>420</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>40;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>230</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>220</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>80</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>220</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>340</x><y>20</y><w>180</w><h>140</h></coordinates><panel_attributes>JCR view</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>200</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>revision 2</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>80</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>140</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>60</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>revision 1</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev3.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>560</x><y>170</y><w>60</w><h>30</h></coordinates><panel_attributes>D
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>480</x><y>170</y><w>60</w><h>30</h></coordinates><panel_attributes>C
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>500</x><y>120</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>520</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>480</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>440</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>420</x><y>20</y><w>220</w><h>200</h></coordinates><panel_attributes>JCR view</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>540</x><y>120</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>40;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>500</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>40;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>460</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Relat
 ion</type><coordinates><x>280</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>40;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>240</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>200</x><y>20</y><w>180</w><h>140</h></coordinates><panel_attributes>revision 3</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>260</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>80</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>300</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>D
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>220</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>C
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>80</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>60</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>revision 2</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>140</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev4.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>420</x><y>20</y><w>180</w><h>200</h></coordinates><panel_attributes>JCR view</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>530</x><y>120</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>520</x><y>170</y><w>60</w><h>30</h></coordinates><panel_attributes>C
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>300</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>D
+bg=red</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>300</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>280</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>revision 4</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>220</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>60</x><y>20</y><w>180</w><h>140</h></coordinates><panel_attributes>revision 3</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>520</x><y>1
 10</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>480</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>440</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>500</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>40;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>460</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>140</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>40;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>100</x><y>60</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element>
 <type>com.umlet.element.base.Class</type><coordinates><x>120</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>160</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>D
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>80</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>C
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>310</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/rev5.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Relation</type><coordinates><x>370</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>360</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=gray</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>340</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>JCR view</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>220</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>&lt;&lt;root&gt;&gt;
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>220</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=red</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>220</x><y>170</y><w>60</w><h>30</h></coordinates><panel_attributes>C
+bg=red</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>230</x><y>120</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>230</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>200</x><y>20</y><w>100</w><h>200</h></coordinates><panel_attributes>revision 5</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>60</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class
 </type><coordinates><x>80</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>D
+bg=red</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>80</x><y>50</y><w>60</w><h>30</h></coordinates><panel_attributes>B
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>60</x><y>20</y><w>100</w><h>140</h></coordinates><panel_attributes>revision 4</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>140</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>20</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>360</x><y>110</y><w>60</w><h>30</h></coordinates><panel_attributes>A
+bg=gray</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/save.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>116</y><w>301</w><h>334</h></coordinates><panel_attributes>lt=&lt;-
+[edit conflict]             </panel_attributes><additional_attributes>220;314;220;34;20;34</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>236</y><w>271</w><h>214</h></coordinates><panel_attributes>lt=&lt;-
+[integrity error]               </panel_attributes><additional_attributes>180;194;180;34;20;34</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>90</x><y>356</y><w>258</w><h>94</h></coordinates><panel_attributes>lt=&lt;-
+[constraint violation]                    </panel_attributes><additional_attributes>140;74;140;34;20;34</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>80</x><y>450</y><w>210</w><h>90</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;70;190;70;190;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>450</y><w>40</w><h>80</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;60;20;20</additional_attributes></element><element><type>com.umlet.element.custom.FinalState</type><coordinates><x>80</x><y>510</y><w>20</w><h>20</h></coordinates><panel_attributes>i</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>270</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;40
 ;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>330</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;40;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>390</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;40;20;20</additional_attributes></element><element><type>com.umlet.element.custom.Decision</type><coordinates><x>70</x><y>370</y><w>40</w><h>40</h></coordinates><panel_attributes/><additional_attributes/></element><element><type>com.umlet.element.custom.Decision</type><coordinates><x>70</x><y>250</y><w>40</w><h>40</h></coordinates><panel_attributes/><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>210</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=&lt;-</
 panel_attributes><additional_attributes>20;40;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>150</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;40;20;20</additional_attributes></element><element><type>com.umlet.element.custom.Decision</type><coordinates><x>70</x><y>130</y><w>40</w><h>40</h></coordinates><panel_attributes/><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>90</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;40;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>70</x><y>20</y><w>40</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;20;20</additional_attributes></element><element><type>com.umlet.element.custom.Init
 ialState</type><coordinates><x>80</x><y>20</y><w>20</w><h>20</h></coordinates><panel_attributes>i</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.custom.State</type><coordinates><x>20</x><y>70</y><w>140</w><h>40</h></coordinates><panel_attributes>Update to
+latest revision
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.custom.State</type><coordinates><x>20</x><y>190</y><w>140</w><h>40</h></coordinates><panel_attributes>Check referential
+integrity
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.custom.State</type><coordinates><x>20</x><y>310</y><w>140</w><h>40</h></coordinates><panel_attributes>Check type
+constraints
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.custom.State</type><coordinates><x>20</x><y>430</y><w>140</w><h>40</h></coordinates><panel_attributes>Persist as the
+latest revision
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.custom.State</type><coordinates><x>200</x><y>430</y><w>140</w><h>40</h></coordinates><panel_attributes>Operation
+failed
+bg=yellow</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/session.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Relation</type><coordinates><x>110</x><y>30</y><w>100</w><h>90</h></coordinates><panel_attributes>lt=&lt;-
+</panel_attributes><additional_attributes>20;70;80;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>220</x><y>30</y><w>40</w><h>90</h></coordinates><panel_attributes>lt=&lt;-
+</panel_attributes><additional_attributes>20;70;20;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>190</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>Session</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>10</x><y>90</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>140</x><y>90</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>60</x><y>100</y><w>100</w><h>30</h></coordinates><panel_attributes>base revision
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>190</x><y>100</y><w>100</w><h>30</h></coordinates><panel_attributes>draft revision
+bg=yellow</panel_attributes><additional_attributes/></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/subtree.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>430</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>other changes
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>250</x><y>10</y><w>100</w><h>90</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>80;70;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>70</y><w>200</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;180;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>250</x><y>10</y><w>200</w><h>40</h></coordinates><panel_attributes>lt=&lt;.
+</panel_attributes><additional_attributes>180;20;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>70</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>50</x><y>80</y><w>100</w><h>30</h></coordinates><panel_attributes>base rev
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>170</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>draft revision
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>310</x><y>80</y><w>100</w><h>30</h></coordinates><panel_attributes>subtree
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>390</x><y>30</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>30</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/transaction.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Relation</type><coordinates><x>410</x><y>26</y><w>132</w><h>104</h></coordinates><panel_attributes>lt=&lt;.
+commit
+</panel_attributes><additional_attributes>90;84;90;34;20;34</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>450</x><y>110</y><w>100</w><h>30</h></coordinates><panel_attributes>merged
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>390</x><y>100</y><w>80</w><h>40</h></coordinates><panel_attributes>lt=&lt;-
+</panel_attributes><additional_attributes>20;20;60;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>260</x><y>100</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>310</x><y>50</y><w>100</w><h>30</h></coordinates><panel_attributes>revision q
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Package</type><coordinates><x>160</x><y>20</y><w>270</w><h>70</h></coordinates><panel_attributes>transaction
+</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>260</x><y>40</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>180</x><y>50</y><w>100</w><h>30</h></coordinates><panel_attributes>revision p
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>310</x><y>110</y><w>100</w><h>30</h></coordinates><panel_attributes>revision z
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>100</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>180</x><y>110</y><w>100</w><h>30</h></coordinates><panel_attributes>revision y
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>50</x><y>110</y><w>100</w><h>30</h></coordinates><panel_attributes>revision x
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>100</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>60</y><w>70</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;50;20</additional_attributes></element></umlet_diagram>
\ No newline at end of file

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.jpg
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.jpg?view=auto&rev=524654
==============================================================================
Binary file - no diff available.

Propchange: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.uxf
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.uxf?view=auto&rev=524654
==============================================================================
--- jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.uxf (added)
+++ jackrabbit/trunk/jackrabbit-site/src/site/resources/dev/ngp/workspace.uxf Sun Apr  1 11:56:00 2007
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>310</x><y>80</y><w>100</w><h>30</h></coordinates><panel_attributes>workspace op
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>430</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>draft revision
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>70</y><w>200</w><h>40</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;20;180;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>250</x><y>10</y><w>200</w><h>40</h></coordinates><panel_attributes>lt=&lt;.
+</panel_attributes><additional_attributes>180;20;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>0</x><y>70</y><w>70</w><h>40</h></coordinates><panel_attributes>lt=&lt;.</panel_attributes><additional_attributes>20;20;50;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>50</x><y>80</y><w>100</w><h>30</h></coordinates><panel_attributes>base rev
+bg=green</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Class</type><coordinates><x>170</x><y>20</y><w>100</w><h>30</h></coordinates><panel_attributes>draft revision
+bg=yellow</panel_attributes><additional_attributes/></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>390</x><y>30</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>130</x><y>30</y><w>60</w><h>70</h></coordinates><panel_attributes>lt=&lt;-</panel_attributes><additional_attributes>20;50;40;20</additional_attributes></element></umlet_diagram>
\ No newline at end of file