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);
+ }
}