I don't think ThreadHandler represents a java.lang.Thread handler. I think it more or less is a business object to facilitate persistance. I think the use of the word "Thread" here is more representative of a forum discussion thread.
I could be wrong though. robert > -----Original Message----- > From: Yee, Richard K,,DMDCWEST [mailto:[EMAIL PROTECTED] > Sent: Thursday, January 08, 2004 12:00 PM > To: 'Struts Users Mailing List' > Subject: RE: All The Bean Properties Are Null in the Business Tier!!! > (Used BeanUtils to Convert DynaValidatorForm) > > > Caroline, > May I ask why you are performing your database updates through a separate > thread? It seems to be complicating your code. Creating lots of > threads from > within your web application is not a good practice if you want your app to > scale well. Also, what happens if the update doesn't succeed? You have no > way of notifying the user. > > The code: > <snip> > ThreadBean threadBean = new ThreadBean(); > > String receiver = threadBean.getReceiver(); > String sender = threadBean.getSender(); > </snip> > > is your problem unless your ThreadBean constructor can populate itself > correctly with the desired values. > If you must use threads, then you should be able to create a > ThreadHandler, > call a setter method on it and set you ThreadBean instance variable, and > then call the run method on the ThreadHandler to start the thread. > > Regards, > > Richard > > -----Original Message----- > From: Caroline Jen [mailto:[EMAIL PROTECTED] > Sent: Thursday, January 08, 2004 8:48 AM > To: Struts Users Mailing List > Subject: RE: All The Bean Properties Are Null in the Business > Tier!!! (Used > BeanUtils to Convert DynaValidatorForm) > > > Thank you for your comment, which is very helpful. > > Instead of extends ThreadBean, I now import the > ThreadBean into my ThreadHandler class (see the code > below). I am still getting all null or zero values > from the bean. > > What is the proper way to do it? I simply want to > insert the value of all the properties into the > database. Most of the fields in my database require > NOT NULL. > > code: > ================================================== > import org.apache.artimus.message.ThreadBean; > > class ThreadHandler > { > ThreadBean threadBean = new ThreadBean(); > > String receiver = threadBean.getReceiver(); > String sender = threadBean.getSender(); > String threadTopic = threadBean.getPostTopic(); > String threadBody = threadBean.getPostBody(); > Timestamp threadCreationDate = threadBean.getThreadCreationDate(); > int threadViewCount = > threadBean.getThreadViewCount(); > int threadReplyCount = > threadBean.getThreadReplyCount(); > > MessageDAO md = new MySQLMessageDAO(); > public int insertThread( ThreadBean threadBean ) > throws MessageDAOSysException, > > ObjectNotFoundException > > { > System.out.println( "The sender is " + sender + > "." ); > System.out.println( "The subject is " + > threadTopic + "." ); > System.out.println( "The creation date is " + threadCreationDate ); > System.out.println( "The number of replies are " > + threadReplyCount ); > > md.createThread( receiver, sender, threadTopic, > threadBody, threadCreationDate, > > threadViewCount, > threadReplyCount ); > > int threadID = 0; > ..... > ..... > return threadID; > } > } > > > --- Robert Taylor <[EMAIL PROTECTED]> wrote: > > Your code seems a bit confusing based upon what you > > want to > > achieve. > > > > If indeed you want ThreadHandler to inherit from > > ThreadBean, > > you should be able to do something like this: > > > > DynaActionForm postForm = ( DynaActionForm )form; ThreadHander = new > > ThreadHandler(); BeanUtils.copyProperties( threadHandler, postForm ); > > > > threadHandler.insertThread(); > > > > > > The reason you are getting null and zero values in ThreadHandler > > is that you are populating a new instance of > > ThreadBean here: > > > > > > > DynaActionForm postForm = ( DynaActionForm > > )form; > > > > > ThreadBean threadBean = new ThreadBean(); > > > > > BeanUtils.copyProperties( threadBean, postForm > > ); > > > > ... and then you get a new instance of ThreadHandler > > here: > > > > > > > ThreadHandler thandler = new ThreadHandler(); > > > > At this point, ThreadHandler knows nothing of your > > populated > > instance of ThreadBean. Instead it is getting values > > from > > its own "empty" ThreadBean parent here: > > > > > class ThreadHandler extends ThreadBean > > > { > > > String receiver = getReceiver(); > > > String sender = getSender(); > > > String threadTopic = getPostTopic(); > > > String threadBody = getPostBody(); > > > Timestamp threadCreationDate = > > > getThreadCreationDate(); > > > int threadViewCount = getThreadViewCount(); > > > int threadReplyCount = getThreadReplyCount(); > > > > > > ..... > > > ..... > > > } > > > > > > ...unless you do something like the following in > > ThreadHandler.insertThread(): > > > > public int insertThread(ThreadBean bean) throws > > SomeException { > > > > this.receiver = bean.getReceiver(); > > this.sender = bean.getSender(); > > .... > > > > // insert code here > > > > > > > > } > > > > which from a design perspective, I'm not sure why > > you would want to do it > > this way. > > > > > > hth, > > > > robert > > > > > > > -----Original Message----- > > > From: Caroline Jen [mailto:[EMAIL PROTECTED] > > > Sent: Wednesday, January 07, 2004 10:27 PM > > > To: Struts Users Mailing List > > > Subject: RE: All The Bean Properties Are Null in > > the Business Tier!!! > > > (Used BeanUtils to Convert DynaValidatorForm) > > > > > > > > > I have narrowed down the problem. Something went > > > wrong in my business tier class > > (ThreadHandler.java). > > > All the properties in the JavaBean are populated > > > properly (I have checked). The way I coded in the ThreadHandler > > > class failed to retrieve the value > > of > > > all the properties in the JavaBean > > (ThreadBean.java). > > > All the values turned out to be null or 0. Now, > > what > > > is wrong with the code? > > > > > > class ThreadHandler extends ThreadBean > > > { > > > String receiver = getReceiver(); > > > String sender = getSender(); > > > String threadTopic = getPostTopic(); > > > String threadBody = getPostBody(); > > > Timestamp threadCreationDate = > > > getThreadCreationDate(); > > > int threadViewCount = getThreadViewCount(); > > > int threadReplyCount = getThreadReplyCount(); > > > > > > ..... > > > ..... > > > } > > > > > > To answer your question: > > > > > > 1. Have you checked to make sure that the fields > > you > > > expect actually exist in the form before calling > > > BeanUtils.copyProperties()? > > > > > > Yes, I have printed out the contents of the JSP > > text > > > fields in my action class, which is a servlet. > > For > > > example: System.out.println( "the sender is " + postForm.get( > > > "sender" ) ); > > > > > > 2. If so, have you checked to see if the data was > > > copied properly just after > > BeanUtils.copyProperties()? > > > > > > Yes, I have also printed out the value of the bean properties. For > > > example: System.out.println( "the sender is " + > > > threadBean.getSender() ); > > > > > > 3. BeanUtils.copyProperties() uses reflection to > > copy > > > properties. Are you using proper JavaBeans naming convention? > > > > > > Yes, I used a pair of get and set methods for each properties in the > > > JavaBean (ThreadBean.java). And > > in > > > my action class, I could print out the value of > > those > > > properties. > > > > > > --- Robert Taylor <[EMAIL PROTECTED]> wrote: > > > > Have you checked to make sure that the fields > > you > > > > expect > > > > actually exist in the form before calling BeanUtils.populate()? > > > > > > > > If so, have you checked to see if the data was > > > > copied properly > > > > just after BeanUtils.populate()? > > > > > > > > BeanUtils.populate() uses reflection to copy > > > > properties. > > > > Are you usingproper JavaBeans naming convention? > > > > > > > > Try and isolate exactly where the data is > > getting > > > > "lost". > > > > > > > > I use BeanUtils.populate() all the time with DynaXXXXForms and > > > > have no problems. Usually when I do, I find that > > my > > > > data member > > > > names don't correspond. > > > > > > > > robert > > > > > > > > > -----Original Message----- > > > > > From: Caroline Jen > > [mailto:[EMAIL PROTECTED] > > > > > Sent: Wednesday, January 07, 2004 1:42 PM > > > > > To: [EMAIL PROTECTED] > > > > > Subject: All The Bean Properties Are Null in > > the > > > > Business Tier!!! (Used > > > > > BeanUtils to Convert DynaValidatorForm) > > > > > > > > > > > > > > > Hi, my program compiled OKay. When I ran the application, > > > > > somehow, the properties of my DynaValidatorForm are not passed > > > > > from the > > action > > > > class > > > > > to the business tier and then to the data > > access > > > > tier. > > > > > Please help me taking a look at what went > > wrong. > > > > > > > > > > > > === message truncated === > > > __________________________________ > Do you Yahoo!? > Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes > http://hotjobs.sweepstakes.yahoo.com/signingbonus > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]