Problem with Validator
anikanchan Mar 24, 2008 7:31 PMI am trying to use Hibernate custom validator and I am having problem with that. My validator method looks like below:
public boolean isValid(Object object) { System.out.println("PublicationStatusValidator.isValid()"); NewsArticle content = (NewsArticle) object; if(content.getStatus().equals(PublicationStatus.PUBLISHED)) { if (content.getTitle() != null &&content.getTitle().trim().length() > 0 && content.getSummary() != null && content.getSummary().trim().length() > 0 && content.getBody() != null && content.getBody().trim().length() > 0 && content.getPublicationDate() != null ) { return true; } return false; } else if(content.getStatus().equals(PublicationStatus.DRAFT)) { if (content.getTitle() != null &&content.getTitle().trim().length() > 0 ){ return true; } return false; } return true; }
This method works fine by identifying the valid scenarios and returns true or false. If it returns true, everything works fine but as soon as it returns false, my application breaks giving IllegalStateException. My entity class is annotated as follows:
@Entity @Name("newsArticle") @Table(name = "vew_news_article") @org.hibernate.annotations.Entity(dynamicInsert = true, dynamicUpdate = true, optimisticLock = OptimisticLockType.VERSION) @AttributeOverrides({ @AttributeOverride(name = "lastModifiedBy", column = @Column(name = "nwa_last_modified_by")), @AttributeOverride(name = "lastModified", column = @Column(name = "nwa_last_modified_datetime")), @AttributeOverride(name = "createdBy", column = @Column(name = "nwa_created_by")), @AttributeOverride(name = "created", column = @Column(name = "nwa_created_datetime")), @AttributeOverride(name = "title", column = @Column(name = "nwa_title")), @AttributeOverride(name = "body", column = @Column(name = "nwa_body")), @AttributeOverride(name = "visibleOnHomePage", column = @Column(name = "nwa_homepage_flag")), @AttributeOverride(name = "publicationDate", column = @Column(name = "nwa_publication_date")), @AttributeOverride(name = "status", column = @Column(name = "nwa_publication_status")), @AttributeOverride(name = "version", column = @Column(name = "nwa_version")) }) @NamedQueries( { @NamedQuery(name = "findAllActiveNews", query = "from NewsArticle as nws where " + "nws.status = 'PUBLISHED' order by nws.publicationDate asc") }) @PublicationCheck public class NewsArticle extends AbstractContent { //... }
Can someone please tell me what I am doing wrong? Thanks.