In your code in what conditions joinOtherOrders gets called ? Br's, Marius
On Nov 29, 6:18 pm, Hannes <[email protected]> wrote: > Hi Tim,> Hannes, > > > Firstly, I really, really wouldn't write your code like that... > > > Things of note: > > - two defs inside defs... you usually wouldnt do this without a good reason > > (like SHtml.submit(whatever _)) > > The two defs only make sence together, that's why I put them together in > one def. I think that's encapsulation...> - dont use while loops. period. you > have a List[T], use foreach if you have a unit operation > > Yeah, that's true. But the problem is, that my logic requires to stop > the iteration at some point. How I gonna do that with a foreach construct?> > def joinAll(orders: List[LimitOrder]): Unit = > > orders.foreach(order => { > > // your logic here > > }) > > > You should look to remove a lot of that boiler plate... its looks very > > javaish and mutable. Generally speaking, scala programmers avoid mutable > > state like one would avoid bubonic plague. > > Your totally right! Its mutable, cause its changing the state of my > objects. But that's necessary at this point.> Before worrying about the > errors, id change your code, then take another look... its almost certainly > this bad organisation causing the issues. > > I agree with you, that this is not the most beautiful code I every saw, > but I believe that the things you mentioned are not interfering with the > problem I'm facing. At least not because of a while-loop and some inner > local defs. > > > Cheers, Tim > > thanks. > > > On 29 Nov 2009, at 15:24, Hannes wrote: > > >> Hey Lifters, > > >> I've some really strange things going on here. Please consider this > >> method definition. I've put alot of print "debug" statements between > >> other statements. There's a while-loop that only starts, when the given > >> list (orders) is not empty. It stops when "done" is set to true. So far, > >> so good. Than, have a look at the Lift output. I put in a comment, > >> pointing out where the program runs into the while loop. > > >> What really shocks me, are these print statements : > > >> before done=false > >> > >> after done=true > >> > >> i += 1 > >> > >> outside while > >> > >> INFO - Service request (GET) / took 121 Milliseconds > >> > >> start of joinAll! > >> > > >> The loop ends with "outside while" and than the method gets called again > >> immediately! But who calls it? I don't.... > > >> Any ideas? > > >> thanks. > > >> ---------------------------- method definition > >> -------------------------------------------------------------------------- > > >> def joinOtherOrders: Unit = { > > >> def joinAll(orders: List[LimitOrder]) = { > > >> println("start of joinAll!") > > >> var done = false > > >> var i = 0 > > >> while (!orders.isEmpty && !done) { > > >> println("i=" + i + ", " + "orders.isEmpty=" + > >> orders.isEmpty + ", " + "done=" + done) > > >> if (this.lots.is == orders(i).lots.is){ > > >> println("case-1") > > >> println("this=" + this + ", orders(i)=" + orders(i)) > > >> this.open(orders(i)) > > >> done = true > > >> } > > >> if (this.lots.is < orders(i).lots.is){ > > >> println("case-2") > > >> println("this=" + this + ", orders(i)=" + orders(i)) > > >> orders(i).reduceLots(this.lots.is) > > >> val newOrder = orders(i).cloneWith(this.lots.is) > > >> newOrder.save > > >> this.open(newOrder) > > >> println("before done=" + done) > > >> done = true > > >> println("after done=" + done) > > >> } > > >> if (this.lots.is > orders(i).lots.is){ > > >> println("case-3") > > >> println("this=" + this + ", orders(i)=" + orders(i)) > > >> this.reduceLots(orders(i).lots.is) > > >> val newOrder = this.cloneWith(orders(i).lots.is) > > >> newOrder.save > > >> newOrder.open(orders(i)) > > >> } > > >> i += 1 > > >> println("i += 1") > > >> } > > >> println("outside while") > > >> } > > >> def findLimitOrdersById: List[LimitOrder] = > > >> this.findCandidates.map(x => LimitOrderMetaObj.findAll( > > >> By(LimitOrderMetaObj.id, x)).head) > > >> joinAll(findLimitOrdersById) > > >> } > > >> ---------- Lift Output > >> ------------------------------------------------------------------------------- > > >> [INFO] Started Jetty Server > >> > >> [INFO] Starting scanner at interval of 5 seconds. > >> > >> INFO - Service request (GET) /comet_request/54834680365/y7kybsmuyv1g took > >> 64 Milliseconds > >> INFO - Service request (GET) /comet_request/85319966940/y7kybsmuyv1g took > >> 23 Milliseconds > >> INFO - Service request (GET) /favicon.ico took 86 Milliseconds > >> > >> INFO - Service request (GET) /comet_request/41521581405/y7kybsmuyv1g took > >> 48 Milliseconds > >> INFO - Service request (GET) /comet_request/93176242746/y7kybsmuyv1g took > >> 7 Milliseconds > >> INFO - Service request (GET) /favicon.ico took 38 Milliseconds > >> > >> INFO - Service request (GET) /favicon.ico took 5 Milliseconds > >> > >> INFO - Service request (GET) / took 551 Milliseconds > >> > >> INFO - Service request (GET) /comet_request/81361316835/y7kybsmuyv1g took > >> 9 Milliseconds > >> INFO - Service request (GET) /favicon.ico took 16 Milliseconds > >> > >> INFO - Service request (GET) / took 61 Milliseconds > >> > >> INFO - Service request (GET) /comet_request/76898140873/y7kybsmuyv1g took > >> 30 Milliseconds > >> INFO - Service request (GET) /comet_request/e8jesgmo10oq/cometAjax.js took > >> 14 Milliseconds > >> INFO - Service request (GET) / took 354 Milliseconds > >> > >> INFO - Service request (GET) / took 734 Milliseconds > >> > >> INFO - Service request (GET) / took 484 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 7 Milliseconds > >> > >> INFO - Service request (GET) /favicon.ico took 4 Milliseconds > >> > >> INFO - Service request (GET) /comet_request/78026241833/e8jesgmo10oq took > >> 55 Milliseconds > >> INFO - Service request (GET) /comet_request/28225538857/e8jesgmo10oq took > >> 600 Milliseconds > >> INFO - Service request (GET) /user_mgt/sign_up took 711 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 2 Milliseconds > >> > >> INFO - Service request (GET) /user_mgt/login took 38 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 2 Milliseconds > >> > >> INFO - Service request (POST) /user_mgt/login took 122 Milliseconds > >> > >> INFO - Service request (GET) / took 93 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 1 Milliseconds > >> > >> INFO - Service request (GET) /comet_request/42818301584/e8jesgmo10oq took > >> 1144 Milliseconds > >> INFO - Service request (GET) /limitorder/list took 99 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 1 Milliseconds > >> > >> INFO - Service request (GET) /limitorder/create took 77 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 2 Milliseconds > >> > >> INFO - Service request (POST) /limitorder/create took 134 Milliseconds > >> > >> start of joinAll! > >> > >> outside while > >> > >> INFO - Service request (GET) /limitorder/list took 270 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 2 Milliseconds > >> > >> INFO - Service request (GET) /limitorder/create took 51 Milliseconds > >> > >> INFO - Service request (GET) /images/ajax-loader.gif took 2 Milliseconds > >> > > ... > > read more » -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
