Reputation: 8497
Netbeans gives: Configure "unbalanced read/write with collections" for the declaration of headerFields
:
package net.bounceme.dur.usenet.model;
import java.io.Serializable;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Header;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.persistence.*;
@Entity
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger LOG = Logger.getLogger(Article.class.getName());
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
private String subject;
@OneToMany(mappedBy = "article")
private List<HeaderField> headerFields = new ArrayList<>();
public Article() {
}
public Article(Message message) {
try {
subject = message.getSubject();
Enumeration e = message.getAllHeaders();
while (e.hasMoreElements()) {
Header header = (Header) e.nextElement();
@SuppressWarnings("unchecked")
SimpleEntry nameValue = new SimpleEntry(header.getName(), header.getValue());
HeaderField headerField = new HeaderField(nameValue);
headerFields.add(headerField);
}
} catch (MessagingException ex) {
Logger.getLogger(Article.class.getName()).log(Level.SEVERE, null, ex);
}
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Article)) {
return false;
}
Article other = (Article) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return subject;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
Which makes me question whether the relationship to HeaderField is properly established from Article
, or what this warning indicates.
Upvotes: 3
Views: 4803
Reputation: 200168
Since you are using a JPA-annotated class whose private fields will be read by reflection, this warning is not appropriate and you should simply disable it. It just refers to the fact that your private list is not exposed through any method, and the code in the class never reads its contents.
Upvotes: 3