I answered my own question :-)
In case anyone cared I was not setting the "serialNumber" property on
the serNumberAffected object.
Cayenne shines and again...
On Tue, 18 Jan 2005 15:13:48 -0700, Joshua Pyle <joshua.t.pyl..mail.com> wrote:
> This issue seems like it should be rudimentary but I've tried every
> iteration I can imagine and I still get errors. Simply pur here is
> what I need to happen.
>
> 1. I am editing an object that contains a list of serial numbers.
>
> 2. The user submits a web page with a list of the new serial numbers.
>
> 3. I need to basically replace the list associated with the object
> with a new list of serial numbers that get submitted from the web
> page.
>
> 4. The major problem is that its simple to loop through the list of
> serial numbers and add the new ones but its a major pain remove the
> ones that are missing, not to mention time consuming.
>
> My latest effort has entailed creating the following function on the
> object/class in question...
>
> public void clearSerialNumbersAffected() {
> SerNbrAffected serialNumberAffected;
> while( this.getSerialNumbersAffected().size() > 0 ){
> serialNumberAffected =
> (SerNbrAffected)currSerialNumbersAffected.get(0);
> this.removeFromSerialNumbersAffected( serialNumberAffected );
> this.getDataContext().deleteObject( serialNumberAffected );
> }
> }
>
> This is the code I call in my Struts action Class to set the serial numbers...
>
> String[] serNumbers = workingForm.getSerNumbersAffected();
> String currSerNumber = "";
> SerNbrAffected serNumberAffected;
> n = serNumbers.length;
> modifyRev.clearSerialNumbersAffected();
> System.out.println(
> "modifyRev.getSerialNumbersAffected().size() = " +
> modifyRev.getSerialNumbersAffected().size() );
> for (int i = 0; i < n; i++) {
> //System.out.println("---- doing serNumber # " + serNumbers[i]);
> currSerNumber = serNumbers[i];
> if (!"".equals(currSerNumber)) {
> serNumberAffected = (SerNbrAffected)
> dbContext.createAndRegisterNewObject(SerNbrAffected.class);
> modifyRev.addToSerialNumbersAffected(serNumberAffected);
> }
> }
>
> In case this is neccessary here is the stack trace...
>
> Validation failure for
> com.ray.rms.it.esolutions.mla.cayenne.SerNbrAffected.serialNumber:
> "serialNumber" is required.
> at org.objectstyle.cayenne.access.ObjectStore.validateUncommittedObjects(ObjectStore.java:950)
> at org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.java:1260)
> at org.objectstyle.cayenne.access.DataContext.commitChanges(DataContext.java:1236)
> at com.ray.rms.it.esolutions.mla.view.MLA.ProcModifyMLAAction.doHasNoRevisions(ProcModifyMLAAction.java:443)
> at com.ray.rms.it.esolutions.mla.view.MLA.ProcModifyMLAAction.execute(ProcModifyMLAAction.java:149)
> at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
> at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
> at java.lang.Thread.run(Thread.java:534)
>
> --
> Joshua T. Pyle
> Go has always existed.
>
-- Joshua T. Pyle Go has always existed.
This archive was generated by hypermail 2.0.0 : Tue Jan 18 2005 - 19:21:51 EST