Experimenting trying to get Lift views to work. (And they don't)
This commit is contained in:
parent
33b030361c
commit
13bc65142e
13 changed files with 41 additions and 9 deletions
|
|
@ -50,11 +50,14 @@ CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-core-1.0.3.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-json-1.0.3.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-json-1.0.3.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-server-1.0.3.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-server-1.0.3.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-scala-1.1.2-ea-SNAPSHOT.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-scala-1.1.2-ea-SNAPSHOT.jar
|
||||||
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jersey-lift-1.1.2-ea-SNAPSHOT.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/JSAP-2.1.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/JSAP-2.1.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jsr250-api-1.0.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jsr250-api-1.0.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jsr311-api-1.0.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/jsr311-api-1.0.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/libfb303.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/libfb303.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/libthrift.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/libthrift.jar
|
||||||
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lift-webkit-1.1-M3.jar
|
||||||
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lift-util-1.1-M3.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/log4j-1.2.15.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/log4j-1.2.15.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lucene-core-2.2.0.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/lucene-core-2.2.0.jar
|
||||||
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/netty-3.1.0.CR1.jar
|
CLASSPATH=$CLASSPATH:$BASE_DIR/lib/netty-3.1.0.CR1.jar
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,5 @@
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>Akka Servlet</servlet-name>
|
<servlet-name>Akka Servlet</servlet-name>
|
||||||
<url-pattern>/*</url-pattern>
|
<url-pattern>/*</url-pattern>
|
||||||
</servlet-mapping-->
|
</servlet-mapping>
|
||||||
</web-app>
|
</web-app>
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -130,6 +130,11 @@
|
||||||
<artifactId>jersey-scala</artifactId>
|
<artifactId>jersey-scala</artifactId>
|
||||||
<version>1.1.2-ea-SNAPSHOT</version>
|
<version>1.1.2-ea-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.jersey.contribs</groupId>
|
||||||
|
<artifactId>jersey-lift</artifactId>
|
||||||
|
<version>1.1.2-ea-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- For third-party logging -->
|
<!-- For third-party logging -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
||||||
|
|
@ -125,9 +125,17 @@ object Kernel extends Logging {
|
||||||
val uri = UriBuilder.fromUri(REST_URL).port(REST_PORT).build()
|
val uri = UriBuilder.fromUri(REST_URL).port(REST_PORT).build()
|
||||||
val adapter = new ServletAdapter
|
val adapter = new ServletAdapter
|
||||||
val servlet = new AkkaServlet
|
val servlet = new AkkaServlet
|
||||||
|
|
||||||
|
adapter.addInitParameter("bootloader", config.getString("akka.lift.bootloader").getOrElse(null))
|
||||||
|
adapter.addInitParameter("com.sun.jersey.config.feature.Redirect", "true")
|
||||||
|
adapter.addInitParameter("com.sun.jersey.config.feature.ImplicitViewables", "true")
|
||||||
adapter.setServletInstance(servlet)
|
adapter.setServletInstance(servlet)
|
||||||
adapter.setContextPath(uri.getPath)
|
adapter.setContextPath(uri.getPath)
|
||||||
|
|
||||||
|
//TODO add initialization of Lift (LiftFilter needs initialization)
|
||||||
|
|
||||||
|
log.debug("REST service context path: [" + uri.getPath + "]")
|
||||||
|
|
||||||
val scheme = uri.getScheme
|
val scheme = uri.getScheme
|
||||||
if (!scheme.equalsIgnoreCase("http")) throw new IllegalArgumentException("The URI scheme, of the URI " + REST_URL + ", must be equal (ignoring case) to 'http'")
|
if (!scheme.equalsIgnoreCase("http")) throw new IllegalArgumentException("The URI scheme, of the URI " + REST_URL + ", must be equal (ignoring case) to 'http'")
|
||||||
|
|
||||||
|
|
@ -136,6 +144,7 @@ object Kernel extends Logging {
|
||||||
jerseySelectorThread.setPort(REST_PORT)
|
jerseySelectorThread.setPort(REST_PORT)
|
||||||
jerseySelectorThread.setAdapter(adapter)
|
jerseySelectorThread.setAdapter(adapter)
|
||||||
jerseySelectorThread.listen
|
jerseySelectorThread.listen
|
||||||
|
|
||||||
log.info("REST service started successfully. Listening to port [" + REST_PORT + "]")
|
log.info("REST service started successfully. Listening to port [" + REST_PORT + "]")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,12 +10,13 @@ import config.ConfiguratorRepository
|
||||||
import com.sun.jersey.api.core.{DefaultResourceConfig, ResourceConfig}
|
import com.sun.jersey.api.core.{DefaultResourceConfig, ResourceConfig}
|
||||||
import com.sun.jersey.spi.container.servlet.ServletContainer
|
import com.sun.jersey.spi.container.servlet.ServletContainer
|
||||||
import com.sun.jersey.spi.container.WebApplication
|
import com.sun.jersey.spi.container.WebApplication
|
||||||
|
|
||||||
import java.util.HashSet
|
import java.util.HashSet
|
||||||
|
|
||||||
class AkkaServlet extends ServletContainer {
|
class AkkaServlet extends ServletContainer{
|
||||||
|
|
||||||
override def initiate(rc: ResourceConfig, wa: WebApplication) = {
|
override def initiate(rc: ResourceConfig, wa: WebApplication) = {
|
||||||
|
// super.initiate(rc, wa)
|
||||||
|
|
||||||
Kernel.boot // will boot if not already booted by 'main'
|
Kernel.boot // will boot if not already booted by 'main'
|
||||||
val configurators = ConfiguratorRepository.getConfiguratorsFor(getServletContext);
|
val configurators = ConfiguratorRepository.getConfiguratorsFor(getServletContext);
|
||||||
val set = new HashSet[Class[_]]
|
val set = new HashSet[Class[_]]
|
||||||
|
|
@ -26,6 +27,6 @@ class AkkaServlet extends ServletContainer {
|
||||||
|
|
||||||
wa.initiate(
|
wa.initiate(
|
||||||
new DefaultResourceConfig(set),
|
new DefaultResourceConfig(set),
|
||||||
new ActorComponentProviderFactory(configurators));
|
new ActorComponentProviderFactory(configurators))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
BIN
lib/jersey-lift-1.1.2-ea-SNAPSHOT.jar
Normal file
BIN
lib/jersey-lift-1.1.2-ea-SNAPSHOT.jar
Normal file
Binary file not shown.
BIN
lib/lift-util-1.1-M3.jar
Normal file
BIN
lib/lift-util-1.1-M3.jar
Normal file
Binary file not shown.
BIN
lib/lift-webkit-1.1-M3.jar
Normal file
BIN
lib/lift-webkit-1.1-M3.jar
Normal file
Binary file not shown.
|
|
@ -1,10 +1,13 @@
|
||||||
package sample.scala
|
package sample.scala
|
||||||
|
|
||||||
import javax.ws.rs.{Path, GET, Produces}
|
import javax.ws.rs.{Path, GET, Produces,QueryParam,DefaultValue}
|
||||||
import se.scalablesolutions.akka.kernel.state.{TransactionalState, TransactionalMap, CassandraStorageConfig}
|
import se.scalablesolutions.akka.kernel.state.{TransactionalState, TransactionalMap, CassandraStorageConfig}
|
||||||
import se.scalablesolutions.akka.kernel.actor.{Supervisor, SupervisorFactory, Actor, StartSupervisor}
|
import se.scalablesolutions.akka.kernel.actor.{Supervisor, SupervisorFactory, Actor, StartSupervisor}
|
||||||
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
|
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
|
||||||
|
|
||||||
|
import _root_.scala.xml.{NodeSeq}
|
||||||
|
import se.scalablesolutions.akka.kernel.util.{Logging}
|
||||||
|
|
||||||
class Boot {
|
class Boot {
|
||||||
object factory extends SupervisorFactory {
|
object factory extends SupervisorFactory {
|
||||||
override def getSupervisorConfig: SupervisorConfig = {
|
override def getSupervisorConfig: SupervisorConfig = {
|
||||||
|
|
@ -38,22 +41,33 @@ class SimpleService extends Actor {
|
||||||
private val storage = TransactionalState.newPersistentMap(CassandraStorageConfig())
|
private val storage = TransactionalState.newPersistentMap(CassandraStorageConfig())
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Produces(Array("application/xml"))
|
@Produces(Array("text/html"))
|
||||||
def count = (this !! Tick).getOrElse(<error>Error in counter</error>)
|
def count(@DefaultValue("unknown") @QueryParam("who") who : String) = {
|
||||||
|
log.info(who)
|
||||||
|
|
||||||
|
(this !! Tick).getOrElse(view(<error>Error in counter</error>))
|
||||||
|
}
|
||||||
|
|
||||||
override def receive: PartialFunction[Any, Unit] = {
|
override def receive: PartialFunction[Any, Unit] = {
|
||||||
case Tick => if (hasStartedTicking) {
|
case Tick => if (hasStartedTicking) {
|
||||||
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
||||||
storage.put(KEY, new Integer(counter + 1))
|
storage.put(KEY, new Integer(counter + 1))
|
||||||
reply(<success>Tick: {counter + 1}</success>)
|
reply(view(<success>Tick: {counter + 1}</success>))
|
||||||
} else {
|
} else {
|
||||||
storage.put(KEY, new Integer(0))
|
storage.put(KEY, new Integer(0))
|
||||||
hasStartedTicking = true
|
hasStartedTicking = true
|
||||||
reply(<success>Tick: 0</success>)
|
reply(view(<lift:success>Tick: 0</lift:success>))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) = {
|
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) = {
|
||||||
println("Restarting due to: " + reason.asInstanceOf[Exception].getMessage)
|
println("Restarting due to: " + reason.asInstanceOf[Exception].getMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def view(data : NodeSeq) : NodeSeq = <lift:surround with="default" at="content"> { data } <lift:Howdy.greet/></lift:surround>
|
||||||
|
}
|
||||||
|
|
||||||
|
class Howdy
|
||||||
|
{
|
||||||
|
def greet = <h2>Hello mommy</h2>
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue