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 d35a268 [OPENMEETINGS-2177] import tests seems to pass
d35a268 is described below
commit d35a2680c744b5e46d3217f6fbb3b34ab13ba6d1
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Mar 5 16:55:08 2020 +0700
[OPENMEETINGS-2177] import tests seems to pass
---
.../org/apache/openmeetings/db/bind/Constants.java | 12 +++
.../openmeetings/db/bind/adapter/FileAdapter.java | 23 +++---
.../db/bind/adapter/PollTypeAdapter.java | 21 +++--
.../openmeetings/db/dao/file/BaseFileItemDao.java | 36 ++++++++-
.../openmeetings/db/dao/file/FileItemDao.java | 2 +-
.../openmeetings/db/dao/record/RecordingDao.java | 6 +-
.../openmeetings/db/entity/file/FileItem.java | 20 +++--
.../openmeetings/db/entity/record/Recording.java | 9 ++-
.../openmeetings/db/entity/room/RoomFile.java | 25 ++++--
.../openmeetings/db/entity/room/RoomPoll.java | 52 ++++++++----
.../db/entity/room/RoomPollAnswer.java | 38 ++++++---
.../db/entity/user/PrivateMessage.java | 57 +++++++++----
.../db/entity/user/PrivateMessageFolder.java | 30 +++++--
.../apache/openmeetings/db/entity/user/User.java | 2 +-
.../openmeetings/db/entity/user/UserContact.java | 76 +++++++++++-------
.../apache/openmeetings/backup/BackupImport.java | 93 +++++++++-------------
.../web/room/poll/CreatePollDialog.java | 2 +-
.../web/room/poll/PollResultsDialog.java | 9 ++-
.../openmeetings/web/room/poll/VoteDialog.java | 2 +-
.../org/apache/openmeetings/backup/TestImport.java | 11 +++
.../openmeetings/backup/calendar/appointements.xml | 1 -
.../openmeetings/backup/file/flvRecordings.xml | 16 ++--
.../backup/msg/privateMessageFolder.xml | 34 ++++++++
.../openmeetings/backup/user/userContacts.xml | 64 +++++++++++++++
pom.xml | 8 +-
25 files changed, 464 insertions(+), 185 deletions(-)
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
index 3639fe6..d2594ac 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/Constants.java
@@ -45,4 +45,16 @@ public class Constants {
public static final String MMEMBER_NODE = "meetingmember";
public static final String RECORDING_LIST_NODE = "flvrecordings";
public static final String RECORDING_NODE = "flvrecording";
+ public static final String MSG_FOLDER_LIST_NODE =
"privatemessagefolders";
+ public static final String MSG_FOLDER_NODE = "privatemessagefolder";
+ public static final String CONTACT_LIST_NODE = "usercontacts";
+ public static final String CONTACT_NODE = "usercontact";
+ public static final String MSG_LIST_NODE = "privatemessages";
+ public static final String MSG_NODE = "privatemessage";
+ public static final String FILE_LIST_NODE = "fileExplorerItems";
+ public static final String FILE_NODE = "fileExplorerItem";
+ public static final String POLL_LIST_NODE = "roompolls";
+ public static final String POLL_NODE = "roompoll";
+ public static final String ROOM_FILE_LIST_NODE = "RoomFiles";
+ public static final String ROOM_FILE_NODE = "RoomFile";
}
diff --git
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileAdapter.java
similarity index 62%
rename from
openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
rename to
openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileAdapter.java
index 640f4d6..c4c39e7 100644
---
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/IntegerTransform.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/FileAdapter.java
@@ -16,20 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.db.bind.adapter;
-import static org.apache.commons.lang3.math.NumberUtils.toInt;
+import java.util.Map;
-import org.simpleframework.xml.transform.Transform;
+import org.apache.openmeetings.db.dao.file.BaseFileItemDao;
+import org.apache.openmeetings.db.entity.file.BaseFileItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
-public class IntegerTransform implements Transform<Integer> {
- @Override
- public Integer read(String value) throws Exception {
- return toInt(value, 0);
+public class FileAdapter extends EntityAdapter<BaseFileItem> {
+ public FileAdapter() {
+ super();
+ }
+
+ public FileAdapter(BaseFileItemDao dao, Map<Long, Long> idMap) {
+ super(dao, idMap);
}
@Override
- public String write(Integer value) throws Exception {
- return String.valueOf(value);
+ protected BaseFileItem newEntity() {
+ return new FileItem();
}
}
diff --git
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java
similarity index 56%
rename from
openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
rename to
openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java
index ed3c62b..bb15c13 100644
---
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/LongTransform.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/bind/adapter/PollTypeAdapter.java
@@ -16,20 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.openmeetings.backup;
+package org.apache.openmeetings.db.bind.adapter;
-import static org.apache.commons.lang3.math.NumberUtils.toLong;
+import static org.apache.commons.lang3.math.NumberUtils.toInt;
+import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_BEGIN;
+import static org.apache.openmeetings.db.bind.adapter.CDATAAdapter.CDATA_END;
-import org.simpleframework.xml.transform.Transform;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+import org.apache.openmeetings.db.entity.room.RoomPoll;
+
+public class PollTypeAdapter extends XmlAdapter<String, RoomPoll.Type> {
-public class LongTransform implements Transform<Long> {
@Override
- public Long read(String value) throws Exception {
- return toLong(value);
+ public String marshal(RoomPoll.Type v) throws Exception {
+ return CDATA_BEGIN + v.getId() + CDATA_END;
}
@Override
- public String write(Long value) throws Exception {
- return String.valueOf(value);
+ public RoomPoll.Type unmarshal(String v) throws Exception {
+ return RoomPoll.Type.get(toInt(v));
}
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
index f2992fe..82e9267 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
@@ -18,12 +18,15 @@
*/
package org.apache.openmeetings.db.dao.file;
+import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
+
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
+import org.apache.openmeetings.db.dao.IDataProviderDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.GroupDao;
import org.apache.openmeetings.db.dao.user.UserDao;
@@ -40,7 +43,7 @@ import
org.springframework.transaction.annotation.Transactional;
@Repository
@Transactional
-public class BaseFileItemDao {
+public class BaseFileItemDao implements IDataProviderDao<BaseFileItem> {
private static final Logger log =
LoggerFactory.getLogger(BaseFileItemDao.class);
@PersistenceContext
protected EntityManager em;
@@ -58,6 +61,7 @@ public class BaseFileItemDao {
return list.size() == 1 ? list.get(0) : null;
}
+ @Override
public BaseFileItem get(Long id) {
if (id == null || id.longValue() <= 0) {
return null;
@@ -122,4 +126,34 @@ public class BaseFileItemDao {
}
return f;
}
+
+ @Override
+ public List<BaseFileItem> get(long start, long count) {
+ throw UNSUPPORTED;
+ }
+
+ @Override
+ public List<BaseFileItem> get(String search, long start, long count,
String order) {
+ throw UNSUPPORTED;
+ }
+
+ @Override
+ public long count() {
+ throw UNSUPPORTED;
+ }
+
+ @Override
+ public long count(String search) {
+ throw UNSUPPORTED;
+ }
+
+ @Override
+ public BaseFileItem update(BaseFileItem entity, Long userId) {
+ throw UNSUPPORTED;
+ }
+
+ @Override
+ public void delete(BaseFileItem entity, Long userId) {
+ throw UNSUPPORTED;
+ }
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
index 7c80bff..afe0999 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
@@ -178,7 +178,7 @@ public class FileItemDao extends BaseFileItemDao {
public FileItem move(long id, long parentId, long ownerId, long roomId)
{
log.debug(".move() started");
- FileItem f = get(id);
+ FileItem f = get(Long.valueOf(id));
if (f == null) {
return null;
}
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
index 9c77f3a..09c953e 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingDao.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.dao.record;
+import static org.apache.openmeetings.db.dao.user.UserDao.FETCH_GROUP_BACKUP;
+import static org.apache.openmeetings.db.util.DaoHelper.fillLazy;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
@@ -74,7 +76,9 @@ public class RecordingDao extends BaseFileItemDao {
}
public List<Recording> get() {
- return em.createNamedQuery("getRecordingsAll",
Recording.class).getResultList();
+ return fillLazy(em
+ , oem ->
oem.createNamedQuery("getRecordingsAll", Recording.class)
+ , FETCH_GROUP_BACKUP);
}
public List<Recording> getByExternalType(String externalType) {
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 77e44e7..50b1125 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
@@ -18,12 +18,17 @@
*/
package org.apache.openmeetings.db.entity.file;
+import static org.apache.openmeetings.db.bind.Constants.FILE_NODE;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQuery;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
@Entity
@NamedQuery(name = "getAllFiles", query = "SELECT f FROM FileItem f ORDER BY
f.id")
@@ -43,25 +48,28 @@ import org.simpleframework.xml.Root;
@NamedQuery(name = "getFileFilteredByGroup", query = "SELECT f FROM FileItem f
WHERE f.deleted = false AND f.ownerId IS NULL "
+ "AND f.groupId = :groupId AND f.parentId IS NULL AND f.type
IN :filter "
+ "ORDER BY f.type ASC, f.name")
-@Root
+@XmlRootElement(name = FILE_NODE)
public class FileItem extends BaseFileItem {
private static final long serialVersionUID = 1L;
@Column(name = "filesize")
- @Element(data = true, required = false)
+ @XmlElement(name = "size", required = false)
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long size;
@Column(name = "external_id")
+ @XmlElement(name = "externalId", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String externalId;
@Override
- @Element(data = true, name = "fileExplorerItemId")
public Long getId() {
return super.getId();
}
@Override
- @Element(data = true, name = "fileExplorerItemId")
+ @XmlElement(name = "fileExplorerItemId")
+ @XmlJavaTypeAdapter(LongAdapter.class)
public void setId(Long id) {
super.setId(id);
}
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 913bb37..3e56a15 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
@@ -19,6 +19,7 @@
package org.apache.openmeetings.db.entity.record;
import static org.apache.openmeetings.db.bind.Constants.RECORDING_NODE;
+import static org.apache.openmeetings.db.dao.user.UserDao.FETCH_GROUP_BACKUP;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
import static org.apache.openmeetings.util.OmFileHelper.RECORDING_FILE_NAME;
@@ -40,6 +41,9 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.apache.openjpa.persistence.FetchAttribute;
+import org.apache.openjpa.persistence.FetchGroup;
+import org.apache.openjpa.persistence.FetchGroups;
import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
import org.apache.openmeetings.db.bind.adapter.DateAdapter;
@@ -63,6 +67,9 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem;
*
*/
@Entity
+@FetchGroups({
+ @FetchGroup(name = FETCH_GROUP_BACKUP, attributes = {
@FetchAttribute(name = "chunks") })
+})
@NamedQuery(name = "getRecordingsByExternalUser", query = "SELECT r FROM
Recording r "
+ "WHERE r.insertedBy = (SELECT gu.user.id FROM GroupUser gu
WHERE "
+ "gu.group.deleted = false AND gu.group.external = true AND
gu.group.name = :externalType "
@@ -78,7 +85,7 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem;
+ "AND (r.parentId IS NULL OR r.parentId = 0) "
+ "ORDER BY r.type ASC, r.inserted")
@NamedQuery(name = "resetRecordingProcessingStatus", query = "UPDATE Recording
r SET r.status = :error WHERE r.status IN (:recording, :converting)")
-@NamedQuery(name = "getRecordingsAll", query = "SELECT r FROM Recording r LEFT
JOIN FETCH r.chunks ORDER BY r.id")
+@NamedQuery(name = "getRecordingsAll", query = "SELECT r FROM Recording r
ORDER BY r.id")
@NamedQuery(name = "getRecordingsByRoom", query = "SELECT r FROM Recording r
WHERE r.deleted = false AND r.roomId = :roomId "
+ "ORDER BY r.type ASC, r.inserted")
@NamedQuery(name = "getRecordingsByParent", query = "SELECT r FROM Recording r
WHERE r.deleted = false AND r.parentId = :parentId "
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
index db6dc10..a9e4d71 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomFile.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.room;
+import static org.apache.openmeetings.db.bind.Constants.ROOM_FILE_NODE;
+
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
@@ -27,38 +29,49 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.FileAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
import org.apache.openmeetings.db.entity.file.BaseFileItem;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
@Entity
@Table(name = "room_file")
-@Root(name = "RoomFile")
+@XmlRootElement(name = ROOM_FILE_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class RoomFile implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Element(data = true, required = true)
+ @XmlElement(name = "id")
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@Column(name = "room_id")
- @Element(data = true, required = true)
+ @XmlElement(name = "roomId")
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long roomId;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "file_id", insertable = true, updatable = true,
nullable = false)
@ForeignKey(enabled = true)
- @Element(data = true, required = true)
+ @XmlElement(name = "file")
+ @XmlJavaTypeAdapter(FileAdapter.class)
private BaseFileItem file;
/*
* Index of whiteboard for this file, zero based
*/
@Column(name = "wb_idx", nullable = false)
+ @XmlElement(name = "wbIdx", required = false)
+ @XmlJavaTypeAdapter(value = LongAdapter.class, type = long.class)
private long wbIdx = 0;
public RoomFile() {
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
index 900dae3..faeadfc 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.room;
+import static org.apache.openmeetings.db.bind.Constants.POLL_NODE;
+
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
@@ -36,14 +38,24 @@ import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.PollTypeAdapter;
+import org.apache.openmeetings.db.bind.adapter.RoomAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserAdapter;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
import org.apache.openmeetings.db.entity.user.User;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.ElementList;
-import org.simpleframework.xml.Root;
@Entity
@NamedQuery(name = "closePoll", query = "UPDATE RoomPoll rp SET rp.archived =
:archived "
@@ -58,7 +70,8 @@ import org.simpleframework.xml.Root;
@NamedQuery(name = "hasPoll", query = "SELECT COUNT(rp) FROM RoomPoll rp "
+ "WHERE rp.room.id = :roomId AND rp.archived = :archived")
@Table(name = "room_poll")
-@Root(name = "roompoll")
+@XmlRootElement(name = POLL_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class RoomPoll implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
public static final int YES_NO_TYPE_ID = 1;
@@ -66,8 +79,8 @@ public class RoomPoll implements IDataProviderEntity {
@XmlType(namespace="org.apache.openmeetings.room.poll.type")
public enum Type {
- yesNo(YES_NO_TYPE_ID)
- , numeric(NUMERIC_TYPE_ID);
+ YES_NO(YES_NO_TYPE_ID)
+ , NUMERIC(NUMERIC_TYPE_ID);
private int id;
Type(int id) {
@@ -87,51 +100,60 @@ public class RoomPoll implements IDataProviderEntity {
}
public static Type get(int type) {
- return type == NUMERIC_TYPE_ID ? Type.numeric :
Type.yesNo;
+ return type == NUMERIC_TYPE_ID ? Type.NUMERIC :
Type.YES_NO;
}
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
+ @XmlTransient
private Long id;
@Column(name = "name")
- @Element(name = "pollname", data = true, required = false)
+ @XmlElement(name = "pollname", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String name;
@Column(name = "question")
- @Element(name = "pollquestion", data = true, required = false)
+ @XmlElement(name = "pollquestion", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String question;
@Column(name = "created")
- @Element(data = true, required = false)
+ @XmlElement(name = "created", required = false)
+ @XmlJavaTypeAdapter(DateAdapter.class)
private Date created;
@Column(name = "archived", nullable = false)
- @Element(data = true, required = false)
+ @XmlElement(name = "archived", required = false)
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean archived;
@Column(name = "type")
- @Element(name = "polltypeid", data = true, required = false)
@Enumerated(EnumType.STRING)
+ @XmlElement(name = "polltypeid", required = false)
+ @XmlJavaTypeAdapter(PollTypeAdapter.class)
private Type type;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
@ForeignKey(enabled = true)
- @Element(name = "createdbyuserid", data = true, required = false)
+ @XmlElement(name = "createdbyuserid", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User creator;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "room_id")
@ForeignKey(enabled = true)
- @Element(name = "roomid", data = true, required = false)
+ @XmlElement(name = "roomid", required = false)
+ @XmlJavaTypeAdapter(RoomAdapter.class)
private Room room;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "poll_id")
- @ElementList(name = "roompollanswers", required = false)
+ @XmlElementWrapper(name = "roompollanswers", required = false)
+ @XmlElement(name = "roompollanswer", required = false)
private List<RoomPollAnswer> answers;
/**
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
index acfc93c..43e6bac 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPollAnswer.java
@@ -18,11 +18,7 @@
*/
package org.apache.openmeetings.db.entity.room;
-import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.apache.openmeetings.db.entity.user.User;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
+import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -34,41 +30,61 @@ import javax.persistence.JoinColumn;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
-import java.util.Date;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.IntAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserAdapter;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+import org.apache.openmeetings.db.entity.user.User;
@Entity
@NamedQuery(name = "notVoted", query = "SELECT rpa FROM RoomPollAnswer rpa
WHERE rpa.roomPoll.room.id = :roomId "
+ "AND rpa.votedUser.id = :userId AND rpa.roomPoll.archived =
false")
@Table(name = "room_poll_answer")
-@Root(name="roompollanswer")
+@XmlRootElement(name = "roompollanswer")
+@XmlAccessorType(XmlAccessType.FIELD)
public class RoomPollAnswer implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
+ @XmlTransient
private Long id;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
@ForeignKey(enabled = true)
- @Element(name="voteduserid", data=false, required=false)
+ @XmlElement(name = "voteduserid", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User votedUser;
@Column(name = "answer")
- @Element(data=false, required=false)
+ @XmlElement(name = "answer", required = false)
+ @XmlJavaTypeAdapter(BooleanAdapter.class)
private Boolean answer;
@Column(name = "pointList")
- @Element(name="pointlist", data=false, required=false)
+ @XmlElement(name = "pointlist", required = false)
+ @XmlJavaTypeAdapter(IntAdapter.class)
private Integer pointList;
@Column(name = "voteDate")
- @Element(name="votedate", data=false)
+ @XmlElement(name = "votedate", required = false)
+ @XmlJavaTypeAdapter(DateAdapter.class)
private Date voteDate;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "poll_id")
+ @XmlTransient
private RoomPoll roomPoll;
@Override
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
index 3655e18..8d4505f 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessage.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.user;
+import static org.apache.openmeetings.db.bind.Constants.MSG_NODE;
+
import java.util.Date;
import javax.persistence.CascadeType;
@@ -32,12 +34,21 @@ import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
+import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
+import org.apache.openmeetings.db.bind.adapter.RoomAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserAdapter;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
import org.apache.openmeetings.db.entity.room.Room;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
@Entity
@NamedQuery(name = "getPrivateMessages", query = "SELECT c FROM PrivateMessage
c ORDER BY c.id")
@@ -47,7 +58,8 @@ import org.simpleframework.xml.Root;
@NamedQuery(name = "deletePrivateMessages", query = "DELETE FROM
PrivateMessage c WHERE c.id IN (:ids) ")
@NamedQuery(name = "getPrivateMessagesByRoom", query = "SELECT c FROM
PrivateMessage c WHERE c.room.id = :roomId ")
@Table(name = "private_message")
-@Root(name = "privatemessage")
+@XmlRootElement(name = MSG_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class PrivateMessage implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
public static final Long INBOX_FOLDER_ID = Long.valueOf(0);
@@ -57,64 +69,77 @@ public class PrivateMessage implements IDataProviderEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(data = true, name = "privateMessageId")
+ @XmlElement(name = "privateMessageId")
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@Column(name = "subject")
- @Element(data = true, required = false)
+ @XmlElement(name = "subject", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String subject;
@Lob
@Column(name = "message")
- @Element(data = true, required = false)
+ @XmlElement(name = "message", required = false)
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String message;
@Column(name = "inserted")
- @Element(data = true)
+ @XmlElement(name = "inserted")
+ @XmlJavaTypeAdapter(DateAdapter.class)
private Date inserted;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "from_id")
@ForeignKey(enabled = true)
- @Element(data = true, required = false)
+ @XmlElement(name = "from", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User from;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@JoinColumn(name = "to_id")
@ForeignKey(enabled = true)
- @Element(data = true, required = false)
+ @XmlElement(name = "to", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User to;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@JoinColumn(name = "owner_id")
@ForeignKey(enabled = true)
- @Element(data = true, required = false)
+ @XmlElement(name = "owner", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User owner;
@Column(name = "booked_room", nullable = false)
- @Element(data = true)
+ @XmlElement(name = "bookedRoom")
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean bookedRoom;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "room_id")
@ForeignKey(enabled = true)
- @Element(data = true, required = false)
+ @XmlElement(name = "room", required = false)
+ @XmlJavaTypeAdapter(RoomAdapter.class)
private Room room;
@Column(name = "is_read", nullable = false)
- @Element(data = true)
+ @XmlElement(name = "isRead")
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean isRead;
@Column(name = "private_message_folder_id")
- @Element(data = true, name = "privateMessageFolderId", required = false)
+ @XmlElement(name = "privateMessageFolderId", required = false)
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long folderId;
@Column(name = "is_contact_request", nullable = false)
- @Element(data = true)
+ @XmlElement(name = "isRead")
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean isContactRequest;
@Column(name = "user_contact_id")
- @Element(data = true, required = false)
+ @XmlElement(name = "userContactId", required = false)
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long userContactId;
public PrivateMessage() {
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
index f686e00..02fd7fa 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/PrivateMessageFolder.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.user;
+import static org.apache.openmeetings.db.bind.Constants.MSG_FOLDER_NODE;
+
import java.util.Date;
import javax.persistence.Column;
@@ -26,34 +28,48 @@ import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
-
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.openmeetings.db.bind.adapter.CDATAAdapter;
+import org.apache.openmeetings.db.bind.adapter.DateAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
import org.apache.openmeetings.db.entity.IDataProviderEntity;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
@Entity
@Table(name = "private_message_folder")
-@Root(name="privatemessagefolder")
+@XmlRootElement(name = MSG_FOLDER_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class PrivateMessageFolder implements IDataProviderEntity {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
- @Element(data = true, name = "privateMessageFolderId")
+ @XmlElement(name = "privateMessageFolderId")
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@Column(name = "folder_name")
- @Element(data = true)
+ @XmlElement(name = "folderName")
+ @XmlJavaTypeAdapter(CDATAAdapter.class)
private String folderName;
@Column(name = "user_id")
- @Element(data = true)
+ @XmlElement(name = "userId")
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long userId;
@Column(name = "inserted")
+ @XmlElement(name = "inserted")
+ @XmlJavaTypeAdapter(DateAdapter.class)
private Date inserted;
@Column(name = "updated")
+ @XmlTransient
private Date updated;
@Override
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
index 7ea3948..fe53bd5 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
@@ -235,7 +235,7 @@ public class User extends HistoricalEntity {
@Basic(fetch = FetchType.LAZY)
@Column(name = "password", length = 1024)
- @LoadFetchGroup("backupexport")
+ @LoadFetchGroup(FETCH_GROUP_BACKUP)
@XmlElement(name = "pass", required = false)
@XmlJavaTypeAdapter(CDATAAdapter.class)
private String password;
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
index d965594..bbf8b67 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/UserContact.java
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.db.entity.user;
+import static org.apache.openmeetings.db.bind.Constants.CONTACT_NODE;
+
import java.io.Serializable;
import java.util.Date;
@@ -31,69 +33,79 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.openjpa.persistence.jdbc.ForeignKey;
-import org.simpleframework.xml.Element;
-import org.simpleframework.xml.Root;
+import org.apache.openmeetings.db.bind.adapter.BooleanAdapter;
+import org.apache.openmeetings.db.bind.adapter.LongAdapter;
+import org.apache.openmeetings.db.bind.adapter.UserAdapter;
@Entity
@NamedQuery(name = "deleteUserContact", query = "delete from UserContact u
where u.id = :id")
@NamedQuery(name = "deleteAllUserContacts", query = "delete from UserContact u
where u.owner.id = :ownerId")
@NamedQuery(name = "getContactByUserOwner", query = "SELECT c FROM UserContact
c WHERE c.contact.id = :userId AND c.owner.id = :ownerId AND c.contact.deleted
= false")
-@NamedQuery(name = "getContactsByUserAndStatus", query = "select c from
UserContact c " +
- "where c.owner.id = :ownerId " +
- "AND c.pending = :pending " +
- "AND c.contact.deleted = false")
-@NamedQuery(name = "getContactRequestsByUserAndStatus", query = "select c from
UserContact c " +
- "where c.contact.id = :userId " +
- "AND c.pending = :pending " +
- "AND c.contact.deleted = false")
-@NamedQuery(name = "getContactsByUser", query = "SELECT c FROM UserContact c "
+
- "WHERE c.contact.id = :userId " +
- "AND c.contact.deleted = false ORDER BY c.pending DESC")
-@NamedQuery(name = "countContactsByUser", query = "select COUNT(c) from
UserContact c " +
- "where c.contact.id = :userId " +
- "AND c.contact.deleted = false")
+@NamedQuery(name = "getContactsByUserAndStatus", query = "select c from
UserContact c "
+ + "where c.owner.id = :ownerId AND c.pending = :pending AND
c.contact.deleted = false")
+@NamedQuery(name = "getContactRequestsByUserAndStatus", query = "select c from
UserContact c "
+ + "where c.contact.id = :userId AND c.pending = :pending AND
c.contact.deleted = false")
+@NamedQuery(name = "getContactsByUser", query = "SELECT c FROM UserContact c "
+ + "WHERE c.contact.id = :userId AND c.contact.deleted = false
ORDER BY c.pending DESC")
+@NamedQuery(name = "countContactsByUser", query = "select COUNT(c) from
UserContact c "
+ + "where c.contact.id = :userId AND c.contact.deleted = false")
@NamedQuery(name = "getUserContactsById", query = "SELECT c FROM UserContact c
WHERE c.id = :id")
@NamedQuery(name = "getUserContacts", query = "SELECT c FROM UserContact c
ORDER BY c.id")
@Table(name = "user_contact")
-@Root(name="usercontact")
+@XmlRootElement(name = CONTACT_NODE)
+@XmlAccessorType(XmlAccessType.FIELD)
public class UserContact implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name="id")
- @Element(data = true, name = "userContactId")
+ @Column(name = "id")
+ @XmlElement(name = "userContactId")
+ @XmlJavaTypeAdapter(LongAdapter.class)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name="user_id")
- @Element(data=true, required=false)
+ @JoinColumn(name = "user_id")
+ @XmlElement(name = "contact", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User contact;
@ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name="owner_id")
+ @JoinColumn(name = "owner_id")
@ForeignKey(enabled = true)
- @Element(data=true, required=false)
+ @XmlElement(name = "owner", required = false)
+ @XmlJavaTypeAdapter(UserAdapter.class)
private User owner;
- @Column(name="pending", nullable = false)
- @Element(data=true)
+ @Column(name = "pending", nullable = false)
+ @XmlElement(name = "pending")
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean pending;
- @Column(name="inserted")
+ @Column(name = "inserted")
+ @XmlTransient
private Date inserted;
- @Column(name="updated")
+ @Column(name = "updated")
+ @XmlTransient
private Date updated;
- @Column(name="share_calendar", nullable = false)
- @Element(data=true, required=false)
+ @Column(name = "share_calendar", nullable = false)
+ @XmlElement(name = "pending", required = false)
+ @XmlJavaTypeAdapter(value = BooleanAdapter.class, type = boolean.class)
private boolean shareCalendar;
public Long getId() {
return id;
}
+
public void setId(Long id) {
this.id = id;
}
@@ -101,6 +113,7 @@ public class UserContact implements Serializable {
public User getContact() {
return contact;
}
+
public void setContact(User contact) {
this.contact = contact;
}
@@ -108,6 +121,7 @@ public class UserContact implements Serializable {
public User getOwner() {
return owner;
}
+
public void setOwner(User owner) {
this.owner = owner;
}
@@ -115,6 +129,7 @@ public class UserContact implements Serializable {
public boolean isPending() {
return pending;
}
+
public void setPending(boolean pending) {
this.pending = pending;
}
@@ -122,6 +137,7 @@ public class UserContact implements Serializable {
public Date getInserted() {
return inserted;
}
+
public void setInserted(Date inserted) {
this.inserted = inserted;
}
@@ -129,6 +145,7 @@ public class UserContact implements Serializable {
public Date getUpdated() {
return updated;
}
+
public void setUpdated(Date updated) {
this.updated = updated;
}
@@ -136,6 +153,7 @@ public class UserContact implements Serializable {
public boolean getShareCalendar() {
return shareCalendar;
}
+
public void setShareCalendar(boolean shareCalendar) {
this.shareCalendar = shareCalendar;
}
diff --git
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 4595d7d..645a134 100644
---
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -27,14 +27,26 @@ import static
org.apache.openmeetings.db.bind.Constants.CFG_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.CFG_NODE;
import static org.apache.openmeetings.db.bind.Constants.CHAT_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.CHAT_NODE;
+import static org.apache.openmeetings.db.bind.Constants.CONTACT_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.CONTACT_NODE;
+import static org.apache.openmeetings.db.bind.Constants.FILE_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.FILE_NODE;
import static org.apache.openmeetings.db.bind.Constants.GROUP_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.GROUP_NODE;
import static org.apache.openmeetings.db.bind.Constants.MMEMBER_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.MMEMBER_NODE;
+import static org.apache.openmeetings.db.bind.Constants.MSG_FOLDER_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.MSG_FOLDER_NODE;
+import static org.apache.openmeetings.db.bind.Constants.MSG_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.MSG_NODE;
import static org.apache.openmeetings.db.bind.Constants.OAUTH_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.OAUTH_NODE;
+import static org.apache.openmeetings.db.bind.Constants.POLL_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.POLL_NODE;
import static org.apache.openmeetings.db.bind.Constants.RECORDING_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.RECORDING_NODE;
+import static org.apache.openmeetings.db.bind.Constants.ROOM_FILE_LIST_NODE;
+import static org.apache.openmeetings.db.bind.Constants.ROOM_FILE_NODE;
import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_LIST_NODE;
import static org.apache.openmeetings.db.bind.Constants.ROOM_GRP_NODE;
import static org.apache.openmeetings.db.bind.Constants.ROOM_LIST_NODE;
@@ -155,14 +167,10 @@ import javax.xml.transform.stream.StreamSource;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.text.WordUtils;
-import org.apache.openmeetings.backup.converter.BaseFileItemConverter;
-import org.apache.openmeetings.backup.converter.DateConverter;
-import org.apache.openmeetings.backup.converter.PollTypeConverter;
-import org.apache.openmeetings.backup.converter.RoomConverter;
-import org.apache.openmeetings.backup.converter.UserConverter;
import org.apache.openmeetings.backup.converter.WbConverter;
import org.apache.openmeetings.core.converter.DocumentConverter;
import org.apache.openmeetings.db.bind.adapter.AppointmentAdapter;
+import org.apache.openmeetings.db.bind.adapter.FileAdapter;
import org.apache.openmeetings.db.bind.adapter.GroupAdapter;
import org.apache.openmeetings.db.bind.adapter.OmCalendarAdapter;
import org.apache.openmeetings.db.bind.adapter.RoomAdapter;
@@ -215,12 +223,6 @@ import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.util.StoredFile;
import org.apache.openmeetings.util.crypt.SCryptImplementation;
import org.apache.wicket.util.string.Strings;
-import org.simpleframework.xml.Serializer;
-import org.simpleframework.xml.convert.Registry;
-import org.simpleframework.xml.convert.RegistryStrategy;
-import org.simpleframework.xml.core.Persister;
-import org.simpleframework.xml.strategy.Strategy;
-import org.simpleframework.xml.transform.RegistryMatcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -914,9 +916,9 @@ public class BackupImport {
/*
* ##################### Import Private Message Folders
*/
- private void importPrivateMsgFolders(File base) {
+ void importPrivateMsgFolders(File base) {
log.info("Recording import complete, starting private message
folder import");
- readList(null, base, "privateMessageFolder.xml",
"privatemessagefolders", "privatemessagefolder", PrivateMessageFolder.class, p
-> {
+ readList(base, "privateMessageFolder.xml",
MSG_FOLDER_LIST_NODE, MSG_FOLDER_NODE, PrivateMessageFolder.class, p -> {
Long folderId = p.getId();
PrivateMessageFolder storedFolder =
privateMessageFolderDao.get(folderId);
if (storedFolder == null) {
@@ -932,13 +934,12 @@ public class BackupImport {
*/
private void importContacts(File base) throws Exception {
log.info("Private message folder import complete, starting user
contacts import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- Serializer serializer = new Persister(strategy);
-
- registry.bind(User.class, new UserConverter(userDao, userMap));
+ Class<UserContact> eClazz = UserContact.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new UserAdapter(userDao, userMap));
- readList(null, base, "userContacts.xml", "usercontacts",
"usercontact", UserContact.class, uc -> {
+ readList(base, "userContacts.xml", CONTACT_LIST_NODE,
CONTACT_NODE, eClazz, uc -> {
Long ucId = uc.getId();
UserContact storedUC = userContactDao.get(ucId);
@@ -958,15 +959,13 @@ public class BackupImport {
*/
private void importPrivateMsgs(File base) throws Exception {
log.info("Usercontact import complete, starting private
messages item import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- Serializer serializer = new Persister(strategy);
-
- registry.bind(User.class, new UserConverter(userDao, userMap));
- registry.bind(Room.class, new RoomConverter(roomDao, roomMap));
- registry.bind(Date.class, DateConverter.class);
+ Class<PrivateMessage> eClazz = PrivateMessage.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new UserAdapter(userDao, userMap));
+ unmarshaller.setAdapter(new RoomAdapter(roomDao, roomMap));
- readList(null, base, "privateMessages.xml", "privatemessages",
"privatemessage", PrivateMessage.class, p -> {
+ readList(base, "privateMessages.xml", MSG_LIST_NODE, MSG_NODE,
eClazz, p -> {
p.setId(null);
p.setFolderId(messageFolderMap.get(p.getFolderId()));
p.setUserContactId(userContactMap.get(p.getUserContactId()));
@@ -992,16 +991,8 @@ public class BackupImport {
private List<FileItem> importFiles(File base) throws Exception {
log.info("Private message import complete, starting file
explorer item import");
List<FileItem> result = new ArrayList<>();
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- RegistryMatcher matcher = new RegistryMatcher();
- Serializer ser = new Persister(strategy, matcher);
-
- matcher.bind(Long.class, LongTransform.class);
- matcher.bind(Integer.class, IntegerTransform.class);
- registry.bind(Date.class, DateConverter.class);
final Map<Long, Long> folders = new HashMap<>();
- saveTree(base, "fileExplorerItems.xml", "fileExplorerItems",
"fileExplorerItem", FileItem.class, folders, file -> {
+ saveTree(base, "fileExplorerItems.xml", FILE_LIST_NODE,
FILE_NODE, FileItem.class, folders, file -> {
Long fId = file.getId();
// We need to reset this as openJPA reject to store
them otherwise
file.setId(null);
@@ -1021,18 +1012,13 @@ public class BackupImport {
*/
private void importPolls(File base) throws Exception {
log.info("File explorer item import complete, starting room
poll import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- RegistryMatcher matcher = new RegistryMatcher();
- Serializer serializer = new Persister(strategy, matcher);
-
- matcher.bind(Integer.class, IntegerTransform.class);
- registry.bind(User.class, new UserConverter(userDao, userMap));
- registry.bind(Room.class, new RoomConverter(roomDao, roomMap));
- registry.bind(RoomPoll.Type.class, PollTypeConverter.class);
- registry.bind(Date.class, DateConverter.class);
-
- readList(null, base, "roompolls.xml", "roompolls", "roompoll",
RoomPoll.class, rp -> {
+ Class<RoomPoll> eClazz = RoomPoll.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new UserAdapter(userDao, userMap));
+ unmarshaller.setAdapter(new RoomAdapter(roomDao, roomMap));
+
+ readList(base, "roompolls.xml", POLL_LIST_NODE, POLL_NODE,
eClazz, rp -> {
rp.setId(null);
if (rp.getRoom() == null || rp.getRoom().getId() ==
null) {
//room was deleted
@@ -1055,13 +1041,12 @@ public class BackupImport {
*/
private void importRoomFiles(File base) throws Exception {
log.info("Poll import complete, starting room files import");
- Registry registry = new Registry();
- Strategy strategy = new RegistryStrategy(registry);
- Serializer serializer = new Persister(strategy);
-
- registry.bind(BaseFileItem.class, new
BaseFileItemConverter(fileItemDao, fileItemMap));
+ Class<RoomFile> eClazz = RoomFile.class;
+ JAXBContext jc = JAXBContext.newInstance(eClazz);
+ Unmarshaller unmarshaller = jc.createUnmarshaller();
+ unmarshaller.setAdapter(new FileAdapter(fileItemDao,
fileItemMap));
- readList(null, base, "roomFiles.xml", "RoomFiles", "RoomFile",
RoomFile.class, rf -> {
+ readList(base, "roomFiles.xml", ROOM_FILE_LIST_NODE,
ROOM_FILE_NODE, eClazz, rf -> {
Room r = roomDao.get(roomMap.get(rf.getRoomId()));
if (r == null || rf.getFile() == null ||
rf.getFile().getId() == null) {
return;
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
index 61391d7..28f7d8b 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
@@ -96,7 +96,7 @@ public class CreatePollDialog extends Modal<RoomPoll> {
User u = userDao.get(getUserId());
p.setCreator(u);
p.setRoom(roomDao.get(roomId));
- p.setType(RoomPoll.Type.yesNo);
+ p.setType(RoomPoll.Type.YES_NO);
setModelObject(p);
form.setModelObject(getModelObject());
target.add(form);
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
index 77b8cb8..34bba93 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
@@ -72,6 +72,7 @@ import
de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome5I
*/
public class PollResultsDialog extends Modal<RoomPoll> {
private static final long serialVersionUID = 1L;
+ private static final String[] NUM_TICKS = new String[] {"1", "2", "3",
"4", "5", "6", "7", "8", "9", "10"};
private final WebMarkupContainer chartDiv = new
WebMarkupContainer("chart");
private final Long roomId;
private PollSelectForm selForm;
@@ -226,8 +227,8 @@ public class PollResultsDialog extends Modal<RoomPoll> {
}
private String[] getTicks(RoomPoll p) {
- return p != null && RoomPoll.Type.numeric == p.getType()
- ? new String[] {"1", "2", "3", "4", "5", "6",
"7", "8", "9", "10"}
+ return p != null && RoomPoll.Type.NUMERIC == p.getType()
+ ? NUM_TICKS
: new String[] {getString("35"),
getString("34")};
}
@@ -240,10 +241,10 @@ public class PollResultsDialog extends Modal<RoomPoll> {
}
private static Integer[] getValues(RoomPoll p) {
- Integer[] values = initValues(p != null &&
RoomPoll.Type.numeric == p.getType() ? 10 : 2);
+ Integer[] values = initValues(p != null &&
RoomPoll.Type.NUMERIC == p.getType() ? 10 : 2);
if (p != null) {
for (RoomPollAnswer a : p.getAnswers()) {
- if (RoomPoll.Type.numeric == p.getType()) {
+ if (RoomPoll.Type.NUMERIC == p.getType()) {
values[a.getPointList() - 1] ++;
} else {
values[Boolean.FALSE.equals(a.getAnswer()) ? 0 : 1] ++;
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
index 220a8cb..cbf3685 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
@@ -115,7 +115,7 @@ public class VoteDialog extends Modal<RoomPollAnswer> {
a.setVotedUser(u);
user.setObject(getName(this, a.getRoomPoll().getCreator()));
form.setModelObject(a);
- boolean typeNum = a.getRoomPoll() != null &&
RoomPoll.Type.numeric == a.getRoomPoll().getType();
+ boolean typeNum = a.getRoomPoll() != null &&
RoomPoll.Type.NUMERIC == a.getRoomPoll().getType();
form.typeBool.setVisible(!typeNum);
form.typeInt.setVisible(typeNum);
target.add(form);
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
index 0fdaae1..640673d 100644
---
a/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/backup/TestImport.java
@@ -27,6 +27,7 @@ import org.apache.openmeetings.db.dao.basic.ChatDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.server.LdapConfigDao;
import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
import org.apache.openmeetings.db.entity.basic.Configuration;
import org.apache.openmeetings.db.entity.server.LdapConfig;
import org.junit.jupiter.api.Test;
@@ -41,6 +42,8 @@ public class TestImport extends AbstractTestImport {
private ChatDao chatDao;
@Autowired
private RecordingDao recDao;
+ @Autowired
+ private PrivateMessageFolderDao msgFolderDao;
@Test
public void importVersionNE() throws Exception {
@@ -111,4 +114,12 @@ public class TestImport extends AbstractTestImport {
backupImport.importRecordings(recs.getParentFile());
assertEquals(recCount + 4, recDao.get().size(), "Recordings
should be added");
}
+
+ @Test
+ public void importMsgFolders() throws Exception {
+ long fldrCount = msgFolderDao.get(0, Integer.MAX_VALUE).size();
+ File fldrs = new
File(getClass().getClassLoader().getResource("org/apache/openmeetings/backup/msg/privateMessageFolder.xml").toURI());
+ backupImport.importPrivateMsgFolders(fldrs.getParentFile());
+ assertEquals(fldrCount + 1, msgFolderDao.get(0,
Integer.MAX_VALUE).size(), "Message folders should be added");
+ }
}
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/appointements.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/appointements.xml
index 770dd65..a07e477 100644
---
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/appointements.xml
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/calendar/appointements.xml
@@ -47,7 +47,6 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<appointmentStarttime
class="java.util.Date"><![CDATA[1502681640000]]></appointmentStarttime>
<appointmentEndtime
class="java.util.Date"><![CDATA[1502685240000]]></appointmentEndtime>
<appointmentDescription><![CDATA[test
message<br>]]></appointmentDescription>
- <users_id><![CDATA[1]]></users_id>
<inserted class="java.util.Date"><![CDATA[1502681683111]]></inserted>
<deleted><![CDATA[false]]></deleted>
<typId><![CDATA[1]]></typId>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
index aca316d..a2accdb 100644
---
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/file/flvRecordings.xml
@@ -26,7 +26,7 @@ see http://openmeetings.apache.org/Upgrade.html for Details
--><root>
<flvrecordings>
<flvrecording>
- <fileName><![CDATA[Recording 2017.08.11 11:45:30]]></fileName>
+ <fileName><![CDATA[Rec 1]]></fileName>
<fileHash><![CDATA[flvRecording_1.flv]]></fileHash>
<insertedBy><![CDATA[1]]></insertedBy>
<inserted class="java.util.Date"><![CDATA[1502426730324]]></inserted>
@@ -93,8 +93,8 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<status><![CDATA[PROCESSED]]></status>
</flvrecording>
<flvrecording>
- <fileName><![CDATA[Recording 2017.08.11 16:00:49]]></fileName>
- <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15b2]]></fileHash>
+ <fileName><![CDATA[Rec 2]]></fileName>
+ <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15e2]]></fileHash>
<insertedBy><![CDATA[1]]></insertedBy>
<inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
<updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
@@ -112,7 +112,7 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<notified><![CDATA[false]]></notified>
</flvrecording>
<flvrecording>
- <fileName><![CDATA[TEST]]></fileName>
+ <fileName><![CDATA[TEST REC]]></fileName>
<insertedBy><![CDATA[1]]></insertedBy>
<inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
<updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
@@ -123,8 +123,8 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<interview><![CDATA[false]]></interview>
</flvrecording>
<flvrecording>
- <fileName><![CDATA[Recording 2017.08.11 16:00:49]]></fileName>
- <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15b3]]></fileHash>
+ <fileName><![CDATA[Rec 3 (del)]]></fileName>
+ <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15e2]]></fileHash>
<insertedBy><![CDATA[1]]></insertedBy>
<inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
<updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
@@ -142,8 +142,8 @@ see http://openmeetings.apache.org/Upgrade.html for Details
<notified><![CDATA[false]]></notified>
</flvrecording>
<flvrecording>
- <fileName><![CDATA[Recording 2017.08.11 16:00:49]]></fileName>
- <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366-595e87aa15b4]]></fileHash>
+ <fileName><![CDATA[Rec 4]]></fileName>
+ <fileHash><![CDATA[bc0acd29-7ec7-4db0-9366]]></fileHash>
<insertedBy><![CDATA[1]]></insertedBy>
<inserted class="java.util.Date"><![CDATA[1502442049021]]></inserted>
<updated class="java.util.Date"><![CDATA[1502442351441]]></updated>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/msg/privateMessageFolder.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/msg/privateMessageFolder.xml
new file mode 100644
index 0000000..29054c2
--- /dev/null
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/msg/privateMessageFolder.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<!-- ###############################################
+This File is auto-generated by the Backup Tool
+you should use the BackupPanel to modify or change this file
+see http://openmeetings.apache.org/Upgrade.html for Details
+###############################################
+ --><root>
+ <privatemessagefolders>
+ <privatemessagefolder>
+ <privateMessageFolderId><![CDATA[666666666]]></privateMessageFolderId>
+ <folderName><![CDATA[1]]></folderName>
+ <userId><![CDATA[1]]></userId>
+ </privatemessagefolder>
+ </privatemessagefolders>
+</root>
diff --git
a/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/userContacts.xml
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/userContacts.xml
new file mode 100644
index 0000000..e2bc3e1
--- /dev/null
+++
b/openmeetings-web/src/test/resources/org/apache/openmeetings/backup/user/userContacts.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<!-- ###############################################
+This File is auto-generated by the Backup Tool
+you should use the BackupPanel to modify or change this file
+see http://openmeetings.apache.org/Upgrade.html for Details
+###############################################
+ --><root>
+ <usercontacts>
+ <usercontact>
+ <userContactId><![CDATA[666666666]]></userContactId>
+ <contact><![CDATA[3]]></contact>
+ <owner><![CDATA[1]]></owner>
+ <pending><![CDATA[false]]></pending>
+ <shareCalendar><![CDATA[false]]></shareCalendar>
+ </usercontact>
+ <usercontact>
+ <userContactId><![CDATA[2]]></userContactId>
+ <contact><![CDATA[3]]></contact>
+ <owner><![CDATA[1]]></owner>
+ <pending><![CDATA[false]]></pending>
+ <shareCalendar><![CDATA[false]]></shareCalendar>
+ </usercontact>
+ <usercontact>
+ <userContactId><![CDATA[3]]></userContactId>
+ <contact><![CDATA[3]]></contact>
+ <owner><![CDATA[1]]></owner>
+ <pending><![CDATA[false]]></pending>
+ <shareCalendar><![CDATA[false]]></shareCalendar>
+ </usercontact>
+ <usercontact>
+ <userContactId><![CDATA[5]]></userContactId>
+ <contact><![CDATA[1]]></contact>
+ <owner><![CDATA[3]]></owner>
+ <pending><![CDATA[false]]></pending>
+ <shareCalendar><![CDATA[true]]></shareCalendar>
+ </usercontact>
+ <usercontact>
+ <userContactId><![CDATA[6]]></userContactId>
+ <contact><![CDATA[1]]></contact>
+ <owner><![CDATA[3]]></owner>
+ <pending><![CDATA[true]]></pending>
+ <shareCalendar><![CDATA[false]]></shareCalendar>
+ </usercontact>
+ </usercontacts>
+</root>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 618798c..be815c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,7 +80,7 @@
<wickets.version>9.0.0-M5-SNAPSHOT</wickets.version>
<wicket-bootstrap.version>5.0.0-M1</wicket-bootstrap.version>
<red5-client.version>1.2.3</red5-client.version>
- <spring.version>5.2.3.RELEASE</spring.version>
+ <spring.version>5.2.4.RELEASE</spring.version>
<mina.version>2.1.3</mina.version>
<tomcat.version>9.0.31</tomcat.version>
<ical4j.version>3.0.14</ical4j.version>
@@ -93,7 +93,7 @@
<commons-lang3.version>3.9</commons-lang3.version>
<javax.mail.version>1.6.2</javax.mail.version>
<openjpa.version>3.1.1</openjpa.version>
- <asterisk-java.version>2.0.2</asterisk-java.version>
+ <asterisk-java.version>3.1.0</asterisk-java.version>
<commons-dbcp.version>2.7.0</commons-dbcp.version>
<commons-pool2.version>2.8.0</commons-pool2.version>
<postgresql.version>42.2.10</postgresql.version>
@@ -102,7 +102,7 @@
<commons-codec.version>1.14</commons-codec.version>
<commons-io.version>2.6</commons-io.version>
<mysql.version>8.0.18</mysql.version>
- <mssql.version>8.2.0.jre11</mssql.version>
+ <mssql.version>8.2.1.jre11</mssql.version>
<commons-collections4.version>4.4</commons-collections4.version>
<xstream.version>1.4.11.1</xstream.version>
<api-all.version>2.0.0.AM2</api-all.version>
@@ -114,7 +114,7 @@
<jetty.version>9.4.20.v20190813</jetty.version>
<license.excludedScopes>test</license.excludedScopes>
<bcprov-jdk15on.version>1.64</bcprov-jdk15on.version>
- <mockito.version>3.2.4</mockito.version>
+ <mockito.version>3.3.0</mockito.version>
<powermock.version>2.0.5</powermock.version>
<quartz.version>2.3.2</quartz.version>
<kurento.version>6.13.0</kurento.version>