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