Skip to content

Commit

Permalink
Fixing some bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
zzorn committed Aug 18, 2010
1 parent 699ecae commit 9424f22
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 12 deletions.
4 changes: 2 additions & 2 deletions src/main/scala/org/cloudfun/data/Data.scala
Expand Up @@ -26,7 +26,7 @@ trait Data {
protected def string(name: Symbol, value: String = "") = makeField[String](name, value)
protected def data(name: Symbol, value: Data = null) = makeField[Data](name, value)
protected def list[E](name: Symbol, value: List[E] = Nil) = makeField[List[E]](name, value)
protected def ref[E](name: Symbol, value: Ref[E] = NoRef) = makeField[Ref[E]](name, value)
protected def ref[E](name: Symbol, value: Ref[E] = NoRef[E]()) = makeField[Ref[E]](name, value)

private def makeField[T](name: Symbol, value: T): Field[T] = {
set(name, value.asInstanceOf[Object])
Expand Down Expand Up @@ -66,7 +66,7 @@ trait Data {
def getBoolean(name: Symbol, default: Boolean) = getAs[Boolean](name).getOrElse(default)
def getString(name: Symbol, default: String = "") = getAs[String](name).getOrElse(default)
def getList(name: Symbol, default: List[Object] = Nil) = getAs[List[Object]](name).getOrElse(default)
def getRef[E](name: Symbol, default: Ref[E] = NoRef) = getAs[Ref[E]](name).getOrElse(default)
def getRef[E](name: Symbol, default: Ref[E] = NoRef[E]()) = getAs[Ref[E]](name).getOrElse(default)
def getData(name: Symbol, default: Data = EmptyData) = getAs[Data](name).getOrElse(default)


Expand Down
12 changes: 6 additions & 6 deletions src/main/scala/org/cloudfun/entity/Entity.scala
Expand Up @@ -11,18 +11,18 @@ import org.cloudfun.util.LogMethods
*/
class Entity extends MutableData with Storable with MessageReceiver with LogMethods {

def this(facets: Facet*) = this(facets.toList)

def this(facets: Iterable[Facet]) = {
this()

facets foreach addFacet
}

def this(facets: Facet*) = this(facets.toList)

val facets = list[Ref[Facet]]('facets)

final def addFacet(facet: Facet) {
val r = facet.ref
val r = facet.ref[Facet]
if (!facets().contains(r)) {
facets.set(r :: facets())
facet.entity := ref[Entity]
Expand All @@ -33,14 +33,14 @@ class Entity extends MutableData with Storable with MessageReceiver with LogMeth
val r = facet.ref
if (facets().contains(r)) {
facets.set(facets().filterNot(_ == r))
facet.entity := NoRef
facet.entity := NoRef[Facet]()
}
}

/**
* Get a facet of the specific type, or None if not found.
*/
def facet[T <: Facet](implicit m: Manifest[T]): Option[T] = facets().map(_.apply()).find(f => m.erasure.isInstance(f)).asInstanceOf[Option[T]]
// def facet[T <: Facet](implicit m: Manifest[T]): Option[T] = facets().map(_.apply()).find(f => m.erasure.isInstance(f)).asInstanceOf[Option[T]]

/**
* Get a facet with the specified name, or None if not found.
Expand All @@ -51,7 +51,7 @@ class Entity extends MutableData with Storable with MessageReceiver with LogMeth
final def onMessage(message: Data) = {
message.get('facet) match {
case None => fallbackMessageHandler(message)
case Some(name) => facet(name) match {
case Some(name: Symbol) => facet(name) match {
case None => fallbackMessageHandler(message)
case Some(facet: Facet) => facet.onMessage(message)
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/org/cloudfun/entity/Facet.scala
Expand Up @@ -19,7 +19,7 @@ trait Facet extends MutableData with Storable with Taskable with MessageReceiver
/**
* Name for this type of facet.
*/
def name: Symbol = getClass.getSimpleName
def name: Symbol = Symbol(getClass.getSimpleName())

protected[entity] final def initialize(parameters: Data) {init(parameters)}

Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/org/cloudfun/storage/NoRef.scala
Expand Up @@ -3,4 +3,4 @@ package org.cloudfun.storage
/**
* A reference to nothing.
*/
object NoRef extends Ref[Storable]
case class NoRef[E <: Storable] extends Ref[E]
Expand Up @@ -40,7 +40,7 @@ class InMemoryStorage extends Storage {

private def getReferencedObject[T](ref: Ref[T]): T = {
ref match {
case NoRef => throw new ElementNotFoundException("Reference to nothing")
case NoRef() => throw new ElementNotFoundException("Reference to nothing")
case MemoryRef(obj) => obj
case _ => throw new IllegalStateException("Unknown reference type " + ref)
}
Expand Down
Expand Up @@ -108,7 +108,7 @@ class MongoDbStorage() extends Storage {

private def getRefId[T <: Storable](ref: Ref[T]): ObjectId = {
ref match {
case NoRef => throw new ElementNotFoundException("Reference to nothing")
case NoRef() => throw new ElementNotFoundException("Reference to nothing")
case MongoRef(id) => id
case _ => throw new ElementNotFoundException("Unknown reference type "+ ref)
}
Expand Down

0 comments on commit 9424f22

Please sign in to comment.