Skip to content

Commit

Permalink
Merge pull request #12 from seratch/rename-jackson-modules
Browse files Browse the repository at this point in the history
Rename jackson/json4s modules
  • Loading branch information
seratch committed Sep 12, 2015
2 parents e8347dc + 1cb8511 commit d78cb3a
Show file tree
Hide file tree
Showing 49 changed files with 107 additions and 111 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ lazy val skinnyMicroVersion = "0.9.9"

libraryDependencies ++= Seq(
// micro Web framework
"org.skinny-framework" %% "skinny-micro" % skinnyMicroVersion,
"org.skinny-framework" %% "skinny-micro" % skinnyMicroVersion,
// jackson integration
"org.skinny-framework" %% "skinny-micro-json" % skinnyMicroVersion,
"org.skinny-framework" %% "skinny-micro-xml" % skinnyMicroVersion,
"org.skinny-framework" %% "skinny-micro-jackson" % skinnyMicroVersion,
"org.skinny-framework" %% "skinny-micro-jackson-xml" % skinnyMicroVersion,
// json4s integration
"org.skinny-framework" %% "skinny-micro-json4s" % skinnyMicroVersion,
"org.skinny-framework" %% "skinny-micro-json4s" % skinnyMicroVersion,
// Scalate integration
"org.skinny-framework" %% "skinny-micro-scalate" % skinnyMicroVersion,
"org.skinny-framework" %% "skinny-micro-scalate" % skinnyMicroVersion,
// Standalone Web server (Jetty 9.2 / Servlet 3.1)
"org.skinny-framework" %% "skinny-micro-server" % skinnyMicroVersion
"org.skinny-framework" %% "skinny-micro-server" % skinnyMicroVersion
)
```

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package skinny.xml
package skinny.jackson

import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
import com.fasterxml.jackson.databind.{ DeserializationFeature, PropertyNamingStrategy }
import com.fasterxml.jackson.dataformat.xml.XmlMapper
import com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
import skinny.json.JSONStringOps._
import skinny.jackson.JSONStringOps._

import scala.util.{ Failure, Success, Try }

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package skinny.micro.contrib
package skinny.micro.contrib.jackson

import skinny.xml.XMLStringOps
import skinny.jackson.XMLStringOps
import skinny.micro.context.SkinnyContext
import skinny.micro.{ Format, SkinnyMicroBase }

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro.contrib.XMLSupport
import skinny.micro.contrib.jackson.XMLSupport
import skinny.micro.{ AsyncSkinnyMicroServlet, ServletConcurrencyException }

import scala.concurrent.Future
import scala.concurrent.duration._

class FutureSpec extends ScalatraFlatSpec {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro._
import skinny.micro.contrib.XMLSupport
import skinny.micro.contrib.jackson.XMLSupport

import scala.concurrent.Future

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package example
import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro._
import skinny.micro.async.AsyncResult
import skinny.micro.contrib.XMLSupport
import skinny.micro.contrib.jackson.XMLSupport

import scala.concurrent.Future

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro.SkinnyMicroFilter
import skinny.micro.contrib.XMLSupport
import skinny.micro.contrib.jackson.XMLSupport

class XMLOperationSpec extends ScalatraFlatSpec {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package example

import org.scalatest._
import skinny.xml.XMLStringOps
import skinny.jackson.XMLStringOps

case class SomeGroup(name: String, groupMembers: Seq[Member])
case class Member(id: Long, name: Option[String])
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package skinny.json4s
package skinny.jackson

/**
* JSON String operations for Angular application's server side.
*
* - camelCase keys
* - JSON vulnerability protection enabled by default
*/
trait Json4sAngularJSONStringOps extends Json4sJSONStringOps {
trait AngularJSONStringOps extends JSONStringOps {

// JSON vulnerability protection enabled by default
override protected def useJSONVulnerabilityProtection: Boolean = true
Expand All @@ -16,4 +16,4 @@ trait Json4sAngularJSONStringOps extends Json4sJSONStringOps {

}

object Json4sAngularJSONStringOps extends Json4sAngularJSONStringOps
object AngularJSONStringOps extends AngularJSONStringOps
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package skinny.json
package skinny.jackson

import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
import com.fasterxml.jackson.databind.`type`.CollectionType
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package skinny.micro.contrib
package skinny.micro.contrib.jackson

import org.slf4j.LoggerFactory
import skinny.json.JSONStringOps
import skinny.jackson.JSONStringOps
import skinny.logging.LoggerProvider
import skinny.micro.context.SkinnyContext
import skinny.micro.routing.MatchedRoute
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package skinny.micro.contrib
package skinny.micro.contrib.jackson

import skinny.json.JSONStringOps
import skinny.jackson.JSONStringOps
import skinny.micro.context.SkinnyContext
import skinny.micro.{ Format, SkinnyMicroBase }

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro.contrib.JSONSupport
import skinny.micro.contrib.jackson.JSONSupport
import skinny.micro.{ AsyncSkinnyMicroServlet, ServletConcurrencyException }

import scala.concurrent.Future
import scala.concurrent.duration._

class FutureSpec extends ScalatraFlatSpec {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro._
import skinny.micro.contrib.JSONSupport
import skinny.micro.contrib.jackson.JSONSupport

import scala.concurrent.Future

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package example
import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.micro._
import skinny.micro.async.AsyncResult
import skinny.micro.contrib.JSONSupport
import skinny.micro.contrib.jackson.JSONSupport

import scala.concurrent.Future

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package example

import org.scalatest._
import skinny.json.JSONStringOps
import skinny.jackson.JSONStringOps

case class Samples(samples: Seq[Sample])
case class Sample(id: Long, firstName: String)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.json.JSONStringOps
import skinny.jackson.JSONStringOps
import skinny.micro.SkinnyMicroFilter
import skinny.micro.contrib.JSONSupport
import skinny.micro.contrib.jackson.JSONSupport

import scala.util.Success

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package example

import org.scalatra.test.scalatest.ScalatraFlatSpec
import skinny.json.JSONStringOps
import skinny.jackson.JSONStringOps
import skinny.micro.WebApp
import skinny.micro.contrib.JSONParamsAutoBinderSupport
import skinny.micro.contrib.jackson.JSONParamsAutoBinderSupport

class JSONParamsAutoBinderSupportSpec extends ScalatraFlatSpec {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package example

import org.scalatest._
import skinny.json.JSONStringOps
import skinny.jackson.JSONStringOps

case class SomeGroup(name: String, groupMembers: Seq[Member])
case class Member(id: Long, name: Option[String])
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package skinny.json
package skinny.json4s

/**
* JSON String operations for Angular application's server side.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import com.fasterxml.jackson.databind.{ DeserializationFeature, ObjectMapper, Ob
import org.json4s._
import org.json4s.jackson.Json4sScalaModule

import scala.util.control.Exception._
import scala.util.Try

/**
* Easy-to-use JSON String Operation.
*/
trait Json4sJSONStringOps {
trait JSONStringOps {

/**
* Use the prefix for JSON Vulnerability Protection.
Expand Down Expand Up @@ -56,12 +56,10 @@ trait Json4sJSONStringOps {
}
}

private[this] def parseOpt(in: JsonInput, useBigDecimalForDouble: Boolean = false): Option[JValue] = allCatch opt {
private[this] def tryParsing(in: JsonInput, useBigDecimalForDouble: Boolean = false): Try[JValue] = Try {
parse(in, useBigDecimalForDouble)
}

private[this] def render(value: JValue): JValue = value

private[this] def pretty(d: JValue): String = {
val writer: ObjectWriter = mapper.writerWithDefaultPrettyPrinter()
writer.writeValueAsString(d)
Expand Down Expand Up @@ -140,7 +138,7 @@ trait Json4sJSONStringOps {
* @tparam A return type
* @return value
*/
def fromJSONString[A](json: String, underscoreKeys: Boolean = false, asIs: Boolean = false)(implicit mf: Manifest[A]): Option[A] = {
def fromJSONString[A](json: String, underscoreKeys: Boolean = false, asIs: Boolean = false)(implicit mf: Manifest[A]): Try[A] = {
fromJSONStringToJValue(json, underscoreKeys, asIs).map[A](_.extract[A])
}

Expand All @@ -160,7 +158,7 @@ trait Json4sJSONStringOps {
* @tparam A return type
* @return value
*/
def fromJSONStringAsIs[A](json: String)(implicit mf: Manifest[A]): Option[A] = fromJSONString(json, false, true)
def fromJSONStringAsIs[A](json: String)(implicit mf: Manifest[A]): Try[A] = fromJSONString(json, false, true)

/**
* Extracts a JSON value from JSON string.
Expand All @@ -170,14 +168,14 @@ trait Json4sJSONStringOps {
* @param underscoreKeys underscore keys
* @return value
*/
def fromJSONStringToJValue(json: String, underscoreKeys: Boolean = false, asIs: Boolean = false): Option[JValue] = {
def fromJSONStringToJValue(json: String, underscoreKeys: Boolean = false, asIs: Boolean = false): Try[JValue] = {
val pureJson = if (useJSONVulnerabilityProtection &&
json.startsWith(prefixForJSONVulnerabilityProtection)) {
json.replace(prefixForJSONVulnerabilityProtection, "")
} else {
json
}
parseOpt(StringInput(pureJson)).map { v =>
tryParsing(StringInput(pureJson)).map { v =>
if (asIs) v
else if (underscoreKeys) v.underscoreKeys
else v.camelizeKeys
Expand All @@ -186,5 +184,5 @@ trait Json4sJSONStringOps {

}

object Json4sJSONStringOps
extends Json4sJSONStringOps
object JSONStringOps
extends JSONStringOps
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package skinny.micro.contrib
package skinny.micro.contrib.json4s

import java.io.{ InputStream, InputStreamReader }

import org.json4s.Xml._
import org.json4s._
import org.slf4j.LoggerFactory
import skinny.json4s.Json4sJSONStringOps
import skinny.json4s.JSONStringOps
import skinny.logging.LoggerProvider
import skinny.micro.context.SkinnyContext
import skinny.micro.routing.MatchedRoute
Expand All @@ -18,17 +18,17 @@ import skinny.micro.{ ApiFormats, Params, SkinnyMicroBase, SkinnyMicroParams }
*
* NOTICE: Avoid extending JacksonJsonSupport due to render method conflict
*/
trait Json4sJSONParamsAutoBinderSupport
trait JSONParamsAutoBinderSupport
extends SkinnyMicroBase
with Json4sJSONStringOps
with JSONStringOps
with ApiFormats
with LoggerProvider {

/**
* Merge parsedBody (JValue) into params if possible.
*/
override def params(implicit ctx: SkinnyContext): Params = {
if (request(ctx).get(Json4sSupport.ParsedBodyKey).isDefined) {
if (request(ctx).get(JSONSupport.ParsedBodyKey).isDefined) {
try {
val jsonParams: Map[String, Seq[String]] = parsedBody(ctx).extract[Map[String, String]].mapValues(v => Seq(v))
val mergedParams: Map[String, Seq[String]] = getMergedMultiParams(multiParams(ctx), jsonParams)
Expand All @@ -53,7 +53,7 @@ trait Json4sJSONParamsAutoBinderSupport
val mt = request(context).contentType.fold("application/x-www-form-urlencoded")(_.split(";").head)
val fmt = mimeTypes get mt getOrElse "html"
if (shouldParseBody(fmt)(context)) {
request(ctx)(Json4sSupport.ParsedBodyKey) = parseRequestBody(fmt)(ctx).asInstanceOf[AnyRef]
request(ctx)(JSONSupport.ParsedBodyKey) = parseRequestBody(fmt)(ctx).asInstanceOf[AnyRef]
}
super.invoke(matchedRoute)
}
Expand Down Expand Up @@ -139,12 +139,12 @@ trait Json4sJSONParamsAutoBinderSupport
}

private[this] def parsedBody(implicit ctx: SkinnyContext): JValue = {
ctx.request.get(Json4sSupport.ParsedBodyKey).fold({
ctx.request.get(JSONSupport.ParsedBodyKey).fold({
val fmt = requestFormat(ctx)
var bd: JValue = JNothing
if (fmt == "json" || fmt == "xml") {
bd = parseRequestBody(fmt)(ctx)
ctx.request(Json4sSupport.ParsedBodyKey) = bd.asInstanceOf[AnyRef]
ctx.request(JSONSupport.ParsedBodyKey) = bd.asInstanceOf[AnyRef]
}
bd
})(_.asInstanceOf[JValue])
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package skinny.micro.contrib
package skinny.micro.contrib.json4s

import skinny.json4s._
import skinny.micro.context.SkinnyContext
Expand All @@ -7,7 +7,7 @@ import skinny.micro.{ Format, SkinnyMicroBase }
/**
* JSON response support.
*/
trait Json4sSupport extends Json4sJSONStringOps { self: SkinnyMicroBase =>
trait JSONSupport extends JSONStringOps { self: SkinnyMicroBase =>

/**
* Returns JSON response.
Expand All @@ -34,7 +34,7 @@ trait Json4sSupport extends Json4sJSONStringOps { self: SkinnyMicroBase =>

}

object Json4sSupport {
object JSONSupport {

val ParsedBodyKey = "skinny.micro.json4s.ParsedBody"

Expand Down
Loading

0 comments on commit d78cb3a

Please sign in to comment.