Working nine to five ...
This commit is contained in:
parent
682d944915
commit
05ac9d4bf5
23 changed files with 73 additions and 63 deletions
|
|
@ -13,8 +13,7 @@ import se.scalablesolutions.akka.config.ScalaConfig._
|
|||
import se.scalablesolutions.akka.util.{HashCode, Logging}
|
||||
|
||||
import scala.collection.mutable.HashMap
|
||||
|
||||
import org.scala_tools.javautils.Imports._
|
||||
import scala.collection.JavaConversions._
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.{Timer, TimerTask}
|
||||
|
|
@ -411,7 +410,7 @@ object AMQP {
|
|||
protected def setupChannel = {
|
||||
connection = connectionFactory.newConnection(hostname, port)
|
||||
channel = connection.createChannel
|
||||
channel.exchangeDeclare(exchangeName.toString, exchangeType.toString, passive, durable, autoDelete, configurationArguments.asJava)
|
||||
channel.exchangeDeclare(exchangeName.toString, exchangeType.toString, passive, durable, autoDelete, configurationArguments)
|
||||
listeners.elements.toList.map(_._2).foreach(registerListener)
|
||||
if (shutdownListener.isDefined) connection.addShutdownListener(shutdownListener.get)
|
||||
}
|
||||
|
|
@ -426,7 +425,7 @@ object AMQP {
|
|||
listener.queueName,
|
||||
passive, durable,
|
||||
listener.exclusive, listener.autoDelete,
|
||||
configurationArguments.asJava)
|
||||
configurationArguments)
|
||||
}
|
||||
|
||||
log.debug("Binding new queue for MessageConsumerListener [%s]", listener.queueName)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import org.jgroups.{JChannel, View => JG_VIEW, Address, Message => JG_MSG, Exten
|
|||
*/
|
||||
class JGroupsClusterActor extends BasicClusterActor {
|
||||
import ClusterActor._
|
||||
import org.scala_tools.javautils.Imports._
|
||||
import scala.collection.JavaConversions._
|
||||
|
||||
type ADDR_T = Address
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ class JGroupsClusterActor extends BasicClusterActor {
|
|||
if (isActive && m.getSrc != channel.map(_.getAddress).getOrElse(m.getSrc)) me send Message(m.getSrc,m.getRawBuffer)
|
||||
|
||||
def viewAccepted(view: JG_VIEW): Unit =
|
||||
if (isActive) me send View(Set[ADDR_T]() ++ view.getMembers.asScala - channel.get.getAddress)
|
||||
if (isActive) me send View(Set[ADDR_T]() ++ view.getMembers - channel.get.getAddress)
|
||||
|
||||
def suspect(a: Address): Unit =
|
||||
if (isActive) me send Zombie(a)
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ class ShoalClusterActor extends BasicClusterActor {
|
|||
* Creates a CallBack instance that deals with the cluster signalling
|
||||
*/
|
||||
protected def createCallback : CallBack = {
|
||||
import org.scala_tools.javautils.Imports._
|
||||
import scala.collection.JavaConversions._
|
||||
val me = this
|
||||
new CallBack {
|
||||
def processNotification(signal : Signal) {
|
||||
|
|
@ -93,7 +93,7 @@ class ShoalClusterActor extends BasicClusterActor {
|
|||
if(isActive) {
|
||||
signal match {
|
||||
case ms : MessageSignal => me send Message(ms.getMemberToken,ms.getMessage)
|
||||
case jns : JoinNotificationSignal => me send View(Set[ADDR_T]() ++ jns.getCurrentCoreMembers.asScala - serverName)
|
||||
case jns : JoinNotificationSignal => me send View(Set[ADDR_T]() ++ jns.getCurrentCoreMembers - serverName)
|
||||
case fss : FailureSuspectedSignal => me send Zombie(fss.getMemberToken)
|
||||
case fns : FailureNotificationSignal => me send Zombie(fns.getMemberToken)
|
||||
case _ => log.debug("Unhandled signal: [%s]",signal)
|
||||
|
|
|
|||
|
|
@ -59,12 +59,12 @@ class AkkaServlet extends org.atmosphere.cpr.AtmosphereServlet with Logging {
|
|||
* we need to handle that.
|
||||
*/
|
||||
override def createCometSupportResolver() : CometSupportResolver = {
|
||||
import org.scala_tools.javautils.Imports._
|
||||
import scala.collection.JavaConversions._
|
||||
|
||||
new DefaultCometSupportResolver(config) {
|
||||
type CS = CometSupport[_ <: AtmosphereResource[_,_]]
|
||||
override def resolveMultipleNativeSupportConflict(available : JList[Class[_ <: CS]]) : CS = {
|
||||
available.asScala.filter(_ != classOf[GrizzlyCometSupport]).toList match {
|
||||
available.filter(_ != classOf[GrizzlyCometSupport]).toList match {
|
||||
case Nil => new GrizzlyCometSupport(config)
|
||||
case x :: Nil => newCometSupport(x.asInstanceOf[Class[_ <: CS]])
|
||||
case _ => super.resolveMultipleNativeSupportConflict(available)
|
||||
|
|
|
|||
|
|
@ -46,11 +46,6 @@
|
|||
<artifactId>netty</artifactId>
|
||||
<version>3.2.0.ALPHA3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.scala-tools</groupId>
|
||||
<artifactId>javautils</artifactId>
|
||||
<version>2.7.4-0.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- For Protocol/Serialization -->
|
||||
<dependency>
|
||||
|
|
@ -68,11 +63,11 @@
|
|||
<artifactId>jackson-mapper-asl</artifactId>
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<!--DOESN'T EXIST AS 2.8 port yet dependency>
|
||||
<groupId>sbinary</groupId>
|
||||
<artifactId>sbinary</artifactId>
|
||||
<version>0.3</version>
|
||||
</dependency>
|
||||
</dependency-->
|
||||
<dependency>
|
||||
<groupId>net.databinder</groupId>
|
||||
<artifactId>dispatch-json_2.8.0.Beta1</artifactId>
|
||||
|
|
@ -91,7 +86,7 @@
|
|||
<dependency>
|
||||
<groupId>sjson.json</groupId>
|
||||
<artifactId>sjson</artifactId>
|
||||
<version>0.4</version>
|
||||
<version>0.5-SNAPSHOT-2.8.Beta1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- For Testing -->
|
||||
|
|
|
|||
|
|
@ -260,9 +260,10 @@ private[akka] sealed class ActiveObjectAspect {
|
|||
}
|
||||
|
||||
private def localDispatch(joinPoint: JoinPoint): AnyRef = {
|
||||
import Actor.Sender.Self
|
||||
val rtti = joinPoint.getRtti.asInstanceOf[MethodRtti]
|
||||
if (isOneWay(rtti)) actor ! Invocation(joinPoint, true, true)
|
||||
if (isOneWay(rtti)) {
|
||||
(actor ! Invocation(joinPoint, true, true) ).asInstanceOf[AnyRef]
|
||||
}
|
||||
else {
|
||||
val result = actor !! Invocation(joinPoint, false, isVoid(rtti))
|
||||
if (result.isDefined) result.get
|
||||
|
|
@ -357,7 +358,7 @@ private[akka] sealed class ActiveObjectAspect {
|
|||
*/
|
||||
private[akka] class Dispatcher(transactionalRequired: Boolean, val callbacks: Option[RestartCallbacks]) extends Actor {
|
||||
private val ZERO_ITEM_CLASS_ARRAY = Array[Class[_]]()
|
||||
private val ZERO_ITEM_OBJECT_ARRAY = Array[Object[_]]()
|
||||
private val ZERO_ITEM_OBJECT_ARRAY = Array[Object]()
|
||||
|
||||
private[actor] var target: Option[AnyRef] = None
|
||||
private var preRestart: Option[Method] = None
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ object Actor extends Logging {
|
|||
val PORT = config.getInt("akka.remote.server.port", 9999)
|
||||
|
||||
object Sender{
|
||||
implicit val Self: Option[Actor] = None
|
||||
object Self
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -474,7 +474,7 @@ trait Actor extends TransactionManagement {
|
|||
* actor.send(message)
|
||||
* </pre>
|
||||
*/
|
||||
def !(message: Any)(implicit sender: Option[Actor]) = {
|
||||
def !(message: Any)(implicit sender: Option[Actor] = None) = {
|
||||
//FIXME 2.8 def !(message: Any)(implicit sender: Option[Actor] = None) = {
|
||||
if (_isKilled) throw new ActorKilledException("Actor [" + toString + "] has been killed, can't respond to messages")
|
||||
if (_isRunning) postMessageToMailbox(message, sender)
|
||||
|
|
@ -539,8 +539,7 @@ trait Actor extends TransactionManagement {
|
|||
|
||||
|
||||
/*
|
||||
//FIXME 2.8 def !!!(message: Any)(implicit sender: AnyRef = None): FutureResult = {
|
||||
def !!!(message: Any)(implicit sender: AnyRef): FutureResult = {
|
||||
def !!!(message: Any)(implicit sender: Option[Actor] = None): FutureResult = {
|
||||
if (_isKilled) throw new ActorKilledException("Actor [" + toString + "] has been killed, can't respond to messages")
|
||||
if (_isRunning) {
|
||||
val from = if (sender != null && sender.isInstanceOf[Actor]) Some(sender.asInstanceOf[Actor])
|
||||
|
|
@ -562,7 +561,7 @@ trait Actor extends TransactionManagement {
|
|||
* <p/>
|
||||
* Works with both '!' and '!!'.
|
||||
*/
|
||||
def forward(message: Any)(implicit sender: Option[Actor]) = {
|
||||
def forward(message: Any)(implicit sender: Option[Actor] = None) = {
|
||||
if (_isKilled) throw new ActorKilledException("Actor [" + toString + "] has been killed, can't respond to messages")
|
||||
if (_isRunning) {
|
||||
val forwarder = sender.getOrElse(throw new IllegalStateException("Can't forward message when the forwarder/mediator is not an actor"))
|
||||
|
|
@ -1027,7 +1026,8 @@ trait Actor extends TransactionManagement {
|
|||
!message.isInstanceOf[List[_]] &&
|
||||
!message.isInstanceOf[scala.collection.immutable.Map[_, _]] &&
|
||||
!message.isInstanceOf[scala.collection.immutable.Set[_]] &&
|
||||
!message.isInstanceOf[scala.collection.immutable.Tree[_, _]] &&
|
||||
//Removed in Scala 2.8
|
||||
//!message.isInstanceOf[scala.collection.immutable.Tree[_, _]] &&
|
||||
!message.getClass.isAnnotationPresent(Annotations.immutable)) {
|
||||
Serializer.Java.deepClone(message)
|
||||
} else message
|
||||
|
|
|
|||
|
|
@ -19,8 +19,6 @@ import se.scalablesolutions.akka.config.ScalaConfig._
|
|||
import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, FaultHandlingStrategy}
|
||||
import se.scalablesolutions.akka.util.{Logging}
|
||||
|
||||
import org.scala_tools.javautils.Imports._
|
||||
|
||||
case object UnSchedule
|
||||
case class SchedulerException(msg: String, e: Throwable) extends RuntimeException(msg, e)
|
||||
|
||||
|
|
@ -66,7 +64,8 @@ object Scheduler extends Actor {
|
|||
}
|
||||
|
||||
override def shutdown = {
|
||||
schedulers.values.asScala.foreach(_ ! UnSchedule)
|
||||
import scala.collection.JavaConversions._
|
||||
schedulers.values.foreach(_ ! UnSchedule)
|
||||
service.shutdown
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ package se.scalablesolutions.akka.config
|
|||
|
||||
import scala.collection.mutable.HashSet
|
||||
|
||||
import util.Logging
|
||||
import se.scalablesolutions.akka.util.Logging
|
||||
|
||||
object ConfiguratorRepository extends Logging {
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ abstract class BasicClusterActor extends ClusterActor {
|
|||
|
||||
case RegisterLocalNode(s) => {
|
||||
log debug ("RegisterLocalNode: %s", s)
|
||||
local = Node(local.endpoints + s)
|
||||
local = Node(s :: local.endpoints)
|
||||
broadcast(Papers(local.endpoints))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ class RemoteClientPipelineFactory(name: String,
|
|||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
@ChannelPipelineCoverage {val value = "all"}
|
||||
@ChannelPipelineCoverage(value = "all")
|
||||
class RemoteClientHandler(val name: String,
|
||||
val futures: ConcurrentMap[Long, CompletableFutureResult],
|
||||
val supervisors: ConcurrentMap[String, Actor],
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
package se.scalablesolutions.akka.remote
|
||||
|
||||
import se.scalablesolutions.akka.serialization.Serializable.SBinary
|
||||
//import se.scalablesolutions.akka.serialization.Serializable.SBinary
|
||||
import se.scalablesolutions.akka.serialization.{Serializer, Serializable, SerializationProtocol}
|
||||
import se.scalablesolutions.akka.remote.protobuf.RemoteProtocol.{RemoteRequest, RemoteReply}
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ object RemoteProtocolBuilder {
|
|||
private var SERIALIZER_JAVA: Serializer.Java = Serializer.Java
|
||||
private var SERIALIZER_JAVA_JSON: Serializer.JavaJSON = Serializer.JavaJSON
|
||||
private var SERIALIZER_SCALA_JSON: Serializer.ScalaJSON = Serializer.ScalaJSON
|
||||
private var SERIALIZER_SBINARY: Serializer.SBinary = Serializer.SBinary
|
||||
//private var SERIALIZER_SBINARY: Serializer.SBinary = Serializer.SBinary
|
||||
private var SERIALIZER_PROTOBUF: Serializer.Protobuf = Serializer.Protobuf
|
||||
|
||||
|
||||
|
|
@ -29,9 +29,9 @@ object RemoteProtocolBuilder {
|
|||
|
||||
def getMessage(request: RemoteRequest): Any = {
|
||||
request.getProtocol match {
|
||||
case SerializationProtocol.SBINARY =>
|
||||
val renderer = Class.forName(new String(request.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary[_ <: AnyRef]]
|
||||
renderer.fromBytes(request.getMessage.toByteArray)
|
||||
//case SerializationProtocol.SBINARY =>
|
||||
// val renderer = Class.forName(new String(request.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary[_ <: AnyRef]]
|
||||
// renderer.fromBytes(request.getMessage.toByteArray)
|
||||
case SerializationProtocol.SCALA_JSON =>
|
||||
val manifest = SERIALIZER_JAVA.in(request.getMessageManifest.toByteArray, None).asInstanceOf[String]
|
||||
SERIALIZER_SCALA_JSON.in(request.getMessage.toByteArray, Some(Class.forName(manifest)))
|
||||
|
|
@ -50,9 +50,9 @@ object RemoteProtocolBuilder {
|
|||
|
||||
def getMessage(reply: RemoteReply): Any = {
|
||||
reply.getProtocol match {
|
||||
case SerializationProtocol.SBINARY =>
|
||||
val renderer = Class.forName(new String(reply.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary[_ <: AnyRef]]
|
||||
renderer.fromBytes(reply.getMessage.toByteArray)
|
||||
//case SerializationProtocol.SBINARY =>
|
||||
// val renderer = Class.forName(new String(reply.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary[_ <: AnyRef]]
|
||||
// renderer.fromBytes(reply.getMessage.toByteArray)
|
||||
case SerializationProtocol.SCALA_JSON =>
|
||||
val manifest = SERIALIZER_JAVA.in(reply.getMessageManifest.toByteArray, None).asInstanceOf[String]
|
||||
SERIALIZER_SCALA_JSON.in(reply.getMessage.toByteArray, Some(Class.forName(manifest)))
|
||||
|
|
@ -70,12 +70,12 @@ object RemoteProtocolBuilder {
|
|||
}
|
||||
|
||||
def setMessage(message: Any, builder: RemoteRequest.Builder) = {
|
||||
if (message.isInstanceOf[Serializable.SBinary[_]]) {
|
||||
/*if (message.isInstanceOf[Serializable.SBinary[_]]) {
|
||||
val serializable = message.asInstanceOf[Serializable.SBinary[_ <: Any]]
|
||||
builder.setProtocol(SerializationProtocol.SBINARY)
|
||||
builder.setMessage(ByteString.copyFrom(serializable.toBytes))
|
||||
builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes))
|
||||
} else if (message.isInstanceOf[Message]) {
|
||||
} else*/ if (message.isInstanceOf[Message]) {
|
||||
val serializable = message.asInstanceOf[Message]
|
||||
builder.setProtocol(SerializationProtocol.PROTOBUF)
|
||||
builder.setMessage(ByteString.copyFrom(serializable.toByteArray))
|
||||
|
|
@ -98,12 +98,12 @@ object RemoteProtocolBuilder {
|
|||
}
|
||||
|
||||
def setMessage(message: Any, builder: RemoteReply.Builder) = {
|
||||
if (message.isInstanceOf[Serializable.SBinary[_]]) {
|
||||
/*if (message.isInstanceOf[Serializable.SBinary[_]]) {
|
||||
val serializable = message.asInstanceOf[Serializable.SBinary[_ <: Any]]
|
||||
builder.setProtocol(SerializationProtocol.SBINARY)
|
||||
builder.setMessage(ByteString.copyFrom(serializable.toBytes))
|
||||
builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes))
|
||||
} else if (message.isInstanceOf[Message]) {
|
||||
} else*/ if (message.isInstanceOf[Message]) {
|
||||
val serializable = message.asInstanceOf[Message]
|
||||
builder.setProtocol(SerializationProtocol.PROTOBUF)
|
||||
builder.setMessage(ByteString.copyFrom(serializable.toByteArray))
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ class RemoteServerPipelineFactory(
|
|||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
@ChannelPipelineCoverage {val value = "all"}
|
||||
@ChannelPipelineCoverage(value = "all")
|
||||
class RemoteServerHandler(
|
||||
val name: String,
|
||||
val openChannels: ChannelGroup,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* Copyright (C) 2009-2010 Scalable Solutions AB <http://scalablesolutions.se>
|
||||
*/
|
||||
|
||||
/*
|
||||
package se.scalablesolutions.akka.serialization
|
||||
|
||||
// --- PRIMITIVES ---
|
||||
|
|
@ -373,3 +373,4 @@ case class BinaryStringByteArrayMap(val value: Map[String, Array[Byte]]) extends
|
|||
def fromBytes(bytes: Array[Byte]) = BinaryStringByteArrayMap(fromByteArray[Map[String, Array[Byte]]](bytes))
|
||||
def toBytes: Array[Byte] = toByteArray(value)
|
||||
}
|
||||
*/
|
||||
|
|
@ -7,12 +7,12 @@ package se.scalablesolutions.akka.serialization
|
|||
import org.codehaus.jackson.map.ObjectMapper
|
||||
import com.google.protobuf.Message
|
||||
import reflect.Manifest
|
||||
import sbinary.DefaultProtocol
|
||||
//import sbinary.DefaultProtocol
|
||||
import java.io.{StringWriter, ByteArrayOutputStream, ObjectOutputStream}
|
||||
import sjson.json.{Serializer=>SJSONSerializer}
|
||||
|
||||
object SerializationProtocol {
|
||||
val SBINARY = 1
|
||||
//val SBINARY = 1
|
||||
val SCALA_JSON = 2
|
||||
val JAVA_JSON = 3
|
||||
val PROTOBUF = 4
|
||||
|
|
@ -60,10 +60,10 @@ object Serializable {
|
|||
* </pre>
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
trait SBinary[T <: AnyRef] extends Serializable {
|
||||
/*trait SBinary[T <: AnyRef] extends Serializable {
|
||||
def fromBytes(bytes: Array[Byte]): T
|
||||
def toBytes: Array[Byte]
|
||||
}
|
||||
} */
|
||||
|
||||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class SerializerFactory {
|
|||
def getJava: Java.type = Java
|
||||
def getJavaJSON: JavaJSON.type = JavaJSON
|
||||
def getScalaJSON: ScalaJSON.type = ScalaJSON
|
||||
def getSBinary: SBinary.type = SBinary
|
||||
//def getSBinary: SBinary.type = SBinary
|
||||
def getProtobuf: Protobuf.type = Protobuf
|
||||
}
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ object Serializer {
|
|||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
object SBinary extends SBinary
|
||||
/*object SBinary extends SBinary
|
||||
class SBinary {
|
||||
import sbinary.DefaultProtocol._
|
||||
|
||||
|
|
@ -176,6 +176,6 @@ object Serializer {
|
|||
def in[T](array : Array[Byte], clazz: Option[Class[T]])(implicit bin : Reads[T]): T = fromByteArray[T](array)
|
||||
|
||||
def in[T](array : Array[Byte])(implicit bin : Reads[T]): T = fromByteArray[T](array)
|
||||
}
|
||||
} */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ final class HashTrie[K, +V] private (root: Node[K, V]) extends Map[K, V] with Pe
|
|||
}
|
||||
|
||||
object HashTrie {
|
||||
def apply[K, V](pairs: (K, V)*) = pairs.foldLeft(new HashTrie[K, V]) { _ + _ }
|
||||
def apply[K, V](pairs: (K, V)*) = pairs.foldLeft((new HashTrie[K, V]).asInstanceOf[Map[K,V]]) { _ + _ }
|
||||
|
||||
def unapplySeq[K, V](map: HashTrie[K, V]) = map.toSeq
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
package se.scalablesolutions.akka.util
|
||||
|
||||
import stm.Transaction
|
||||
import se.scalablesolutions.akka.stm.Transaction
|
||||
|
||||
/**
|
||||
* Reference that can hold either a typed value or an exception.
|
||||
|
|
|
|||
|
|
@ -173,11 +173,19 @@ class TransactionalMap[K, V] extends Transactional with scala.collection.mutable
|
|||
|
||||
ref.swap(new HashTrie[K, V])
|
||||
|
||||
def -=(key: K) = remove(key)
|
||||
def -=(key: K) = {
|
||||
remove(key)
|
||||
this
|
||||
}
|
||||
|
||||
def +=(key: K, value: V) = put(key, value)
|
||||
|
||||
def remove(key: K) = ref.swap(ref.get.get - key)
|
||||
def remove(key: K) = {
|
||||
val map = ref.get.get
|
||||
val oldValue = map.get(key)
|
||||
ref.swap(ref.get.get - key)
|
||||
oldValue
|
||||
}
|
||||
|
||||
def get(key: K): Option[V] = ref.get.get.get(key)
|
||||
|
||||
|
|
|
|||
|
|
@ -23,8 +23,7 @@ import org.apache.thrift.protocol._
|
|||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
trait CassandraSession extends Closeable with Flushable {
|
||||
import scala.collection.jcl.Conversions._
|
||||
import org.scala_tools.javautils.Imports._
|
||||
import scala.collection.JavaConversions._
|
||||
import java.util.{Map => JMap, List => JList}
|
||||
|
||||
protected val client: Cassandra.Client
|
||||
|
|
@ -91,7 +90,7 @@ trait CassandraSession extends Closeable with Flushable {
|
|||
|
||||
def ++|(key: String, batch: Map[String, List[ColumnOrSuperColumn]], consistencyLevel: Int): Unit = {
|
||||
val jmap = new java.util.HashMap[String, JList[ColumnOrSuperColumn]]
|
||||
for (entry <- batch; (key, value) = entry) jmap.put(key, value.asJava)
|
||||
for (entry <- batch; (key, value) = entry) jmap.put(key, value)
|
||||
client.batch_insert(keyspace, key, jmap, consistencyLevel)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,14 +17,14 @@ import com.sun.jersey.spi.container.WebApplication
|
|||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
class AkkaServlet extends ServletContainer {
|
||||
import org.scala_tools.javautils.Imports._
|
||||
import scala.collection.JavaConversions._
|
||||
|
||||
override def initiate(resourceConfig: ResourceConfig, webApplication: WebApplication) = {
|
||||
//Kernel.boot // will boot if not already booted by 'main'
|
||||
|
||||
val configurators = ConfiguratorRepository.getConfigurators
|
||||
|
||||
resourceConfig.getClasses.addAll(configurators.flatMap(_.getComponentInterfaces).asJava)
|
||||
resourceConfig.getClasses.addAll(configurators.flatMap(_.getComponentInterfaces))
|
||||
resourceConfig.getProperties.put(
|
||||
"com.sun.jersey.spi.container.ResourceFilters",
|
||||
Config.config.getList("akka.rest.filters").mkString(","))
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>sjson.json</groupId>
|
||||
<artifactId>sjson</artifactId>
|
||||
<version>0.5-SNAPSHOT-2.8.Beta1</version>
|
||||
<packaging>jar</packaging>
|
||||
</project>
|
||||
Loading…
Add table
Add a link
Reference in a new issue