[jboss-user] [JBoss Seam] - Architecture Problem (validation)
Eethyo
do-not-reply at jboss.com
Mon Nov 5 10:26:04 EST 2007
Hi,
I have a problem with the Validation.
Validator:
package com.ccm30.validators;
|
| import java.util.List;
|
| import javax.persistence.NoResultException;
|
| import org.hibernate.mapping.Property;
| import org.hibernate.validator.PropertyConstraint;
| import org.hibernate.validator.Validator;
| import org.jboss.seam.Component;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.framework.EntityController;
|
| import com.ccms30.entities.CcmsProductline;
| import com.ccms30.entities.CcmsProductlineController;
|
| @Name("myProductlineListValidator")
| public class MyProductlineListValidator extends EntityController implements
| Validator<MyProductlineList>, PropertyConstraint {
|
|
|
| // part of the Validator<Annotation> contract,
| // allows to get and use the annotation values
| public void initialize(MyProductlineList parameters) {
|
| }
|
| // part of the property constraint contract
| public boolean isValid(Object value) {
|
| if (value == null){
| System.out.println("Value is null");
| return true;
| }
|
| if (!(value instanceof String))
| {
| System.out.println("Value is not a string");
| return false;
| }
|
| String string = (String) value;
| String trimmed = string.trim();
|
| try{
| CcmsProductline cpl = (CcmsProductline) createQuery(
| "select cpl from CcmsProductline cpl where cpl.name=:name")
| .setParameter("name", trimmed).getSingleResult();
|
| System.out.println("Value is in List");
| return true;
| }catch(NoResultException e)
| {
| System.out.println("Value is not in List");
| return false;
| }
|
| }
|
| public void apply(Property arg0) {
|
| }
|
| }
|
Entity:
package com.ccms30.entities;
| // Generated 16.10.2007 13:32:22 by Hibernate Tools 3.2.0.b9
|
| import java.util.Date;
| import java.util.HashMap;
| import java.util.HashSet;
| import java.util.Set;
|
| import javax.persistence.CascadeType;
| import javax.persistence.Column;
| import javax.persistence.Entity;
| import javax.persistence.FetchType;
| import javax.persistence.GeneratedValue;
| import javax.persistence.GenerationType;
| import javax.persistence.Id;
| import javax.persistence.JoinColumn;
| import javax.persistence.JoinTable;
| import javax.persistence.ManyToMany;
| import javax.persistence.ManyToOne;
| import javax.persistence.OneToMany;
| import javax.persistence.SequenceGenerator;
| import javax.persistence.Table;
| import javax.persistence.Temporal;
| import javax.persistence.TemporalType;
| import javax.persistence.Transient;
|
| import org.hibernate.validator.Length;
| import org.hibernate.validator.NotNull;
| import org.richfaces.model.TreeNode;
|
| import com.ccm30.validators.MyProductlineList;
| import com.ccms30.treenodes.CcmsTree;
| /**
| * CcmsProductline generated by hbm2java
| */
| @Entity
| @Table(name = "CCMS_PRODUCTLINE", schema = "CCMSDB")
| public class CcmsProductline extends CcmsTree implements java.io.Serializable {
|
| private static final long serialVersionUID = 1L;
|
| private Integer id;
| private CcmsProductline ccmsProductline;
| private CcmsUser ccmsUser;
| private String name;
| private String description;
| private Date modified;
| private Set<CcmsProductline> ccmsProductlines = new HashSet<CcmsProductline>(
| 0);
| private Set<CcmsProduct> ccmsProducts = new HashSet<CcmsProduct>(0);
| private Set<CcmsPolicy> ccmsPolicies = new HashSet<CcmsPolicy>(0);
|
| @Transient
| private String ccmsParentProductlineName = initCcmsParentProductlineName();
|
| public CcmsProductline() {
| }
|
| public CcmsProductline(Integer id, String name) {
| this.id = id;
| this.name = name;
| }
| public CcmsProductline(Integer id, CcmsProductline ccmsProductline,
| CcmsUser ccmsUser, String name, String description, Date modified,
| Set<CcmsProductline> ccmsProductlines,
| Set<CcmsProduct> ccmsProducts, Set<CcmsPolicy> ccmsPolicies) {
| this.id = id;
| this.ccmsProductline = ccmsProductline;
| this.ccmsUser = ccmsUser;
| this.name = name;
| this.description = description;
| this.modified = modified;
| this.ccmsProductlines = ccmsProductlines;
| this.ccmsProducts = ccmsProducts;
| this.ccmsPolicies = ccmsPolicies;
| }
|
| @Id @SequenceGenerator(name = "generator", sequenceName = "ID_SEQUENCE") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
| @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
| @NotNull
| public Integer getId() {
| return this.id;
| }
|
| public void setId(Integer id) {
| this.id = id;
| }
| @ManyToOne(fetch = FetchType.LAZY)
| @JoinColumn(name = "PARENT_PRODUCTLINE_ID")
| public CcmsProductline getCcmsProductline() {
| return this.ccmsProductline;
| }
|
| public void setCcmsProductline(CcmsProductline ccmsProductline) {
| this.ccmsProductline = ccmsProductline;
| }
| @ManyToOne(fetch = FetchType.LAZY)
| @JoinColumn(name = "CREATOR")
| public CcmsUser getCcmsUser() {
| return this.ccmsUser;
| }
|
| public void setCcmsUser(CcmsUser ccmsUser) {
| this.ccmsUser = ccmsUser;
| }
|
| @Column(name = "NAME", nullable = false, length = 200)
| @NotNull
| @Length(max = 200)
| public String getName() {
| return this.name;
| }
|
| public void setName(String name) {
| this.name = name;
| }
|
| @Column(name = "DESCRIPTION", length = 4000)
| @Length(max = 4000)
| public String getDescription() {
| return this.description;
| }
|
| public void setDescription(String description) {
| this.description = description;
| }
| @Temporal(TemporalType.DATE)
| @Column(name = "MODIFIED", length = 7)
| public Date getModified() {
| return this.modified;
| }
|
| public void setModified(Date modified) {
| this.modified = modified;
| }
| @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "ccmsProductline")
| public Set<CcmsProductline> getCcmsProductlines() {
| return this.ccmsProductlines;
| }
|
| public void setCcmsProductlines(Set<CcmsProductline> ccmsProductlines) {
| this.ccmsProductlines = ccmsProductlines;
| }
| @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "ccmsProductline")
| public Set<CcmsProduct> getCcmsProducts() {
| return this.ccmsProducts;
| }
|
| public void setCcmsProducts(Set<CcmsProduct> ccmsProducts) {
| this.ccmsProducts = ccmsProducts;
| }
| @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
| @JoinTable(name = "CCMS_POLICY_PRODUCTLINE_Z", joinColumns = @JoinColumn(name = "policy_id"), inverseJoinColumns = @JoinColumn(name = "productline_id"))
| public Set<CcmsPolicy> getCcmsPolicies() {
| return this.ccmsPolicies;
| }
|
| public void setCcmsPolicies(Set<CcmsPolicy> ccmsPolicies) {
| this.ccmsPolicies = ccmsPolicies;
| }
|
| public String initCcmsParentProductlineName()
| {
| if(ccmsProductline!=null)
| return ccmsProductline.getName();
| else
| return "";
| }
|
|
| @Transient
| @MyProductlineList
| public String getCcmsParentProductlineName() {
| System.out.println("operation called");
| return ccmsParentProductlineName;
| }
|
| @Transient
| public void setCcmsParentProductlineName(String ccmsParentProductlineName) {
| this.ccmsParentProductlineName = ccmsParentProductlineName;
| }
|
| @Override
| public String receiveType() {
| // TODO Auto-generated method stub
| return "CcmsProduct/CcmsProductline";
| }
|
| }
I always get a "Stackoverflow" Exception.
I think i know why, because my Productline i get wants to validate its value and so on. how to avoid this?
Where should I set my validator?
Can you help me?!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4101843#4101843
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4101843
More information about the jboss-user
mailing list