- 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(); super.beforeSave();
} }
static BigDecimal generateID() throws PersistenceException { public static BigDecimal generateID() throws PersistenceException {
try { try {
return Sequences.getNextValue(); return Sequences.getNextValue();
} catch (SQLException e) { } catch (SQLException e) {

View File

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

View File

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

View File

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

View File

@ -19,7 +19,6 @@
package com.arsdigita.portation.modules.core.l10n; package com.arsdigita.portation.modules.core.l10n;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -36,7 +35,6 @@ import java.util.Set;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16 * @version created on 6/15/16
*/ */
@JsonIgnoreProperties(ignoreUnknown=true)
public class LocalizedString { public class LocalizedString {
private Map<Locale, String> values; 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.AbstractMarshaller;
import com.arsdigita.portation.Portable; import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection; import com.arsdigita.portation.conversion.NgCollection;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -31,15 +30,14 @@ import java.util.Set;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 31.05.16 * @version created on 31.05.16
*/ */
@JsonIgnoreProperties(ignoreUnknown=true)
public class Group extends Party implements Portable { public class Group extends Party implements Portable {
@JsonManagedReference @JsonIgnore
private Set<GroupMembership> memberships; private Set<GroupMembership> memberships;
public Group(final com.arsdigita.kernel.Group trunkGroup) { public Group(final com.arsdigita.kernel.Group trunkGroup) {
super(trunkGroup); super(trunkGroup);
this.memberships = new HashSet<>(); this.memberships = new HashSet<>();
NgCollection.groups.put(this.getPartyId(), this); NgCollection.groups.put(this.getPartyId(), this);

View File

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

View File

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

View File

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

View File

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

View File

@ -22,8 +22,8 @@ import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Portable; import com.arsdigita.portation.Portable;
import com.arsdigita.portation.conversion.NgCollection; import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.EmailAddress; 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.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
@ -40,15 +40,12 @@ public class User extends Party implements Portable {
private String givenName; private String givenName;
private String familyName; private String familyName;
private EmailAddress primaryEmailAddress; private EmailAddress primaryEmailAddress;
private List<EmailAddress> emailAddresses; private List<EmailAddress> emailAddresses;
private boolean banned; private boolean banned;
private String password; private String password;
private boolean passwordResetRequired; private boolean passwordResetRequired;
@JsonIgnore
@JsonManagedReference
private Set<GroupMembership> groupMemberships; private Set<GroupMembership> groupMemberships;
public User(final com.arsdigita.kernel.User trunkUser) { 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.Portable;
import com.arsdigita.portation.conversion.NgCollection; import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.security.User; import com.arsdigita.portation.modules.core.security.User;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
@ -33,21 +32,18 @@ import java.util.List;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16 * @version created on 6/15/16
*/ */
@JsonIgnoreProperties(ignoreUnknown=true)
public class AssignableTask extends Task implements Portable { public class AssignableTask extends Task implements Portable {
private boolean locked; private boolean locked;
private User lockingUser; private User lockingUser;
private Date startDate; private Date startDate;
private Date dueDate; private Date dueDate;
private long durationMinutes; private long durationMinutes;
private User notificationSender; private User notificationSender;
@JsonIgnore
@JsonManagedReference
private List<TaskAssignment> assignments; private List<TaskAssignment> assignments;
public AssignableTask(final com.arsdigita.workflow.simple.UserTask public AssignableTask(final com.arsdigita.workflow.simple.UserTask
trunkUserTask) { trunkUserTask) {
super(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.conversion.NgCollection;
import com.arsdigita.portation.modules.core.l10n.LocalizedString; import com.arsdigita.portation.modules.core.l10n.LocalizedString;
import com.arsdigita.portation.modules.core.workflow.util.StateMapper; import com.arsdigita.portation.modules.core.workflow.util.StateMapper;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIdentityReference;
import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -35,32 +33,23 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16 * @version created on 6/15/16
*/ */
@JsonIgnoreProperties(ignoreUnknown=true)
public class Task { public class Task {
private long taskId; private long taskId;
private String uuid; private String uuid;
private LocalizedString label; private LocalizedString label;
private LocalizedString description; private LocalizedString description;
private boolean active; private boolean active;
private TaskState taskState; private TaskState taskState;
@JsonIdentityReference(alwaysAsId = true)
@JsonBackReference
private Workflow workflow; private Workflow workflow;
@JsonIgnore
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "taskId")
private List<Task> dependentTasks; private List<Task> dependentTasks;
@JsonIdentityInfo( @JsonIdentityReference(alwaysAsId = true)
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "taskId")
private List<Task> dependsOn; private List<Task> dependsOn;
private List<TaskComment> comments; private List<TaskComment> comments;
public Task(final com.arsdigita.workflow.simple.Task trunkTask) { public Task(final com.arsdigita.workflow.simple.Task trunkTask) {
this.taskId = trunkTask.getID().longValue(); this.taskId = trunkTask.getID().longValue();
this.uuid = UUID.randomUUID().toString(); this.uuid = UUID.randomUUID().toString();

View File

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

View File

@ -19,7 +19,6 @@
package com.arsdigita.portation.modules.core.workflow; package com.arsdigita.portation.modules.core.workflow;
import com.arsdigita.portation.modules.core.security.User; import com.arsdigita.portation.modules.core.security.User;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.UUID; import java.util.UUID;
@ -27,15 +26,14 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created on 11/18/16 * @version created on 11/18/16
*/ */
@JsonIgnoreProperties(ignoreUnknown=true)
public class TaskComment { public class TaskComment {
private long commentId; private long commentId;
private String uuid; private String uuid;
private String comment; private String comment;
private User author; private User author;
public TaskComment(com.arsdigita.workflow.simple.TaskComment public TaskComment(com.arsdigita.workflow.simple.TaskComment
trunkTaskComment) { trunkTaskComment) {
this.commentId = trunkTaskComment.getCommentID().longValue(); 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.core.CcmObject;
import com.arsdigita.portation.modules.core.l10n.LocalizedString; import com.arsdigita.portation.modules.core.l10n.LocalizedString;
import com.arsdigita.portation.modules.core.workflow.util.StateMapper; import com.arsdigita.portation.modules.core.workflow.util.StateMapper;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -36,24 +35,18 @@ import java.util.UUID;
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created on 6/15/16 * @version created on 6/15/16
*/ */
@JsonIgnoreProperties(ignoreUnknown=true)
public class Workflow implements Portable { public class Workflow implements Portable {
private long workflowId; private long workflowId;
private String uuid; private String uuid;
private WorkflowTemplate template; private WorkflowTemplate template;
private LocalizedString name; private LocalizedString name;
private LocalizedString description; private LocalizedString description;
private WorkflowState state; private WorkflowState state;
private boolean active; private boolean active;
private TaskState tasksState; private TaskState tasksState;
private CcmObject object; private CcmObject object;
@JsonIgnore
@JsonManagedReference
private List<Task> tasks; private List<Task> tasks;

View File

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