These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Unable to get a BaseTreeModel from server side through Hiber
PostPosted: Mon Dec 28, 2009 5:20 am 
Newbie

Joined: Mon Dec 28, 2009 5:05 am
Posts: 1
Hello,

I have a problem to receive BaseTreeModel instances (GWT-Ext (GXT) object from Ext-JS) from server side in GWT when created by Hibernate engine, I get this error message :

Code:
[ERROR] 28/12/2009 09:36:18 [btpool0-2] [BeanPopulator]
propertyName=properties
readerMethod=public java.util.Map com.extjs.gxt.ui.client.data.BaseModelData.getProperties()
setterMethod=public void com.extjs.gxt.ui.client.data.BaseModelData.setProperties(java.util.Map)
fromBean=1
toBean=1

java.lang.ClassCastException
    at java.lang.Class.cast(Class.java:2990)
    at net.sf.beanlib.provider.replicator.CollectionReplicator.replicateCollection(CollectionReplicator.java:127)
    at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicateCollection(Hibernate3CollectionReplicator.java:79)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:109)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:71)
    at net.sf.beanlib.hibernate3.Hibernate3MapReplicator.replicate(Hibernate3MapReplicator.java:83)
    at net.sf.beanlib.provider.replicator.MapReplicator.replicateMap(MapReplicator.java:152)
    at net.sf.beanlib.hibernate3.Hibernate3MapReplicator.replicateMap(Hibernate3MapReplicator.java:67)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:118)
    at net.sf.beanlib.provider.BeanTransformer.transform(BeanTransformer.java:231)
    at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:201)
    at net.sf.beanlib.provider.BeanPopulator.processSetterMethod(BeanPopulator.java:172)
    at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:269)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean(ReplicatorTemplate.java:190)
    at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean(BeanReplicator.java:187)
    at net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean(Hibernate3JavaBeanReplicator.java:71)
    at net.sf.gilead.core.beanlib.clone.CloneClassBeanReplicator.replicateBean(CloneClassBeanReplicator.java:129)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable(ReplicatorTemplate.java:140)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:135)
    at net.sf.beanlib.provider.BeanTransformer.transform(BeanTransformer.java:231)
    at net.sf.beanlib.hibernate.HibernateBeanReplicator.copy(HibernateBeanReplicator.java:134)
    at net.sf.gilead.core.LazyKiller.clone(LazyKiller.java:237)
    at net.sf.gilead.core.LazyKiller.detach(LazyKiller.java:191)
    at net.sf.gilead.core.PersistentBeanManager.clonePojo(PersistentBeanManager.java:376)
    at net.sf.gilead.core.PersistentBeanManager.clone(PersistentBeanManager.java:248)
    at net.sf.gilead.gwt.GileadRPCHelper.parseReturnValue(GileadRPCHelper.java:126)
    at net.sf.gilead.gwt.PersistentRemoteService.processCall(PersistentRemoteService.java:153)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Here the server side code :

Code:
    public Project createProject(Project project) {
        HttpServletRequest request = this.getThreadLocalRequest();
        this.session = request.getSession();
       
        project.setUserCreated((User) this.session.getAttribute("user"));
        project.setDateCreated(new Date());
        setObject(project, false);
        return project;
    }

    private Object setObject(Object object, boolean update) {
        Session session = null;
        Transaction transaction = null;
        try {
            session = HibernateContext.getSessionFactory().openSession();
            transaction = session.beginTransaction();
            if (update)
                session.update(object);
            else session.save(object);
            transaction.commit();
        }
        catch (RuntimeException e) {
            _log.fatal(e.getMessage());
            transaction.rollback();
            throw e;
        }
        finally {
            if (session != null)
                session.close();
        }
        return object;
    }
And the client side code :

Code:
                    Project project = new Project();
                    project.setTitle(textTitle.getValue());
                    project.setDescription(textDescription.getValue().replaceAll("\n", "<br />"));
                    project.setDevelopers(new HashSet<User>(listDevelopers.getToList().getStore().getModels()));
                    project.setScrumMaster(comboScrumMaster.getValue());
                    project.setProductOwner(comboProductOwner.getValue());
                   
                    ServicesAsync services = Services.Util.getInstance();
                    services.createProject(project, new AsyncCallback<Project>() {
                        public void onSuccess(Project arg0) {
                            hide();
                            ((ProjectPage) Global.currentPage).addPortlet(new ProjectPortlet(project));
                            Info.display(textTitle.getValue(), "Le projet a été créé avec succès !");
                        }
                       
                        public void onFailure(Throwable arg0) {
                            MessageBox.alert("Erreur", "Impossible de créer le projet !", null);
                        }
                    });
And the model definition in Java :

Code:
package scrum.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

import com.extjs.gxt.ui.client.data.BaseModelData;

public class Project extends BaseModelData implements Serializable {
   
    private static final long serialVersionUID = 5958356423644996087L;

    public Project() {
        super();
    }
   
    public Project(Project project) {
        setProperties(project.getProperties());
    }

    public Integer getId() {
        return get("id");
    }

    public void setId(Integer id) {
        set("id", id);
    }

    public String getTitle() {
        return get("title");
    }

    public void setTitle(String title) {
        set("title", title);
    }

    public String getDescription() {
        return get("description");
    }

    public void setDescription(String description) {
        set("description", description);
    }

    public Set<User> getDevelopers() {
        return get("developers");
    }

    public void setDevelopers(Set<User> developers) {
        set("developers", developers);
    }

    public User getScrumMaster() {
        return get("scrumMaster");
    }

    public void setScrumMaster(User scrumMaster) {
        set("scrumMaster", scrumMaster);
    }

    public User getProductOwner() {
        return get("productOwner");
    }

    public void setProductOwner(User productOwner) {
        set("productOwner", productOwner);
    }
   
    public User getUserCreated() {
        return get("userCreated");
    }

    public void setUserCreated(User userCreated) {
        set("userCreated", userCreated);
    }

    public Date getDateCreated() {
        return get("dateCreated");
    }

    public void setDateCreated(Date dateCreated) {
        set("dateCreated", dateCreated);
    }

    public User getUserModified() {
        return get("userModified");
    }

    public void setUserModified(User userModified) {
        set("userModified", userModified);
    }

    public Date getDateModified() {
        return get("dateModified");
    }

    public void setDateModified(Date dateModified) {
        set("dateModified", dateModified);
    }
   
    @Override
    public String toString() {
        return get("title");
    }
}
And finally the model definition for Hibernate :

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="scrum.domain.Project" table="project">
        <id name="id" type="integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="title" type="string">
            <column name="title" length="64" not-null="true" unique="true" />
        </property>
        <property name="description" type="text">
            <column name="description" not-null="false" />
        </property>
        <set name="developers" table="project_user">
            <key column="project_id" />
            <many-to-many class="scrum.domain.User" column="user_id" />
        </set>
        <many-to-one name="scrumMaster" column="scrum_master" class="scrum.domain.User" not-null="false" />
        <many-to-one name="productOwner" column="product_owner" class="scrum.domain.User" not-null="false" />
        <many-to-one name="userCreated" column="user_created" class="scrum.domain.User" not-null="true" />
        <property name="dateCreated" type="timestamp">
            <column name="date_created" not-null="true" />
        </property>
        <many-to-one name="userModified" column="user_modified" class="scrum.domain.User" not-null="false" />
        <property name="dateModified" type="timestamp">
            <column name="date_modified" not-null="false" />
        </property>
    </class>
</hibernate-mapping>
Anyone does have seen this before ?

Thanks for any help.

All the best.


Top
 Profile  
 
 Post subject: Re: Unable to get a BaseTreeModel from server side through Hiber
PostPosted: Fri Apr 09, 2010 6:47 pm 
Newbie

Joined: Fri Apr 09, 2010 6:37 pm
Posts: 1
just replace

Code:
    public Set<User> getDevelopers() {
        return get("developers");
    }

    public void setDevelopers(Set<User> developers) {
        set("developers", developers);
    }


with

Code:
   
   private Set<User> developers= new HashSet<User>();

   public Set<User> getDevelopers() {
        return this.developers;
    }

    public void setDevelopers(Set<User> developers) {
        this.developers=developers;
    }


In my case this help and not affect on binding on client side.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.