From 436ab98b32c97351ec25197d5701a1198203f84d Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 29 May 2013 12:33:35 +0200
Subject: [PATCH] OO-611: exclude the metaDataElements list from
 RepositoryEntry (as backward compatibility)

---
 .../olat/core/id/context/HistoryManager.java  |  2 +
 .../core/id/context/HistoryManagerTest.java   | 14 ++++
 .../olat/core/id/context/resume_ver83b.xml    | 74 +++++++++++++++++++
 3 files changed, 90 insertions(+)
 create mode 100644 src/test/java/org/olat/core/id/context/resume_ver83b.xml

diff --git a/src/main/java/org/olat/core/id/context/HistoryManager.java b/src/main/java/org/olat/core/id/context/HistoryManager.java
index d855fd740d5..65269693bb3 100644
--- a/src/main/java/org/olat/core/id/context/HistoryManager.java
+++ b/src/main/java/org/olat/core/id/context/HistoryManager.java
@@ -32,6 +32,7 @@ import org.olat.core.util.resource.Resourceable;
 import org.olat.core.util.xml.XStreamHelper;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupImpl;
+import org.olat.repository.RepositoryEntry;
 
 import com.thoughtworks.xstream.XStream;
 
@@ -52,6 +53,7 @@ public class HistoryManager extends BasicManager {
 		//xstream config
 		historyReadStream.omitField(BusinessGroup.class, "groupContext");
 		historyReadStream.omitField(BusinessGroupImpl.class, "groupContext");
+		historyReadStream.omitField(RepositoryEntry.class, "metaDataElements");
 		historyReadStream.alias("org.olat.core.util.resource.OresHelper$1", Resourceable.class);
 		historyReadStream.alias("org.olat.core.util.resource.OresHelper$2", Resourceable.class);
 		historyReadStream.alias("org.olat.core.util.resource.OresHelper$3", Resourceable.class);
diff --git a/src/test/java/org/olat/core/id/context/HistoryManagerTest.java b/src/test/java/org/olat/core/id/context/HistoryManagerTest.java
index ecbeb75987c..5d2d09e2233 100644
--- a/src/test/java/org/olat/core/id/context/HistoryManagerTest.java
+++ b/src/test/java/org/olat/core/id/context/HistoryManagerTest.java
@@ -98,4 +98,18 @@ public class HistoryManagerTest extends OlatTestCase {
 		Assert.assertNotNull(history);
 	}
 	
+	/**
+	 * Test the compatibility with version 8.3
+	 * @throws IOException
+	 * @throws URISyntaxException
+	 */
+	@Test
+	public void testRead_v83_repoMetadaElements() throws IOException, URISyntaxException {
+		URL xmlUrl = HistoryManagerTest.class.getResource("resume_ver83b.xml");
+		assertNotNull(xmlUrl);
+		File resumeXml = new File(xmlUrl.toURI());
+		HistoryPoint history = historyManager.readHistory(resumeXml);
+		Assert.assertNotNull(history);
+	}
+	
 }
diff --git a/src/test/java/org/olat/core/id/context/resume_ver83b.xml b/src/test/java/org/olat/core/id/context/resume_ver83b.xml
new file mode 100644
index 00000000000..84f2ceab6c7
--- /dev/null
+++ b/src/test/java/org/olat/core/id/context/resume_ver83b.xml
@@ -0,0 +1,74 @@
+<org.olat.core.id.context.HistoryPointImpl>
+  <uuid>11</uuid>
+  <businessPath>[RepositorySite:0][search.my:0][RepositoryEntry:16547840]</businessPath>
+  <entries>
+    <org.olat.core.id.context.MyContextEntry>
+      <olatResourceable class="org.olat.core.util.resource.OresHelper$1">
+        <val_-type>RepositorySite</val_-type>
+        <val_-key>0</val_-key>
+      </olatResourceable>
+      <state class="org.olat.core.id.context.StateSite"/>
+    </org.olat.core.id.context.MyContextEntry>
+    <org.olat.core.id.context.MyContextEntry>
+      <olatResourceable class="org.olat.core.util.resource.OresHelper$1">
+        <val_-type>search.my</val_-type>
+        <val_-key>0</val_-key>
+      </olatResourceable>
+    </org.olat.core.id.context.MyContextEntry>
+    <org.olat.core.id.context.MyContextEntry>
+      <olatResourceable class="org.olat.repository.RepositoryEntry">
+        <key>16547840</key>
+        <version defined-in="org.olat.core.commons.persistence.PersistentObject">0</version>
+        <creationDate class="sql-timestamp">2013-02-11 10:52:37.0</creationDate>
+        <softkey>sroo83_1_87076880944174</softkey>
+        <olatResource class="org.olat.resource.OLATResourceImpl">
+          <key>16416768</key>
+          <version>0</version>
+          <creationDate class="sql-timestamp">2013-02-11 10:52:37.0</creationDate>
+          <resName>CourseModule</resName>
+          <resId>87076880944173</resId>
+        </olatResource>
+        <ownerGroup class="org.olat.basesecurity.SecurityGroupImpl">
+          <key>16449536</key>
+          <version>0</version>
+          <creationDate class="sql-timestamp">2013-02-11 10:52:37.0</creationDate>
+        </ownerGroup>
+        <tutorGroup class="org.olat.basesecurity.SecurityGroupImpl">
+          <key>16449537</key>
+          <version>0</version>
+          <creationDate class="sql-timestamp">2013-02-11 10:52:37.0</creationDate>
+        </tutorGroup>
+        <participantGroup class="org.olat.basesecurity.SecurityGroupImpl">
+          <key>16449538</key>
+          <version>0</version>
+          <creationDate class="sql-timestamp">2013-02-11 10:52:37.0</creationDate>
+        </participantGroup>
+        <resourcename>-</resourcename>
+        <displayname>1 Person Kurs</displayname>
+        <description>&lt;p&gt;1 Person Kurs&lt;/p&gt;</description>
+        <initialAuthor>kanu</initialAuthor>
+        <access>1</access>
+        <canCopy>false</canCopy>
+        <canReference>false</canReference>
+        <canLaunch>true</canLaunch>
+        <canDownload>false</canDownload>
+        <membersOnly>false</membersOnly>
+        <statusCode>0</statusCode>
+        <metaDataElements class="org.hibernate.collection.internal.PersistentList">
+          <initialized>false</initialized>
+          <owner class="org.olat.repository.RepositoryEntry" reference="../.."/>
+          <cachedSize>-1</cachedSize>
+          <role>org.olat.repository.RepositoryEntry.metaDataElements</role>
+          <key class="long">16547840</key>
+          <dirty>false</dirty>
+          <specjLazyLoad>false</specjLazyLoad>
+        </metaDataElements>
+        <launchCounter>3</launchCounter>
+        <downloadCounter>0</downloadCounter>
+        <lastUsage>2013-05-29 10:20:36.347 UTC</lastUsage>
+        <version>5</version>
+        <lastModified class="sql-timestamp">2013-02-11 10:52:37.0</lastModified>
+      </olatResourceable>
+    </org.olat.core.id.context.MyContextEntry>
+  </entries>
+</org.olat.core.id.context.HistoryPointImpl>
\ No newline at end of file
-- 
GitLab