- changes jackson annotations, removes managed-back referenced connections and replaces them with jsonIgnore-jsonIdentityReference(alwaysAsId) links

git-svn-id: https://svn.libreccm.org/ccm/trunk@4631 8810af33-2d31-482b-a856-94f89814c4df
master
tosmers 2017-03-15 16:10:25 +00:00
parent 8ee76beef2
commit ad7c872d3a
19 changed files with 63 additions and 128 deletions

View File

@ -504,7 +504,7 @@ public abstract class ACSObject extends ObservableDomainObject {
super.beforeSave();
}
static BigDecimal generateID() throws PersistenceException {
public static BigDecimal generateID() throws PersistenceException {
try {
return Sequences.getNextValue();
} catch (SQLException e) {

View File

@ -18,12 +18,12 @@
*/
package com.arsdigita.portation.modules.core.categorization;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
/**
* Association class describing the association between a category and an
@ -33,25 +33,22 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Categorization implements Portable {
private long categorizationId;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Category category;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private CcmObject categorizedObject;
private boolean index;
private long categoryOrder;
private long objectOrder;
private String type;
public Categorization(final Category category, final CcmObject
categorizedObject) {
this.categorizationId = NgCollection.categorizations.size() + 1;
this.categorizationId = ACSObject.generateID().longValue();
this.category = category;
this.categorizedObject = categorizedObject;

View File

@ -25,9 +25,9 @@ import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject;
import com.arsdigita.portation.modules.core.l10n.LocalizedString;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.ArrayList;
import java.util.List;
@ -45,27 +45,21 @@ import java.util.Locale;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Category extends CcmObject implements Portable {
private String uniqueId;
private String name;
private LocalizedString title;
private LocalizedString description;
private boolean enabled;
private boolean visible;
private boolean abstractCategory;
@JsonManagedReference
@JsonIgnore
private List<Categorization> objects;
@JsonManagedReference
@JsonIgnore
private List<Category> subCategories;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Category parentCategory;
private long categoryOrder;

View File

@ -23,8 +23,7 @@ import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.categorization.Categorization;
import com.arsdigita.portation.modules.core.categorization.Category;
import com.arsdigita.portation.modules.core.security.Permission;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
import java.util.List;
@ -47,17 +46,14 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class CcmObject {
private long objectId;
private String uuid;
private String displayName;
@JsonManagedReference
@JsonIgnore
private List<Permission> permissions;
@JsonManagedReference
@JsonIgnore
private List<Categorization> categories;

View File

@ -18,17 +18,13 @@
*/
package com.arsdigita.portation.modules.core.core;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class EmailAddress {
private String address;
private boolean bouncing;
private boolean verified;

View File

@ -19,7 +19,6 @@
package com.arsdigita.portation.modules.core.l10n;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Collections;
import java.util.HashMap;
@ -36,7 +35,6 @@ import java.util.Set;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class LocalizedString {
private Map<Locale, String> values;

View File

@ -21,8 +21,7 @@ package com.arsdigita.portation.modules.core.security;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.HashSet;
import java.util.Set;
@ -31,15 +30,14 @@ import java.util.Set;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 31.05.16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Group extends Party implements Portable {
@JsonManagedReference
@JsonIgnore
private Set<GroupMembership> memberships;
public Group(final com.arsdigita.kernel.Group trunkGroup) {
super(trunkGroup);
this.memberships = new HashSet<>();
NgCollection.groups.put(this.getPartyId(), this);

View File

@ -18,28 +18,26 @@
*/
package com.arsdigita.portation.modules.core.security;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class GroupMembership implements Portable {
private long membershipId;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Group group;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private User member;
public GroupMembership(final Group group, final User member) {
this.membershipId = NgCollection.groupMemberships.size() + 1;
this.membershipId = ACSObject.generateID().longValue();
this.group = group;
this.member = member;

View File

@ -19,8 +19,7 @@
package com.arsdigita.portation.modules.core.security;
import com.arsdigita.portation.conversion.NgCollection;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.HashSet;
import java.util.Set;
@ -29,13 +28,11 @@ import java.util.Set;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 01.06.16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Party {
private long partyId;
private String name;
@JsonManagedReference
@JsonIgnore
private Set<RoleMembership> roleMemberships;
public Party(final com.arsdigita.kernel.Party trunkParty) {

View File

@ -18,13 +18,13 @@
*/
package com.arsdigita.portation.modules.core.security;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject;
import com.arsdigita.portation.modules.core.security.util.PermissionIdMapper;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
import java.math.BigDecimal;
import java.util.Date;
@ -33,17 +33,14 @@ import java.util.Date;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Permission implements Portable {
private long permissionId;
private String grantedPrivilege;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private CcmObject object;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Role grantee;
private User creationUser;
private Date creationDate;
private String creationIp;
@ -54,7 +51,7 @@ public class Permission implements Portable {
.longValue()
+ ((BigDecimal) trunkPermission.getPartyOID().get("id"))
.longValue();
this.permissionId = NgCollection.permissions.size() + 1;
this.permissionId = ACSObject.generateID().longValue();
PermissionIdMapper.map.put(oldId, this.permissionId);
this.grantedPrivilege = trunkPermission.getPrivilege().getName();
@ -76,7 +73,7 @@ public class Permission implements Portable {
* @param ngPermission The Permission to be copied.
*/
public Permission(final Permission ngPermission) {
this.permissionId = NgCollection.permissions.size() + 1;
this.permissionId = ACSObject.generateID().longValue();
this.grantedPrivilege = ngPermission.getGrantedPrivilege();
this.object = ngPermission.getObject();

View File

@ -23,8 +23,7 @@ import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.l10n.LocalizedString;
import com.arsdigita.portation.modules.core.workflow.TaskAssignment;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
import java.util.HashSet;
@ -36,20 +35,17 @@ import java.util.Set;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Role implements Portable {
private long roleId;
private String name;
@JsonManagedReference
private Set<RoleMembership> memberships;
@JsonManagedReference
private List<Permission> permissions;
@JsonManagedReference
private List<TaskAssignment> assignedTasks;
private LocalizedString description;
@JsonIgnore
private Set<RoleMembership> memberships;
@JsonIgnore
private List<Permission> permissions;
@JsonIgnore
private List<TaskAssignment> assignedTasks;
public Role(final com.arsdigita.kernel.Role trunkRole) {
this.roleId = trunkRole.getID().longValue();

View File

@ -18,28 +18,26 @@
*/
package com.arsdigita.portation.modules.core.security;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class RoleMembership implements Portable {
private long membershipId;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Role role;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Party member;
public RoleMembership(final Role role, final Party member) {
this.membershipId = NgCollection.roleMemberships.size() + 1;
this.membershipId = ACSObject.generateID().longValue();
this.role = role;
this.member = member;

View File

@ -22,8 +22,8 @@ import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.EmailAddress;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.ArrayList;
import java.util.HashSet;
@ -40,15 +40,12 @@ public class User extends Party implements Portable {
private String givenName;
private String familyName;
private EmailAddress primaryEmailAddress;
private List<EmailAddress> emailAddresses;
private boolean banned;
private String password;
private boolean passwordResetRequired;
@JsonManagedReference
@JsonIgnore
private Set<GroupMembership> groupMemberships;
public User(final com.arsdigita.kernel.User trunkUser) {

View File

@ -22,8 +22,7 @@ import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.security.User;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
import java.util.Date;
@ -33,21 +32,18 @@ import java.util.List;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class AssignableTask extends Task implements Portable {
private boolean locked;
private User lockingUser;
private Date startDate;
private Date dueDate;
private long durationMinutes;
private User notificationSender;
@JsonManagedReference
@JsonIgnore
private List<TaskAssignment> assignments;
public AssignableTask(final com.arsdigita.workflow.simple.UserTask
trunkUserTask) {
super(trunkUserTask);

View File

@ -21,10 +21,8 @@ package com.arsdigita.portation.modules.core.workflow;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.l10n.LocalizedString;
import com.arsdigita.portation.modules.core.workflow.util.StateMapper;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
import java.util.List;
@ -35,32 +33,23 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Task {
private long taskId;
private String uuid;
private LocalizedString label;
private LocalizedString description;
private boolean active;
private TaskState taskState;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Workflow workflow;
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "taskId")
@JsonIgnore
private List<Task> dependentTasks;
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "taskId")
@JsonIdentityReference(alwaysAsId = true)
private List<Task> dependsOn;
private List<TaskComment> comments;
public Task(final com.arsdigita.workflow.simple.Task trunkTask) {
this.taskId = trunkTask.getID().longValue();
this.uuid = UUID.randomUUID().toString();

View File

@ -18,29 +18,28 @@
*/
package com.arsdigita.portation.modules.core.workflow;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.security.Role;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonIdentityReference;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class TaskAssignment implements Portable {
private long taskAssignmentId;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private AssignableTask task;
@JsonBackReference
@JsonIdentityReference(alwaysAsId = true)
private Role role;
public TaskAssignment(final AssignableTask task, final Role role) {
this.taskAssignmentId = NgCollection.taskAssignments.size() + 1;
this.taskAssignmentId = ACSObject.generateID().longValue();
this.task = task;
this.role = role;

View File

@ -19,7 +19,6 @@
package com.arsdigita.portation.modules.core.workflow;
import com.arsdigita.portation.modules.core.security.User;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.UUID;
@ -27,15 +26,14 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created on 11/18/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class TaskComment {
private long commentId;
private String uuid;
private String comment;
private User author;
public TaskComment(com.arsdigita.workflow.simple.TaskComment
trunkTaskComment) {
this.commentId = trunkTaskComment.getCommentID().longValue();

View File

@ -24,8 +24,7 @@ import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject;
import com.arsdigita.portation.modules.core.l10n.LocalizedString;
import com.arsdigita.portation.modules.core.workflow.util.StateMapper;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.ArrayList;
import java.util.List;
@ -36,24 +35,18 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class Workflow implements Portable {
private long workflowId;
private String uuid;
private WorkflowTemplate template;
private LocalizedString name;
private LocalizedString description;
private WorkflowState state;
private boolean active;
private TaskState tasksState;
private CcmObject object;
@JsonManagedReference
@JsonIgnore
private List<Task> tasks;

View File

@ -19,13 +19,11 @@
package com.arsdigita.portation.modules.core.workflow;
import com.arsdigita.portation.conversion.NgCollection;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created on 11/18/16
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class WorkflowTemplate extends Workflow {