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

Reply via email to