You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/09/27 02:38:54 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2459] backup should be fixed

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 402e1dc  [OPENMEETINGS-2459] backup should be fixed
402e1dc is described below

commit 402e1dc9525cfb82a61eed5079881f0804d6f20c
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Sep 27 09:38:37 2020 +0700

    [OPENMEETINGS-2459] backup should be fixed
---
 .../openmeetings/db/entity/file/FileItem.java      | 10 ++++++
 .../openmeetings/db/entity/record/Recording.java   | 10 ++++++
 .../apache/openmeetings/backup/BackupExport.java   | 13 ++++----
 .../org/apache/openmeetings/backup/TestExport.java | 36 ++++++++++++++++++++++
 4 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
index a9a317c..85d01e3 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
@@ -60,6 +60,16 @@ public class FileItem extends BaseFileItem {
 	@XmlElement(name = "externalId", required = false)
 	private String externalId;
 
+	/**
+	 * Method to get ID
+	 *
+	 * required to be overridden for valid export
+	 */
+	@Override
+	public Long getId() {
+		return super.getId();
+	}
+
 	@Override
 	@XmlElement(name = "fileExplorerItemId")
 	@XmlJavaTypeAdapter(LongAdapter.class)
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
index 4a42930..db18cc5 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/record/Recording.java
@@ -150,6 +150,16 @@ public class Recording extends BaseFileItem {
 	@XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
 	private boolean notified = false;
 
+	/**
+	 * Method to get ID
+	 *
+	 * required to be overridden for valid export
+	 */
+	@Override
+	public Long getId() {
+		return super.getId();
+	}
+
 	@Override
 	@XmlElement(name = "flvRecordingId")
 	@XmlJavaTypeAdapter(LongAdapter.class)
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
index 07803b5..f1cae31 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
@@ -369,7 +369,10 @@ public class BackupExport {
 		writeList(zos, "chat_messages.xml", CHAT_LIST_NODE, list);
 	}
 
-	private static <T> ByteArrayOutputStream stream(String listElement, List<T> list) throws Exception {
+	/*
+	 * Package private for tests
+	 */
+	static <T> ByteArrayOutputStream stream(String listElement, List<T> list) throws Exception {
 		ByteArrayOutputStream baos = new ByteArrayOutputStream(10 * 1024); //10K
 		writeList(baos, listElement, list);
 		return baos;
@@ -400,12 +403,8 @@ public class BackupExport {
 				marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
 				marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
 				for (T t : list) {
-					try {
-						marshaller.marshal(t, sw);
-						sw.write("\n");
-					} catch (Exception e) {
-						log.debug("Exception While writing node of type: {}", t.getClass(), e);
-					}
+					marshaller.marshal(t, sw);
+					sw.write("\n");
 				}
 			}
 			sw.write("</" + listElement + ">\n");
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
index cc50355..04bd0dc 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestExport.java
@@ -18,6 +18,12 @@
  */
 package org.apache.openmeetings.backup;
 
+import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.db.bind.Constants.FILE_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.USER_LIST_NODE;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.StringWriter;
@@ -28,14 +34,21 @@ import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Marshaller;
 
 import org.apache.openmeetings.AbstractJUnitDefaults;
+import org.apache.openmeetings.db.dao.file.FileItemDao;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import com.sun.xml.bind.marshaller.CharacterEscapeHandler;
 
 class TestExport extends AbstractJUnitDefaults {
+	@Autowired
+	private FileItemDao fileItemDao;
+
 	@Test
 	void exportMain() throws Exception {
 		BackupExport.main(new String[] {File.createTempFile("gereral", "cfg").getCanonicalPath()});
@@ -61,4 +74,27 @@ class TestExport extends AbstractJUnitDefaults {
 		marshaller.marshal(u, writer);
 		Assertions.assertNotNull(writer.getBuffer());
 	}
+
+	@Test
+	void exportUsers() throws Exception {
+		ByteArrayOutputStream baos = BackupExport.stream(USER_LIST_NODE, userDao.getAllBackupUsers());
+		assertNotNull(baos);
+	}
+
+	@Test
+	void exportFiles() throws Exception {
+		FileItem fld = new FileItem();
+		fld.setName("folder");
+		fld.setHash(randomUUID().toString());
+		fld.setType(BaseFileItem.Type.FOLDER);
+		fileItemDao.update(fld);
+		FileItem f = new FileItem();
+		f.setName("file");
+		f.setHash(randomUUID().toString());
+		f.setParentId(fld.getId());
+		f.setType(BaseFileItem.Type.PRESENTATION);
+		fileItemDao.update(f);
+		ByteArrayOutputStream baos = BackupExport.stream(FILE_LIST_NODE, fileItemDao.get());
+		assertNotNull(baos);
+	}
 }