Hi Marius, the method is called from an Actor, everytime a new order is created. I did override def afterCreate in my LimitOrder MetaObject.
thanks. > 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. > > > -- 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.
