svn commit: r565070 - /lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Sun Aug 12 06:31:23 2007
New Revision: 565070

URL: http://svn.apache.org/viewvc?view=rev&rev=565070
Log:
Use more readable XML format for RCML files

Modified:
    lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java

Modified: lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java?view=diff&rev=565070&r1=565069&r2=565070
==============================================================================
--- lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java (original)
+++ lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNodeRCML.java Sun Aug 12 06:31:23 2007
@@ -69,6 +69,12 @@
     protected static final String ELEMENT_XPSREVISIONCONTROL = "XPSRevisionControl";
     protected static final String ELEMENT_SESSION = "session";
 
+    protected static final String ATTR_BACKUP = "backup";
+    protected static final String ATTR_TIME = "time";
+    protected static final String ATTR_VERSION = "version";
+    protected static final String ATTR_IDENTITY = "identity";
+    protected static final String ATTR_SESSION = "session";
+
     {
         ELEMENTS.put(new Short(ci), ELEMENT_CHECKIN);
         ELEMENTS.put(new Short(co), ELEMENT_CHECKOUT);
@@ -80,7 +86,7 @@
      * @param manager The service manager.
      */
     public SourceNodeRCML(String contentSourceUri, String metaSourceUri, ServiceManager manager) {
-        this.maximalNumberOfEntries = 10;
+        this.maximalNumberOfEntries = 200;
         this.maximalNumberOfEntries = (2 * this.maximalNumberOfEntries) + 1;
         this.manager = manager;
         this.contentSourceUri = contentSourceUri;
@@ -177,24 +183,17 @@
     protected Element saveToXml(NamespaceHelper helper, RCMLEntry entry)
             throws RevisionControlException {
         String elementName = (String) ELEMENTS.get(new Short(entry.getType()));
-        Element sessionElement = helper.createElement(ELEMENT_SESSION, entry.getSessionId());
-        Element identityElement = helper.createElement(ELEMENT_IDENTITY, entry.getIdentity());
-        Element timeElement = helper.createElement(ELEMENT_TIME, Long.toString(entry.getTime()));
-
         Element entryElement = helper.createElement(elementName);
 
-        entryElement.appendChild(identityElement);
-        entryElement.appendChild(timeElement);
-        entryElement.appendChild(sessionElement);
+        entryElement.setAttribute(ATTR_IDENTITY, entry.getIdentity());
+        entryElement.setAttribute(ATTR_SESSION, entry.getSessionId());
+        entryElement.setAttribute(ATTR_TIME, Long.toString(entry.getTime()));
 
         if (entry.getType() == ci) {
             CheckInEntry checkInEntry = (CheckInEntry) entry;
-            Element versionElement = helper.createElement(ELEMENT_VERSION, Integer
-                    .toString(checkInEntry.getVersion()));
-            entryElement.appendChild(versionElement);
+            entryElement.setAttribute(ATTR_VERSION, Integer.toString(checkInEntry.getVersion()));
             if (checkInEntry.hasBackup()) {
-                Element backupElement = helper.createElement(ELEMENT_BACKUP);
-                entryElement.appendChild(backupElement);
+                entryElement.setAttribute(ATTR_BACKUP, "true");
             }
         }
 
@@ -269,6 +268,28 @@
     }
 
     protected RCMLEntry getEntry(NamespaceHelper helper, Element element) {
+        if (element.hasAttribute(ATTR_IDENTITY)) {
+            String type = element.getLocalName();
+            String sessionId = element.getAttribute(ATTR_SESSION);
+            String identity = element.getAttribute(ATTR_IDENTITY);
+            String timeString = element.getAttribute(ATTR_TIME);
+            long time = new Long(timeString).longValue();
+            if (type.equals(ELEMENT_CHECKIN)) {
+                String versionString = element.getAttribute(ATTR_VERSION);
+                int version = new Integer(versionString).intValue();
+                boolean backup = element.hasAttribute(ATTR_BACKUP);
+                return new CheckInEntry(sessionId, identity, time, version, backup);
+            } else if (type.equals(ELEMENT_CHECKOUT)) {
+                return new CheckOutEntry(sessionId, identity, time);
+            } else {
+                throw new RuntimeException("Unsupported RCML entry type: [" + type + "]");
+            }
+        } else {
+            return getLegacyEntry(helper, element);
+        }
+    }
+
+    protected RCMLEntry getLegacyEntry(NamespaceHelper helper, Element element) {
         String type = element.getLocalName();
         String sessionId = getChildValue(helper, element, ELEMENT_SESSION, "");
         String identity = getChildValue(helper, element, ELEMENT_IDENTITY);
@@ -329,7 +350,6 @@
             } catch (Exception e) {
                 throw new RevisionControlException(e);
             }
-
         }
         return this.entries;
     }
@@ -416,8 +436,8 @@
                 long time = entry.getTime();
                 deleteBackup(this.contentSourceUri, time);
                 deleteBackup(this.metaSourceUri, time);
-                this.entries.remove(entry);
             }
+            this.entries.remove(entry);
         }
         setDirty();
     }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.