In order to use the XMLApiHelper trait, you must define an outer-most XML
Elem that will wrap the response.
For example:

def createTag(in: NodeSeq): Elem = <foo_co_rest>{in}</foo_co_rest>

Now... if your stuff already does the wrapping in the outer-most Elem, you
can do:

def createTag(in: NodeSeq): Elem = in.flatMap{case e: Elem => List(e) case _
=> Nil}.firstOption getOrElse <blank/>

On Thu, Oct 8, 2009 at 10:36 AM, Alex Black <a...@alexblack.ca> wrote:

>
> I'm getting started with Scala and Lift, implementing a simple REST
> service.  I've extended XMLApiHelper, following examples in "Exploring
> Lift", but I'm getting a compile error I'm not sure about, any
> suggestions?
>
> error:
>
> class RestAPI needs to be abstract, since method createTag in trait
> XMLApiHelper of type (scala.xml.NodeSeq)scala.xml.Elem is not defined
> RestAPI.scala   /poc/src/main/scala/com/somecompany/api Unknown Scala
> Problem
>
> So its telling me I have to implement createTag... but, I don't know
> how to :)  Also, the examples i've seen don't seem to implement it,
> making me think I'm doing something wrong.
>
> package com.somecompany.api
>
> import _root_.net.liftweb.util._
> import _root_.net.liftweb.http._
> import Helpers._
>
> import net.liftweb.http.rest.XMLApiHelper
>
> class RestAPI  extends XMLApiHelper {
>  def dispatch: LiftRules.DispatchPF = {
>
>    case Req(List("api", "camera", cameraId), "", DeleteRequest) =>
>        () => deleteCamera(cameraId)
>
>        // Invalid API request - route to our error handler
>    case Req(List("api", _), "", _) => failure _
>        }
>
>  def failure : LiftResponse = BadResponse()
>
>  def deleteCamera(cameraId : String) : LiftResponse = {
>        NoContentResponse()
>
>  }
>
> }
>
> Thanks!
>
> - Alex
>
> >
>


-- 
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 liftweb@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=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to