Skip to content

Commit

Permalink
views
Browse files Browse the repository at this point in the history
  • Loading branch information
tomerd committed Apr 19, 2013
1 parent 4b45fd7 commit c246813
Show file tree
Hide file tree
Showing 30 changed files with 919 additions and 367 deletions.
26 changes: 20 additions & 6 deletions server/pom.xml
Expand Up @@ -12,11 +12,12 @@

<properties>
<scala.version>2.9.1</scala.version>
<ostrich.version>4.10.2</ostrich.version>
<ostrich.version>4.10.6</ostrich.version>
<guice.version>3.0</guice.version>
<slf4j-log4j.version>1.6.2</slf4j-log4j.version>
<!-- joda-time.version>2.2</joda-time.version -->
<slf4j-log4j.version>1.6.2</slf4j-log4j.version>
<!-- unfiltered.version>0.5.3</unfiltered.version-->
<lift.version>2.4</lift.version>
<lift.version>2.5-M4</lift.version>
<!--log4j.version>1.2.16</log4j.version-->
<!--naggati.version>2.2.1</naggati.version-->
<!--vysper.version>0.7</vysper.version-->
Expand Down Expand Up @@ -76,11 +77,17 @@
<artifactId>guice</artifactId>
<version>${guice.version}</version>
</dependency>
<!-- dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j.version}</version>
</dependency>
</dependency>

<!-- unfiltered -->
<!-- dependency>
<groupId>net.databinder</groupId>
Expand All @@ -97,6 +104,13 @@
<groupId>net.liftweb</groupId>
<artifactId>lift-util_${scala.version}</artifactId>
<version>${lift.version}</version>
<!-- excluding old joda-time -->
<!-- exclusions>
<exclusion>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</exclusion>
</exclusions -->
</dependency>
<!-- naggati -->
<!--dependency>
Expand Down Expand Up @@ -320,7 +334,7 @@
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.simbit.shaft.ElementServer</mainClass>
<mainClass>com.mishlabs.shaft.ElementServer</mainClass>
</manifest>
</archive>
</configuration>
Expand All @@ -331,7 +345,7 @@
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.simbit.shaft.ElementServer</mainClass>
<mainClass>com.mishlabs.shaft.ElementServer</mainClass>
</manifest>
</archive>
<descriptorRefs>
Expand Down
67 changes: 67 additions & 0 deletions server/shaft.server_2.9.1.iml
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="scala" name="Scala">
<configuration>
<option name="compilerLibraryLevel" value="Project" />
<option name="compilerLibraryName" value="Maven: org.scala-lang:scala-compiler-bundle:2.9.1" />
<option name="maximumHeapSize" value="1024" />
<option name="vmOptions" value="" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/scala" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/scala" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="jdk" jdkName="1.6" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: com.twitter:ostrich_2.9.1:4.10.6" level="project" />
<orderEntry type="library" name="Maven: com.twitter:util-core_2.9.1:1.12.13" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-library:2.9.1" level="project" />
<orderEntry type="library" name="Maven: com.twitter:util-eval_2.9.1:1.12.13" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scala-compiler:2.9.1" level="project" />
<orderEntry type="library" name="Maven: com.twitter:util-logging_2.9.1:1.12.13" level="project" />
<orderEntry type="library" name="Maven: com.twitter:json_2.9.1:2.1.7" level="project" />
<orderEntry type="library" name="Maven: com.google.inject:guice:3.0" level="project" />
<orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-log4j12:1.6.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.6.2" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.16" level="project" />
<orderEntry type="library" name="Maven: net.liftweb:lift-json_2.9.1:2.5-M4" level="project" />
<orderEntry type="library" name="Maven: org.specs2:specs2_2.9.1:1.12.3" level="project" />
<orderEntry type="library" name="Maven: org.specs2:specs2-scalaz-core_2.9.1:6.0.1" level="project" />
<orderEntry type="library" name="Maven: org.scala-lang:scalap:2.9.1" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.paranamer:paranamer:2.4.1" level="project" />
<orderEntry type="library" name="Maven: net.liftweb:lift-util_2.9.1:2.5-M4" level="project" />
<orderEntry type="library" name="Maven: net.liftweb:lift-actor_2.9.1:2.5-M4" level="project" />
<orderEntry type="library" name="Maven: net.liftweb:lift-common_2.9.1:2.5-M4" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.1" level="project" />
<orderEntry type="library" name="Maven: org.joda:joda-convert:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.6" level="project" />
<orderEntry type="library" name="Maven: javax.mail:mail:1.4.4" level="project" />
<orderEntry type="library" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" name="Maven: nu.validator.htmlparser:htmlparser:1.4" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty.orbit:javax.servlet:3.0.0.v201112011016" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-continuation:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-webapp:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:8.1.10.v20130312" level="project" />
<orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.2.2" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.7" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.scala-tools.testing:specs_2.9.1:1.6.9" level="project" />
</component>
</module>

@@ -1,6 +1,5 @@
package com.mishlabs.shaft
package app.controllers
package common
package app

protected case class PermissionDeniedException(reason:String) extends Exception(reason)
protected case class AccessDeniedException extends Exception
Expand Down

This file was deleted.

Expand Up @@ -8,18 +8,20 @@ import scala.xml._

import com.google.inject.Inject

import app.views.TemplatedView
import repository.TransactionManager

import app.model.Model

import common._
import util._
import net.liftweb.json.JValue

protected trait Controller
{
{
@Inject protected var server:Server = null
@Inject protected var request:Request = null
@Inject protected var session:Session = null
@Inject private var transactionManager:TransactionManager = null
@Inject var server:Server = null
@Inject var request:Request = null
@Inject var session:Session = null

// before API filters
def beforeFilter(api:Method):Unit = Unit
Expand All @@ -31,27 +33,28 @@ protected trait Controller
// transactions
final protected def newTransaction[A](a: => A):A = transactionManager.newTransaction(a)
final protected def inTransaction[A](a: => A):A = transactionManager.inTransaction(a)

// views
protected def buildView(data:AnyRef, view:TemplatedView):Response = XmlResponse(ViewBuilder.build(data, view))
protected def buildView(data:Iterable[AnyRef], nodeName:String):Response = XmlResponse(ViewBuilder.build(data, nodeName))
protected def buildView(entity:Model, viewName:Option[String]):Response = XmlResponse(ViewBuilder.build(entity, viewName))
protected def buildView(entities:Iterable[_ <: Model], viewName:Option[String]):Response = buildView(entities, None, viewName)
protected def buildView(entities:Iterable[_ <: Model], nodeName:Option[String], viewName:Option[String]):Response = XmlResponse(ViewBuilder.build(entities, nodeName, viewName))


// core APIs, to be overridden by sub classes
protected def list(view:Option[String]):Response = NotImplmentedResponse()
protected def show(id:Long, view:Option[String]):Response = NotImplmentedResponse()
protected def create(view:Option[String]):Response = NotImplmentedResponse()
protected def update(id:Long, view:Option[String]):Response = NotImplmentedResponse()
protected def destroy(id:Long):Response = NotImplmentedResponse()

private implicit def optxml2response(optxml:Option[Elem]):Response = optxml match
/*
private implicit def optxml2response(opt:Option[Elem]):Response = opt match
{
case Some(xml) => XmlResponse(xml)
case None => EmptyResponse()
}
private implicit def optjson2response(opt:Option[JValue]):Response = opt match
{
case Some(json) => JsonResponse(json)
case None => EmptyResponse()
}
*/

}


Expand Down
68 changes: 1 addition & 67 deletions server/src/main/scala/com/mishlabs/shaft/app/models/Models.scala
Expand Up @@ -10,72 +10,6 @@ trait KeyedModel[K <: Any, T <: KeyedModel[K, T]] extends Model
{
self:T =>

var id:K = Unit.asInstanceOf[K] //HACK...TEST THIS!
var id:K = Unit.asInstanceOf[K] //FIXME: HACK
def id(value:K):T = { this.id = value; this }
}

/*
trait NumericKeyedModel[T <: NumericKeyedModel[T]] extends KeyedModel[Long, T]
{
self:T =>
var id:Long = Long.MinValue
//protected final def isNew:Boolean = Long.MinValue == this.id
}
trait StringKeyedModel[T <: StringKeyedModel[T]] extends KeyedModel[String, T]
{
self:T =>
var id:String = null
}
*/

/*
protected trait TimestampedModel[T <: TimestampedModel[T]] extends Model
{
self:T =>
var createdBy:Option[String] = None
def createdBy(value:Option[String]):T = { this.createdBy = value; this }
var createdAt:Option[Date] = None
def createdAt(value:Option[Date]):T = { this.createdAt = value; this }
var modifiedBy:Option[String] = None
def modifiedBy(value:Option[String]):T = { this.modifiedBy = value; this }
var modifiedAt:Option[Date] = None
def modifiedAt(value:Option[Date]):T = { this.modifiedAt = value; this }
//final def touch(modifier:User):T = touch(modifier.username)
final def touch(modifier:String):T = this.modifiedBy(Some(modifier)).modifiedAt(Some(new Date()))
//final def touchNew(modifier:User):T = touchNew(modifier.username)
final def touchNew(modifier:String):T = this.createdBy(Some(modifier)).createdAt(Some(new Date())).touch(modifier)
}
protected trait NamedModel[T <: NamedModel[T]] extends Model
{
self:T =>
var name:String = ""
def name(value:String):T = { this.name = value; this }
var description:Option[String] = None
def description(value:Option[String]):T = { this.description = value; this }
}
protected trait BasicModel[T <: BasicModel[T]] extends IdentifiableModel[T] with TimestampedModel[T]
{
self:T =>
}
protected trait FullModel[T <: FullModel[T]] extends BasicModel[T] with NamedModel[T]
{
self:T =>
}
*/
@@ -0,0 +1,18 @@
package com.mishlabs.shaft
package app.views

protected trait View

trait ViewEngine
{
/*
protected def buildView(data:AnyRef, view:TemplatedView):Response = XmlResponse(ViewBuilder.build(data, view))
protected def buildView(data:Iterable[AnyRef], nodeName:String):Response = XmlResponse(ViewBuilder.build(data, nodeName))
protected def buildView(entity:Model, viewName:Option[String]):Response = XmlResponse(ViewBuilder.build(entity, viewName))
protected def buildView(entities:Iterable[_ <: Model], viewName:Option[String]):Response = buildView(entities, None, viewName)
protected def buildView(entities:Iterable[_ <: Model], nodeName:Option[String], viewName:Option[String]):Response = XmlResponse(ViewBuilder.build(entities, nodeName, viewName))
*/

//def render(data:AnyRef, viewName:Option[String]):Any
//def render(data:AnyRef, view:View):Any
}

0 comments on commit c246813

Please sign in to comment.