From 1745c25dccd6072a37882607867188da63ae3bac Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 5 Jun 2015 06:35:58 +0000 Subject: [PATCH] CCM NG: Fixed several warnings from PMD (most of them false warnings) git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3460 8810af33-2d31-482b-a856-94f89814c4df --- .../categorization/Categorization.java | 2 + .../org/libreccm/categorization/Domain.java | 2 +- .../core/AbstractEntityRepository.java | 44 +++++++++++++++++++ .../java/org/libreccm/core/CcmObject.java | 8 ++++ .../java/org/libreccm/core/EmailAddress.java | 24 ++++++---- .../org/libreccm/core/GroupMembership.java | 3 +- .../main/java/org/libreccm/core/Party.java | 4 ++ .../java/org/libreccm/core/Permission.java | 27 ++++++++---- .../java/org/libreccm/core/PersonName.java | 2 +- .../java/org/libreccm/core/Privilege.java | 2 + .../src/main/java/org/libreccm/core/Role.java | 1 + .../src/main/java/org/libreccm/core/User.java | 11 +++++ .../org/libreccm/formbuilder/Component.java | 9 ++++ .../org/libreccm/formbuilder/Listener.java | 2 +- .../org/libreccm/formbuilder/ObjectType.java | 2 +- .../libreccm/formbuilder/ProcessListener.java | 2 + .../java/org/libreccm/formbuilder/Widget.java | 2 + .../org/libreccm/messaging/Attachment.java | 16 ++++--- .../java/org/libreccm/messaging/Message.java | 21 ++++++--- .../org/libreccm/notification/Digest.java | 19 +++++--- .../libreccm/notification/Notification.java | 27 ++++++++---- .../org/libreccm/notification/QueueItem.java | 33 +++++++++----- .../java/org/libreccm/runtime/Initalizer.java | 26 +++++------ .../org/libreccm/search/lucene/Document.java | 11 +++++ .../src/main/java/org/libreccm/web/Host.java | 9 ++-- .../main/java/org/libreccm/workflow/Task.java | 44 ++++++++++++------- .../java/org/libreccm/workflow/UserTask.java | 25 ++++++++--- 27 files changed, 278 insertions(+), 100 deletions(-) create mode 100644 ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java diff --git a/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java b/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java index f1126e77d..e106c52ad 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/Categorization.java @@ -154,6 +154,8 @@ public class Categorization implements Serializable { } @Override + //No chance to make this method less complex, therefore suppress warning + @SuppressWarnings("PMD.NPathComplexity") public boolean equals(final Object obj) { if (obj == null) { return false; diff --git a/ccm-core/src/main/java/org/libreccm/categorization/Domain.java b/ccm-core/src/main/java/org/libreccm/categorization/Domain.java index 016ef2244..6f8dbcc70 100644 --- a/ccm-core/src/main/java/org/libreccm/categorization/Domain.java +++ b/ccm-core/src/main/java/org/libreccm/categorization/Domain.java @@ -35,7 +35,6 @@ import java.util.Objects; import javax.persistence.AssociationOverride; import javax.persistence.Column; import javax.persistence.Convert; -import javax.persistence.Converter; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.JoinColumn; @@ -46,6 +45,7 @@ import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.Pattern; +import org.omg.CORBA.DomainManager; /** * A domain is collection of categories designed a specific purpose. This entity diff --git a/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java new file mode 100644 index 000000000..33119ebef --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/core/AbstractEntityRepository.java @@ -0,0 +1,44 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.libreccm.core; + +import java.util.List; +import javax.inject.Inject; +import javax.persistence.EntityManager; + +/** + * + * @author Jens Pelzetter + */ +public abstract class AbstractEntityRepository { + + @Inject + private transient EntityManager entityManager; + + protected EntityManager getEntityManager() { + return entityManager; + } + + public abstract Class getEntityClass(); + + public abstract boolean isNew(final E entity) { + + } + + public void save(final E entity) { + if (isNew(entity)) { + entityManager.persist(entity); + } else { + entityManager.merge(entity); + } + } + + public List findById(final K entityId) { + return entityManager.find(getEntityClass(), entityId); + } + + public abstract List findAll(); +} diff --git a/ccm-core/src/main/java/org/libreccm/core/CcmObject.java b/ccm-core/src/main/java/org/libreccm/core/CcmObject.java index 97e037951..2308801d6 100644 --- a/ccm-core/src/main/java/org/libreccm/core/CcmObject.java +++ b/ccm-core/src/main/java/org/libreccm/core/CcmObject.java @@ -37,6 +37,8 @@ import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.OneToMany; import javax.persistence.Table; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; /** * Root class of all entities in LibreCCM which need categorisation and @@ -58,6 +60,11 @@ import javax.persistence.Table; @Entity @Table(name = "ccm_objects") @Inheritance(strategy = InheritanceType.JOINED) +@XmlRootElement(name = "ccm-object", namespace = "http://core.libreccm.org") +//False warning (?). Because this class has been migrated from the old PDL style +//persistence system we can't yet refactor it to make PMD happy. Also I think +//this is a false warning. +@SuppressWarnings("PMD.TooManyMethods") public class CcmObject implements Serializable { private static final long serialVersionUID = 201504261329L; @@ -70,6 +77,7 @@ public class CcmObject implements Serializable { @Id @Column(name = "object_id") @GeneratedValue(strategy = GenerationType.AUTO) + @XmlElement(name = "object-id") private long objectId; /** diff --git a/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java b/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java index 3b12e534c..b2c06ad52 100644 --- a/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java +++ b/ccm-core/src/main/java/org/libreccm/core/EmailAddress.java @@ -29,6 +29,14 @@ import javax.persistence.Embeddable; /** * An embeddable entity for storing email addresses. + * + * In contrast to its predecessor {@code com.arsdigita.kernel.EmailAddress} + * this class does not provide verification methods. Verification is done using + * the Bean Validiation API (Hibernate Validator is used as + * implementation). + * + * Because this class is an embeddable JPA entity it can be used in other + * entities to store eMail addresses. * * @author Jens Pelzetter */ @@ -40,7 +48,7 @@ public class EmailAddress implements Serializable { @Column(name = "email_address", length = 512, nullable = false) @NotBlank @Email - private String eMailAddress; + private String address; @Column(name = "bouncing") private boolean bouncing; @@ -48,12 +56,12 @@ public class EmailAddress implements Serializable { @Column(name = "verified") private boolean verified; - public String getEmailAddress() { - return eMailAddress; + public String getAddress() { + return address; } - public void setEmailAddress(final String eMailAddress) { - this.eMailAddress = eMailAddress; + public void setAddress(final String eMailAddress) { + this.address = eMailAddress; } public boolean isBouncing() { @@ -75,7 +83,7 @@ public class EmailAddress implements Serializable { @Override public int hashCode() { int hash = 5; - hash = 79 * hash + Objects.hashCode(eMailAddress); + hash = 79 * hash + Objects.hashCode(address); hash = 79 * hash + (bouncing ? 1 : 0); hash = 79 * hash + (verified ? 1 : 0); return hash; @@ -94,7 +102,7 @@ public class EmailAddress implements Serializable { return false; } - if (!Objects.equals(eMailAddress, other.getEmailAddress())) { + if (!Objects.equals(address, other.getAddress())) { return false; } if (bouncing != other.isBouncing()) { @@ -114,7 +122,7 @@ public class EmailAddress implements Serializable { + "bouncing = %b, " + "verified = %b }", super.toString(), - eMailAddress, + address, bouncing, verified); } diff --git a/ccm-core/src/main/java/org/libreccm/core/GroupMembership.java b/ccm-core/src/main/java/org/libreccm/core/GroupMembership.java index 82304d9da..24736a5a9 100644 --- a/ccm-core/src/main/java/org/libreccm/core/GroupMembership.java +++ b/ccm-core/src/main/java/org/libreccm/core/GroupMembership.java @@ -29,7 +29,8 @@ import javax.persistence.ManyToOne; import javax.persistence.Table; /** - * + * An association class for the association between a group and it members. + * * @author Jens Pelzetter */ @Entity diff --git a/ccm-core/src/main/java/org/libreccm/core/Party.java b/ccm-core/src/main/java/org/libreccm/core/Party.java index 036fb2739..26f469cc9 100644 --- a/ccm-core/src/main/java/org/libreccm/core/Party.java +++ b/ccm-core/src/main/java/org/libreccm/core/Party.java @@ -52,6 +52,8 @@ public class Party extends CcmObject implements Serializable { private List emailAddresses; @OneToMany(mappedBy = "grantee") + //Can't shorten this variable name without reducing descriptiveness + @SuppressWarnings("PMD.LongVariable") private List grantedPermissions; public Party() { @@ -84,6 +86,8 @@ public class Party extends CcmObject implements Serializable { return Collections.unmodifiableList(grantedPermissions); } + //Can't shorten this variable name without reducing descriptiveness + @SuppressWarnings("PMD.LongVariable") protected void setGrantedPermissions( final List grantedPermissions) { this.grantedPermissions = grantedPermissions; diff --git a/ccm-core/src/main/java/org/libreccm/core/Permission.java b/ccm-core/src/main/java/org/libreccm/core/Permission.java index 0322ba7b9..21998f5f4 100644 --- a/ccm-core/src/main/java/org/libreccm/core/Permission.java +++ b/ccm-core/src/main/java/org/libreccm/core/Permission.java @@ -40,6 +40,10 @@ import javax.persistence.TemporalType; */ @Entity @Table(name = "permissions") +//Can't reduce complexity yet +@SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity"}) public class Permission implements Serializable { private static final long serialVersionUID = -2368935232499907547L; @@ -136,7 +140,7 @@ public class Permission implements Serializable { public int hashCode() { int hash = 3; hash - = 31 * hash + (int) (permissionId ^ (permissionId >>> 32)); + = 31 * hash + (int) (permissionId ^ (permissionId >>> 32)); hash = 31 * hash + Objects.hashCode(grantee); hash = 31 * hash + Objects.hashCode(grantedPrivilege); hash = 31 * hash + Objects.hashCode(object); @@ -147,6 +151,11 @@ public class Permission implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.NPathComplexity"}) public boolean equals(final Object obj) { if (obj == null) { return false; @@ -188,14 +197,14 @@ public class Permission implements Serializable { @Override public String toString() { return String.format("%s{ " - + "permissionId = %d, " - + "grantee = %s, " - + "grantedPrivilege = %s, " - + "object = %s, " - + "creationUser = %s," - + "creationDate = %tF %>> 32)); + = 67 * hash + (int) (attachmentId ^ (attachmentId >>> 32)); hash = 67 * hash + Objects.hashCode(message); hash = 67 * hash + Objects.hashCode(mimeType); hash = 67 * hash + Objects.hashCode(title); @@ -139,6 +139,8 @@ public class Attachment implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings("PMD.NPathComplexity") public boolean equals(final Object obj) { if (obj == null) { return false; @@ -178,11 +180,11 @@ public class Attachment implements Serializable { @Override public String toString() { return String.format("%s{ " - + "attachmentId = %d, " - + "message = %s, " - + "mimeType = \"%s\", " - + "title = \"%s\"" - + " }", + + "attachmentId = %d, " + + "message = %s, " + + "mimeType = \"%s\", " + + "title = \"%s\"" + + " }", super.toString(), attachmentId, Objects.toString(message), diff --git a/ccm-core/src/main/java/org/libreccm/messaging/Message.java b/ccm-core/src/main/java/org/libreccm/messaging/Message.java index 99b8f4b6c..ebbee8630 100644 --- a/ccm-core/src/main/java/org/libreccm/messaging/Message.java +++ b/ccm-core/src/main/java/org/libreccm/messaging/Message.java @@ -46,6 +46,10 @@ import javax.persistence.TemporalType; */ @Entity @Table(name = "messages") +//Can't reduce complexity yet +@SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity"}) public class Message extends CcmObject implements Serializable { private static final long serialVersionUID = -9143137794418932025L; @@ -189,15 +193,20 @@ public class Message extends CcmObject implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.NPathComplexity"}) public boolean equals(final Object obj) { if (obj == null) { return false; } - + if (!super.equals(obj)) { return false; } - + if (!(obj instanceof Message)) { return false; } @@ -238,10 +247,10 @@ public class Message extends CcmObject implements Serializable { @Override public String toString(final String data) { return super.toString(String.format(", sender = %s, " - + "subject = \"%s\", " - + "bodyMimeType = \"%s\", " - + "sent = %tF %Jens Pelzetter */ @Entity @Table(name = "queue_items") +//Can't reduce complexity yet +@SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity"}) public class QueueItem implements Serializable { private static final long serialVersionUID = 396330385592074013L; @@ -156,6 +160,11 @@ public class QueueItem implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.NPathComplexity"}) public boolean equals(final Object obj) { if (obj == null) { return false; @@ -167,7 +176,7 @@ public class QueueItem implements Serializable { if (!other.canEqual(this)) { return false; } - + if (this.queueItemId != other.getQueueItemId()) { return false; } @@ -199,13 +208,13 @@ public class QueueItem implements Serializable { @Override public String toString() { return String.format("%s{ " - + "queueItemId = %d, " - + "receiver = %s, " - + "retryCount = %d, " - + "successful = %b, " - + "receiverAddress = \"%s\", " - + "message = %s" - + " }", + + "queueItemId = %d, " + + "receiver = %s, " + + "retryCount = %d, " + + "successful = %b, " + + "receiverAddress = \"%s\", " + + "message = %s" + + " }", super.toString(), queueItemId, Objects.toString(receiver), diff --git a/ccm-core/src/main/java/org/libreccm/runtime/Initalizer.java b/ccm-core/src/main/java/org/libreccm/runtime/Initalizer.java index ea557e358..4cfcff0ad 100644 --- a/ccm-core/src/main/java/org/libreccm/runtime/Initalizer.java +++ b/ccm-core/src/main/java/org/libreccm/runtime/Initalizer.java @@ -57,12 +57,12 @@ public class Initalizer implements Serializable { private Initalizer requiredBy; @OneToMany(mappedBy = "requiredBy") - private List requiredInitializers; + private List requires; public Initalizer() { super(); - requiredInitializers = new ArrayList<>(); + requires = new ArrayList<>(); } public long getInitializerId() { @@ -89,25 +89,25 @@ public class Initalizer implements Serializable { this.requiredBy = requiredBy; } - public List getRequiredInitializers() { - if (requiredInitializers == null) { + public List getRequires() { + if (requires == null) { return null; } else { - return Collections.unmodifiableList(requiredInitializers); + return Collections.unmodifiableList(requires); } } - protected void setRequiredInitializers( - final List requiredInitializers) { - this.requiredInitializers = requiredInitializers; + protected void setRequires( + final List requires) { + this.requires = requires; } protected void addRequiredInitalizer(final Initalizer initalizer) { - requiredInitializers.add(initalizer); + requires.add(initalizer); } protected void removeRequiredInitalizer(final Initalizer initalizer) { - requiredInitializers.remove(initalizer); + requires.remove(initalizer); } @Override @@ -117,7 +117,7 @@ public class Initalizer implements Serializable { = 37 * hash + (int) (initializerId ^ (initializerId >>> 32)); hash = 37 * hash + Objects.hashCode(className); hash = 37 * hash + Objects.hashCode(requiredBy); - hash = 37 * hash + Objects.hashCode(requiredInitializers); + hash = 37 * hash + Objects.hashCode(requires); return hash; } @@ -143,8 +143,8 @@ public class Initalizer implements Serializable { if (!Objects.equals(requiredBy, other.getRequiredBy())) { return false; } - return Objects.equals(requiredInitializers, - other.getRequiredInitializers()); + return Objects.equals(requires, + other.getRequires()); } public boolean canEqual(final Object obj) { diff --git a/ccm-core/src/main/java/org/libreccm/search/lucene/Document.java b/ccm-core/src/main/java/org/libreccm/search/lucene/Document.java index a850e22de..abc6dab45 100644 --- a/ccm-core/src/main/java/org/libreccm/search/lucene/Document.java +++ b/ccm-core/src/main/java/org/libreccm/search/lucene/Document.java @@ -42,6 +42,12 @@ import javax.persistence.TemporalType; */ @Entity @Table(name = "lucene_documents") +//Can't reduce complexity yet. Not sure what to do about the God class warning. +//Maybe we have to put some of the properties into an extra class. +@SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.GodClass"}) public class Document implements Serializable { private static final long serialVersionUID = 3363154040440909619L; @@ -269,6 +275,11 @@ public class Document implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.NPathComplexity"}) public boolean equals(final Object obj) { if (obj == null) { return false; diff --git a/ccm-core/src/main/java/org/libreccm/web/Host.java b/ccm-core/src/main/java/org/libreccm/web/Host.java index bc0193c25..d64583d93 100644 --- a/ccm-core/src/main/java/org/libreccm/web/Host.java +++ b/ccm-core/src/main/java/org/libreccm/web/Host.java @@ -37,6 +37,7 @@ import javax.persistence.UniqueConstraint; @Table(name = "hosts", uniqueConstraints = { @UniqueConstraint(columnNames = {"server_name", "server_port"})}) +@SuppressWarnings("PMD.ShortClassName") //Host is perfectly fine as class name... public class Host implements Serializable { private static final long serialVersionUID = 8727376444061847375L; @@ -113,10 +114,10 @@ public class Host implements Serializable { @Override public String toString() { return String.format("%s{ " - + "hostId = %d, " - + "serverName = \"%s\", " - + "serverPort =\"%s\"" - + " }", + + "hostId = %d, " + + "serverName = \"%s\", " + + "serverPort =\"%s\"" + + " }", super.toString(), hostId, serverName, diff --git a/ccm-core/src/main/java/org/libreccm/workflow/Task.java b/ccm-core/src/main/java/org/libreccm/workflow/Task.java index 3cfa06a46..29c1dd705 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/Task.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/Task.java @@ -50,6 +50,13 @@ import javax.persistence.Table; @Entity @Table(name = "workflow_tasks") @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) +//Can't reduce complexity yet, Task is a fine name +@SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.ShortClassName", + "PMD.TooManyMethods", + "PMD.AvoidDuplicateLiterals"}) public class Task implements Serializable { private static final long serialVersionUID = 8161343036908150426L; @@ -61,18 +68,18 @@ public class Task implements Serializable { @Embedded @AssociationOverride( - name = "values", - joinTable = @JoinTable(name = "workflow_task_labels", - joinColumns = { - @JoinColumn(name = "task_id")})) + name = "values", + joinTable = @JoinTable(name = "workflow_task_labels", + joinColumns = { + @JoinColumn(name = "task_id")})) private LocalizedString label; @Embedded @AssociationOverride( - name = "values", - joinTable = @JoinTable(name = "workflow_tasks_descriptions", - joinColumns = { - @JoinColumn(name = "task_id")})) + name = "values", + joinTable = @JoinTable(name = "workflow_tasks_descriptions", + joinColumns = { + @JoinColumn(name = "task_id")})) private LocalizedString description; @Column(name = "active") @@ -238,6 +245,11 @@ public class Task implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.NPathComplexity"}) public boolean equals(final Object obj) { if (obj == null) { return false; @@ -288,14 +300,14 @@ public class Task implements Serializable { public String toString(final String data) { return String.format("%s{ " - + "taskId = %d, " - + "label = %s, " - + "active = %b, " - + "taskState = \"%s\", " - + "workflow = %s, " - + "dependentTasks = %s, " - + "dependsOn = %s%s" - + " }", + + "taskId = %d, " + + "label = %s, " + + "active = %b, " + + "taskState = \"%s\", " + + "workflow = %s, " + + "dependentTasks = %s, " + + "dependsOn = %s%s" + + " }", super.toString(), taskId, Objects.toString(label), diff --git a/ccm-core/src/main/java/org/libreccm/workflow/UserTask.java b/ccm-core/src/main/java/org/libreccm/workflow/UserTask.java index 00ce0c619..1de17c07d 100644 --- a/ccm-core/src/main/java/org/libreccm/workflow/UserTask.java +++ b/ccm-core/src/main/java/org/libreccm/workflow/UserTask.java @@ -44,6 +44,10 @@ import javax.persistence.TemporalType; */ @Entity @Table(name = "workflow_user_tasks") +//Can't reduce complexity yet +@SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity"}) public class UserTask extends Task implements Serializable { private static final long serialVersionUID = 4188064584389893019L; @@ -68,6 +72,7 @@ public class UserTask extends Task implements Serializable { @OneToOne @JoinColumn(name = "notification_sender") + @SuppressWarnings("PMD.LongVariable") //Shorter name would not be descriptive private User notificationSender; @OneToMany @@ -152,6 +157,7 @@ public class UserTask extends Task implements Serializable { return notificationSender; } + @SuppressWarnings("PMD.LongVariable") public void setNotificationSender(final User notificationSender) { this.notificationSender = notificationSender; } @@ -204,7 +210,7 @@ public class UserTask extends Task implements Serializable { hash = 37 * hash + Objects.hashCode(startDate); hash = 37 * hash + Objects.hashCode(dueDate); hash - = 37 * hash + (int) (durationMinutes ^ (durationMinutes >>> 32)); + = 37 * hash + (int) (durationMinutes ^ (durationMinutes >>> 32)); hash = 37 * hash + Objects.hashCode(notificationSender); hash = 37 * hash + Objects.hashCode(assignedUsers); hash = 37 * hash + Objects.hashCode(assignedGroups); @@ -212,6 +218,11 @@ public class UserTask extends Task implements Serializable { } @Override + //Can't reduce complexity yet + @SuppressWarnings({"PMD.CyclomaticComplexity", + "PMD.StdCyclomaticComplexity", + "PMD.ModifiedCyclomaticComplexity", + "PMD.NPathComplexity"}) public boolean equals(final Object obj) { if (obj == null) { return false; @@ -257,15 +268,15 @@ public class UserTask extends Task implements Serializable { public boolean canEqual(final Object obj) { return obj instanceof UserTask; } - + @Override public String toString(final String data) { return super.toString(String.format(", locked = %b, " - + "lockingUser = %s, " - + "startDate = %tF %