Re: [Lift] Issue 201 - checkbox not returning all checked

2009-11-21 Thread Ross Mellgren
On review board: http://reviewboard.liftweb.net/r/117/

I added a few doc comments to nearby stuff, let me know if there are 
inaccuracies or style changes that should be made.

-Ross

On Nov 21, 2009, at 9:37 PM, David Pollak wrote:

> Looks like I was over-eager with the HPP stuff.
> 
> Yeah, checkbox should return the entire list of things checked.
> 
> 
> 
> On Sat, Nov 21, 2009 at 9:48 AM, Ross Mellgren  wrote:
> yejun on github opened up an issue:
>> def checkbox[T](possible : Seq[T], actual : Seq[T], func : (Seq[T]) => Any, 
>> attrs : (String, String)*)
> 
>> Func will only return first element in possible when it is checked or List().
> 
> It is easily reproducible.
> 
> Based on the type of func, I agree it looks like it should give all checked 
> boxes, not just either the first checked box or an empty list. If it's 
> supposed to be for a single checkbox only, then I think the type should be 
> changed to Box[T] => Any, or at the very least a doc comment indicating that 
> it only supports a single check box.
> 
> This behavior was introduced 
> withhttp://github.com/dpp/liftweb/commit/8b2a92a58ded608a0d3a7b6ead29cd2af6302c5e.
> 
> Since there is no doc comment on the function I wanted to check what is the 
> intended behavior before making and posting a patch to either do multiple 
> checkbox or make the doc comment / type more clear and add another function 
> to do the multi behavior.
> 
> Thoughts?
> -Ross
> 
> 
> 
> --
> 
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=.
> 
> 
> 
> -- 
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Surf the harmonics
> 
> --
> 
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=.

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: H2 Database?

2009-11-21 Thread jlist9
OK that's good to know. Thanks! I'll give that a try.

On Sat, Nov 21, 2009 at 5:45 PM, philip  wrote:
> Hi, I am using H2 database without any problems so far. Just change
> the connection, use the right maven build or jars.
>
>    val driverName: String = Props.get("db.driver") openOr
>      "org.h2.Driver"
>
>    val dbUrl: String = Props.get("db.url") openOr
>    "jdbc:h2:tcp://localhost/~/databasename"
>
>
>
> On 11月22日, 上午9時30分, jlist9  wrote:
>> Hi all,
>>
>> I'm planning for a simple project that involves a small web site and 
>> database.
>> I plan to use Lift for the web part so that I can learn it. For
>> database, I'm interested
>> in H2 database for its speed and flexibility. I've seen H2 database mentioned
>> a few times on the list. I wonder if those who have used it can tell
>> me if it's a
>> good idea to start a lift project with H2 database, and if there are anything
>> to pay attention to when used with Lift? Do you use it in a standalone mode
>> or embedded mode?
>>
>> Thanks.
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Issue 201 - checkbox not returning all checked

2009-11-21 Thread David Pollak
Looks like I was over-eager with the HPP stuff.

Yeah, checkbox should return the entire list of things checked.



On Sat, Nov 21, 2009 at 9:48 AM, Ross Mellgren  wrote:

> yejun on github opened up an issue:
>
> def checkbox[T](possible : Seq[T], actual : Seq[T], func : (Seq[T]) => Any,
> attrs : (String, String)*)
>
>
> Func will only return first element in possible when it is checked or
> List().
>
>
> It is easily reproducible.
>
> Based on the type of func, I agree it looks like it should give all checked
> boxes, not just either the first checked box or an empty list. If it's
> supposed to be for a single checkbox only, then I think the type should be
> changed to Box[T] => Any, or at the very least a doc comment indicating that
> it only supports a single check box.
>
> This behavior was introduced 
> with
> http://github.com/dpp/liftweb/commit/8b2a92a58ded608a0d3a7b6ead29cd2af6302c5e
> .
>
> Since there is no doc comment on the function I wanted to check what is the
> intended behavior before making and posting a patch to either do multiple
> checkbox or make the doc comment / type more clear and add another function
> to do the multi behavior.
>
> Thoughts?
> -Ross
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>



-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: H2 Database?

2009-11-21 Thread philip
Hi, I am using H2 database without any problems so far. Just change
the connection, use the right maven build or jars.

val driverName: String = Props.get("db.driver") openOr
  "org.h2.Driver"

val dbUrl: String = Props.get("db.url") openOr
"jdbc:h2:tcp://localhost/~/databasename"



On 11月22日, 上午9時30分, jlist9  wrote:
> Hi all,
>
> I'm planning for a simple project that involves a small web site and database.
> I plan to use Lift for the web part so that I can learn it. For
> database, I'm interested
> in H2 database for its speed and flexibility. I've seen H2 database mentioned
> a few times on the list. I wonder if those who have used it can tell
> me if it's a
> good idea to start a lift project with H2 database, and if there are anything
> to pay attention to when used with Lift? Do you use it in a standalone mode
> or embedded mode?
>
> Thanks.

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] H2 Database?

2009-11-21 Thread jlist9
Hi all,

I'm planning for a simple project that involves a small web site and database.
I plan to use Lift for the web part so that I can learn it. For
database, I'm interested
in H2 database for its speed and flexibility. I've seen H2 database mentioned
a few times on the list. I wonder if those who have used it can tell
me if it's a
good idea to start a lift project with H2 database, and if there are anything
to pay attention to when used with Lift? Do you use it in a standalone mode
or embedded mode?

Thanks.

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] JPA and eager fetch

2009-11-21 Thread Warren Strange
OK - just a quick follow up.

I got a chance this afternoon to test the simple demo app that
Jean-Luc suggested. I changed the mapping on "books" to be
fetch=EAGER. and put a debug statement on the list method in
authorOps. Of course it works just fine :-)  - so the problem lies
somewhere else in my code.

I'll keep digging.

Warren



On Fri, Nov 20, 2009 at 12:48 PM, Warren Strange
 wrote:
> Jim and Jean-Luc - thanks so much for your offer of assistance.
>
> It might take me a while to put together a buildable sample. I'm just
> learning lift and scala right now. This is not a critical problem for
> me, and I can work around it. When I have something I will post a
> follow up.
>
> Warren
>
>
>
> On Fri, Nov 20, 2009 at 12:26 PM, Jean-Luc  wrote:
>> Your mapping looks like normal.
>> If you provide a buildable project, either tgz or link to github.com, I may
>> be able to reproduce your problem and help you identify the issue.
>>
>> Jean-Luc
>>
>> PS : If you need a git project to fork, I just prepared
>> http://github.com/jlcanela/scalajpademo (based on the maven scalajpa
>> archetype)
>>
>>
>> 2009/11/20 wstrange 
>>>
>>>
>>> Newbie Lift / JPA alert!
>>>
>>> I am sure I am doing something dumb here, but I can't quite figure it
>>> out. I have a JPA project (modelled after the lift JPA demo app).
>>>
>>> I have an object with a one-to-many association, and I want to eager
>>> fetch the collection.  It is declared like :
>>>
>>> �...@onetomany(){ val targetEntity = classOf[OpenIdUser], val cascade =
>>> Array(CascadeType.ALL), val fetch=FetchType.EAGER}
>>>  var openIds : _root_.java.util.Set[OpenIdUser] = new
>>> _root_.java.util.HashSet[OpenIdUser]()
>>>
>>>
>>> In my spa persistence unit, eager fetching works fine from the unit
>>> test. The unit test uses plain old emf factory instances.
>>>
>>> However, from my web application (run with jetty:run) and  using
>>> Model.createNamedQuery, or Model.find, only the parent object is
>>> fetched. The collection is not.
>>>
>>>
>>> I gather this has something to do with the way that Model works? Or
>>> are my annotations being ignored when they are packed in a .jar file?
>>>
>>> Clues would be appreciated.
>>>
>>> Thanks
>>>
>>> Warren
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "Lift" group.
>>> To post to this group, send email to lift...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> liftweb+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/liftweb?hl=.
>>>
>>>
>>
>>
>>
>> --
>> Jean-Luc Canela
>> jlcane...@gmail.com
>>
>> --
>>
>> You received this message because you are subscribed to the Google Groups
>> "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> liftweb+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=.
>>
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] NPE in S.?! if used outside a request

2009-11-21 Thread Ross Mellgren
Hmm, you raise an interesting point. So I guess the situation is more 
variegated:

1) If you have a locale calculator that works per-request and does not have an 
app default, then it is definitely incorrect to call S.? out of a request 
context,
2) but if you have one that works app-wide then it should work -- but doesn't, 
unless you call S.init or one of those by yourself,
3) so my proposed error is not good.

It would be nice to catch uses of S.? outside of a request context when your 
intended behavior is that you only have per-request locales, so I guess if that 
is the desire then one should make their locale calculator log the error text, 
and the change to lift should be something more like:

   def resourceBundles: List[ResourceBundle] = {
-_resBundle.value match {
-  case Nil => {
+_resBundle.box match {
+  case Full(bundles) if !bundles.isEmpty => bundles
+  case _ => {
 _resBundle.set(LiftRules.resourceNames.flatMap(name => tryo(
   List(ResourceBundle.getBundle(name, locale))
   ).openOr(
   NamedPF.applyBox((name, locale), 
LiftRules.resourceBundleFactories.toList).map(List(_)) openOr Nil
   )))
 _resBundle.value
   }
-  case bundles => bundles
 }
   }

That is, if the _resBundle ThreadGlobal has not been initialized yet, or it's 
been initialized with the empty list, then do resource bundle loading. If it 
has been initialized with a non-empty list then use that.

I don't think this should interact badly with S.init, since S.init uses 
_resBundle.doWith(Nil) ... which will both overwrite any loaded "app-level" 
bundles with the empty list, but also restore them upon completion of the S 
scope.

-Ross
 

On Nov 21, 2009, at 6:15 PM, Timothy Perrett wrote:

> I agree that getting an NPE is less than desirable!
> 
> I'm not sure things are wrong per-say; the defualt locale calculator  
> has an app wide setting and there is nothing to say that that a user  
> must implement their locale calculator in a particular way... This is  
> one of the great things about lift ;-)
> 
> So the issue here seems to be the lazy / eager evaluation of bald  
> rather than localization out of request context? I'm all for getting  
> rid of these NPE scenarios though :-)
> 
> Cheers, Tim
> 
> Sent from my iPhone
> 
> On 22 Nov 2009, at 00:02, Ross Mellgren  wrote:
> 
>> It's being called to provide the link text for menus during sitemap  
>> creation at boot time, as well as during class initialization time  
>> to make some vals that contain error text. I believe initializing  
>> these at Boot time to be incorrect since the correct locale cannot  
>> be known until a request is made (unless you force one locale for  
>> the entire site, I guess), but the NPE seems uglier than providing  
>> an error log explaining the problem.
>> 
>> -Ross
>> 
>> 
>> On Nov 21, 2009, at 5:57 PM, Timothy Perrett wrote:
>> 
>>> Ross,
>>> 
>>> Where in your code are you calling this method? What I'd the context
>>> that puts it outside of a request?
>>> 
>>> Cheers, Tim
>>> 
>>> Sent from my iPhone
>>> 
>>> On 21 Nov 2009, at 23:03, Ross Mellgren  wrote:
>>> 
 I'm poking around the LiftTicket codebase, and currently it suffers
 from an NPE on Boot:
 
 ERROR - Failed to Boot
 java.lang.ExceptionInInitializerError
 at org.liftticket.liftticket.snippet.UserAdmin$.menus
 (UserAdmin.scala:41)
 at bootstrap.liftweb.Boot.buildMenus(Boot.scala:74)
 at bootstrap.liftweb.Boot.boot(Boot.scala:67)
 ...
 Caused by: java.lang.NullPointerException
 at net.liftweb.http.S$.$qmark$bang(S.scala:675)
 at net.liftweb.http.S$.$qmark(S.scala:636)
 at org.liftticket.liftticket.snippet.RoleAdmin$.
 (RoleAdmin.scala:94)
 at org.liftticket.liftticket.snippet.RoleAdmin$.
 (RoleAdmin.scala)
 ... 57 more
 
 This is apparently due to S._resBundle being null because S.init has
 not yet been entered, so S._resBundle.doWith(Nil) is not in the
 enclosing scope, and so:
 
 private def ?!(str: String, resBundle: List[ResourceBundle]):
 String = resBundle.flatMap(r => tryo(r.getObject(str) match {
 
 Blows up with NPE. resBundle is passed in from S.? by calling
 S.resourceBundles, which is defined thus:
 
 def resourceBundles: List[ResourceBundle] = {
 _resBundle.value match {
   case Nil => {
  // loads the resource bundles here
   }
   case bundles => bundles
 }
 }
 
 I don't think the resource bundles can be reasonably loaded outside
 a request since no locale can be computed -- the call site should
 lazily compute the menu text at request time using LinkText rather
 than eagerly using S.?, but the error case is not helpful. What I
 propose is changing S.resourceBundles like this:
 
 def resourceBundles: List[ResourceBundle] = {
 _resBundle.box match {
   case Full(Nil) => {
  // same cod

Re: [Lift] NPE in S.?! if used outside a request

2009-11-21 Thread Timothy Perrett
I agree that getting an NPE is less than desirable!

I'm not sure things are wrong per-say; the defualt locale calculator  
has an app wide setting and there is nothing to say that that a user  
must implement their locale calculator in a particular way... This is  
one of the great things about lift ;-)

So the issue here seems to be the lazy / eager evaluation of bald  
rather than localization out of request context? I'm all for getting  
rid of these NPE scenarios though :-)

Cheers, Tim

Sent from my iPhone

On 22 Nov 2009, at 00:02, Ross Mellgren  wrote:

> It's being called to provide the link text for menus during sitemap  
> creation at boot time, as well as during class initialization time  
> to make some vals that contain error text. I believe initializing  
> these at Boot time to be incorrect since the correct locale cannot  
> be known until a request is made (unless you force one locale for  
> the entire site, I guess), but the NPE seems uglier than providing  
> an error log explaining the problem.
>
> -Ross
>
>
> On Nov 21, 2009, at 5:57 PM, Timothy Perrett wrote:
>
>> Ross,
>>
>> Where in your code are you calling this method? What I'd the context
>> that puts it outside of a request?
>>
>> Cheers, Tim
>>
>> Sent from my iPhone
>>
>> On 21 Nov 2009, at 23:03, Ross Mellgren  wrote:
>>
>>> I'm poking around the LiftTicket codebase, and currently it suffers
>>> from an NPE on Boot:
>>>
>>> ERROR - Failed to Boot
>>> java.lang.ExceptionInInitializerError
>>>  at org.liftticket.liftticket.snippet.UserAdmin$.menus
>>> (UserAdmin.scala:41)
>>>  at bootstrap.liftweb.Boot.buildMenus(Boot.scala:74)
>>>  at bootstrap.liftweb.Boot.boot(Boot.scala:67)
>>> ...
>>> Caused by: java.lang.NullPointerException
>>>  at net.liftweb.http.S$.$qmark$bang(S.scala:675)
>>>  at net.liftweb.http.S$.$qmark(S.scala:636)
>>>  at org.liftticket.liftticket.snippet.RoleAdmin$.
>>> (RoleAdmin.scala:94)
>>>  at org.liftticket.liftticket.snippet.RoleAdmin$.
>>> (RoleAdmin.scala)
>>>  ... 57 more
>>>
>>> This is apparently due to S._resBundle being null because S.init has
>>> not yet been entered, so S._resBundle.doWith(Nil) is not in the
>>> enclosing scope, and so:
>>>
>>> private def ?!(str: String, resBundle: List[ResourceBundle]):
>>> String = resBundle.flatMap(r => tryo(r.getObject(str) match {
>>>
>>> Blows up with NPE. resBundle is passed in from S.? by calling
>>> S.resourceBundles, which is defined thus:
>>>
>>> def resourceBundles: List[ResourceBundle] = {
>>>  _resBundle.value match {
>>>case Nil => {
>>>   // loads the resource bundles here
>>>}
>>>case bundles => bundles
>>>  }
>>> }
>>>
>>> I don't think the resource bundles can be reasonably loaded outside
>>> a request since no locale can be computed -- the call site should
>>> lazily compute the menu text at request time using LinkText rather
>>> than eagerly using S.?, but the error case is not helpful. What I
>>> propose is changing S.resourceBundles like this:
>>>
>>> def resourceBundles: List[ResourceBundle] = {
>>>  _resBundle.box match {
>>>case Full(Nil) => {
>>>   // same code
>>>}
>>>case Full(bundles) => bundles
>>>case _ => {
>>>  Log.error("Resource bundles cannot be loaded outside of a
>>> request scope since the current locale cannot be computed. Did you
>>> use S.? during Boot time?")
>>>  Nil
>>>}
>>>  }
>>> }
>>>
>>> -Ross
>>>
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google
>>> Groups "Lift" group.
>>> To post to this group, send email to lift...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> liftweb+unsubscr...@googlegroups.com
>>> .
>>> For more options, visit this group at 
>>> http://groups.google.com/group/liftweb?hl=
>>> .
>>>
>>>
>>>
>>
>> --
>>
>> You received this message because you are subscribed to the Google  
>> Groups "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> liftweb+unsubscr...@googlegroups.com 
>> .
>> For more options, visit this group at 
>> http://groups.google.com/group/liftweb?hl= 
>> .
>>
>>
>
> --
>
> You received this message because you are subscribed to the Google  
> Groups "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com 
> .
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl= 
> .
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] NPE in S.?! if used outside a request

2009-11-21 Thread Ross Mellgren
Oops I misspoke, the strToLinkText conversion is already lazy, so it's not the 
menu text, just the message. Here is the diff:

@@ -91,7 +91,7 @@ object RoleAdmin {
 case _ => Text(S.?("No instance to delete"))
   }
   
-  val missingTemplate = Text(S.?("Missing template"))
+  def missingTemplate = Text(S.?("Missing template"))
   
   def menus = {
 import Loc._

-Ross


On Nov 21, 2009, at 6:02 PM, Ross Mellgren wrote:

> It's being called to provide the link text for menus during sitemap creation 
> at boot time, as well as during class initialization time to make some vals 
> that contain error text. I believe initializing these at Boot time to be 
> incorrect since the correct locale cannot be known until a request is made 
> (unless you force one locale for the entire site, I guess), but the NPE seems 
> uglier than providing an error log explaining the problem.
> 
> -Ross
> 
> 
> On Nov 21, 2009, at 5:57 PM, Timothy Perrett wrote:
> 
>> Ross,
>> 
>> Where in your code are you calling this method? What I'd the context  
>> that puts it outside of a request?
>> 
>> Cheers, Tim
>> 
>> Sent from my iPhone
>> 
>> On 21 Nov 2009, at 23:03, Ross Mellgren  wrote:
>> 
>>> I'm poking around the LiftTicket codebase, and currently it suffers  
>>> from an NPE on Boot:
>>> 
>>> ERROR - Failed to Boot
>>> java.lang.ExceptionInInitializerError
>>>  at org.liftticket.liftticket.snippet.UserAdmin$.menus 
>>> (UserAdmin.scala:41)
>>>  at bootstrap.liftweb.Boot.buildMenus(Boot.scala:74)
>>>  at bootstrap.liftweb.Boot.boot(Boot.scala:67)
>>> ...
>>> Caused by: java.lang.NullPointerException
>>>  at net.liftweb.http.S$.$qmark$bang(S.scala:675)
>>>  at net.liftweb.http.S$.$qmark(S.scala:636)
>>>  at org.liftticket.liftticket.snippet.RoleAdmin$. 
>>> (RoleAdmin.scala:94)
>>>  at org.liftticket.liftticket.snippet.RoleAdmin$. 
>>> (RoleAdmin.scala)
>>>  ... 57 more
>>> 
>>> This is apparently due to S._resBundle being null because S.init has  
>>> not yet been entered, so S._resBundle.doWith(Nil) is not in the  
>>> enclosing scope, and so:
>>> 
>>> private def ?!(str: String, resBundle: List[ResourceBundle]):  
>>> String = resBundle.flatMap(r => tryo(r.getObject(str) match {
>>> 
>>> Blows up with NPE. resBundle is passed in from S.? by calling  
>>> S.resourceBundles, which is defined thus:
>>> 
>>> def resourceBundles: List[ResourceBundle] = {
>>>  _resBundle.value match {
>>>case Nil => {
>>>   // loads the resource bundles here
>>>}
>>>case bundles => bundles
>>>  }
>>> }
>>> 
>>> I don't think the resource bundles can be reasonably loaded outside  
>>> a request since no locale can be computed -- the call site should  
>>> lazily compute the menu text at request time using LinkText rather  
>>> than eagerly using S.?, but the error case is not helpful. What I  
>>> propose is changing S.resourceBundles like this:
>>> 
>>> def resourceBundles: List[ResourceBundle] = {
>>>  _resBundle.box match {
>>>case Full(Nil) => {
>>>   // same code
>>>}
>>>case Full(bundles) => bundles
>>>case _ => {
>>>  Log.error("Resource bundles cannot be loaded outside of a  
>>> request scope since the current locale cannot be computed. Did you  
>>> use S.? during Boot time?")
>>>  Nil
>>>}
>>>  }
>>> }
>>> 
>>> -Ross
>>> 
>>> 
>>> --
>>> 
>>> You received this message because you are subscribed to the Google  
>>> Groups "Lift" group.
>>> To post to this group, send email to lift...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> liftweb+unsubscr...@googlegroups.com 
>>> .
>>> For more options, visit this group at 
>>> http://groups.google.com/group/liftweb?hl= 
>>> .
>>> 
>>> 
>>> 
>> 
>> --
>> 
>> You received this message because you are subscribed to the Google Groups 
>> "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> liftweb+unsubscr...@googlegroups.com.
>> For more options, visit this group at 
>> http://groups.google.com/group/liftweb?hl=.
>> 
>> 
> 

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] NPE in S.?! if used outside a request

2009-11-21 Thread Ross Mellgren
It's being called to provide the link text for menus during sitemap creation at 
boot time, as well as during class initialization time to make some vals that 
contain error text. I believe initializing these at Boot time to be incorrect 
since the correct locale cannot be known until a request is made (unless you 
force one locale for the entire site, I guess), but the NPE seems uglier than 
providing an error log explaining the problem.

-Ross


On Nov 21, 2009, at 5:57 PM, Timothy Perrett wrote:

> Ross,
> 
> Where in your code are you calling this method? What I'd the context  
> that puts it outside of a request?
> 
> Cheers, Tim
> 
> Sent from my iPhone
> 
> On 21 Nov 2009, at 23:03, Ross Mellgren  wrote:
> 
>> I'm poking around the LiftTicket codebase, and currently it suffers  
>> from an NPE on Boot:
>> 
>> ERROR - Failed to Boot
>> java.lang.ExceptionInInitializerError
>>   at org.liftticket.liftticket.snippet.UserAdmin$.menus 
>> (UserAdmin.scala:41)
>>   at bootstrap.liftweb.Boot.buildMenus(Boot.scala:74)
>>   at bootstrap.liftweb.Boot.boot(Boot.scala:67)
>> ...
>> Caused by: java.lang.NullPointerException
>>   at net.liftweb.http.S$.$qmark$bang(S.scala:675)
>>   at net.liftweb.http.S$.$qmark(S.scala:636)
>>   at org.liftticket.liftticket.snippet.RoleAdmin$. 
>> (RoleAdmin.scala:94)
>>   at org.liftticket.liftticket.snippet.RoleAdmin$. 
>> (RoleAdmin.scala)
>>   ... 57 more
>> 
>> This is apparently due to S._resBundle being null because S.init has  
>> not yet been entered, so S._resBundle.doWith(Nil) is not in the  
>> enclosing scope, and so:
>> 
>> private def ?!(str: String, resBundle: List[ResourceBundle]):  
>> String = resBundle.flatMap(r => tryo(r.getObject(str) match {
>> 
>> Blows up with NPE. resBundle is passed in from S.? by calling  
>> S.resourceBundles, which is defined thus:
>> 
>> def resourceBundles: List[ResourceBundle] = {
>>   _resBundle.value match {
>> case Nil => {
>>// loads the resource bundles here
>> }
>> case bundles => bundles
>>   }
>> }
>> 
>> I don't think the resource bundles can be reasonably loaded outside  
>> a request since no locale can be computed -- the call site should  
>> lazily compute the menu text at request time using LinkText rather  
>> than eagerly using S.?, but the error case is not helpful. What I  
>> propose is changing S.resourceBundles like this:
>> 
>> def resourceBundles: List[ResourceBundle] = {
>>   _resBundle.box match {
>> case Full(Nil) => {
>>// same code
>> }
>> case Full(bundles) => bundles
>> case _ => {
>>   Log.error("Resource bundles cannot be loaded outside of a  
>> request scope since the current locale cannot be computed. Did you  
>> use S.? during Boot time?")
>>   Nil
>> }
>>   }
>> }
>> 
>> -Ross
>> 
>> 
>> --
>> 
>> You received this message because you are subscribed to the Google  
>> Groups "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to 
>> liftweb+unsubscr...@googlegroups.com 
>> .
>> For more options, visit this group at 
>> http://groups.google.com/group/liftweb?hl= 
>> .
>> 
>> 
>> 
> 
> --
> 
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=.
> 
> 

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] NPE in S.?! if used outside a request

2009-11-21 Thread Timothy Perrett
Ross,

Where in your code are you calling this method? What I'd the context  
that puts it outside of a request?

Cheers, Tim

Sent from my iPhone

On 21 Nov 2009, at 23:03, Ross Mellgren  wrote:

> I'm poking around the LiftTicket codebase, and currently it suffers  
> from an NPE on Boot:
>
> ERROR - Failed to Boot
> java.lang.ExceptionInInitializerError
>at org.liftticket.liftticket.snippet.UserAdmin$.menus 
> (UserAdmin.scala:41)
>at bootstrap.liftweb.Boot.buildMenus(Boot.scala:74)
>at bootstrap.liftweb.Boot.boot(Boot.scala:67)
> ...
> Caused by: java.lang.NullPointerException
>at net.liftweb.http.S$.$qmark$bang(S.scala:675)
>at net.liftweb.http.S$.$qmark(S.scala:636)
>at org.liftticket.liftticket.snippet.RoleAdmin$. 
> (RoleAdmin.scala:94)
>at org.liftticket.liftticket.snippet.RoleAdmin$. 
> (RoleAdmin.scala)
>... 57 more
>
> This is apparently due to S._resBundle being null because S.init has  
> not yet been entered, so S._resBundle.doWith(Nil) is not in the  
> enclosing scope, and so:
>
>  private def ?!(str: String, resBundle: List[ResourceBundle]):  
> String = resBundle.flatMap(r => tryo(r.getObject(str) match {
>
> Blows up with NPE. resBundle is passed in from S.? by calling  
> S.resourceBundles, which is defined thus:
>
>  def resourceBundles: List[ResourceBundle] = {
>_resBundle.value match {
>  case Nil => {
> // loads the resource bundles here
>  }
>  case bundles => bundles
>}
>  }
>
> I don't think the resource bundles can be reasonably loaded outside  
> a request since no locale can be computed -- the call site should  
> lazily compute the menu text at request time using LinkText rather  
> than eagerly using S.?, but the error case is not helpful. What I  
> propose is changing S.resourceBundles like this:
>
>  def resourceBundles: List[ResourceBundle] = {
>_resBundle.box match {
>  case Full(Nil) => {
> // same code
>  }
>  case Full(bundles) => bundles
>  case _ => {
>Log.error("Resource bundles cannot be loaded outside of a  
> request scope since the current locale cannot be computed. Did you  
> use S.? during Boot time?")
>Nil
>  }
>}
>  }
>
> -Ross
>
>
> --
>
> You received this message because you are subscribed to the Google  
> Groups "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com 
> .
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl= 
> .
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: Call it Lift 2.0

2009-11-21 Thread Josh Suereth
I think eclipse and maven might be two of the only projects following that
convention (besides others in the eclipse ecosystem).  The question in my
mind is what is the popular version number convention in the Scala
ecosystem.

- Josh

On Sat, Nov 21, 2009 at 9:59 AM, Heiko Seeberger <
seeber...@weiglewilczek.com> wrote:

> Hi,
>
> Heiko, can you find the stated version number policies of 3 or 4 other well
>> regarded open source projects?  That will allow us to synthesize the best of
>> what others have done into a coherent policy for Lift.
>
>
> Take a look at the recommended OSGi version policy:
> http://www.aqute.biz/Code/XBnd
> Then take a look at Eclipse (pretty well known, eh?):
> http://wiki.eclipse.org/index.php/Version_Numbering
> Both use a major increment (1.x -> 2) to show breaking changes in API, a
> minor increment (1.1.x -> 1.2) to show non-breaking changes in API and a
> micro increment to show "internal" (no class name changes, no method
> signature changes, ...) changes (e.g. bug fixes in the implementation).
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] NPE in S.?! if used outside a request

2009-11-21 Thread Ross Mellgren
I'm poking around the LiftTicket codebase, and currently it suffers from an NPE 
on Boot:

ERROR - Failed to Boot
java.lang.ExceptionInInitializerError
at 
org.liftticket.liftticket.snippet.UserAdmin$.menus(UserAdmin.scala:41)
at bootstrap.liftweb.Boot.buildMenus(Boot.scala:74)
at bootstrap.liftweb.Boot.boot(Boot.scala:67)
...
Caused by: java.lang.NullPointerException
at net.liftweb.http.S$.$qmark$bang(S.scala:675)
at net.liftweb.http.S$.$qmark(S.scala:636)
at 
org.liftticket.liftticket.snippet.RoleAdmin$.(RoleAdmin.scala:94)
at 
org.liftticket.liftticket.snippet.RoleAdmin$.(RoleAdmin.scala)
... 57 more

This is apparently due to S._resBundle being null because S.init has not yet 
been entered, so S._resBundle.doWith(Nil) is not in the enclosing scope, and so:

  private def ?!(str: String, resBundle: List[ResourceBundle]): String = 
resBundle.flatMap(r => tryo(r.getObject(str) match {

Blows up with NPE. resBundle is passed in from S.? by calling 
S.resourceBundles, which is defined thus:

  def resourceBundles: List[ResourceBundle] = {
_resBundle.value match {
  case Nil => {
 // loads the resource bundles here
  }
  case bundles => bundles
}
  }

I don't think the resource bundles can be reasonably loaded outside a request 
since no locale can be computed -- the call site should lazily compute the menu 
text at request time using LinkText rather than eagerly using S.?, but the 
error case is not helpful. What I propose is changing S.resourceBundles like 
this:

  def resourceBundles: List[ResourceBundle] = {
_resBundle.box match {
  case Full(Nil) => {
 // same code
  }
  case Full(bundles) => bundles
  case _ => {
Log.error("Resource bundles cannot be loaded outside of a request scope 
since the current locale cannot be computed. Did you use S.? during Boot time?")
Nil
  }
}
  }

-Ross


--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Change to support dynamic top level menu items

2009-11-21 Thread Ross Mellgren
In the recent thread, a couple people asked for the ability to create dynamic 
menu items per request from the database. David suggested 
Loc.supplimentalKidMenuItems which works fine for dynamic children of a static 
menu, but doesn't support the ability to make the top level menu dynamic.

Menu has a method called "makeMenuItem" which gives a Box of MenuItem. What 
about a new method makeMenuItems that gives a possible plurality of MenuItems 
whose default implementation deferred to the existing makeMenuItem in the case 
where it's not overridden? I made this change to my local copy of lift and it 
seems to work alright.

Example Menu:

case class DynMenu() extends Menu(Loc("dynmenu", Link(List("dynmenu"), true, 
"/dynmenu"), "Dynamic Menu")) {
override def makeMenuItems(path: List[Loc[_]]): Iterable[MenuItem] =
DynMenuItem.findAll.map(dmi => {
MenuItem(Text(dmi.label.is), Text(dmi.link.is), Nil, false, false, 
Nil)
})
}

That is, a Menu can generate 0 or more MenuItems when the menu is being 
generated. The disadvantage I see is similar to the one with 
supplimentalKidMenuItems -- that is, you have to manually compute the 
attributes of MenuItem such as current. However, it does give you the full 
power to make whatever kind of menu items you want.

I looked briefly at seeing if it would be feasible to use a function Box[Req] 
=> SiteMap on LiftRules, but I think the RewritePF auto detection thing in 
LiftRules.setSiteMap prevents this from being the right thing. 

The change to lift-webkit:

diff --git 
a/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/Menu.scala 
b/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/Menu.scala
index d33d1dc..79194f5 100644
--- a/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/Menu.scala
+++ b/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/Menu.scala
@@ -61,8 +61,10 @@ case class Menu(loc: Loc[_], kids: Menu*) extends HasKids {
   }
   // def buildChildLine: List[MenuItem] = kids.toList.flatMap(m => 
m.loc.buildItem(Nil, false, false))
 
+  def makeMenuItems(path: List[Loc[_]]): Iterable[MenuItem] = 
makeMenuItem(path)
+
   def makeMenuItem(path: List[Loc[_]]): Box[MenuItem] =
-  loc.buildItem(loc.buildKidMenuItems(kids), _lastInPath(path), _inPath(path))
+loc.buildItem(loc.buildKidMenuItems(kids), _lastInPath(path), 
_inPath(path))
 
   private def _inPath(in: List[Loc[_]]): Boolean = in match {
 case Nil => false
diff --git 
a/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/SiteMap.scala 
b/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/SiteMap.scala
index 7939938..f8fa307 100644
--- a/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/SiteMap.scala
+++ b/lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap/SiteMap.scala
@@ -66,7 +66,7 @@ case class SiteMap(globalParamFuncs: 
List[PartialFunction[Box[Req], Loc.AnyLocPa
   case Full(loc) => loc.breadCrumbs
   case _ => Nil
 }
-CompleteMenu(kids.flatMap(_.makeMenuItem(path)))
+CompleteMenu(kids.flatMap(_.makeMenuItems(path)))
   }
 }
 
Thoughts?

-Ross

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: Menu generated from database?

2009-11-21 Thread Ross Mellgren
Yeah, Full(()) makes sense for 1.1-SNAPSHOT which is what my code was using, 
and Full(NullLocParams) makes sense for M7 and earlier. I apologize; I should 
have asked what version you were developing against.

I think that you are correct with regard to the top level menu having to be 
static -- looking at it it seems like only child menu items can be dynamic. 
Maybe you can have one top level Menu and then use a custom Menu snippet that 
skips the top level? Someone with more experience doing deep SiteMap stuff 
hopefully can chime in.

-Ross

On Nov 21, 2009, at 8:51 AM, philip wrote:

> Got my code working so it generates a menu.
> 
> Looked at WikiLoc in the Wiki Liftweb example, it has:
> def defaultParams = Full(WikiLoc("HomePage", false))
> So I guessed that it needs to have something with a Full
> 
> Changed it to:
> override val defaultParams = Full(NullLocParams)
> 
> So now my code is
> 
> case class DynMenuLoc (
>override val name: String,
>override val link: Link[NullLocParams],
>override val text: LinkText[NullLocParams],
>_params: LocParam* ) extends Loc[NullLocParams] {
>override val params = _params.toList
>// had to comment this out: override val defaultValue = Full(())
>// not sure what to set this to
>override val defaultParams = Full(NullLocParams)
> 
>override def supplimentalKidMenuItems:List
> [net.liftweb.sitemap.MenuItem] = {
>  Log.info("kid menu function called")
>  var result:ListBuffer[net.liftweb.sitemap.MenuItem] = new
> ListBuffer[net.liftweb.sitemap.MenuItem]
>  result + (new MenuItem(Text("A"), Text("B"), Nil, false,
> false, Nil))
>  result + (new MenuItem(Text("C"), Text("D"), Nil, false,
> false, Nil))
>  result.toList ::: super.supplimentalKidMenuItems
>}
> }
> 
> Thats great, but still there is a problem of the top level menu.
> 
> On 11月21日, 下午2時56分, Ross Mellgren  wrote:
>> Here's an example of doing what David decribed (at least, as I understood it 
>> ;-) ):
>> 
>> // In Boot.scala
>>// Build SiteMap
>>val entries =  ... ::
>>Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, 
>> "/dynamic"), "Dynamic Menu")) ::
>>...
>> 
>> case class DynMenuLoc (
>>override val name: String,
>>override val link: Link[Unit],
>>override val text: LinkText[Unit],
>>_params: LocParam[Unit]*
>> ) extends Loc[Unit] {
>>override val params = _params.toList
>>override val defaultValue = Full(())
>> 
>>override def supplimentalKidMenuItems = {
>>DynMenuItem.findAll.map(dmi => {
>>MenuItem(Text(dmi.label.is), Text(dmi.link.is), Nil, false, 
>> false, Nil)
>>}) ::: super.supplimentalKidMenuItems
>>}
>> 
>> }
>> 
>> object DynMenuItem extends DynMenuItem with LongKeyedMetaMapper[DynMenuItem] 
>> with CRUDify[Long, DynMenuItem]
>> 
>> class DynMenuItem extends LongKeyedMapper[DynMenuItem] with IdPK {
>>def getSingleton = DynMenuItem
>> 
>>object label extends MappedString(this, 32)
>>object link extends MappedString(this, 255)
>> 
>> }
>> 
>> I can post the full example code on github if it'd help, also.
>> 
>> -Ross
>> 
>> On Nov 20, 2009, at 10:37 PM, philip wrote:
>> 
>> 
>> 
>>> Hi David,
>> 
>>> Really looking forward to this - I spent a day on this with absolute
>>> failure.
>> 
>>> Philip
>> 
>>> On 11月20日, 上午1時56分, David Pollak 
>>> wrote:
 Philip & list,
>> 
 I've had it on my to-do list to write up an example... and haven't... 
 but...
>> 
 In your Loc, you can override def supplimentalKidMenuItems and dynamically
 generate kid menu items.
>> 
 I'll try to get to an example but not today... sorry :-(
>> 
 Thanks,
>> 
 David
>> 
 On Thu, Nov 19, 2009 at 12:35 AM, philip  wrote:
>> 
> Hi David,
>> 
> Since I am programming a CMS for my client, I need my lift menu to
> come from the database.
>> 
> LiftRules.setSiteMap(SiteMap(MenuInfo.menu :_*))
>> 
> def menu: List[Menu] =
> {
>  Log.info("Menu called")
> ...
>> 
> It seems my menu function only gets called once, on subsquent calls I
> do not get any log message.
>> 
> Maybe I have to subclass SiteMap?
>> 
> Can you point me in the right direction?
>> 
> Thanks, Philip
>> 
> On 10月21日, 下午11時20分, David Pollak 
> wrote:
>> I owe the list example code to do this... maybe tomorrow.
>> 
>> On Wed, Oct 21, 2009 at 6:26 AM, philip  wrote:
>> 
>>> Hi,
>> 
>>> How can I get a Liftweb menu to be generated from database content?
>> 
>>> Alternatively, can the menu come from a XML datasource? could I load/
>>> serialize from that?
>>> Could it change dynamically at any time?
>> 
>>> Thanks, Philip
>> 
>> --
>> Lift, the simply functional web frameworkhttp://liftweb.net
>> Beginning Scalahttp://www.apress.com/book/view/1430219890
>> Follow me:http://twitter.com/dpp
>> Surf the harmonics
>> 
> --
>

Re: [Lift] Basic view question

2009-11-21 Thread David Pollak
Oscar,

Please use Lift 1.1.  You'll get a much more information error message.

Basically, you need to add an entry to SiteMap.

Thanks,

David

On Sat, Nov 21, 2009 at 9:32 AM, Oscar Picasso wrote:

> Hi,
>
> I just created a simple project with the maven archetype and tried to add a
> view as explained in the "The Definitive Guide to Lift".
>
> package org.opicasso.two.view
>>
>> import net.liftweb.http.LiftView
>> import scala.xml.NodeSeq
>>
>> class SomeView extends LiftView {
>>
>> override def dispatch = {
>>   case "show" => doShow _
>> }
>>
>> def doShow () : NodeSeq = {
>>   
>>   hello
>>  
>> }
>> }
>>
>
> The Boot class was not changed:
>
>> package bootstrap.liftweb
>>
>> import _root_.net.liftweb.util._
>> import _root_.net.liftweb.http._
>> import _root_.net.liftweb.sitemap._
>> import _root_.net.liftweb.sitemap.Loc._
>> import Helpers._
>>
>> /**
>>   * A class that's instantiated early and run.  It allows the application
>>   * to modify lift's environment
>>   */
>> class Boot {
>>   def boot {
>> // where to search snippet
>> LiftRules.addToPackages("org.opicasso.two")
>>
>> // Build SiteMap
>> val entries = Menu(Loc("Home", List("index"), "Home")) :: Nil
>> LiftRules.setSiteMap(SiteMap(entries:_*))
>>   }
>> }
>>
>
> However when trying
> http://localhost:8080/SomeView/show
> I get
> The Requested URL /SomeView/show was not found on this server
>
> Is there something else that needs to be done? Is the url correct?
>
> Oscar
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>



-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Devoxx 2009

2009-11-21 Thread Jonas Bonér
Amazing. Great news. Good job guys. Wish I was there.

2009/11/21 Timothy Perrett :
> Folks,
>
> I got back from Devoxx late last night and thought I would just post
> some thoughts and experiences from the event.
>
> Firstly, there was an awesome interest in Scala and Lift - my talk was
> really busy (~550 people) and the general Scala Enthusiast BOF right
> afterwards was packed.
>
> Myself, Bill Venners, Viktor Klang and Frank Sommers pretty much
> represented a cross-section of Scala projects at the BOF and
> throughout the whole week we were pretty much swamped with Scala
> questions and interest. Lift was getting a lot of attention and was
> even used by Oracle in the Devoxx keynote!!!
>
> Another event of note was when myself, viktor and john were sat in the
> hotel reception hacking on Scala and showing it so some interested
> people at around 10pm, the JavaPosse turned up and were like "wow, we
> appear to have stumbled upon the Scala geeks" - they then proceeded to
> join the hackfest which was über cool.
>
> All in all, a very very successful week and I think the above
> mentioned group did an amazing job of raising the profile of Scala
> even further; moreover, some of the Lift discussions were brilliant -
> appeared to be a lot of people wanting to convert from Spring bean
> hell ;-)
>
> We as a team should be made up with the awesome framework that has
> been created here -- the next 12 months I believe will be somewhat of
> a Scala / Lift golden age where we have the opportunity to really make
> our mark on the industry.
>
> Congratulations everyone!
>
> Cheers, Tim
>
> PS: If you were at Devoxx and came to my talk, thanks for
> attending :-)
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to 
> liftweb+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/liftweb?hl=.
>
>
>



-- 
Jonas Bonér

twitter: @jboner
blog:http://jonasboner.com
work:   http://scalablesolutions.se
code:   http://github.com/jboner
code:   http://akkasource.org
also:http://letitcrash.com

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Issue 201 - checkbox not returning all checked

2009-11-21 Thread Ross Mellgren
yejun on github opened up an issue:
> def checkbox[T](possible : Seq[T], actual : Seq[T], func : (Seq[T])  
> => Any, attrs : (String, String)*)

> Func will only return first element in possible when it is checked  
> or List().

It is easily reproducible.

Based on the type of func, I agree it looks like it should give all  
checked boxes, not just either the first checked box or an empty list.  
If it's supposed to be for a single checkbox only, then I think the  
type should be changed to Box[T] => Any, or at the very least a doc  
comment indicating that it only supports a single check box.

This behavior was introduced withhttp://github.com/dpp/liftweb/commit/ 
8b2a92a58ded608a0d3a7b6ead29cd2af6302c5e.

Since there is no doc comment on the function I wanted to check what  
is the intended behavior before making and posting a patch to either  
do multiple checkbox or make the doc comment / type more clear and add  
another function to do the multi behavior.

Thoughts?
-Ross


--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Basic view question

2009-11-21 Thread Oscar Picasso
Hi,

I just created a simple project with the maven archetype and tried to add a
view as explained in the "The Definitive Guide to Lift".

package org.opicasso.two.view
>
> import net.liftweb.http.LiftView
> import scala.xml.NodeSeq
>
> class SomeView extends LiftView {
>
> override def dispatch = {
>   case "show" => doShow _
> }
>
> def doShow () : NodeSeq = {
>   
>   hello
>  
> }
> }
>

The Boot class was not changed:

> package bootstrap.liftweb
>
> import _root_.net.liftweb.util._
> import _root_.net.liftweb.http._
> import _root_.net.liftweb.sitemap._
> import _root_.net.liftweb.sitemap.Loc._
> import Helpers._
>
> /**
>   * A class that's instantiated early and run.  It allows the application
>   * to modify lift's environment
>   */
> class Boot {
>   def boot {
> // where to search snippet
> LiftRules.addToPackages("org.opicasso.two")
>
> // Build SiteMap
> val entries = Menu(Loc("Home", List("index"), "Home")) :: Nil
> LiftRules.setSiteMap(SiteMap(entries:_*))
>   }
> }
>

However when trying
http://localhost:8080/SomeView/show
I get
The Requested URL /SomeView/show was not found on this server

Is there something else that needs to be done? Is the url correct?

Oscar

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] scala eclipse plugin with lift

2009-11-21 Thread Oscar Picasso
Hi David,

Thanks for your welcome. I hope to have now a little more time to take a
deeper look at lift.
I am delighted to see how much the community as grown around this exciting
framework.

I am really impressed by both the framework and the community.

Congratulations.

Oscar

On Tue, Nov 17, 2009 at 10:40 PM, David Pollak <
feeder.of.the.be...@gmail.com> wrote:

> Hey Oscar,
>
> Welcome back to Lift-land... haven't seen you in almost two years.
>
> Thanks,
>
> David
>
> On Tue, Nov 17, 2009 at 6:56 PM, Oscar Picasso wrote:
>
>> Hi,
>>
>> I did import a new created lift project in a eclipse as a maven project.
>> The project is recognized as a scala project but there is neither syntax
>> syntax highlighting nor auto completion while it works fine, in the same
>> workspace when I create directly a scala project with the scala eclipse
>> plugin.
>>
>> Any idea?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> liftweb+unsubscr...@googlegroups.com
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=.
>>
>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Surf the harmonics
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: scala eclipse plugin with lift

2009-11-21 Thread Oscar Picasso
I am finally able to use the plugin.
I noticed the plugin version is 2.7.7 and that the lift project scala
version was 2.7.3 so I changed the scala version to 2.7.7

It works now. Actually I am not sure this was the change that made it work
because just before I restarted eclipse and it already seemed to work.



On Wed, Nov 18, 2009 at 7:27 AM, Miles Sabin  wrote:

> On Wed, Nov 18, 2009 at 12:17 PM, Marius  wrote:
> > It interpreted my scala code as java out of the sudden. I tried the
> > JDT weving trick and nothing.
>
> If you had JDT weaving enabled then only way you would see Scala code
> interpreted as Java is if the .project file included the Java builder.
> That only happens when you use Maven to generate your project
> metadata.
>
> So please report this issue to whoever is responsible for that Maven
> behaviour.
>
> Cheers,
>
>
> Miles
>
> --
> Miles Sabin
> tel: +44 (0)7813 944 528
> skype:  milessabin
> http://www.chuusai.com/
> http://twitter.com/milessabin
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: InputStream to String

2009-11-21 Thread Jack Widman
How about

pleaseGoOutAndConvertThisInputStreamToAStringAndReturnIt

And then after returns the String you can call a function called

thankYou

On Sat, Nov 21, 2009 at 10:40 AM, Timothy Perrett
wrote:

> HAHAHA. That is an awesome method name if ever i did see one. Little
> confused why "readWholeInputStream" was somehow not the obvious
> choice ;-)
>
> Cheers, Tim
>
> On Nov 21, 4:37 pm, Jack Widman  wrote:
> > I kind of like it. Says exactly what it does :)
> >
> > On Sat, Nov 21, 2009 at 9:56 AM, David Pollak <
> feeder.of.the.be...@gmail.com
> >
> >
> >
> >
> >
> > > wrote:
> > > Helpers.readWholeThing(reader): String
> >
> > > Yes... this method name is ripe for bettering.
> >
> > > On Sat, Nov 21, 2009 at 6:47 AM, jack  wrote:
> >
> > >> I have seen this problem around and it seems basic but I haven't found
> > >> a solution. I need to turn an InputStream into a String. There seems
> > >> to be a bug in the Source class that fails for large files so I don't
> > >> want to use that (though it is an elegant approach).
> >
> > >> The following doesn't work because reader.readLine returns Unit and
> > >> not null, as in Java.
> >
> > >>  val reader = new BufferedReader(new InputStreamReader(is))
> > >>  var responseBody = ""
> >
> > >>  var line = reader.readLine()
> >
> > >>  while(line != null){
> > >>responseBody  += line
> > >>line = reader.readLine()
> > >>  }
> >
> > >> return responseBody
> >
> > >> What to do?
> >
> > >> --
> >
> > >> You received this message because you are subscribed to the Google
> Groups
> > >> "Lift" group.
> > >> To post to this group, send email to lift...@googlegroups.com.
> > >> To unsubscribe from this group, send email to
> > >> liftweb+unsubscr...@googlegroups.com
> >
> > >> .
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/liftweb?hl=.
> >
> > > --
> > > Lift, the simply functional web frameworkhttp://liftweb.net
> > > Beginning Scalahttp://www.apress.com/book/view/1430219890
> > > Follow me:http://twitter.com/dpp
> > > Surf the harmonics
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Lift" group.
> > > To post to this group, send email to lift...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > liftweb+unsubscr...@googlegroups.com
> >
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/liftweb?hl=.
> >
> > --
> > Jack Widman
> >
> > co-founder / cto,  Authoritude, Inc.
> >
> > 203-641-9355
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>


-- 
Jack Widman

co-founder / cto,  Authoritude, Inc.

203-641-9355

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: InputStream to String

2009-11-21 Thread Timothy Perrett
HAHAHA. That is an awesome method name if ever i did see one. Little
confused why "readWholeInputStream" was somehow not the obvious
choice ;-)

Cheers, Tim

On Nov 21, 4:37 pm, Jack Widman  wrote:
> I kind of like it. Says exactly what it does :)
>
> On Sat, Nov 21, 2009 at 9:56 AM, David Pollak 
>
>
>
>
> > wrote:
> > Helpers.readWholeThing(reader): String
>
> > Yes... this method name is ripe for bettering.
>
> > On Sat, Nov 21, 2009 at 6:47 AM, jack  wrote:
>
> >> I have seen this problem around and it seems basic but I haven't found
> >> a solution. I need to turn an InputStream into a String. There seems
> >> to be a bug in the Source class that fails for large files so I don't
> >> want to use that (though it is an elegant approach).
>
> >> The following doesn't work because reader.readLine returns Unit and
> >> not null, as in Java.
>
> >>  val reader = new BufferedReader(new InputStreamReader(is))
> >>  var responseBody = ""
>
> >>  var line = reader.readLine()
>
> >>  while(line != null){
> >>        responseBody  += line
> >>        line = reader.readLine()
> >>  }
>
> >> return responseBody
>
> >> What to do?
>
> >> --
>
> >> You received this message because you are subscribed to the Google Groups
> >> "Lift" group.
> >> To post to this group, send email to lift...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> liftweb+unsubscr...@googlegroups.com >>  >
> >> .
> >> For more options, visit this group at
> >>http://groups.google.com/group/liftweb?hl=.
>
> > --
> > Lift, the simply functional web frameworkhttp://liftweb.net
> > Beginning Scalahttp://www.apress.com/book/view/1430219890
> > Follow me:http://twitter.com/dpp
> > Surf the harmonics
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Lift" group.
> > To post to this group, send email to lift...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > liftweb+unsubscr...@googlegroups.com > >
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/liftweb?hl=.
>
> --
> Jack Widman
>
> co-founder / cto,  Authoritude, Inc.
>
> 203-641-9355

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] InputStream to String

2009-11-21 Thread Jack Widman
I kind of like it. Says exactly what it does :)

On Sat, Nov 21, 2009 at 9:56 AM, David Pollak  wrote:

> Helpers.readWholeThing(reader): String
>
> Yes... this method name is ripe for bettering.
>
>
> On Sat, Nov 21, 2009 at 6:47 AM, jack  wrote:
>
>> I have seen this problem around and it seems basic but I haven't found
>> a solution. I need to turn an InputStream into a String. There seems
>> to be a bug in the Source class that fails for large files so I don't
>> want to use that (though it is an elegant approach).
>>
>> The following doesn't work because reader.readLine returns Unit and
>> not null, as in Java.
>>
>>  val reader = new BufferedReader(new InputStreamReader(is))
>>  var responseBody = ""
>>
>>  var line = reader.readLine()
>>
>>  while(line != null){
>>responseBody  += line
>>line = reader.readLine()
>>  }
>>
>> return responseBody
>>
>> What to do?
>>
>> --
>>
>> You received this message because you are subscribed to the Google Groups
>> "Lift" group.
>> To post to this group, send email to lift...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> liftweb+unsubscr...@googlegroups.com
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=.
>>
>>
>>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Surf the harmonics
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>



-- 
Jack Widman

co-founder / cto,  Authoritude, Inc.

203-641-9355

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Devoxx 2009

2009-11-21 Thread Timothy Perrett
No worries David - it was a great event, and something im really proud of :-)

Cheers, Tim

On 21 Nov 2009, at 15:58, David Pollak wrote:

> Awesome write-up.  Perfect way to start my day!
> 
> Thanks for working hard to promote Scala and Lift and community the value of 
> both to a broader audience.

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: Call it Lift 2.0

2009-11-21 Thread Heiko Seeberger
Hi,

Heiko, can you find the stated version number policies of 3 or 4 other well
> regarded open source projects?  That will allow us to synthesize the best of
> what others have done into a coherent policy for Lift.


Take a look at the recommended OSGi version policy:
http://www.aqute.biz/Code/XBnd
Then take a look at Eclipse (pretty well known, eh?):
http://wiki.eclipse.org/index.php/Version_Numbering
Both use a major increment (1.x -> 2) to show breaking changes in API, a
minor increment (1.1.x -> 1.2) to show non-breaking changes in API and a
micro increment to show "internal" (no class name changes, no method
signature changes, ...) changes (e.g. bug fixes in the implementation).

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Devoxx 2009

2009-11-21 Thread David Pollak
Awesome write-up.  Perfect way to start my day!

Thanks for working hard to promote Scala and Lift and community the value of
both to a broader audience.

On Sat, Nov 21, 2009 at 6:37 AM, Timothy Perrett wrote:

> Folks,
>
> I got back from Devoxx late last night and thought I would just post
> some thoughts and experiences from the event.
>
> Firstly, there was an awesome interest in Scala and Lift - my talk was
> really busy (~550 people) and the general Scala Enthusiast BOF right
> afterwards was packed.
>
> Myself, Bill Venners, Viktor Klang and Frank Sommers pretty much
> represented a cross-section of Scala projects at the BOF and
> throughout the whole week we were pretty much swamped with Scala
> questions and interest. Lift was getting a lot of attention and was
> even used by Oracle in the Devoxx keynote!!!
>
> Another event of note was when myself, viktor and john were sat in the
> hotel reception hacking on Scala and showing it so some interested
> people at around 10pm, the JavaPosse turned up and were like "wow, we
> appear to have stumbled upon the Scala geeks" - they then proceeded to
> join the hackfest which was über cool.
>
> All in all, a very very successful week and I think the above
> mentioned group did an amazing job of raising the profile of Scala
> even further; moreover, some of the Lift discussions were brilliant -
> appeared to be a lot of people wanting to convert from Spring bean
> hell ;-)
>
> We as a team should be made up with the awesome framework that has
> been created here -- the next 12 months I believe will be somewhat of
> a Scala / Lift golden age where we have the opportunity to really make
> our mark on the industry.
>
> Congratulations everyone!
>
> Cheers, Tim
>
> PS: If you were at Devoxx and came to my talk, thanks for
> attending :-)
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] InputStream to String

2009-11-21 Thread David Pollak
Helpers.readWholeThing(reader): String

Yes... this method name is ripe for bettering.

On Sat, Nov 21, 2009 at 6:47 AM, jack  wrote:

> I have seen this problem around and it seems basic but I haven't found
> a solution. I need to turn an InputStream into a String. There seems
> to be a bug in the Source class that fails for large files so I don't
> want to use that (though it is an elegant approach).
>
> The following doesn't work because reader.readLine returns Unit and
> not null, as in Java.
>
>  val reader = new BufferedReader(new InputStreamReader(is))
>  var responseBody = ""
>
>  var line = reader.readLine()
>
>  while(line != null){
>responseBody  += line
>line = reader.readLine()
>  }
>
> return responseBody
>
> What to do?
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: Jetty or Tomcat, Which web container is recommended to use to deploy the Lift app ?

2009-11-21 Thread David Pollak
2009/11/20 monty chen 

> David Pollk, thanks you reply!
>
> Let us talk about tomcat or jetty Which web container is recommended
> to use to deploy the Lift app.
>
>  I remember your reply of Derek Chen-Becker:
>
> On 5月5日, 上午5时59分, David Pollak  wrote:
> > Derek,
> > Please note that about half of the requests failed in Jetty.  Jetty does
> not
> > seem to be explicitly closing the NIO sockets leading to an out of IO
> > descriptor problem... that's why I used Tomcat.
> >
> > Thanks,
> >
> > David
> >
>
> But at now why you recommend Nginx + Jetty ?
>

The particular version of Jetty I used for the test had this problem.  The
problem manifest during significant churn of http requests (> 2K serviced
per second).  This is different from the long polling scenario.  Further, if
you're serving 2K/second sustained, you are in the top 1% of all web
sites... you're in Twitter/LinkedIn territory.

Jetty is the best option for Lift Comet (long polling) apps.


>
>
> > On Mon, May 4, 2009 at 2:47 PM, Derek Chen-Becker  >wrote:
> >
> >
> >
> > > Just to throw in another data point, I ran the tests on my AMD Phenom
> X2
> > > 720 (3 cores, 6GB of RAM):
> >
> > > I generated the archetype exactly as you have it here.
> >
> > > Ran "mvn -Drun.mode=production -Djetty.port=9090 jetty:run"
> >
> > > Output from Apache Bench:
> >
> > > $ ab -c 10 -n 2http://192.168.2.254:9090/user_mgt/login
> > > This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> > > Copyright 1996 Adam Twiss, Zeus Technology Ltd,
> http://www.zeustech.net/
> > > Licensed to The Apache Software Foundation,http://www.apache.org/
> >
> > > Benchmarking 192.168.2.254 (be patient)
> > > Completed 2000 requests
> > > Completed 4000 requests
> > > Completed 6000 requests
> > > Completed 8000 requests
> > > Completed 1 requests
> > > Completed 12000 requests
> > > Completed 14000 requests
> > > Completed 16000 requests
> > > Completed 18000 requests
> > > Completed 2 requests
> > > Finished 2 requests
> >
> > > Server Software:Jetty(6.1.16)
> > > Server Hostname:192.168.2.254
> > > Server Port:9090
> >
> > > Document Path:  /user_mgt/login
> > > Document Length:3635 bytes
> >
> > > Concurrency Level:  10
> > > Time taken for tests:   37.110 seconds
> > > Complete requests:  2
> > > Failed requests:10191
> > >(Connect: 0, Receive: 0, Length: 10191, Exceptions: 0)
> > > Write errors:   0
> > > Total transferred:  79276096 bytes
> > > HTML transferred:   72626584 bytes
> > > Requests per second:538.94 [#/sec] (mean)
> > > Time per request:   18.555 [ms] (mean)
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] InputStream to String

2009-11-21 Thread jack
I have seen this problem around and it seems basic but I haven't found
a solution. I need to turn an InputStream into a String. There seems
to be a bug in the Source class that fails for large files so I don't
want to use that (though it is an elegant approach).

The following doesn't work because reader.readLine returns Unit and
not null, as in Java.

 val reader = new BufferedReader(new InputStreamReader(is))
 var responseBody = ""

 var line = reader.readLine()

 while(line != null){
responseBody  += line
line = reader.readLine()
 }

return responseBody

What to do?

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: Devoxx 2009

2009-11-21 Thread Timothy Perrett
By the way, the slide from my presentation can be found here: http://is.gd/50jVi

Cheers, tim

On Nov 21, 3:37 pm, Timothy Perrett  wrote:
> Folks,
>
> I got back from Devoxx late last night and thought I would just post
> some thoughts and experiences from the event.
>
> Firstly, there was an awesome interest in Scala and Lift - my talk was
> really busy (~550 people) and the general Scala Enthusiast BOF right
> afterwards was packed.
>
> Myself, Bill Venners, Viktor Klang and Frank Sommers pretty much
> represented a cross-section of Scala projects at the BOF and
> throughout the whole week we were pretty much swamped with Scala
> questions and interest. Lift was getting a lot of attention and was
> even used by Oracle in the Devoxx keynote!!!
>
> Another event of note was when myself, viktor and john were sat in the
> hotel reception hacking on Scala and showing it so some interested
> people at around 10pm, the JavaPosse turned up and were like "wow, we
> appear to have stumbled upon the Scala geeks" - they then proceeded to
> join the hackfest which was über cool.
>
> All in all, a very very successful week and I think the above
> mentioned group did an amazing job of raising the profile of Scala
> even further; moreover, some of the Lift discussions were brilliant -
> appeared to be a lot of people wanting to convert from Spring bean
> hell ;-)
>
> We as a team should be made up with the awesome framework that has
> been created here -- the next 12 months I believe will be somewhat of
> a Scala / Lift golden age where we have the opportunity to really make
> our mark on the industry.
>
> Congratulations everyone!
>
> Cheers, Tim
>
> PS: If you were at Devoxx and came to my talk, thanks for
> attending :-)

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Devoxx 2009

2009-11-21 Thread Timothy Perrett
Folks,

I got back from Devoxx late last night and thought I would just post
some thoughts and experiences from the event.

Firstly, there was an awesome interest in Scala and Lift - my talk was
really busy (~550 people) and the general Scala Enthusiast BOF right
afterwards was packed.

Myself, Bill Venners, Viktor Klang and Frank Sommers pretty much
represented a cross-section of Scala projects at the BOF and
throughout the whole week we were pretty much swamped with Scala
questions and interest. Lift was getting a lot of attention and was
even used by Oracle in the Devoxx keynote!!!

Another event of note was when myself, viktor and john were sat in the
hotel reception hacking on Scala and showing it so some interested
people at around 10pm, the JavaPosse turned up and were like "wow, we
appear to have stumbled upon the Scala geeks" - they then proceeded to
join the hackfest which was über cool.

All in all, a very very successful week and I think the above
mentioned group did an amazing job of raising the profile of Scala
even further; moreover, some of the Lift discussions were brilliant -
appeared to be a lot of people wanting to convert from Spring bean
hell ;-)

We as a team should be made up with the awesome framework that has
been created here -- the next 12 months I believe will be somewhat of
a Scala / Lift golden age where we have the opportunity to really make
our mark on the industry.

Congratulations everyone!

Cheers, Tim

PS: If you were at Devoxx and came to my talk, thanks for
attending :-)

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




Re: [Lift] Re: Call it Lift 2.0

2009-11-21 Thread David Pollak
On Sat, Nov 21, 2009 at 4:29 AM, Timothy Perrett wrote:

> Heiko,
>
> Sounds pretty rational - couldn't agree more that we need a suitable policy
> in place.
>

Heiko, can you find the stated version number policies of 3 or 4 other well
regarded open source projects?  That will allow us to synthesize the best of
what others have done into a coherent policy for Lift.


>
> Cheers, Tim
>
> On 21 Nov 2009, at 08:27, Heiko Seeberger wrote:
>
> > For me it is important that there is a version policy in place, such that
> everyone knows what's the difference between a change to 1.1 or to 1.0.2. As
> we probably will stick to Lift 1.1, IMHO the version policy has to be:
> "Increasing the major or minor version number means breaking changes,
> increasing the micro version number keeps the API stable.". Opinions?
> >
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=.
>
>
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] My Scala -> ByteCode preso at the JVM Language Summit

2009-11-21 Thread David Pollak
http://www.infoq.com/presentations/Scala-Basics-Bytecode-David-Pollak

-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: Missing source files in 1.1-SNAPSHOT

2009-11-21 Thread johncch
FWIW, I'm seeing the same thing. Unfortunately. I'm downloading the
source on another folder and cross referencing as I need.

Thanks.

regards,
CH

On Nov 19, 5:29 am, glenn  wrote:
> You can either use debugging facilities in Eclipse or, as I mostly
> do,
> sprinkle a lot of println or Log.info statements around. But coding it
> right in the first place requires access to Lift source code, and for
> that I use maven's facility for downloading source jars from the pom.
> If the source jar isn't complete, or isn't in the maven repository,
> I'm
> out of luck.
>
> Glenn
>
> On Nov 18, 1:19 pm, Jeppe Nejsum Madsen  wrote:
>
>
>
> > Kris Nuttycombe  writes:
> > > On Wed, Nov 18, 2009 at 1:51 PM, Jeppe Nejsum Madsen  
> > > wrote:
> > >> Kris Nuttycombe  writes:
>
> > >>> On Wed, Nov 18, 2009 at 12:31 PM, glenn  wrote:
> >  Kris,
>
> >  Don't want to clone the GitHub repo, as I need a Maven repo.
>
> >  Glenn
>
> > >>> Out of curiosity, is this because you have a Maven tool that helps
> > >>> automate interaction with a debugger? If so I'd be interested in
> > >>> learning about it - I've got a Lift bug I'm looking at now that would
> > >>> probably benefit from using an actual debugger on.
>
> > >> If you use Eclipse, it can automatically get the sourc files from the
> > >> sources jar. "Open Type" -> Select e.g. Box -> You get the Box.scala
> > >> file. It is readonly though, so you can't easily try a quick hack
>
> > >> /Jeppe
>
> > > Eclipse required? println debugging it is then!
>
> > Yeah, 2.7.x is not that great. I'm really looking forward to 2.8, keep
> > hearing lots of good stuff. But first we need Lift to work on 2.8 :-)
>
> > /Jeppe

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: Menu generated from database?

2009-11-21 Thread philip
Got my code working so it generates a menu.

Looked at WikiLoc in the Wiki Liftweb example, it has:
def defaultParams = Full(WikiLoc("HomePage", false))
So I guessed that it needs to have something with a Full

Changed it to:
override val defaultParams = Full(NullLocParams)

So now my code is

case class DynMenuLoc (
override val name: String,
override val link: Link[NullLocParams],
override val text: LinkText[NullLocParams],
_params: LocParam* ) extends Loc[NullLocParams] {
override val params = _params.toList
// had to comment this out: override val defaultValue = Full(())
// not sure what to set this to
override val defaultParams = Full(NullLocParams)

override def supplimentalKidMenuItems:List
[net.liftweb.sitemap.MenuItem] = {
  Log.info("kid menu function called")
  var result:ListBuffer[net.liftweb.sitemap.MenuItem] = new
ListBuffer[net.liftweb.sitemap.MenuItem]
  result + (new MenuItem(Text("A"), Text("B"), Nil, false,
false, Nil))
  result + (new MenuItem(Text("C"), Text("D"), Nil, false,
false, Nil))
  result.toList ::: super.supplimentalKidMenuItems
}
}

Thats great, but still there is a problem of the top level menu.

On 11月21日, 下午2時56分, Ross Mellgren  wrote:
> Here's an example of doing what David decribed (at least, as I understood it 
> ;-) ):
>
> // In Boot.scala
> // Build SiteMap
> val entries =  ... ::
> Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, 
> "/dynamic"), "Dynamic Menu")) ::
> ...
>
> case class DynMenuLoc (
> override val name: String,
> override val link: Link[Unit],
> override val text: LinkText[Unit],
> _params: LocParam[Unit]*
> ) extends Loc[Unit] {
> override val params = _params.toList
> override val defaultValue = Full(())
>
> override def supplimentalKidMenuItems = {
> DynMenuItem.findAll.map(dmi => {
> MenuItem(Text(dmi.label.is), Text(dmi.link.is), Nil, false, 
> false, Nil)
> }) ::: super.supplimentalKidMenuItems
> }
>
> }
>
> object DynMenuItem extends DynMenuItem with LongKeyedMetaMapper[DynMenuItem] 
> with CRUDify[Long, DynMenuItem]
>
> class DynMenuItem extends LongKeyedMapper[DynMenuItem] with IdPK {
> def getSingleton = DynMenuItem
>
> object label extends MappedString(this, 32)
> object link extends MappedString(this, 255)
>
> }
>
> I can post the full example code on github if it'd help, also.
>
> -Ross
>
> On Nov 20, 2009, at 10:37 PM, philip wrote:
>
>
>
> > Hi David,
>
> > Really looking forward to this - I spent a day on this with absolute
> > failure.
>
> > Philip
>
> > On 11月20日, 上午1時56分, David Pollak 
> > wrote:
> >> Philip & list,
>
> >> I've had it on my to-do list to write up an example... and haven't... 
> >> but...
>
> >> In your Loc, you can override def supplimentalKidMenuItems and dynamically
> >> generate kid menu items.
>
> >> I'll try to get to an example but not today... sorry :-(
>
> >> Thanks,
>
> >> David
>
> >> On Thu, Nov 19, 2009 at 12:35 AM, philip  wrote:
>
> >>> Hi David,
>
> >>> Since I am programming a CMS for my client, I need my lift menu to
> >>> come from the database.
>
> >>> LiftRules.setSiteMap(SiteMap(MenuInfo.menu :_*))
>
> >>> def menu: List[Menu] =
> >>> {
> >>>   Log.info("Menu called")
> >>> ...
>
> >>> It seems my menu function only gets called once, on subsquent calls I
> >>> do not get any log message.
>
> >>> Maybe I have to subclass SiteMap?
>
> >>> Can you point me in the right direction?
>
> >>> Thanks, Philip
>
> >>> On 10月21日, 下午11時20分, David Pollak 
> >>> wrote:
>  I owe the list example code to do this... maybe tomorrow.
>
>  On Wed, Oct 21, 2009 at 6:26 AM, philip  wrote:
>
> > Hi,
>
> > How can I get a Liftweb menu to be generated from database content?
>
> > Alternatively, can the menu come from a XML datasource? could I load/
> > serialize from that?
> > Could it change dynamically at any time?
>
> > Thanks, Philip
>
>  --
>  Lift, the simply functional web frameworkhttp://liftweb.net
>  Beginning Scalahttp://www.apress.com/book/view/1430219890
>  Follow me:http://twitter.com/dpp
>  Surf the harmonics
>
> >>> --
>
> >>> You received this message because you are subscribed to the Google Groups
> >>> "Lift" group.
> >>> To post to this group, send email to lift...@googlegroups.com.
> >>> To unsubscribe from this group, send email to
> >>> liftweb+unsubscr...@googlegroups.com
> >>> .
> >>> For more options, visit this group at
> >>>http://groups.google.com/group/liftweb?hl=.
>
> >> --
> >> Lift, the simply functional web frameworkhttp://liftweb.net
> >> Beginning Scalahttp://www.apress.com/book/view/1430219890
> >> Follow me:http://twitter.com/dpp
> >> Surf the harmonics- 隱藏被引用文字 -
>
> >> - 顯示被引用文字 -
>
> > --
>
> > You received this message because you are subscribed to the Google Groups 
> > "Lift" group.
> > To post to this group, send email to li

Re: [Lift] Re: Call it Lift 2.0

2009-11-21 Thread Timothy Perrett
Heiko,

Sounds pretty rational - couldn't agree more that we need a suitable policy in 
place.

Cheers, Tim

On 21 Nov 2009, at 08:27, Heiko Seeberger wrote:

> For me it is important that there is a version policy in place, such that 
> everyone knows what's the difference between a change to 1.1 or to 1.0.2. As 
> we probably will stick to Lift 1.1, IMHO the version policy has to be: 
> "Increasing the major or minor version number means breaking changes, 
> increasing the micro version number keeps the API stable.". Opinions?
> 

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: Menu generated from database?

2009-11-21 Thread philip
Also I guess there is another problem with this approach, it does not
render the entire menu, only one of 2nd level menu items. The 1st
level menu items are Menu. Am I right in saying this?

On 11月21日, 下午2時56分, Ross Mellgren  wrote:
> Here's an example of doing what David decribed (at least, as I understood it 
> ;-) ):
>
> // In Boot.scala
> // Build SiteMap
> val entries =  ... ::
> Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, 
> "/dynamic"), "Dynamic Menu")) ::
> ...
>
> case class DynMenuLoc (
> override val name: String,
> override val link: Link[Unit],
> override val text: LinkText[Unit],
> _params: LocParam[Unit]*
> ) extends Loc[Unit] {
> override val params = _params.toList
> override val defaultValue = Full(())
>
> override def supplimentalKidMenuItems = {
> DynMenuItem.findAll.map(dmi => {
> MenuItem(Text(dmi.label.is), Text(dmi.link.is), Nil, false, 
> false, Nil)
> }) ::: super.supplimentalKidMenuItems
> }
>
> }
>
> object DynMenuItem extends DynMenuItem with LongKeyedMetaMapper[DynMenuItem] 
> with CRUDify[Long, DynMenuItem]
>
> class DynMenuItem extends LongKeyedMapper[DynMenuItem] with IdPK {
> def getSingleton = DynMenuItem
>
> object label extends MappedString(this, 32)
> object link extends MappedString(this, 255)
>
> }
>
> I can post the full example code on github if it'd help, also.
>
> -Ross
>
> On Nov 20, 2009, at 10:37 PM, philip wrote:
>
>
>
> > Hi David,
>
> > Really looking forward to this - I spent a day on this with absolute
> > failure.
>
> > Philip
>
> > On 11月20日, 上午1時56分, David Pollak 
> > wrote:
> >> Philip & list,
>
> >> I've had it on my to-do list to write up an example... and haven't... 
> >> but...
>
> >> In your Loc, you can override def supplimentalKidMenuItems and dynamically
> >> generate kid menu items.
>
> >> I'll try to get to an example but not today... sorry :-(
>
> >> Thanks,
>
> >> David
>
> >> On Thu, Nov 19, 2009 at 12:35 AM, philip  wrote:
>
> >>> Hi David,
>
> >>> Since I am programming a CMS for my client, I need my lift menu to
> >>> come from the database.
>
> >>> LiftRules.setSiteMap(SiteMap(MenuInfo.menu :_*))
>
> >>> def menu: List[Menu] =
> >>> {
> >>>   Log.info("Menu called")
> >>> ...
>
> >>> It seems my menu function only gets called once, on subsquent calls I
> >>> do not get any log message.
>
> >>> Maybe I have to subclass SiteMap?
>
> >>> Can you point me in the right direction?
>
> >>> Thanks, Philip
>
> >>> On 10月21日, 下午11時20分, David Pollak 
> >>> wrote:
>  I owe the list example code to do this... maybe tomorrow.
>
>  On Wed, Oct 21, 2009 at 6:26 AM, philip  wrote:
>
> > Hi,
>
> > How can I get a Liftweb menu to be generated from database content?
>
> > Alternatively, can the menu come from a XML datasource? could I load/
> > serialize from that?
> > Could it change dynamically at any time?
>
> > Thanks, Philip
>
>  --
>  Lift, the simply functional web frameworkhttp://liftweb.net
>  Beginning Scalahttp://www.apress.com/book/view/1430219890
>  Follow me:http://twitter.com/dpp
>  Surf the harmonics
>
> >>> --
>
> >>> You received this message because you are subscribed to the Google Groups
> >>> "Lift" group.
> >>> To post to this group, send email to lift...@googlegroups.com.
> >>> To unsubscribe from this group, send email to
> >>> liftweb+unsubscr...@googlegroups.com
> >>> .
> >>> For more options, visit this group at
> >>>http://groups.google.com/group/liftweb?hl=.
>
> >> --
> >> Lift, the simply functional web frameworkhttp://liftweb.net
> >> Beginning Scalahttp://www.apress.com/book/view/1430219890
> >> Follow me:http://twitter.com/dpp
> >> Surf the harmonics- 隱藏被引用文字 -
>
> >> - 顯示被引用文字 -
>
> > --
>
> > You received this message because you are subscribed to the Google Groups 
> > "Lift" group.
> > To post to this group, send email to lift...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > liftweb+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/liftweb?hl=.- 隱藏被引用文字 -
>
> - 顯示被引用文字 -

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=.




[Lift] Re: Menu generated from database?

2009-11-21 Thread philip

Hi Ross,

Thanks for the code - however it didn't compile on my machine, why is
that?
Also I cannot get it to show a menu, can you take a brief look at my
code, whats the problem? I notice supplimentalKidMenuItems gets called
every time the page is rendered so thats a positive, but no menu items
added to the page. Obviously I am a beginner, don't know why I had to
change Unit to NullLocParams to get it to compile.

I am on  2.7.5
Lift version 1.1-M6

I changed code to:

case class DynMenuLoc (
override val name: String,
override val link: Link[NullLocParams],
override val text: LinkText[NullLocParams],
_params: LocParam* ) extends Loc[NullLocParams] {
override val params = _params.toList
// had to comment this out: override val defaultValue = Full(())
// not sure what to set this to
override val defaultParams = Empty

override def supplimentalKidMenuItems:List
[net.liftweb.sitemap.MenuItem] = {
  Log.info("kid menu function called")
  var result:ListBuffer[net.liftweb.sitemap.MenuItem] = new
ListBuffer[net.liftweb.sitemap.MenuItem]
  result + (new MenuItem(Text("A"), Text("B"), Nil, false, false,
Nil))
  result.toList ::: super.supplimentalKidMenuItems
}
}

  def menu: List[Menu] =
  {
Menu(Loc("home", List("index"), "Home")) ::
Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, "/
dynamic"), "Dynamic Menu")) :: Nil
  }

Thanks, Philip


On 11月21日, 下午2時56分, Ross Mellgren  wrote:
> Here's an example of doing what David decribed (at least, as I understood it 
> ;-) ):
>
> // In Boot.scala
> // Build SiteMap
> val entries =  ... ::
> Menu(DynMenuLoc("Dynamic Menu", Link(List("dynamic"), true, 
> "/dynamic"), "Dynamic Menu")) ::
> ...
>
> case class DynMenuLoc (
> override val name: String,
> override val link: Link[Unit],
> override val text: LinkText[Unit],
> _params: LocParam[Unit]*
> ) extends Loc[Unit] {
> override val params = _params.toList
> override val defaultValue = Full(())
>
> override def supplimentalKidMenuItems = {
> DynMenuItem.findAll.map(dmi => {
> MenuItem(Text(dmi.label.is), Text(dmi.link.is), Nil, false, 
> false, Nil)
> }) ::: super.supplimentalKidMenuItems
> }
>
> }
>
> object DynMenuItem extends DynMenuItem with LongKeyedMetaMapper[DynMenuItem] 
> with CRUDify[Long, DynMenuItem]
>
> class DynMenuItem extends LongKeyedMapper[DynMenuItem] with IdPK {
> def getSingleton = DynMenuItem
>
> object label extends MappedString(this, 32)
> object link extends MappedString(this, 255)
>
> }
>
> I can post the full example code on github if it'd help, also.
>
> -Ross
>
> On Nov 20, 2009, at 10:37 PM, philip wrote:
>
>
>
> > Hi David,
>
> > Really looking forward to this - I spent a day on this with absolute
> > failure.
>
> > Philip
>
> > On 11月20日, 上午1時56分, David Pollak 
> > wrote:
> >> Philip & list,
>
> >> I've had it on my to-do list to write up an example... and haven't... 
> >> but...
>
> >> In your Loc, you can override def supplimentalKidMenuItems and dynamically
> >> generate kid menu items.
>
> >> I'll try to get to an example but not today... sorry :-(
>
> >> Thanks,
>
> >> David
>
> >> On Thu, Nov 19, 2009 at 12:35 AM, philip  wrote:
>
> >>> Hi David,
>
> >>> Since I am programming a CMS for my client, I need my lift menu to
> >>> come from the database.
>
> >>> LiftRules.setSiteMap(SiteMap(MenuInfo.menu :_*))
>
> >>> def menu: List[Menu] =
> >>> {
> >>>   Log.info("Menu called")
> >>> ...
>
> >>> It seems my menu function only gets called once, on subsquent calls I
> >>> do not get any log message.
>
> >>> Maybe I have to subclass SiteMap?
>
> >>> Can you point me in the right direction?
>
> >>> Thanks, Philip
>
> >>> On 10月21日, 下午11時20分, David Pollak 
> >>> wrote:
>  I owe the list example code to do this... maybe tomorrow.
>
>  On Wed, Oct 21, 2009 at 6:26 AM, philip  wrote:
>
> > Hi,
>
> > How can I get a Liftweb menu to be generated from database content?
>
> > Alternatively, can the menu come from a XML datasource? could I load/
> > serialize from that?
> > Could it change dynamically at any time?
>
> > Thanks, Philip
>
>  --
>  Lift, the simply functional web frameworkhttp://liftweb.net
>  Beginning Scalahttp://www.apress.com/book/view/1430219890
>  Follow me:http://twitter.com/dpp
>  Surf the harmonics
>
> >>> --
>
> >>> You received this message because you are subscribed to the Google Groups
> >>> "Lift" group.
> >>> To post to this group, send email to lift...@googlegroups.com.
> >>> To unsubscribe from this group, send email to
> >>> liftweb+unsubscr...@googlegroups.com
> >>> .
> >>> For more options, visit this group at
> >>>http://groups.google.com/group/liftweb?hl=.
>
> >> --
> >> Lift, the simply functional web frameworkhttp://liftweb.net
> >> Beginning Scalahttp://www.apress.com/book/view/1430219890
> >> Follow me:http://twitter.com