com.fasterxml.jackson.module.scala.DefaultScalaModule Scala Examples
The following examples show how to use com.fasterxml.jackson.module.scala.DefaultScalaModule.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: TsStreamingTest.scala From spark-riak-connector with Apache License 2.0 | 7 votes |
package com.basho.riak.spark.streaming import java.nio.ByteBuffer import java.util.concurrent.{Callable, Executors, TimeUnit} import com.basho.riak.spark._ import com.basho.riak.spark.rdd.RiakTSTests import com.basho.riak.spark.rdd.timeseries.{AbstractTimeSeriesTest, TimeSeriesData} import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper, SerializationFeature} import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.spark.sql.Row import org.junit.Assert._ import org.junit.experimental.categories.Category import org.junit.{After, Before, Test} @Category(Array(classOf[RiakTSTests])) class TsStreamingTest extends AbstractTimeSeriesTest(false) with SparkStreamingFixture { protected final val executorService = Executors.newCachedThreadPool() private val dataSource = new SocketStreamingDataSource private var port = -1 @Before def setUp(): Unit = { port = dataSource.start(client => { testData .map(tolerantMapper.writeValueAsString) .foreach(x => client.write(ByteBuffer.wrap(s"$x\n".getBytes))) logInfo(s"${testData.length} values were send to client") }) } @After def tearDown(): Unit = { dataSource.stop() } @Test(timeout = 10 * 1000) // 10 seconds timeout def saveToRiak(): Unit = { executorService.submit(new Runnable { override def run(): Unit = { ssc.socketTextStream("localhost", port) .map(string => { val tsdata = new ObjectMapper() .configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, true) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) .configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) .configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) .registerModule(DefaultScalaModule) .readValue(string, classOf[TimeSeriesData]) Row(1, "f", tsdata.time, tsdata.user_id, tsdata.temperature_k) }) .saveToRiakTS(bucketName) ssc.start() ssc.awaitTerminationOrTimeout(5 * 1000) } }) val result = executorService.submit(new Callable[Array[Seq[Any]]] { override def call(): Array[Seq[Any]] = { var rdd = sc.riakTSTable[Row](bucketName) .sql(s"SELECT user_id, temperature_k FROM $bucketName $sqlWhereClause") var count = rdd.count() while (count < testData.length) { TimeUnit.SECONDS.sleep(2) rdd = sc.riakTSTable[Row](bucketName) .sql(s"SELECT user_id, temperature_k FROM $bucketName $sqlWhereClause") count = rdd.count() } rdd.collect().map(_.toSeq) } }).get() assertEquals(testData.length, result.length) assertEqualsUsingJSONIgnoreOrder( """ |[ | ['bryce',305.37], | ['bryce',300.12], | ['bryce',295.95], | ['ratman',362.121], | ['ratman',3502.212] |] """.stripMargin, result) } }
Example 2
Source File: JacksonDefinitions.scala From borer with Mozilla Public License 2.0 | 5 votes |
package io.bullet.borer.benchmarks import com.fasterxml.jackson.core.`type`.TypeReference import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper} import com.fasterxml.jackson.module.afterburner.AfterburnerModule import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.openjdk.jmh.annotations._ object JacksonCodecs { val mapper: ObjectMapper = new ObjectMapper().registerModule(DefaultScalaModule).registerModule(new AfterburnerModule) val foosTypeRef = new TypeReference[Map[String, Foo]] {} val intsTypeRef = new TypeReference[List[Int]] {} } import io.bullet.borer.benchmarks.JacksonCodecs._ class JacksonEncodingBenchmark extends EncodingBenchmark { @Benchmark def encodeFoos: Array[Byte] = mapper.writeValueAsBytes(foos) @Benchmark def encodeInts: Array[Byte] = mapper.writeValueAsBytes(ints) @Benchmark def encodeEmptyArray: Array[Byte] = mapper.writeValueAsBytes(List.empty[Int]) } class JacksonDecodingBenchmark extends DecodingBenchmark { @Benchmark def decodeFoos: Map[String, Foo] = mapper.readValue(foosJson, foosTypeRef) @Benchmark def decodeInts: List[Int] = mapper.readValue(intsJson, intsTypeRef) @Benchmark def decodeEmptyArray: List[Int] = mapper.readValue(emptyArrayJson, intsTypeRef) } class JacksonDomBenchmark extends DomBenchmark { private var root: JsonNode = _ def setup(): Unit = root = mapper.readTree(fileBytes) @Benchmark def encodeDom: Array[Byte] = mapper.writeValueAsBytes(root) @Benchmark def decodeDom: JsonNode = mapper.readTree(fileBytes) } class JacksonModelBenchmark extends DomBenchmark { private var root: Product = _ lazy val typeRef: TypeReference[Product] = { val c = fileName match { case "australia-abc.json" => new TypeReference[Australia.RootInterface] {} case "bitcoin.json" => new TypeReference[Bitcoin.RootInterface] {} case "doj-blog.json" => new TypeReference[DojBlog.RootInterface] {} case "eu-lobby-country.json" => new TypeReference[EuLobbyCountry.RootInterface] {} case "eu-lobby-financial.json" => new TypeReference[EuLobbyFinancial.RootInterface] {} case "eu-lobby-repr.json" => new TypeReference[EuLobbyRepr.RootInterface] {} case "github-gists.json" => new TypeReference[List[GithubGists.RootInterface]] {} case "json-generator.json" => new TypeReference[List[JsonGenerator.RootInterface]] {} case "meteorites.json" => new TypeReference[List[Meteorites.RootInterface]] {} case "movies.json" => new TypeReference[List[Movies.RootInterface]] {} case "reddit-scala.json" => new TypeReference[Reddit.RootInterface[Reddit.Data]] {} case "rick-morty.json" => new TypeReference[RickMorty.RootInterface] {} case "temp-anomaly.json" => new TypeReference[TempAnomaly.RootInterface] {} case "thai-cinemas.json" => new TypeReference[ThaiCinemas.RootInterface] {} case "turkish.json" => new TypeReference[Turkish.RootInterface] {} case "github-events.json" => new TypeReference[ List[GithubEvents.RootInterface[GithubEvents.Head[GithubEvents.Repo1], GithubEvents.Forkee]]] {} case "twitter_api_compact_response.json" | "twitter_api_response.json" => new TypeReference[List[TwitterApiResponse.RootInterface]] {} } c.asInstanceOf[TypeReference[Product]] } def setup(): Unit = root = try mapper.readValue(fileBytes, typeRef) finally () @Benchmark def encodeModel: Array[Byte] = mapper.writeValueAsBytes(root) @Benchmark def decodeModel: Product = mapper.readValue(fileBytes, typeRef) }
Example 3
Source File: AppConfig.scala From odsc-west-streaming-trends with GNU General Public License v3.0 | 5 votes |
package com.twilio.open.streaming.trend.discovery.config import java.io.File import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule sealed trait Configuration extends Product with Serializable @SerialVersionUID(101L) case class AppConfiguration( @JsonProperty appName: String, @JsonProperty triggerInterval: String, // "30 seconds", "1 minute" @JsonProperty outputMode: String, @JsonProperty checkpointPath: String, @JsonProperty("windowInterval") windowIntervalMinutes: Long, @JsonProperty("watermarkInterval") watermarkIntervalMinutes: Long, @JsonProperty("core") sparkCoreConfig: Map[String, String], @JsonProperty callEventsTopic: KafkaReaderOrWriterConfig) extends Configuration with Serializable trait KafkaConfig { val topic: String val subscriptionType: String val conf: Map[String, String] } case class KafkaReaderOrWriterConfig( override val topic: String, override val subscriptionType: String, override val conf: Map[String, String]) extends KafkaConfig with Serializable object AppConfig { private val mapper = new ObjectMapper(new YAMLFactory) mapper.registerModule(DefaultScalaModule) @volatile private var config: AppConfiguration = _ def apply(resourcePath: String): AppConfiguration = { if (config == null) synchronized { if (config == null) config = parse(resourcePath) } config } private def parse(resourcePath: String): AppConfiguration = { mapper.readValue(new File(resourcePath), classOf[AppConfiguration]) } }
Example 4
Source File: CometObjectMapper.scala From comet-data-pipeline with Apache License 2.0 | 5 votes |
package com.ebiznext.comet.utils import com.fasterxml.jackson.annotation.JsonIgnoreType import com.fasterxml.jackson.core.JsonFactory import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.databind.{InjectableValues, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object CometObjectMapper { // https://github.com/FasterXML/jackson-databind/issues/962 @JsonIgnoreType private class MixinsForObjectMapper } class CometObjectMapper( jf: JsonFactory = null, injectables: scala.collection.immutable.Seq[(Class[_], AnyRef)] = Nil ) extends ObjectMapper(jf) with ScalaObjectMapper { this.registerModule(DefaultScalaModule) this.registerModule(CometJacksonModule) this.registerModule( new SimpleModule() .setMixInAnnotation(classOf[ObjectMapper], classOf[CometObjectMapper.MixinsForObjectMapper]) ) if (injectables.nonEmpty) { val iv = new InjectableValues.Std() injectables.foreach { case (klass, value) => iv.addValue(klass, value) } this.setInjectableValues(iv: InjectableValues) } }
Example 5
Source File: ObjectMapping.scala From ncdbg with BSD 3-Clause "New" or "Revised" License | 5 votes |
package com.programmaticallyspeaking.ncd.infra import com.fasterxml.jackson.annotation.JsonInclude.Include import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.databind._ import com.fasterxml.jackson.databind.ser.Serializers import com.fasterxml.jackson.databind.ser.std.StdSerializer import com.fasterxml.jackson.module.scala.{DefaultScalaModule, JacksonModule} import com.programmaticallyspeaking.ncd.chrome.domains.Runtime.RemoteObject import scala.reflect.ClassTag private class RemoteObjectSerializer extends StdSerializer[RemoteObject](classOf[RemoteObject]) { override def serialize(value: RemoteObject, gen: JsonGenerator, provider: SerializerProvider): Unit = { assert(value.productArity == 8, "Expected RemoteObject to have 8 product elements, but it has " + value.productArity) gen.writeStartObject() // (`type`: String, subtype: String, className: String, description: String, value: Any, unserializableValue: String, objectId: String) write(value, value.`type`, "type", gen) write(value, value.subtype, "subtype", gen) write(value, value.className, "className", gen) write(value, value.description, "description", gen) write(value, value.value, "value", gen) write(value, value.unserializableValue, "unserializableValue", gen) write(value, value.objectId, "objectId", gen) write(value, value.preview, "preview", gen) gen.writeEndObject() } private def write(remoteObject: RemoteObject, value: Any, field: String, gen: JsonGenerator): Unit = value match { case Some(x) => gen.writeObjectField(field, x) case None => // omit case other => gen.writeObjectField(field, other) } } private object RemoteObjectSerializerResolver extends Serializers.Base { private val REMOTE_OBJECT = classOf[RemoteObject] override def findSerializer(config: SerializationConfig, `type`: JavaType, beanDesc: BeanDescription): JsonSerializer[_] = { if (!REMOTE_OBJECT.isAssignableFrom(`type`.getRawClass)) null else new RemoteObjectSerializer() } } trait RemoteObjectModule extends JacksonModule { this += (_ addSerializers RemoteObjectSerializerResolver) } object ObjectMapping { private val mapper = new ObjectMapper() mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.setSerializationInclusion(Include.NON_ABSENT) mapper.registerModule(new DefaultScalaModule with RemoteObjectModule) def fromJson[R <: Any : ClassTag](json: String): R = { val clazz = implicitly[ClassTag[R]].runtimeClass fromJson(json, clazz).asInstanceOf[R] } def fromJson[R](json: String, clazz: Class[R]): R = mapper.readValue(json, clazz) def toJson[A](obj: A) = mapper.writeValueAsString(obj) def fromMap[R](map: Map[String, Any], clazz: Class[R]): R = mapper.convertValue(map, clazz) }
Example 6
Source File: JsonUtils.scala From delta with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.delta.util import com.fasterxml.jackson.annotation.JsonInclude.Include import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper val mapper = new ObjectMapper with ScalaObjectMapper mapper.setSerializationInclusion(Include.NON_ABSENT) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.registerModule(DefaultScalaModule) def toJson[T: Manifest](obj: T): String = { mapper.writeValueAsString(obj) } def toPrettyJson[T: Manifest](obj: T): String = { mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj) } def fromJson[T: Manifest](json: String): T = { mapper.readValue[T](json) } }
Example 7
Source File: WebappTestSupports.scala From pizza-auth-3 with MIT License | 5 votes |
package moe.pizza.auth.webapp import java.net.{Socket, InetSocketAddress, ServerSocket} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule import moe.pizza.auth.config.ConfigFile.ConfigFile import scala.concurrent.{Future, Await} import scala.io.Source import scala.util.Try import scala.concurrent.duration._ import scala.concurrent.ExecutionContext.Implicits.global object WebappTestSupports { val OM = new ObjectMapper(new YAMLFactory()) OM.registerModule(DefaultScalaModule) def readTestConfig(): ConfigFile = { val config = Source .fromURL(getClass.getResource("/config.yml")) .getLines() .mkString("\n") val conf = OM.readValue[ConfigFile](config, classOf[ConfigFile]) conf } }
Example 8
Source File: RestKeyMiddleware.scala From pizza-auth-3 with MIT License | 5 votes |
package moe.pizza.auth.webapp.rest import org.http4s.server.HttpMiddleware import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import moe.pizza.auth.interfaces.UserDatabase import moe.pizza.auth.webapp.SessionManager._ import moe.pizza.auth.webapp.Types.{HydratedSession, Session2, Session} import org.http4s.{HttpService, _} import org.http4s.server._ import org.slf4j.LoggerFactory import pdi.jwt.{JwtAlgorithm, JwtCirce, JwtClaim} import io.circe.generic.auto._ import scala.util.Try import org.http4s.dsl.{Root, _} import scalaz.concurrent.Task class RestKeyMiddleware(apikeys: List[String]) extends HttpMiddleware { override def apply(s: HttpService): HttpService = Service.lift { req => req.headers .get(headers.Authorization) .map(_.credentials.value.stripPrefix("Bearer ")) .filter(apikeys.contains) match { case Some(k) => s(req) case None => Unauthorized( Challenge(scheme = "Bearer", realm = "Please enter a valid API key")) } } }
Example 9
Source File: SessionManager.scala From pizza-auth-3 with MIT License | 5 votes |
package moe.pizza.auth.webapp import java.time.Instant import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import moe.pizza.auth.interfaces.UserDatabase import moe.pizza.auth.webapp.SessionManager._ import moe.pizza.auth.webapp.Types.{HydratedSession, Session, Session2} import org.http4s.{HttpService, _} import org.http4s.server._ import org.slf4j.LoggerFactory import pdi.jwt.{JwtAlgorithm, JwtCirce, JwtClaim} import io.circe.generic.auto._ import Utils._ import io.circe.Decoder.Result import scala.util.Try object SessionManager { val HYDRATEDSESSION = AttributeKey[HydratedSession]("HYDRATEDSESSION") val LOGOUT = AttributeKey[String]("LOGOUT") val COOKIESESSION = "authsession" } class SessionManager(secretKey: String, ud: UserDatabase) extends HttpMiddleware { val log = LoggerFactory.getLogger(getClass) val OM = new ObjectMapper() OM.registerModule(DefaultScalaModule) case class MyJwt(exp: Long, iat: Long, session: String) implicit def toOption[A](e: Result[A]): Option[A] = { e match { case Left(_) => None case Right(a) => Some(a) } } override def apply(s: HttpService): HttpService = Service.lift { req => log.info(s"Intercepting request ${req}") // TODO: this used to be nice with toOption, what happened val sessions = req.headers.get(headers.Cookie).toList.flatMap(_.values.list).flatMap { header => JwtCirce.decodeJson(header.content, secretKey, Seq(JwtAlgorithm.HS256)) .toOption .flatMap { jwt => jwt.as[MyJwt] match { case Right(x) => Some(x) case Left(_) => None } } .flatMap { myjwt => Try { OM.readValue(myjwt.session, classOf[Session2]) }.toOption } } log.info(s"found sessions: ${sessions}") // if we didn't find a valid session, make them one val session = sessions.headOption.getOrElse(Session2(List.empty, None, None, None)) // do the inner request val hydrated = session.hydrate(ud) log.info(s"running inner router with hydrated session ${hydrated}") val response = s(req.copy(attributes = req.attributes.put(HYDRATEDSESSION, hydrated))) response.map { resp => // do all of this once the request has been created val sessionToSave = resp.attributes .get(HYDRATEDSESSION) .map(_.dehydrate()) .getOrElse(session) val oldsessions = resp.headers .get(headers.Cookie) .toList .flatMap(_.values.list) .filter(_.name == COOKIESESSION) if (resp.attributes.get(LOGOUT).isEmpty) { log.info(s"saving the session as a cookie") val claim = JwtClaim( expiration = Some( Instant.now .plusSeconds(86400 * 30) .getEpochSecond), // lasts 30 days issuedAt = Some(Instant.now.getEpochSecond) ) + ("session", OM.writeValueAsString(sessionToSave)) val token = JwtCirce.encode(claim, secretKey, JwtAlgorithm.HS256) resp.addCookie( new Cookie(COOKIESESSION, token, None, None, None, path = Some("/")) ) } else { log.info(s"log out flag was set, not saving any cookies") resp.removeCookie(COOKIESESSION) } } } }
Example 10
Source File: JsonUtil.scala From ionroller with MIT License | 5 votes |
package ionroller import java.text.SimpleDateFormat import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import play.api.libs.json.Json object JsonUtil { object Implicits { implicit class Unmarshallable(unMarshallMe: String) { def toMap: Map[String, Any] = JsonUtil.toMap(unMarshallMe) def toMapOf[V]()(implicit m: Manifest[V]): Map[String, V] = JsonUtil.toMap[V](unMarshallMe) def fromJson[T]()(implicit m: Manifest[T]): T = JsonUtil.fromJson[T](unMarshallMe) } implicit class Marshallable[T](marshallMe: T) { def toJson: String = JsonUtil.toJson(marshallMe) def toJsonValue = Json.parse(JsonUtil.toJson(marshallMe)) } } val mapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")) def toJson(value: Map[Symbol, Any]): String = { toJson(value map { case (k, v) => k.name -> v }) } def toJson(value: Any): String = { mapper.writeValueAsString(value) } def toMap[V](json: String)(implicit m: Manifest[V]) = fromJson[Map[String, V]](json) def fromJson[T](json: String)(implicit m: Manifest[T]): T = { mapper.readValue[T](json) } }
Example 11
Source File: KVUtils.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.status import java.io.File import scala.annotation.meta.getter import scala.collection.JavaConverters._ import scala.language.implicitConversions import scala.reflect.{classTag, ClassTag} import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.spark.internal.Logging import org.apache.spark.util.kvstore._ private[spark] object KVUtils extends Logging { def viewToSeq[T]( view: KVStoreView[T], max: Int) (filter: T => Boolean): Seq[T] = { val iter = view.closeableIterator() try { iter.asScala.filter(filter).take(max).toList } finally { iter.close() } } private[spark] class MetadataMismatchException extends Exception }
Example 12
Source File: TestHelper.scala From spark-summit-2018 with GNU General Public License v3.0 | 5 votes |
package com.twilio.open.streaming.trend.discovery import java.io.{ByteArrayInputStream, InputStream} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.google.protobuf.Message import com.googlecode.protobuf.format.JsonFormat import com.holdenkarau.spark.testing.{LocalSparkContext, SparkContextProvider} import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.SparkSession import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers, Suite} import org.slf4j.{Logger, LoggerFactory} import scala.collection.Seq import scala.io.Source import scala.reflect.ClassTag import scala.reflect.classTag object TestHelper { val log: Logger = LoggerFactory.getLogger("com.twilio.open.streaming.trend.discovery.TestHelper") val mapper: ObjectMapper = { val m = new ObjectMapper() m.registerModule(DefaultScalaModule) } val jsonFormat: JsonFormat = new JsonFormat def loadScenario[T<: Message : ClassTag](file: String): Seq[T] = { val fileString = Source.fromFile(file).mkString val parsed = mapper.readValue(fileString, classOf[Sceanario]) parsed.input.map { data => val json = mapper.writeValueAsString(data) convert[T](json) } } def convert[T<: Message : ClassTag](json: String): T = { val clazz = classTag[T].runtimeClass val builder = clazz.getMethod("newBuilder").invoke(clazz).asInstanceOf[Message.Builder] try { val input: InputStream = new ByteArrayInputStream(json.getBytes()) jsonFormat.merge(input, builder) builder.build().asInstanceOf[T] } catch { case e: Exception => throw e } } } @SerialVersionUID(1L) case class KafkaDataFrame(key: Array[Byte], topic: Array[Byte], value: Array[Byte]) extends Serializable case class Sceanario(input: Seq[Any], expected: Option[Any] = None) trait SparkSqlTest extends BeforeAndAfterAll with SparkContextProvider { self: Suite => @transient var _sparkSql: SparkSession = _ @transient private var _sc: SparkContext = _ override def sc: SparkContext = _sc def conf: SparkConf def sparkSql: SparkSession = _sparkSql override def beforeAll() { _sparkSql = SparkSession.builder().config(conf).getOrCreate() _sc = _sparkSql.sparkContext setup(_sc) super.beforeAll() } override def afterAll() { try { _sparkSql.close() _sparkSql = null LocalSparkContext.stop(_sc) _sc = null } finally { super.afterAll() } } }
Example 13
Source File: AppConfig.scala From spark-summit-2018 with GNU General Public License v3.0 | 5 votes |
package com.twilio.open.streaming.trend.discovery.config import java.io.File import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule sealed trait Configuration extends Product with Serializable @SerialVersionUID(101L) case class AppConfiguration( @JsonProperty appName: String, @JsonProperty triggerInterval: String, // "30 seconds", "1 minute" @JsonProperty outputMode: String, @JsonProperty checkpointPath: String, @JsonProperty("windowInterval") windowIntervalMinutes: Long, @JsonProperty("watermarkInterval") watermarkIntervalMinutes: Long, @JsonProperty("core") sparkCoreConfig: Map[String, String], @JsonProperty callEventsTopic: KafkaReaderOrWriterConfig) extends Configuration with Serializable trait KafkaConfig { val topic: String val subscriptionType: String val conf: Map[String, String] } case class KafkaReaderOrWriterConfig( override val topic: String, override val subscriptionType: String, override val conf: Map[String, String]) extends KafkaConfig with Serializable object AppConfig { private val mapper = new ObjectMapper(new YAMLFactory) mapper.registerModule(DefaultScalaModule) @volatile private var config: AppConfiguration = _ def apply(resourcePath: String): AppConfiguration = { if (config == null) synchronized { if (config == null) config = parse(resourcePath) } config } private def parse(resourcePath: String): AppConfiguration = { mapper.readValue(new File(resourcePath), classOf[AppConfiguration]) } }
Example 14
Source File: StateStore.scala From incubator-livy with Apache License 2.0 | 5 votes |
package org.apache.livy.server.recovery import scala.reflect.{classTag, ClassTag} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.livy.{LivyConf, Logging} import org.apache.livy.server.recovery.ZooKeeperManager import org.apache.livy.sessions.SessionKindModule import org.apache.livy.sessions.SessionManager._ protected trait JsonMapper { protected val mapper = new ObjectMapper() .registerModule(DefaultScalaModule) .registerModule(new SessionKindModule()) def serializeToBytes(value: Object): Array[Byte] = mapper.writeValueAsBytes(value) def deserialize[T: ClassTag](json: Array[Byte]): T = mapper.readValue(json, classTag[T].runtimeClass.asInstanceOf[Class[T]]) } object StateStore extends Logging { private[this] var stateStore: Option[StateStore] = None def init(livyConf: LivyConf, zkManager: Option[ZooKeeperManager] = None): Unit = synchronized { if (stateStore.isEmpty) { val fileStateStoreClassTag = pickStateStore(livyConf) if (fileStateStoreClassTag == classOf[ZooKeeperStateStore]) { stateStore = Option(fileStateStoreClassTag. getDeclaredConstructor(classOf[LivyConf], classOf[ZooKeeperManager]) .newInstance(livyConf, zkManager.get).asInstanceOf[StateStore]) } else { stateStore = Option(fileStateStoreClassTag.getDeclaredConstructor(classOf[LivyConf]) .newInstance(livyConf).asInstanceOf[StateStore]) } info(s"Using ${stateStore.get.getClass.getSimpleName} for recovery.") } } def cleanup(): Unit = synchronized { stateStore = None } def get: StateStore = { assert(stateStore.isDefined, "StateStore hasn't been initialized.") stateStore.get } private[recovery] def pickStateStore(livyConf: LivyConf): Class[_] = { livyConf.get(LivyConf.RECOVERY_MODE) match { case SESSION_RECOVERY_MODE_OFF => classOf[BlackholeStateStore] case SESSION_RECOVERY_MODE_RECOVERY => livyConf.get(LivyConf.RECOVERY_STATE_STORE) match { case "filesystem" => classOf[FileSystemStateStore] case "zookeeper" => classOf[ZooKeeperStateStore] case ss => throw new IllegalArgumentException(s"Unsupported state store $ss") } case rm => throw new IllegalArgumentException(s"Unsupported recovery mode $rm") } } }
Example 15
Source File: Spark2JobApiIT.scala From incubator-livy with Apache License 2.0 | 5 votes |
package org.apache.livy.test import java.io.File import java.net.URI import java.util.concurrent.{TimeUnit, Future => JFuture} import javax.servlet.http.HttpServletResponse import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.scalatest.BeforeAndAfterAll import org.apache.http.client.methods.HttpGet import org.apache.livy._ import org.apache.livy.client.common.HttpMessages._ import org.apache.livy.sessions.SessionKindModule import org.apache.livy.test.framework.BaseIntegrationTestSuite import org.apache.livy.test.jobs.spark2._ class Spark2JobApiIT extends BaseIntegrationTestSuite with BeforeAndAfterAll with Logging { private var client: LivyClient = _ private var sessionId: Int = _ private val mapper = new ObjectMapper() .registerModule(DefaultScalaModule) .registerModule(new SessionKindModule()) override def afterAll(): Unit = { super.afterAll() if (client != null) { client.stop(true) } livyClient.connectSession(sessionId).stop() } test("create a new session and upload test jar") { val prevSessionCount = sessionList().total val tempClient = createClient(livyEndpoint) try { // Figure out the session ID by poking at the REST endpoint. We should probably expose this // in the Java API. val list = sessionList() assert(list.total === prevSessionCount + 1) val tempSessionId = list.sessions(0).id livyClient.connectSession(tempSessionId).verifySessionIdle() waitFor(tempClient.uploadJar(new File(testLib))) client = tempClient sessionId = tempSessionId } finally { if (client == null) { try { if (tempClient != null) { tempClient.stop(true) } } catch { case e: Exception => warn("Error stopping client.", e) } } } } test("run spark2 job") { assume(client != null, "Client not active.") val result = waitFor(client.submit(new SparkSessionTest())) assert(result === 3) } test("run spark2 dataset job") { assume(client != null, "Client not active.") val result = waitFor(client.submit(new DatasetTest())) assert(result === 2) } private def waitFor[T](future: JFuture[T]): T = { future.get(60, TimeUnit.SECONDS) } private def sessionList(): SessionList = { val httpGet = new HttpGet(s"$livyEndpoint/sessions/") val r = livyClient.httpClient.execute(httpGet) val statusCode = r.getStatusLine().getStatusCode() val responseBody = r.getEntity().getContent val sessionList = mapper.readValue(responseBody, classOf[SessionList]) r.close() assert(statusCode == HttpServletResponse.SC_OK) sessionList } private def createClient(uri: String): LivyClient = { new LivyClientBuilder().setURI(new URI(uri)).build() } }
Example 16
Source File: JsonSerde.scala From kafka-streams-scala with Apache License 2.0 | 5 votes |
package com.github.aseigneurin.kafka.serialization.scala import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.typesafe.scalalogging.LazyLogging import scala.reflect.{ClassTag, classTag} class JsonSerde[T >: Null : ClassTag] extends BaseSerde[T] with LazyLogging { val mapper = new ObjectMapper mapper.registerModule(DefaultScalaModule) override def deserialize(topic: String, data: Array[Byte]): T = data match { case null => null case _ => try { mapper.readValue(data, classTag[T].runtimeClass.asInstanceOf[Class[T]]) } catch { case e: Exception => val jsonStr = new String(data, "UTF-8") logger.warn(s"Failed parsing ${jsonStr}", e) null } } override def serialize(topic: String, obj: T): Array[Byte] = { mapper.writeValueAsBytes(obj) } }
Example 17
Source File: JsonJacksonMarshaller.scala From wix-http-testkit with MIT License | 5 votes |
package com.wix.e2e.http.json import java.lang.reflect.{ParameterizedType, Type} import com.fasterxml.jackson.core.`type`.TypeReference import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS import com.fasterxml.jackson.datatype.jdk8.Jdk8Module import com.fasterxml.jackson.datatype.joda.JodaModule import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.fasterxml.jackson.module.paramnames.ParameterNamesModule import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.e2e.http.api.Marshaller class JsonJacksonMarshaller extends Marshaller { def unmarshall[T : Manifest](jsonStr: String): T = objectMapper.readValue(jsonStr, typeReference[T]) def marshall[T](t: T): String = objectMapper.writeValueAsString(t) def configure: ObjectMapper = objectMapper private val objectMapper = new ObjectMapper() .registerModule(new Jdk8Module().configureAbsentsAsNulls(true)) .registerModules(new JodaModule, new ParameterNamesModule, new JavaTimeModule) // time modules .registerModule(new DefaultScalaModule) .disable( WRITE_DATES_AS_TIMESTAMPS ) private def typeReference[T: Manifest] = new TypeReference[T] { override def getType = typeFromManifest(manifest[T]) } private def typeFromManifest(m: Manifest[_]): Type = { if (m.typeArguments.isEmpty) { m.runtimeClass } else new ParameterizedType { def getRawType = m.runtimeClass def getActualTypeArguments = m.typeArguments.map(typeFromManifest).toArray def getOwnerType = null } } }
Example 18
Source File: TestJsonDeserializer.scala From embedded-kafka with MIT License | 5 votes |
package net.manub.embeddedkafka.serializers import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.kafka.common.errors.SerializationException import org.apache.kafka.common.serialization.Deserializer import scala.reflect.ClassTag class TestJsonDeserializer[T](implicit tag: ClassTag[T], ev: Null <:< T) extends Deserializer[T] { private val mapper = new ObjectMapper().registerModule(DefaultScalaModule) override def deserialize(topic: String, bytes: Array[Byte]): T = Option(bytes).map { _ => try mapper.readValue( bytes, tag.runtimeClass.asInstanceOf[Class[T]] ) catch { case e: Exception => throw new SerializationException(e) } }.orNull }
Example 19
Source File: JsonLifter.scala From diffy with GNU Affero General Public License v3.0 | 5 votes |
package ai.diffy.lifter import com.fasterxml.jackson.core.{JsonGenerator, JsonToken} import com.fasterxml.jackson.databind.annotation.JsonSerialize import com.fasterxml.jackson.databind.ser.std.StdSerializer import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper, SerializerProvider} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import com.twitter.util.Try import scala.collection.JavaConversions._ import scala.language.postfixOps import scala.reflect.runtime.universe.runtimeMirror import scala.tools.reflect.ToolBox import scala.util.control.NoStackTrace object JsonLifter { @JsonSerialize(using = classOf[JsonNullSerializer]) object JsonNull object JsonParseError extends Exception with NoStackTrace val toolbox = runtimeMirror(getClass.getClassLoader).mkToolBox() val Mapper = new ObjectMapper with ScalaObjectMapper Mapper.registerModule(DefaultScalaModule) def apply(obj: Any): JsonNode = Mapper.valueToTree(obj) def lift(node: JsonNode): Any = node.asToken match { case JsonToken.START_ARRAY => node.elements.toSeq.map { element => lift(element) } case JsonToken.START_OBJECT => { val fields = node.fieldNames.toSet if (fields.exists{ field => Try(toolbox.parse(s"object ${field}123")).isThrow}) { node.fields map {field => (field.getKey -> lift(field.getValue))} toMap } else { FieldMap( node.fields map {field => (field.getKey -> lift(field.getValue))} toMap ) } } case JsonToken.VALUE_FALSE => false case JsonToken.VALUE_NULL => JsonNull case JsonToken.VALUE_NUMBER_FLOAT => node.asDouble case JsonToken.VALUE_NUMBER_INT => node.asLong case JsonToken.VALUE_TRUE => true case JsonToken.VALUE_STRING => node.textValue case _ => throw JsonParseError } def decode(json: String): JsonNode = Mapper.readTree(json) def encode(item: Any): String = Mapper.writer.writeValueAsString(item) } class JsonNullSerializer(clazz: Class[Any]) extends StdSerializer[Any](clazz) { def this() { this(null) } override def serialize(t: Any, jsonGenerator: JsonGenerator, serializerProvider: SerializerProvider): Unit = { jsonGenerator.writeNull() } }
Example 20
Source File: DataLoader.scala From amaterasu with Apache License 2.0 | 5 votes |
package org.apache.amaterasu.leader.utilities import java.io.{File, FileInputStream} import java.nio.file.{Files, Paths} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.amaterasu.common.configuration.ClusterConfig import org.apache.amaterasu.common.dataobjects.{ActionData, ExecData, TaskData} import org.apache.amaterasu.common.execution.dependencies.{Dependencies, PythonDependencies} import org.apache.amaterasu.common.logging.Logging import org.apache.amaterasu.common.runtime.Environment import org.apache.mesos.protobuf.ByteString import org.yaml.snakeyaml.Yaml import scala.collection.JavaConverters._ import scala.collection.mutable import scala.io.Source object DataLoader extends Logging { val mapper = new ObjectMapper() mapper.registerModule(DefaultScalaModule) val ymlMapper = new ObjectMapper(new YAMLFactory()) ymlMapper.registerModule(DefaultScalaModule) def getTaskData(actionData: ActionData, env: String): ByteString = { val srcFile = actionData.src val src = Source.fromFile(s"repo/src/$srcFile").mkString val envValue = Source.fromFile(s"repo/env/$env/job.yml").mkString val envData = ymlMapper.readValue(envValue, classOf[Environment]) val data = mapper.writeValueAsBytes(TaskData(src, envData, actionData.groupId, actionData.typeId, actionData.exports)) ByteString.copyFrom(data) } def getExecutorData(env: String, clusterConf: ClusterConfig): ByteString = { // loading the job configuration val envValue = Source.fromFile(s"repo/env/$env/job.yml").mkString //TODO: change this to YAML val envData = ymlMapper.readValue(envValue, classOf[Environment]) // loading all additional configurations val files = new File(s"repo/env/$env/").listFiles().filter(_.isFile).filter(_.getName != "job.yml") val config = files.map(yamlToMap).toMap // loading the job's dependencies var depsData: Dependencies = null var pyDepsData: PythonDependencies = null if (Files.exists(Paths.get("repo/deps/jars.yml"))) { val depsValue = Source.fromFile(s"repo/deps/jars.yml").mkString depsData = ymlMapper.readValue(depsValue, classOf[Dependencies]) } if (Files.exists(Paths.get("repo/deps/python.yml"))) { val pyDepsValue = Source.fromFile(s"repo/deps/python.yml").mkString pyDepsData = ymlMapper.readValue(pyDepsValue, classOf[PythonDependencies]) } val data = mapper.writeValueAsBytes(ExecData(envData, depsData, pyDepsData, config)) ByteString.copyFrom(data) } def yamlToMap(file: File): (String, Map[String, Any]) = { val yaml = new Yaml() val conf = yaml.load(new FileInputStream(file)).asInstanceOf[java.util.Map[String, Any]].asScala.toMap (file.getName.replace(".yml",""), conf) } } class ConfMap[String, T <: ConfMap[String, T]] extends mutable.ListMap[String, Either[String, T]]
Example 21
Source File: ScioUtil.scala From scio with Apache License 2.0 | 5 votes |
package com.spotify.scio.util import java.net.URI import java.util.UUID import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.spotify.scio.ScioContext import org.apache.beam.sdk.extensions.gcp.options.GcpOptions import org.apache.beam.sdk.extensions.gcp.util.Transport import org.apache.beam.sdk.{PipelineResult, PipelineRunner} import org.slf4j.LoggerFactory import scala.reflect.ClassTag import scala.util.{Failure, Success, Try} private[scio] object ScioUtil { @transient private lazy val log = LoggerFactory.getLogger(this.getClass) @transient lazy val jsonFactory = Transport.getJsonFactory def isLocalUri(uri: URI): Boolean = uri.getScheme == null || uri.getScheme == "file" def isRemoteUri(uri: URI): Boolean = !isLocalUri(uri) def isLocalRunner(runner: Class[_ <: PipelineRunner[_ <: PipelineResult]]): Boolean = { require(runner != null, "Pipeline runner not set!") // FIXME: cover Flink, Spark, etc. in local mode runner.getName == "org.apache.beam.runners.direct.DirectRunner" } def isRemoteRunner(runner: Class[_ <: PipelineRunner[_ <: PipelineResult]]): Boolean = !isLocalRunner(runner) def classOf[T: ClassTag]: Class[T] = implicitly[ClassTag[T]].runtimeClass.asInstanceOf[Class[T]] def getScalaJsonMapper: ObjectMapper = new ObjectMapper().registerModule(DefaultScalaModule) def addPartSuffix(path: String, ext: String = ""): String = if (path.endsWith("/")) s"${path}part-*$ext" else s"$path/part-*$ext" def getTempFile(context: ScioContext, fileOrPath: String = null): String = { val fop = Option(fileOrPath).getOrElse("scio-materialize-" + UUID.randomUUID().toString) val uri = URI.create(fop) if ((ScioUtil.isLocalUri(uri) && uri.toString.startsWith("/")) || uri.isAbsolute) { fop } else { val filename = fop val tmpDir = if (context.options.getTempLocation != null) { context.options.getTempLocation } else { val m = "Specify a temporary location via --tempLocation or PipelineOptions.setTempLocation." Try(context.optionsAs[GcpOptions].getGcpTempLocation) match { case Success(l) => log.warn( "Using GCP temporary location as a temporary location to materialize data. " + m ) l case Failure(_) => throw new IllegalArgumentException("No temporary location was specified. " + m) } } tmpDir + (if (tmpDir.endsWith("/")) "" else "/") + filename } } def pathWithShards(path: String): String = path.replaceAll("\\/+$", "") + "/part" }
Example 22
Source File: Glow.scala From glow with Apache License 2.0 | 5 votes |
package io.projectglow import java.util.ServiceLoader import scala.collection.JavaConverters._ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.spark.sql.{DataFrame, SQLUtils, SparkSession} import io.projectglow.common.Named import io.projectglow.sql.{GlowSQLExtensions, SqlExtensionProvider} import io.projectglow.transformers.util.{SnakeCaseMap, StringUtils} def transform(operationName: String, df: DataFrame, options: Map[String, Any]): DataFrame = { val stringValuedMap = options.mapValues { case s: String => s case v => mapper.writeValueAsString(v) }.map(identity) // output of mapValues is not serializable: https://github.com/scala/bug/issues/7005 lookupTransformer(operationName) match { case Some(transformer) => transformer.transform(df, new SnakeCaseMap(stringValuedMap)) case None => throw new IllegalArgumentException(s"No transformer with name $operationName") } } def transform(operationName: String, df: DataFrame, options: (String, Any)*): DataFrame = { transform(operationName, df, options.toMap) } def transform( operationName: String, df: DataFrame, options: java.util.Map[String, String]): DataFrame = { transform(operationName, df, options.asScala.toMap) } private def lookupTransformer(name: String): Option[DataFrameTransformer] = synchronized { transformerLoader.reload() transformerLoader .iterator() .asScala .find(n => StringUtils.toSnakeCase(n.name) == StringUtils.toSnakeCase(name)) } private val transformerLoader = ServiceLoader .load(classOf[DataFrameTransformer]) } object Glow extends GlowBase trait DataFrameTransformer extends Named { def transform(df: DataFrame, options: Map[String, String]): DataFrame }
Example 23
Source File: ProjectDefaultJacksonMapper.scala From orders-aws with Apache License 2.0 | 5 votes |
package works.weave.socks.aws.orders import com.fasterxml.jackson.annotation.JsonAutoDetect import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.PropertyAccessor import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.fasterxml.jackson.module.scala.DefaultScalaModule object ProjectDefaultJacksonMapper { def build() : ObjectMapper = { val mapper = new ObjectMapper() mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS) mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY) mapper.enable(SerializationFeature.INDENT_OUTPUT) mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) val javaTime : JavaTimeModule = new JavaTimeModule mapper.registerModule(javaTime) val scalaModule = new DefaultScalaModule() mapper.registerModule(scalaModule) mapper } }
Example 24
Source File: JacksonSupport.scala From stream-reactor with Apache License 2.0 | 5 votes |
package com.landoop.streamreactor.hive.it import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JacksonSupport { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) }
Example 25
Source File: JacksonSupport.scala From stream-reactor with Apache License 2.0 | 5 votes |
package com.landoop.streamreactor.connect.hive import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JacksonSupport { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) }
Example 26
Source File: JacksonSupport.scala From stream-reactor with Apache License 2.0 | 5 votes |
package com.landoop.streamreactor.hive.it import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JacksonSupport { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) }
Example 27
Source File: JacksonSupport.scala From stream-reactor with Apache License 2.0 | 5 votes |
package com.landoop.streamreactor.connect.hive import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JacksonSupport { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) }
Example 28
Source File: TestHelper.scala From odsc-west-streaming-trends with GNU General Public License v3.0 | 5 votes |
package com.twilio.open.streaming.trend.discovery import java.io.{ByteArrayInputStream, InputStream} import java.nio.charset.StandardCharsets import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.google.protobuf.Message import com.googlecode.protobuf.format.JsonFormat import com.holdenkarau.spark.testing.{LocalSparkContext, SparkContextProvider} import com.twilio.open.protocol.Calls.CallEvent import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.SparkSession import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers, Suite} import org.slf4j.{Logger, LoggerFactory} import scala.collection.Seq import scala.io.Source import scala.reflect.ClassTag import scala.reflect.classTag object TestHelper { val log: Logger = LoggerFactory.getLogger("com.twilio.open.streaming.trend.discovery.TestHelper") val mapper: ObjectMapper = { val m = new ObjectMapper() m.registerModule(DefaultScalaModule) } val jsonFormat: JsonFormat = new JsonFormat def loadScenario[T<: Message : ClassTag](file: String): Seq[T] = { val fileString = Source.fromFile(file).mkString val parsed = mapper.readValue(fileString, classOf[Sceanario]) parsed.input.map { data => val json = mapper.writeValueAsString(data) convert[T](json) } } def convert[T<: Message : ClassTag](json: String): T = { val clazz = classTag[T].runtimeClass val builder = clazz.getMethod("newBuilder").invoke(clazz).asInstanceOf[Message.Builder] try { val input: InputStream = new ByteArrayInputStream(json.getBytes()) jsonFormat.merge(input, builder) builder.build().asInstanceOf[T] } catch { case e: Exception => throw e } } def asMockKafkaDataFrame(event: CallEvent): MockKafkaDataFrame = { val key = event.getEventId.getBytes(StandardCharsets.UTF_8) val value = event.toByteArray MockKafkaDataFrame(key, value) } } case class MockKafkaDataFrame(key: Array[Byte], value: Array[Byte]) @SerialVersionUID(1L) case class KafkaDataFrame(key: Array[Byte], topic: Array[Byte], value: Array[Byte]) extends Serializable case class Sceanario(input: Seq[Any], expected: Option[Any] = None) trait SparkSqlTest extends BeforeAndAfterAll with SparkContextProvider { self: Suite => @transient var _sparkSql: SparkSession = _ @transient private var _sc: SparkContext = _ override def sc: SparkContext = _sc def conf: SparkConf def sparkSql: SparkSession = _sparkSql override def beforeAll() { _sparkSql = SparkSession.builder().config(conf).getOrCreate() _sc = _sparkSql.sparkContext setup(_sc) super.beforeAll() } override def afterAll() { try { _sparkSql.close() _sparkSql = null LocalSparkContext.stop(_sc) _sc = null } finally { super.afterAll() } } }
Example 29
Source File: Main.scala From ProxyCrawler with Apache License 2.0 | 5 votes |
package org.crowdcrawler.proxycrawler import java.nio.charset.StandardCharsets import java.nio.file.{Paths, Files} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import com.typesafe.scalalogging.Logger import org.crowdcrawler.proxycrawler.checker.ProxyChecker import org.slf4j.LoggerFactory object Main { private val LOGGER = Logger(LoggerFactory.getLogger(Main.getClass)) val OBJECT_MAPPER = new ObjectMapper() with ScalaObjectMapper OBJECT_MAPPER.registerModule(DefaultScalaModule) def main(args: Array[String]): Unit = { val usage = "Usage: \n\tcrawl [pluginClassName]* OutputFile\n" + "\tcheck proxies.json valid_proxies.json\n" + "\tfilter valid_proxies.json <HTTP|HTTPS|SOCKS> output.json\n" + "For example:\n" + "\t1. Crawl all supported websites and save proxies to proxies.json\n" + "\t\tcrawl proxies.json\n" + "\t2. Crawl www.cnproxy.com and save proxies to proxies.json:\n" + "\t\tcrawl CnProxyComPlugin proxies.json\n" + "\t3. Check the speed of proxies.\n" + "\t\tcheck proxies.json valid_proxies.json\n" + "\t4. Filter proxies by schema\n" + "\t\tfilter valid_proxies.json HTTP http.json\n" if (args.length < 2) { println(usage) return } val start = System.currentTimeMillis if (args(0) == "crawl") { val classNames = if (args.length == 2) { Array("CnProxyComPlugin", "CoolProxyNetPlugin", "GatherproxyComPlugin", "IpcnOrgPlugin", "ProxyListOrg", "SocksProxyNet", "USProxyOrgPlugin") } else { args.slice(1, args.length-1) } val crawler = ProxyCrawler(classNames: _*) val proxies = crawler.crawl() LOGGER.info("Writing to disk, " + proxies.size + " proxies") val json = OBJECT_MAPPER.writerWithDefaultPrettyPrinter.writeValueAsString(proxies) Files.write(Paths.get(args.last), json.getBytes(StandardCharsets.UTF_8)) } else if (args(0) == "check") { val json = io.Source.fromFile(args(1), "utf-8").mkString val list = OBJECT_MAPPER.readValue[List[ProxyInfo]](json) // sort by speed desc val validProxies = ProxyChecker.check(list).filter(_.speed > 0) .sortWith((p1, p2) => p1.speed > p2.speed) LOGGER.info("Writing to disk, " + validProxies.size + " valid proxies out of " + list.size + " proxies") val newJson = OBJECT_MAPPER.writerWithDefaultPrettyPrinter .writeValueAsString(validProxies) Files.write(Paths.get(args(2)), newJson.getBytes(StandardCharsets.UTF_8)) } else if (args(0) == "filter") { val json = io.Source.fromFile(args(1), "utf-8").mkString val list = OBJECT_MAPPER.readValue[List[ProxyInfo]](json) val filtered = if (args(2) == "SOCKS") { list.filter(p => p.schema == "SOCKS" | p.schema == "SOCKS4" || p.schema == "SOCKS5") } else { list.filter(p => p.schema == args(2)) } val newJson = OBJECT_MAPPER.writerWithDefaultPrettyPrinter .writeValueAsString(filtered) Files.write(Paths.get(args(3)), newJson.getBytes(StandardCharsets.UTF_8)) } else { println(usage) return } val end = System.currentTimeMillis LOGGER.info("Time elapsed " + (end - start) / 1000 + " seconds.") } }
Example 30
Source File: JsonUtil.scala From marvin-engine-executor with Apache License 2.0 | 5 votes |
package org.marvin.util import com.fasterxml.jackson.databind.{DeserializationFeature, JsonNode, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.github.fge.jsonschema.core.exceptions.ProcessingException import com.github.fge.jsonschema.core.report.ProcessingMessage import com.github.fge.jsonschema.main.JsonSchemaFactory import grizzled.slf4j.Logging import org.json4s.jackson.JsonMethods.{asJsonNode, parse} import spray.json._ import scala.io.Source import scala.reflect.{ClassTag, _} object JsonUtil extends Logging { val jacksonMapper = new ObjectMapper() jacksonMapper.registerModule(DefaultScalaModule) jacksonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) def toJson(value: Map[Symbol, Any]): String = { toJson(value map { case (k,v) => k.name -> v}) } def toJson(value: Any): String = { jacksonMapper.writeValueAsString(value) } def toMap(jsonString: String): Map[String, Any] = { JsonUtil.fromJson[Map[String, List[Map[String, String]]]](jsonString) } def fromJson[T: ClassTag](jsonString: String, validate: Boolean = false): T = { if (validate) validateJson[T](jsonString) jacksonMapper.readValue[T](jsonString, classTag[T].runtimeClass.asInstanceOf[Class[T]]) } def validateJson[T: ClassTag](jsonString: String): Unit = { val className = classTag[T].runtimeClass.getSimpleName val schemaName = className.toString + "Schema.json" var jsonSchema: String = null try{ jsonSchema = Source.fromResource(schemaName).mkString validateJson(jsonString, jsonSchema) } catch { case e: NullPointerException => info(s"File ${schemaName} not found, check your schema file") throw e } } def validateJson(jsonString: String, jsonSchema: String): Unit = { val schema: JsonNode = asJsonNode(parse(jsonSchema)) val jsonToValidate: JsonNode = asJsonNode(parse(jsonString)) val validator = JsonSchemaFactory.byDefault().getValidator val processingReport = validator.validate(schema, jsonToValidate) if (!processingReport.isSuccess) { val sb = new StringBuilder() processingReport.forEach { message: ProcessingMessage => { warn(message.asJson()) sb.append(message.getMessage) } } throw new ProcessingException(sb.toString) } } def format(jsonString: String): String ={ return jsonString.parseJson.prettyPrint } def format(jsonMap: Map[String, Any]): String ={ return this.format(this.toJson(jsonMap)) } }
Example 31
Source File: JacksonMapperSpec.scala From squbs with Apache License 2.0 | 5 votes |
package org.squbs.marshallers.json import akka.actor.ActorSystem import akka.http.scaladsl.marshalling.Marshal import akka.http.scaladsl.model.{HttpEntity, MediaTypes, MessageEntity} import akka.http.scaladsl.unmarshalling.Unmarshal import akka.stream.ActorMaterializer import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility import com.fasterxml.jackson.annotation.PropertyAccessor import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.scalatest.{AsyncFlatSpec, BeforeAndAfterAll, Matchers} import org.squbs.marshallers.json.TestData._ class JacksonMapperSpec extends AsyncFlatSpec with Matchers with BeforeAndAfterAll { import JacksonMapperSupport._ implicit val system = ActorSystem("JacksonMapperSpec") implicit val mat = ActorMaterializer() JacksonMapperSupport.setDefaultMapper(new ObjectMapper().registerModule(DefaultScalaModule)) it should "marshal and unmarshal standard case classes" in { val entity = HttpEntity(MediaTypes.`application/json`, fullTeamJson) Marshal(fullTeam).to[MessageEntity] map { _ shouldBe entity } Unmarshal(entity).to[Team] map { _ shouldBe fullTeam } } it should "marshal and unmarshal Scala non-case classes" in { val entity = HttpEntity(MediaTypes.`application/json`, fullTeamJson) Marshal(fullTeamNonCaseClass).to[MessageEntity] map { _ shouldBe entity } Unmarshal(entity).to[TeamNonCaseClass] map { _ shouldBe fullTeamNonCaseClass } } it should "marshal and unmarshal Scala class with Java Bean members" in { val entity = HttpEntity(MediaTypes.`application/json`, fullTeamJson) Marshal(fullTeamWithBeanMember).to[MessageEntity] map { _ shouldBe entity } Unmarshal(entity).to[TeamWithBeanMember] map { _ shouldBe fullTeamWithBeanMember } } it should "marshal and unmarshal Java Bean with case class members" in { val entity = HttpEntity(MediaTypes.`application/json`, fullTeamJson) Marshal(fullTeamWithCaseClassMember).to[MessageEntity] map { _ shouldBe entity } Unmarshal(entity).to[TeamBeanWithCaseClassMember] map { _ shouldBe fullTeamWithCaseClassMember } } it should "marshal and unmarshal Java Bean" in { val fieldMapper = new ObjectMapper().setVisibility(PropertyAccessor.FIELD, Visibility.ANY) .registerModule(DefaultScalaModule) JacksonMapperSupport.register[TeamWithPrivateMembers](fieldMapper) val entity = HttpEntity(MediaTypes.`application/json`, fullTeamJson) Marshal(fullTeamWithPrivateMembers).to[MessageEntity] map { _ shouldBe entity } Unmarshal(entity).to[TeamWithPrivateMembers] map { _ shouldBe fullTeamWithPrivateMembers } } it should "Marshal and unmarshal Jackson annotated Java subclasses" in { JacksonMapperSupport.register[PageData](new ObjectMapper) val entity = HttpEntity(MediaTypes.`application/json`, pageTestJson) Marshal(pageTest).to[MessageEntity] map { _ shouldBe entity } Unmarshal(entity).to[PageData] map { _ shouldBe pageTest } } }
Example 32
Source File: RedisClient.scala From asura with MIT License | 5 votes |
package asura.core.redis import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import com.typesafe.scalalogging.Logger import org.redisson.Redisson import org.redisson.api.{RFuture, RedissonClient} import org.redisson.codec.JsonJacksonCodec import org.redisson.config.Config import scala.compat.java8.FutureConverters.{toScala => javaFutureToScalaFuture} import scala.concurrent.Future object RedisClient { val logger = Logger("RedisClient") var redisson: RedissonClient = null private val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) def init(servers: Seq[String] = Nil): Unit = { val config = new Config() config.setCodec(new JsonJacksonCodec(mapper)) if (null == servers || servers.isEmpty) { config.useSingleServer().setAddress("redis://127.0.0.1:6379") } else if (servers.length == 1) { config.useSingleServer().setAddress(servers(0)) } else { config.useClusterServers().setScanInterval(3000).addNodeAddress(servers: _*) } logger.info(s"init redis client with config: ${config.toJSON}") redisson = Redisson.create(config) } def shutdown(): Unit = { if (null != redisson) { logger.info("shutdown redis client") redisson.shutdown() } } implicit def toScala[T](rf: RFuture[T]): Future[T] = { javaFutureToScalaFuture(rf) } }
Example 33
Source File: JsonUtils.scala From asura with MIT License | 5 votes |
package asura.common.util import java.io.InputStream import java.text.SimpleDateFormat import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.core.`type`.TypeReference import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JsonUtils extends JsonUtils { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) } trait JsonUtils { val mapper: ObjectMapper def stringify(obj: AnyRef): String = { mapper.writeValueAsString(obj) } def parse[T <: AnyRef](content: String, c: Class[T]): T = { mapper.readValue(content, c) } def parse[T <: AnyRef](input: InputStream, c: Class[T]): T = { mapper.readValue(input, c) } def parse[T <: AnyRef](content: String, typeReference: TypeReference[T]): T = { mapper.readValue(content, typeReference) } }
Example 34
Source File: JacksonSupport.scala From pulsar4s with Apache License 2.0 | 5 votes |
package com.sksamuel.pulsar4s.jackson import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.databind.ser.std.NumberSerializers import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JacksonSupport { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) val module = new SimpleModule module.addSerializer(new NumberSerializers.DoubleSerializer(classOf[Double])) }
Example 35
Source File: OrderedDocFreq.scala From gemini with GNU General Public License v3.0 | 5 votes |
package tech.sourced.gemini import java.io.{File, PrintWriter} import scala.io.Source import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper case class OrderedDocFreq(docs: Int, tokens: IndexedSeq[String], df: collection.Map[String, Int]) { def saveToJson(filename: String): Unit = { val mapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) val out = new PrintWriter(filename) mapper.writeValue(out, Map( "docs" -> docs, "tokens" -> tokens, "df" -> df )) out.close() } } object OrderedDocFreq { def fromJson(file: File): OrderedDocFreq = { val docFreqMap = parseFile[Map[String, Any]](file) val docs = docFreqMap.get("docs") match { case Some(v) => v.asInstanceOf[Int] case None => throw new RuntimeException(s"Can not parse key 'docs' in docFreq:${file.getAbsolutePath}") } val df = docFreqMap.get("df") match { case Some(v) => v.asInstanceOf[Map[String, Int]] case None => throw new RuntimeException(s"Can not parse key 'df' in docFreq:${file.getAbsolutePath}") } val tokens = docFreqMap.get("tokens") match { case Some(v) => v.asInstanceOf[List[String]].toArray case None => throw new RuntimeException(s"Can not parse key 'tokens' in docFreq:${file.getAbsolutePath}") } OrderedDocFreq(docs, tokens, df) } def parseFile[T: Manifest](file: File): T = { val json = Source.fromFile(file) val mapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.readValue[T](json.reader) } }
Example 36
Source File: JsonConverter.scala From scala-serialization with MIT License | 5 votes |
package com.komanov.serialization.converters import java.time.Instant import com.fasterxml.jackson.core.{JsonGenerator, JsonParser, Version} import com.fasterxml.jackson.databind.Module.SetupContext import com.fasterxml.jackson.databind._ import com.fasterxml.jackson.databind.module.{SimpleDeserializers, SimpleSerializers} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.komanov.serialization.domain.{Site, SiteEvent, SiteEventData} object JsonConverter extends MyConverter { private object InstantModule extends Module { override def getModuleName: String = "Instant" override def setupModule(context: SetupContext): Unit = { val serializers = new SimpleSerializers serializers.addSerializer(classOf[Instant], new JsonSerializer[Instant] { override def serialize(value: Instant, gen: JsonGenerator, serializers: SerializerProvider): Unit = { gen.writeNumber(value.toEpochMilli) } }) val deserializers = new SimpleDeserializers deserializers.addDeserializer(classOf[Instant], new JsonDeserializer[Instant] { override def deserialize(p: JsonParser, ctxt: DeserializationContext): Instant = { Instant.ofEpochMilli(p.getLongValue) } }) context.addSerializers(serializers) context.addDeserializers(deserializers) } override def version(): Version = new Version(1, 0, 0, "RELEASE", "group", "artifact") } private val objectMapper = { val om = new ObjectMapper() om.registerModule(new DefaultScalaModule) om.registerModule(InstantModule) om } private val siteReader: ObjectReader = objectMapper.readerFor(classOf[Site]) private val siteWriter: ObjectWriter = objectMapper.writerFor(classOf[Site]) override def toByteArray(site: Site): Array[Byte] = { siteWriter.writeValueAsBytes(site) } override def fromByteArray(bytes: Array[Byte]): Site = { siteReader.readValue(bytes) } override def toByteArray(event: SiteEvent): Array[Byte] = { objectMapper.writeValueAsBytes(event) } override def siteEventFromByteArray(clazz: Class[_], bytes: Array[Byte]): SiteEvent = { objectMapper.readValue(bytes, clazz).asInstanceOf[SiteEvent] } }
Example 37
Source File: ExceptionFormattingDependencyAnalyzer.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.analyze import com.fasterxml.jackson.annotation.{JsonIgnoreProperties, JsonTypeInfo} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.bazel.migrator.model.SourceModule import com.wix.bazel.migrator.transform.failures.{AnalyzeException, AnalyzeFailure} class ExceptionFormattingDependencyAnalyzer(dependencyAnalyzer: DependencyAnalyzer) extends DependencyAnalyzer { private val om = new ObjectMapper().registerModule(DefaultScalaModule) .addMixIn(classOf[AnalyzeFailure], classOf[AnalyzeFailureMixin]) .addMixIn(classOf[Throwable], classOf[ThrowableMixin]) .addMixIn(classOf[SourceModule], classOf[IgnoringMavenDependenciesMixin]) override def allCodeForModule(module: SourceModule): List[Code] = try { dependencyAnalyzer.allCodeForModule(module) } catch { case e: AnalyzeException => val message = om.writerWithDefaultPrettyPrinter().writeValueAsString(e.failure) throw new RuntimeException(message + """|***Detailed error is in a prettified json which starts above*** |***Inner most AnalyzeFailure has root cause, look for it*** |More info at https://github.com/wix-private/bazel-tooling/blob/master/migrator/docs |""".stripMargin) } } @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "__class") trait AnalyzeFailureMixin @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "__class") abstract class ThrowableMixin @JsonIgnoreProperties(Array("dependencies")) trait IgnoringMavenDependenciesMixin
Example 38
Source File: CachingEagerEvaluatingDependencyAnalyzer.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.analyze import java.nio.file.{Files, Path, Paths} import java.util import java.util.concurrent.atomic.AtomicInteger import com.fasterxml.jackson.annotation.JsonTypeInfo import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.bazel.migrator.model._ import com.wixpress.build.maven.MavenScope import org.slf4j.LoggerFactory import scala.collection.JavaConverters._ import scala.collection.parallel.ParMap //this is needed since currently the transformer isn't thread safe but the dependency analyzer is class CachingEagerEvaluatingDependencyAnalyzer(sourceModules: Set[SourceModule], dependencyAnalyzer: DependencyAnalyzer, performSourceAnalysis: Boolean) extends DependencyAnalyzer { private val log = LoggerFactory.getLogger(getClass) private val cachePath = Files.createDirectories(Paths.get("./cache")) private val objectMapper = new ObjectMapper() .registerModule(DefaultScalaModule) .registerModule(new RelativePathSupportingModule) .registerModule(new SourceModuleSupportingModule(sourceModules)) .addMixIn(classOf[Target], classOf[TypeAddingMixin]) .addMixIn(classOf[CodePurpose], classOf[TypeAddingMixin]) .addMixIn(classOf[TestType], classOf[TypeAddingMixin]) .addMixIn(classOf[MavenScope], classOf[TypeAddingMixin]) private val collectionType = objectMapper.getTypeFactory.constructCollectionType(classOf[util.Collection[Code]], classOf[Code]) private val clean = performSourceAnalysis private def cachePathForSourceModule(m: SourceModule) = { cachePath.resolve(m.relativePathFromMonoRepoRoot + ".cache") } private val size = sourceModules.size private val counter = new AtomicInteger() private val tenthSize = size / 10 private def initCachePathForSourceModule(p: Path) = Files.createDirectories(p.getParent) private def maybeCodeFromCache(p: Path): Option[List[Code]] = { if (clean || !Files.exists(p)) return None try { val value: util.Collection[Code] = objectMapper.readValue(p.toFile, collectionType) val codeList = value.asScala.toList Some(codeList) } catch { case e: Exception => log.warn(s"Error reading $p ,deleting cache file.") log.warn(e.getMessage) Files.deleteIfExists(p) None } } private def retrieveCodeAndCache(m: SourceModule, cachePath: Path): List[Code] = { val codeList = dependencyAnalyzer.allCodeForModule(m) Files.deleteIfExists(cachePath) initCachePathForSourceModule(cachePath) Files.createFile(cachePath) try { objectMapper.writeValue(cachePath.toFile, codeList) } catch { case e: InterruptedException => log.warn(s"aborting write to file $cachePath") Files.deleteIfExists(cachePath) throw e case e: Exception => log.warn(s"could not write to file $cachePath") log.warn(e.getMessage) } codeList } private def calculateMapEntryFor(sourceModule: SourceModule) = { printProgress() val cachePath = cachePathForSourceModule(sourceModule) (sourceModule, maybeCodeFromCache(cachePath).getOrElse(retrieveCodeAndCache(sourceModule, cachePath))) } private def printProgress(): Unit = { if (tenthSize > 0) { val currentCount = counter.incrementAndGet() if (currentCount % tenthSize == 0) { log.info(s"DependencyAnalyzer:allCodeForModule:\t ${currentCount / tenthSize * 10}% done") } } } private val allCode: ParMap[SourceModule, List[Code]] = sourceModules.par.map(calculateMapEntryFor).toMap override def allCodeForModule(module: SourceModule): List[Code] = allCode(module) } @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "__class") trait TypeAddingMixin
Example 39
Source File: CodotaThinClient.scala From exodus with MIT License | 5 votes |
package com.wixpress.build.codota import java.net.SocketTimeoutException import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wixpress.build.codota.CodotaThinClient.{PathAttemptResult, RetriesLoop} import org.slf4j.LoggerFactory import scala.util.{Failure, Success, Try} import scalaj.http.{Http, HttpOptions, HttpResponse} class CodotaThinClient(token: String, codePack: String, baseURL: String = CodotaThinClient.DefaultBaseURL, maxRetries: Int = 5) { private val logger = LoggerFactory.getLogger(getClass) private val timeout: Int = 1000 private val mapper = new ObjectMapper() .registerModule(DefaultScalaModule) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true) private val requestURLTemplate = s"$baseURL/api/codenav/artifact" def pathFor(artifactName: String): Option[String] = { retriesLoop(artifactName).collectFirst { case Success(p) => p }.flatten } private def retriesLoop(artifactName: String): RetriesLoop = { (1 to maxRetries).toStream.map(pathForArtifact(_, artifactName)) } private def pathForArtifact(retry: Int, artifactName: String): PathAttemptResult = { pathForArtifact(artifactName) match { case Success(p) => Success(p) case Failure(e: SocketTimeoutException) if retry < maxRetries => handleSocketTimeout(retry, artifactName, e) case Failure(e) => throw e } } private def handleSocketTimeout(retry: Int, artifactName: String, e: SocketTimeoutException) = { logger.warn(s"($retry/$maxRetries) Timeout when trying to get path for $artifactName") Thread.sleep(3000 / ((maxRetries - retry) + 1)) Failure(e) } private def pathForArtifact(artifactName: String): PathAttemptResult = { for { response <- requestFor(artifactName) body <- responseBody(response) path <- extractPath(body, artifactName) } yield path } private def requestFor(artifactName: String) = { Try { Http(s"$requestURLTemplate/$artifactName/metadata") .param("codePack", codePack) .header("Authorization", s"bearer $token") .option(HttpOptions.readTimeout(timeout)) .asString } } private def responseBody(resp: HttpResponse[String]) = { Try { val body = resp.body val code = resp.code code match { case 200 => body case 401 => throw NotAuthorizedException(body) case 404 if body.contains(codePack) => throw CodePackNotFoundException(body) case 403 => throw MissingCodePackException() case 404 => throw MetaDataOrArtifactNotFound(body) } } } private def extractPath(body: String, artifactName: String) = { Try { val metaData = mapper.readValue(body, classOf[ArtifactMetadata]) Option(metaData.path) } } } object CodotaThinClient { val DefaultBaseURL = "https://gateway.codota.com" type PathAttemptResult = Try[Option[String]] type RetriesLoop = Stream[PathAttemptResult] } case class ArtifactMetadata(path: String)
Example 40
Source File: ThirdPartyOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wixpress.build.bazel import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.databind._ import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.module.scala.DefaultScalaModule object ThirdPartyOverridesReader { def from(json: String): ThirdPartyOverrides = { mapper.readValue(json, classOf[ThirdPartyOverrides]) } def mapper: ObjectMapper = { val objectMapper = new ObjectMapper() .registerModule(DefaultScalaModule) objectMapper.registerModule(overrideCoordinatesKeyModule(objectMapper)) objectMapper } private def overrideCoordinatesKeyModule(mapper: ObjectMapper): Module = new SimpleModule() .addKeyDeserializer(classOf[OverrideCoordinates], new OverrideCoordinatesKeyDeserializer(mapper)) .addKeySerializer(classOf[OverrideCoordinates], new OverrideCoordinatesKeySerializer(mapper)) private class OverrideCoordinatesKeySerializer(mapper: ObjectMapper) extends JsonSerializer[OverrideCoordinates] { override def serialize(value: OverrideCoordinates, gen: JsonGenerator, serializers: SerializerProvider): Unit = gen.writeFieldName(value.groupId + ":" + value.artifactId) } private class OverrideCoordinatesKeyDeserializer(mapper: ObjectMapper) extends KeyDeserializer { override def deserializeKey(key: String, ctxt: DeserializationContext): AnyRef = key.split(':') match { case Array(groupId, artifactId) => OverrideCoordinates(groupId, artifactId) case _ => throw new IllegalArgumentException(s"OverrideCoordinates key should be in form of groupId:artifactId, got $key") } } }
Example 41
Source File: JacksonSupport.scala From Sidechains-SDK with MIT License | 5 votes |
package com.horizen.api.http import akka.http.scaladsl.model.HttpRequest import akka.http.scaladsl.unmarshalling._ import akka.stream.Materializer import com.fasterxml.jackson.databind._ import com.fasterxml.jackson.module.scala.DefaultScalaModule import scala.concurrent.{ExecutionContext, Future} import scala.reflect.ClassTag import scala.language.postfixOps object JacksonSupport { private val mapper = new ObjectMapper().registerModule(DefaultScalaModule) implicit def JacksonRequestUnmarshaller[T <: AnyRef](implicit c: ClassTag[T]): FromRequestUnmarshaller[T] = { new FromRequestUnmarshaller[T] { override def apply(request: HttpRequest)(implicit ec: ExecutionContext, materializer: Materializer): Future[T] = { Unmarshal(request.entity).to[String].map(str => { if (str.isEmpty) mapper.readValue("{}", c.runtimeClass).asInstanceOf[T] else mapper.readValue(str, c.runtimeClass).asInstanceOf[T] }) } } } }
Example 42
Source File: JsonSink.scala From eel-sdk with Apache License 2.0 | 5 votes |
package io.eels.component.json import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import io.eels.schema.StructType import io.eels.{Row, Sink, SinkWriter} import org.apache.hadoop.fs.{FileSystem, Path} case class JsonSink(path: Path)(implicit fs: FileSystem) extends Sink { override def open(schema: StructType): SinkWriter = new SinkWriter { private val lock = new AnyRef() private val out = fs.create(path) val mapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) override def write(row: Row) { val map = schema.fieldNames.zip(row.values).toMap val json = mapper.writeValueAsString(map) lock.synchronized { out.writeBytes(json) out.writeBytes("\n") } } override def close() { out.close() } } }
Example 43
Source File: JacksonSupport.scala From eel-sdk with Apache License 2.0 | 5 votes |
package io.eels.util import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.core.JsonParser import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper object JacksonSupport { val mapper: ObjectMapper with ScalaObjectMapper = new ObjectMapper with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false) mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true) mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true) }
Example 44
Source File: JacksonJsonMapper.scala From web3scala with Apache License 2.0 | 5 votes |
package org.web3scala.json import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper class JacksonJsonMapper extends JsonMapper { override def writeAsBytes(value: AnyRef): Array[Byte] = { JacksonJsonMapper.mapper.writeValueAsBytes(value) } } object JacksonJsonMapper { private val mapperInstance = new ObjectMapper with ScalaObjectMapper mapperInstance.registerModule(DefaultScalaModule) mapperInstance.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) def mapper: ObjectMapper with ScalaObjectMapper = mapperInstance }
Example 45
Source File: SourceModulesOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.overrides import java.nio.file.{Files, Path} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.build.maven.analysis.SourceModulesOverrides object SourceModulesOverridesReader { private val mapper = new ObjectMapper().registerModule(DefaultScalaModule) def from(repoRoot: Path): SourceModulesOverrides = { val overridesPath = repoRoot.resolve("bazel_migration").resolve("source_modules.overrides") if (Files.exists(overridesPath)) mapper.readValue( Files.newBufferedReader(overridesPath), classOf[SourceModulesOverrides] ) else SourceModulesOverrides.empty } }
Example 46
Source File: TestCaseClass.scala From daf with BSD 3-Clause "New" or "Revised" License | 5 votes |
import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonInclude.Include import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import de.zalando.play.controllers.WriterFactories import it.gov.daf.catalogmanager.{ConversionField, MetaCatalog, StdSchema} import play.api.libs.json._ object TestCaseClass extends App{ //@JsonInclude(JsonInclude.Include.NON_ABSENT) case class Pippo (ogg1: Option[String], ogg2: String, ogg3: Option[Pluto]) //case class Pippo (ogg1: Option[String], ogg2: String) //case class Pluto (prop1: String, prop2: String, prop3: List[String]) case class Pluto (prop1: String, prop2: String) val pippo = Pippo(Some("ciao"), "", None) //val pippo = Pippo(Some("ciao"), "ciao2") def jacksonMapper(mimeType: String): ObjectMapper = { //noinspection ScalaStyle assert(mimeType != null) val factory = WriterFactories.factories(mimeType) val mapper = new ObjectMapper(factory) mapper.setSerializationInclusion(JsonInclude.Include.NON_ABSENT) mapper.registerModule(DefaultScalaModule) mapper } val json = jacksonMapper("blabla").writeValueAsString(pippo) //val json = "{\"ogg1\":\"ciao\",\"ogg2\":\"ciao2\"}" println(json) //implicit val plutoReads = Json.reads[Pluto] //implicit val pippoReads = Json.reads[Pippo] //implicit val plutoReads = Json.reads[Option[Pluto]] }
Example 47
Source File: RiakObjectConversionUtil.scala From spark-riak-connector with Apache License 2.0 | 5 votes |
package com.basho.riak.spark.util import com.basho.riak.client.api.convert.{ConverterFactory, JSONConverter} import com.basho.riak.client.core.query.{Location, RiakObject} import com.basho.riak.client.core.util.BinaryValue import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import scala.reflect.ClassTag object RiakObjectConversionUtil { DataMapper.ensureInitialized() private var mapper: Option[ObjectMapper] = None private def objectMapper(): ObjectMapper = { if (mapper.isEmpty) { mapper = Some(JSONConverter.getObjectMapper) } mapper.get } def to[T](value: T): RiakObject = { // TODO: we need to think about smarter approach to handle primitive types such as int, long, etc. value match { case s: String => new RiakObject() .setContentType("text/plain") .setValue(BinaryValue.create(value.asInstanceOf[String])) case _ => // value as a strict JSON val v = objectMapper().writeValueAsString(value) new RiakObject() .setContentType("application/json") .setValue(BinaryValue.create(v)) } } }
Example 48
Source File: DataMapper.scala From spark-riak-connector with Apache License 2.0 | 5 votes |
package com.basho.riak.spark.util import com.basho.riak.client.api.convert.JSONConverter import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.spark.Logging trait DataMapper extends Serializable { DataMapper.ensureInitialized() } object DataMapper extends Logging { private var isInitialized = false def ensureInitialized(): Boolean = { if (!isInitialized) { // Register Scala module to serialize/deserialize Scala stuff smoothly JSONConverter.registerJacksonModule(DefaultScalaModule) logDebug("Jackson DefaultScalaModule has been registered") isInitialized = true } else { logTrace("Jackson DefaultScalaModule initialization was skipped since module has been registered.") } isInitialized } }
Example 49
Source File: StreamingTSExample.scala From spark-riak-connector with Apache License 2.0 | 5 votes |
package com.basho.riak.spark.examples.streaming import java.util.UUID import kafka.serializer.StringDecoder import org.apache.spark.sql.Row import org.apache.spark.streaming.Durations import org.apache.spark.streaming.StreamingContext import org.apache.spark.streaming.kafka.KafkaUtils import org.apache.spark.{SparkConf, SparkContext} import com.basho.riak.spark.streaming._ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat object StreamingTSExample { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf(true) .setAppName("Simple Spark Streaming to Riak TS Demo") setSparkOpt(sparkConf, "spark.master", "local") setSparkOpt(sparkConf, "spark.riak.connection.host", "127.0.0.1:8087") setSparkOpt(sparkConf, "kafka.broker", "127.0.0.1:9092") val sc = new SparkContext(sparkConf) val streamCtx = new StreamingContext(sc, Durations.seconds(15)) val kafkaProps = Map[String, String]( "metadata.broker.list" -> sparkConf.get("kafka.broker"), "client.id" -> UUID.randomUUID().toString ) KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](streamCtx, kafkaProps, Set[String]("ingest-ts") ) map { case (key, value) => val mapper = new ObjectMapper() mapper.registerModule(DefaultScalaModule) val wr = mapper.readValue(value, classOf[Map[String,String]]) Row( wr("weather"), wr("family"), DateTime.parse(wr("time"),DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS")).getMillis, wr("temperature"), wr("humidity"), wr("pressure")) } saveToRiakTS "ts_weather_demo" streamCtx.start() println("Spark streaming context started. Spark UI could be found at http://SPARK_MASTER_HOST:4040") println("NOTE: if you're running job on the 'local' master open http://localhost:4040") streamCtx.awaitTermination() } private def setSparkOpt(sparkConf: SparkConf, option: String, defaultOptVal: String): SparkConf = { val optval = sparkConf.getOption(option).getOrElse(defaultOptVal) sparkConf.set(option, optval) } }
Example 50
Source File: JacksonScalaProvider.scala From daf-semantics with Apache License 2.0 | 5 votes |
package it.almawave.kb.http.providers import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider import com.fasterxml.jackson.databind.ObjectMapper import javax.ws.rs.ext.Provider import javax.ws.rs.Produces import com.fasterxml.jackson.module.scala.DefaultScalaModule import javax.ws.rs.core.MediaType import com.fasterxml.jackson.annotation.JsonInclude import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.databind.DeserializationFeature import javax.ws.rs.ext.ContextResolver import com.fasterxml.jackson.databind.JsonSerializer import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.databind.SerializerProvider import java.lang.Double import java.lang.Boolean @Provider @Produces(Array(MediaType.APPLICATION_JSON)) class JacksonScalaProvider extends JacksonJaxbJsonProvider with ContextResolver[ObjectMapper] { println("\n\nregistered " + this.getClass) val mapper = new ObjectMapper() mapper .registerModule(DefaultScalaModule) .setSerializationInclusion(JsonInclude.Include.ALWAYS) .configure(SerializationFeature.INDENT_OUTPUT, true) .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true) .configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true) .configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED, true) .configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, true) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) .configure(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true) .configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true) .configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true) // .setVisibility(JsonMethod.FIELD, Visibility.ANY); .getSerializerProvider.setNullValueSerializer(new JsonSerializer[Object] { def serialize(obj: Object, gen: JsonGenerator, provider: SerializerProvider) { obj match { case bool: Boolean => gen.writeBoolean(false) case number: Integer => gen.writeNumber(0) case number: Double => gen.writeNumber(0.0D) case text: String => gen.writeString("") case _ => gen.writeString("") } } }) super.setMapper(mapper) override def getContext(klasses: Class[_]): ObjectMapper = mapper }
Example 51
Source File: JacksonJsonSerializerTest.scala From akka-tools with MIT License | 5 votes |
package no.nextgentel.oss.akkatools.serializing import akka.actor.ActorSystem import akka.serialization.SerializationExtension import com.fasterxml.jackson.annotation.JsonTypeInfo import com.fasterxml.jackson.databind.{SerializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.typesafe.config.{ConfigFactory, Config} import org.scalatest.{Matchers, FunSuite} class JacksonJsonSerializerTest extends FunSuite with Matchers { val objectMapper = new ObjectMapper() objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false) objectMapper.registerModule(new DefaultScalaModule) test("serializer") { JacksonJsonSerializer.setObjectMapper(objectMapper) val serializer = new JacksonJsonSerializer() val a = Animal("our cat", 12, Cat("black", true)) val bytes = serializer.toBinary(a) val ar = serializer.fromBinary(bytes, classOf[Animal]).asInstanceOf[Animal] assert( a == ar) } test("Registering the serializer works") { JacksonJsonSerializer.setObjectMapper(objectMapper) val system = ActorSystem("JacksonJsonSerializerTest", ConfigFactory.load("akka-tools-json-serializing.conf")) val serialization = SerializationExtension.get(system) assert( classOf[JacksonJsonSerializer] == serialization.serializerFor(classOf[Animal]).getClass) system.terminate() } test("DepricatedTypeWithMigrationInfo") { JacksonJsonSerializer.setObjectMapper(objectMapper) val serializer = new JacksonJsonSerializer() val bytes = serializer.toBinary(OldType("12")) assert(NewType(12) == serializer.fromBinary(bytes, classOf[OldType])) } test("verifySerialization - no error") { JacksonJsonSerializer.setObjectMapper(objectMapper) JacksonJsonSerializer.setVerifySerialization(true) val serializer = new JacksonJsonSerializer() val a = Animal("our cat", 12, Cat("black", true)) val ow = ObjectWrapperWithTypeInfo(a) serializer.toBinary(ow) } test("verifySerialization - with error") { JacksonJsonSerializer.setObjectMapper(objectMapper) JacksonJsonSerializer.setVerifySerialization(true) val serializer = new JacksonJsonSerializer() val a = Animal("our cat", 12, Cat("black", true)) val ow = ObjectWrapperWithoutTypeInfo(a) intercept[JacksonJsonSerializerVerificationFailed] { serializer.toBinary(ow) } } test("verifySerialization - disabled") { JacksonJsonSerializer.setObjectMapper(objectMapper) JacksonJsonSerializer.setVerifySerialization(true) val serializer = new JacksonJsonSerializer() val a = Animal("our cat", 12, Cat("black", true)) val ow = ObjectWrapperWithoutTypeInfoOverrided(a) serializer.toBinary(ow) } } case class Animal(name:String, age:Int, t:Cat) extends JacksonJsonSerializable case class Cat(color:String, tail:Boolean) case class OldType(s:String) extends DepricatedTypeWithMigrationInfo { override def convertToMigratedType(): AnyRef = NewType(s.toInt) } case class NewType(i:Int) case class ObjectWrapperWithTypeInfo(@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@any_class") any:AnyRef) case class ObjectWrapperWithoutTypeInfo(any:AnyRef) case class ObjectWrapperWithoutTypeInfoOverrided(any:AnyRef) extends JacksonJsonSerializableButNotDeserializable
Example 52
Source File: HttpOrderBook.scala From matcher with MIT License | 5 votes |
package com.wavesplatform.dex.api.http.entities import com.fasterxml.jackson.core.{JsonGenerator, JsonParser} import com.fasterxml.jackson.databind.annotation.JsonSerialize import com.fasterxml.jackson.databind.deser.std.StdDeserializer import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.databind.ser.std.StdSerializer import com.fasterxml.jackson.databind.{DeserializationContext, JsonNode, ObjectMapper, SerializerProvider} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import com.wavesplatform.dex.domain.asset.Asset.{IssuedAsset, Waves} import com.wavesplatform.dex.domain.asset.{Asset, AssetPair} import com.wavesplatform.dex.domain.bytes.ByteStr import com.wavesplatform.dex.domain.model.Denormalization import com.wavesplatform.dex.model.LevelAgg @JsonSerialize(using = classOf[HttpOrderBook.Serializer]) case class HttpOrderBook(timestamp: Long, pair: AssetPair, bids: Seq[LevelAgg], asks: Seq[LevelAgg], assetPairDecimals: Option[(Int, Int)] = None) object HttpOrderBook { private val coreTypeSerializers = new SimpleModule() coreTypeSerializers.addDeserializer(classOf[AssetPair], new AssetPairDeserializer) private val mapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.registerModule(coreTypeSerializers) private def serialize(value: Any): String = mapper.writeValueAsString(value) private class AssetPairDeserializer extends StdDeserializer[AssetPair](classOf[AssetPair]) { override def deserialize(p: JsonParser, ctxt: DeserializationContext): AssetPair = { val node = p.getCodec.readTree[JsonNode](p) def readAssetId(fieldName: String): Asset = { val x = node.get(fieldName).asText(Asset.WavesName) if (x == Asset.WavesName) Waves else IssuedAsset(ByteStr.decodeBase58(x).get) } AssetPair(readAssetId("amountAsset"), readAssetId("priceAsset")) } } private def formatValue(value: BigDecimal, decimals: Int): String = new java.text.DecimalFormat(s"0.${"0" * decimals}").format(value) private def denormalizeAndSerializeSide(side: Seq[LevelAgg], amountAssetDecimals: Int, priceAssetDecimals: Int, jg: JsonGenerator): Unit = { side.foreach { levelAgg => val denormalizedPrice = Denormalization.denormalizePrice(levelAgg.price, amountAssetDecimals, priceAssetDecimals) val denormalizedAmount = Denormalization.denormalizeAmountAndFee(levelAgg.amount, amountAssetDecimals) jg.writeStartArray(2) jg.writeString(formatValue(denormalizedPrice, priceAssetDecimals)) jg.writeString(formatValue(denormalizedAmount, amountAssetDecimals)) jg.writeEndArray() } } def toJson(x: HttpOrderBook): String = serialize(x) class Serializer extends StdSerializer[HttpOrderBook](classOf[HttpOrderBook]) { override def serialize(x: HttpOrderBook, j: JsonGenerator, serializerProvider: SerializerProvider): Unit = { j.writeStartObject() j.writeNumberField("timestamp", x.timestamp) x.assetPairDecimals.fold { j.writeFieldName("pair") j.writeStartObject() j.writeStringField("amountAsset", x.pair.amountAssetStr) j.writeStringField("priceAsset", x.pair.priceAssetStr) j.writeEndObject() j.writeArrayFieldStart("bids") x.bids.foreach(j.writeObject) j.writeEndArray() j.writeArrayFieldStart("asks") x.asks.foreach(j.writeObject) j.writeEndArray() } { case (amountAssetDecimals, priceAssetDecimals) => j.writeArrayFieldStart("bids") denormalizeAndSerializeSide(x.bids, amountAssetDecimals, priceAssetDecimals, j) j.writeEndArray() j.writeArrayFieldStart("asks") denormalizeAndSerializeSide(x.asks, amountAssetDecimals, priceAssetDecimals, j) j.writeEndArray() } j.writeEndObject() } } }
Example 53
Source File: GeneratedCodeOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.overrides import java.nio.file.{Files, Path} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule object GeneratedCodeOverridesReader { private val mapper = new ObjectMapper() .registerModule(DefaultScalaModule) def from(repoRoot: Path): GeneratedCodeLinksOverrides = { val overridesPath = repoRoot.resolve("bazel_migration").resolve("code_paths.overrides") if (Files.exists(overridesPath)) mapper.readValue( Files.newBufferedReader(overridesPath), classOf[GeneratedCodeLinksOverrides] ) else GeneratedCodeLinksOverrides.empty } }
Example 54
Source File: SchemaModuleSpec.scala From swagger-check with MIT License | 5 votes |
package de.leanovate.swaggercheck.schema.jackson import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import de.leanovate.swaggercheck.schema.model.{StringDefinition, ObjectDefinition, Definition} import org.scalatest.{MustMatchers, WordSpec} class SchemaModuleSpec extends WordSpec with MustMatchers { val mapper = new ObjectMapper().registerModule(DefaultScalaModule).registerModule(JsonSchemaModule) "SchemaModule" should { "deserialize object_definition" in { val ObjectDefinition(required, properties, additionalProperties) = mapper.readValue(getClass.getClassLoader.getResource("object_definition.json"), classOf[Definition]) required mustBe Some(Set("field1")) properties mustBe Some(Map("field1" -> StringDefinition(None, None, None, None, None))) additionalProperties mustBe Left(true) } } }
Example 55
Source File: DefinitionBuilder.scala From swagger-check with MIT License | 5 votes |
package de.leanovate.swaggercheck.schema.jackson import com.fasterxml.jackson.annotation.{JsonCreator, JsonProperty} import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper} import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.fasterxml.jackson.module.scala.DefaultScalaModule import de.leanovate.swaggercheck.schema.model._ @JsonDeserialize(builder = classOf[DefinitionBuilder]) trait DefinitionMixin { } class DefinitionBuilder @JsonCreator()( @JsonProperty("type") schemaType: Option[String] = None, @JsonProperty("allOf") allOf: Option[Seq[Definition]] = None, @JsonProperty("enum") enum: Option[List[String]] = None, @JsonProperty("exclusiveMinimum") exclusiveMinimum: Option[Boolean] = None, @JsonProperty("exclusiveMaximum") exclusiveMaximum: Option[Boolean] = None, @JsonProperty("format") format: Option[String] = None, @JsonProperty("items") items: Option[Definition] = None, @JsonProperty("minItems") minItems: Option[Int] = None, @JsonProperty("maxItems") maxItems: Option[Int] = None, @JsonProperty("minimum") minimum: Option[BigDecimal] = None, @JsonProperty("maximum") maximum: Option[BigDecimal] = None, @JsonProperty("minLength") minLength: Option[Int] = None, @JsonProperty("maxLength") maxLength: Option[Int] = None, @JsonProperty("oneOf") oneOf: Option[Seq[Definition]] = None, @JsonProperty("pattern") pattern: Option[String] = None, @JsonProperty("properties") properties: Option[Map[String, Definition]] = None, @JsonProperty("additionalProperties") additionalPropertiesNode: Option[JsonNode] = None, @JsonProperty("required") required: Option[Set[String]] = None, @JsonProperty("$ref") ref: Option[String] = None, @JsonProperty("uniqueItems") uniqueItems: Option[Boolean] = None) { val additionalProperties = additionalPropertiesNode.map { case node if node.isBoolean => Left(node.isBinary) case node => Right(DefinitionBuilder.mapper.treeToValue(node, classOf[Definition])) } def build(): Definition = { Definition.build( schemaType, allOf, enum, exclusiveMinimum, exclusiveMaximum, format, items, minItems, maxItems, minimum, maximum, minLength, maxLength, oneOf, pattern, properties, additionalProperties, required, ref, uniqueItems ) } } object DefinitionBuilder { val mapper = new ObjectMapper().registerModule(DefaultScalaModule).registerModule(JsonSchemaModule) }
Example 56
Source File: SwaggerAPI.scala From swagger-check with MIT License | 5 votes |
package de.leanovate.swaggercheck.schema import java.io.InputStream import com.fasterxml.jackson.annotation.{JsonCreator, JsonProperty} import com.fasterxml.jackson.core.JsonFactory import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.fasterxml.jackson.databind.{DeserializationFeature, JsonNode, MappingJsonFactory, ObjectMapper} import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule import de.leanovate.swaggercheck.schema.jackson.JsonSchemaModule import de.leanovate.swaggercheck.schema.model.{Definition, Parameter} import scala.collection.JavaConverters._ import scala.io.Source @JsonDeserialize(builder = classOf[SwaggerAPIBuilder]) case class SwaggerAPI( basePath: Option[String], paths: Map[String, Map[String, Operation]], definitions: Map[String, Definition] ) object SwaggerAPI { val jsonMapper = objectMapper(new MappingJsonFactory()) val yamlMapper = objectMapper(new YAMLFactory()) def parse(jsonOrYaml: String): SwaggerAPI = { val mapper = if (jsonOrYaml.trim().startsWith("{")) jsonMapper else yamlMapper mapper.readValue(jsonOrYaml, classOf[SwaggerAPI]) } def parse(swaggerInput: InputStream): SwaggerAPI = { parse(Source.fromInputStream(swaggerInput).mkString) } def objectMapper(jsonFactory: JsonFactory): ObjectMapper = { val mapper = new ObjectMapper(jsonFactory) mapper.registerModule(DefaultScalaModule) mapper.registerModule(JsonSchemaModule) mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) mapper } } class SwaggerAPIBuilder @JsonCreator()( @JsonProperty("basePath") basePath: Option[String], @JsonProperty("consumes") consumes: Option[Seq[String]], @JsonProperty("produces") produces: Option[Seq[String]], @JsonProperty("paths") paths: Option[Map[String, JsonNode]], @JsonProperty("definitions") definitions: Option[Map[String, Definition]], @JsonProperty("parameters") globalParameters: Option[Map[String, Parameter]] ) { def build(): SwaggerAPI = { val defaultConsumes = consumes.map(_.toSet).getOrElse(Set.empty) val defaultProduces = produces.map(_.toSet).getOrElse(Set.empty) SwaggerAPI(basePath, paths.getOrElse(Map.empty).map { case (path, pathDefinition) => val defaultParameters = Option(pathDefinition.get("parameters")).map { node => node.iterator().asScala.map { element => SwaggerAPI.jsonMapper.treeToValue(element, classOf[OperationParameter]) }.toSeq }.getOrElse(Seq.empty) basePath.map(_ + path).getOrElse(path) -> pathDefinition.fields().asScala.filter(_.getKey != "parameters").map { entry => val operation = SwaggerAPI.jsonMapper.treeToValue(entry.getValue, classOf[Operation]) entry.getKey.toUpperCase -> operation.withDefaults(defaultParameters, defaultConsumes, defaultProduces).resolveGlobalParameters(globalParameters.getOrElse(Map())) }.toMap }, definitions.getOrElse(Map.empty)) } }
Example 57
Source File: HATEOASContinuation.scala From regressr with Apache License 2.0 | 5 votes |
package org.ebayopensource.regression.example import java.net.URI import org.ebayopensource.regression.internal.components.continuation.Continuation import org.ebayopensource.regression.internal.http.{HTTPRequest, HTTPResponse} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import scala.util.Try endpoint/shopping/items/item[0-9]")) { val map = getMap(resp.body.get) Seq(HTTPRequest(new URI(map.get("seller").get.asInstanceOf[String]), request.headers, request.method, None)) } else { Seq() } } def getMap(json: String) : Map[String, Object] = { val mapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) mapper.readValue[Map[String, Object]](json) } }
Example 58
Source File: DockerfileParser.scala From rug with GNU General Public License v3.0 | 5 votes |
package com.atomist.rug.kind.docker import _root_.java.util import java.io.InputStreamReader import javax.script.{Invocable, ScriptEngineManager} import com.atomist.util.Utils.withCloseable import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.springframework.core.io.ClassPathResource import scala.collection.JavaConverters._ object DockerfileParser { val mapper = new ObjectMapper().registerModule(DefaultScalaModule) val consoleJs = """ |console = { | log: print, | warn: print, | error: print |}; """.stripMargin def parse(content: String): Dockerfile = { val param = Option(content).getOrElse("") val content1 = param.replace("\r\n", "\n").replace("\r", "\n") withCloseable(new ClassPathResource("docker/parser.js").getInputStream)(is => { withCloseable(new InputStreamReader(is))(reader => { try { val engine = new ScriptEngineManager(null).getEngineByName("nashorn") engine.eval(consoleJs) engine.eval(reader) val invocable = engine.asInstanceOf[Invocable] val result = invocable.invokeFunction("parse", content1, Map("includeComments" -> "true").asJava) val lines = result match { case map: util.Map[AnyRef @unchecked, AnyRef @unchecked] => map.asScala.values.map(c => mapper.convertValue(c, classOf[DockerfileLine])).toSeq case _ => throw new IllegalArgumentException("Failed to parse content") } new Dockerfile(lines) } catch { case e: Exception => throw DockerfileException("Failed to parse Dockerfile", e) } }) }) } }
Example 59
Source File: LinkedJsonGraphDeserializer.scala From rug with GNU General Public License v3.0 | 5 votes |
package com.atomist.tree.marshal import com.atomist.graph.GraphNode import com.atomist.rug.ts.Cardinality import com.atomist.tree.{SimpleTerminalTreeNode, TreeNode} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import com.typesafe.scalalogging.LazyLogging def fromJson(json: String): GraphNode = { val l = toListOfMaps(json) nodeify(l) } private def toListOfMaps(json: String): List[Map[String, Object]] = { mapper.readValue(json, classOf[List[Map[String, Object]]]) } private def nodeify(l: List[Map[String, Object]]): GraphNode = { // Pass 1: Get all nodes individually and put them in a map var idToNode: Map[String, LinkableContainerTreeNode] = Map() val nodes: Seq[LinkableContainerTreeNode] = for { m <- l if !m.contains(StartNodeId) } yield { val nodeType: String = m.get(Type) match { case Some(l: Seq[_]) => l.last.toString case None => throw new IllegalArgumentException(s"Type is required") case _ => ??? } val nodeTags: Set[String] = m.get(Type) match { case Some(l: Seq[_]) => l.map(_.toString).toSet case None => throw new IllegalArgumentException(s"Type is required") case _ => ??? } val nodeName = nodeType val simpleFields = for { k <- m.keys if !SpecialProperties.contains(k) } yield { val nodeValue = m.get(k) match { case Some(s: String) => s case Some(ns) => ns.toString case None => null } SimpleTerminalTreeNode(k, nodeValue) } val ctn = new LinkableContainerTreeNode(nodeName, nodeTags + TreeNode.Dynamic, simpleFields.toSeq) val nodeId: String = requiredStringEntry(m, NodeId) idToNode += (nodeId -> ctn) ctn } // Create the linkages for { m <- l if m.contains(StartNodeId) } { val startNodeId: String = requiredStringEntry(m, StartNodeId) val endNodeId: String = requiredStringEntry(m, EndNodeId) val cardinality: Cardinality = Cardinality(defaultedStringEntry(m, CardinalityStr, Cardinality.One2One)) val link: String = requiredStringEntry(m, Type) logger.debug(s"Creating link from $startNodeId to $endNodeId") idToNode.get(startNodeId) match { case Some(parent) => parent.link( idToNode.getOrElse(endNodeId, throw new IllegalArgumentException(s"Cannot link to end node $endNodeId: not found")), link, cardinality) case None => throw new IllegalArgumentException(s"Cannot link to start node $startNodeId: not found") } } if (nodes.nonEmpty) nodes.head else new EmptyContainerGraphNode } private def requiredStringEntry(m: Map[String,Any], key: String): String = m.get(key) match { case None => throw new IllegalArgumentException(s"Property [$key] was required, but not found in map with keys [${m.keySet.mkString(",")}]") case Some(s: String) => s case Some(x) => x.toString } private def defaultedStringEntry(m: Map[String,Any], key: String, default: String): String = m.get(key) match { case None => default case Some(s: String) => s case Some(x) => x.toString } }
Example 60
Source File: YamlProjectOperationInfoParser.scala From rug with GNU General Public License v3.0 | 5 votes |
package com.atomist.project.common.yaml import java.util.regex.{Pattern, PatternSyntaxException} import com.atomist.param._ import com.atomist.project.common.template.{InvalidTemplateException, TemplateBasedProjectOperationInfo} import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper import org.apache.commons.lang3.builder.ReflectionToStringBuilder import scala.util.{Failure, Success, Try} object YamlProjectOperationInfoParser { private val mapper = new ObjectMapper(new YAMLFactory()) with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) @throws[InvalidYamlDescriptorException] def parse(yaml: String): TemplateBasedProjectOperationInfo = { if (yaml == null || "".equals(yaml)) throw new InvalidYamlDescriptorException("YAML content required in template metadata file") Try(mapper.readValue(yaml, classOf[BoundProjectOperationInfo])) match { case s: Success[BoundProjectOperationInfo] => val badPatterns = s.value.parameters.flatMap(p => patternError(p)) if (badPatterns.nonEmpty) throw new InvalidYamlDescriptorException(s"Bad regexp patterns: ${badPatterns.mkString(",")}") s.value case f: Failure[BoundProjectOperationInfo] => throw new InvalidYamlDescriptorException(s"Failed to parse YAML [$yaml]: ${f.exception.getMessage}", f.exception) } } private def patternError(p: Parameter): Option[String] = { try { Pattern.compile(p.getPattern) None } catch { case pse: PatternSyntaxException => Some(s"${p.getName}: Bad regular expression pattern: ${pse.getMessage}") } } } private class BoundProjectOperationInfo extends TemplateBasedProjectOperationInfo { @JsonProperty("name") var name: String = _ @JsonProperty("description") var description: String = _ @JsonProperty("template_name") var templateName: String = _ @JsonProperty("type") var _templateType: String = _ override def templateType: Option[String] = if (_templateType == null || "".equals(_templateType)) None else Some(_templateType) @JsonProperty("parameters") private var _params: Seq[Parameter] = Nil @JsonProperty("tags") private var _tags: Seq[TagHolder] = Nil override def parameters: Seq[Parameter] = _params override def tags: Seq[Tag] = _tags.map(tw => tw.toTag) override def toString = ReflectionToStringBuilder.toString(this) } private class TagHolder { @JsonProperty var name: String = _ @JsonProperty var description: String = _ def toTag = Tag(name, description) } class InvalidYamlDescriptorException(msg: String, ex: Throwable = null) extends InvalidTemplateException(msg, ex)
Example 61
Source File: AppConfig.scala From odsc-east-realish-predictions with Apache License 2.0 | 5 votes |
package com.twilio.open.odsc.realish.config import java.io.File import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.fasterxml.jackson.module.scala.DefaultScalaModule object AppConfig { private val mapper = new ObjectMapper(new YAMLFactory) mapper.registerModule(DefaultScalaModule) def parse(configPath: String): AppConfig = { mapper.readValue(new File(configPath), classOf[AppConfig]) } } @SerialVersionUID(100L) case class AppConfig( sparkAppConfig: SparkAppConfig, streamingQueryConfig: StreamingQueryConfig ) extends Serializable @SerialVersionUID(100L) case class SparkAppConfig( appName: String, core: Map[String, String] ) extends Serializable trait KafkaConsumerConfig { val topic: String val subscriptionType: String val conf: Map[String, String] } @SerialVersionUID(100L) case class ConsumerConfig( topic: String, subscriptionType: String, conf: Map[String, String] ) extends KafkaConsumerConfig with Serializable @SerialVersionUID(100L) case class StreamingQueryConfig( streamName: String, triggerInterval: String, triggerEnabled: Boolean, windowInterval: String, watermarkInterval: String ) extends Serializable
Example 62
Source File: MapPartitionsExample.scala From gihyo-spark-book-example with Apache License 2.0 | 5 votes |
package jp.gihyo.spark.ch03.basic_transformation import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.log4j.{Level, Logger} import org.apache.spark.{SparkConf, SparkContext} // scalastyle:off println object MapPartitionsExample { def main(args: Array[String]) { Logger.getLogger("org").setLevel(Level.WARN) val conf = new SparkConf().setAppName("MapPartitionsExample") val sc = new SparkContext(conf) run(sc) sc.stop() } def run(sc: SparkContext) { val jsonLines = sc.parallelize(Array( """{"name": "Apple", "num": 1}""", """{"name": "Orange", "num": 4}""", """{"name": "Apple", "num": 2}""", """{"name": "Peach", "num": 1}""" )) val parsed = jsonLines.mapPartitions { lines => val mapper = new ObjectMapper() mapper.registerModule(DefaultScalaModule) lines.map { line => val f = mapper.readValue(line, classOf[Map[String, String]]) (f("name"), f("num")) } } println(s"""json:\n${jsonLines.collect().mkString("\n")}""") println() println(s"""parsed:\n${parsed.collect().mkString("\n")}""") } } // scalastyle:on println
Example 63
Source File: Persister.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator import java.io.File import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{Files, Paths} import java.time.Instant import java.time.temporal.TemporalUnit import java.util import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.bazel.migrator.model.{CodePurpose, Package, Target, TestType} import com.wix.bazel.migrator.utils.{IgnoringIsArchiveDefMixin, IgnoringIsProtoArtifactDefMixin, IgnoringIsWarDefMixin, TypeAddingMixin} import com.wix.build.maven.analysis.SourceModules import com.wixpress.build.maven.{Coordinates, MavenScope, Packaging} import scala.collection.JavaConverters._ object Persister { private val transformedFile = new File("dag.bazel") private val mavenCache = Paths.get("classpathModules.cache") val objectMapper = new ObjectMapper().registerModule(DefaultScalaModule) .addMixIn(classOf[Target], classOf[TypeAddingMixin]) .addMixIn(classOf[CodePurpose], classOf[TypeAddingMixin]) .addMixIn(classOf[TestType], classOf[TypeAddingMixin]) .addMixIn(classOf[MavenScope], classOf[TypeAddingMixin]) .addMixIn(classOf[Packaging], classOf[IgnoringIsArchiveDefMixin]) .addMixIn(classOf[Packaging], classOf[IgnoringIsWarDefMixin]) .addMixIn(classOf[Coordinates], classOf[IgnoringIsProtoArtifactDefMixin]) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) def persistTransformationResults(bazelPackages: Set[Package]): Unit = { println("Persisting transformation") objectMapper.writeValue(transformedFile, bazelPackages) } def readTransformationResults(): Set[Package] = { val collectionType = objectMapper.getTypeFactory.constructCollectionType(classOf[util.Collection[Package]], classOf[Package]) val value: util.Collection[Package] = objectMapper.readValue(transformedFile, collectionType) val bazelPackages = value.asScala.toSet bazelPackages } def persistMavenClasspathResolution(sourceModules: SourceModules): Unit = { println("Persisting maven") objectMapper.writeValue(mavenCache.toFile, sourceModules) } def readTransMavenClasspathResolution(): SourceModules = { objectMapper.readValue[SourceModules](mavenCache.toFile, classOf[SourceModules]) } def mavenClasspathResolutionIsUnavailableOrOlderThan(amount: Int, unit: TemporalUnit): Boolean = !Files.isReadable(mavenCache) || lastModifiedMavenCache().toInstant.isBefore(Instant.now().minus(amount, unit)) private def lastModifiedMavenCache() = Files.readAttributes(mavenCache, classOf[BasicFileAttributes]).lastModifiedTime() }
Example 64
Source File: InternalFileDepsOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.overrides import java.nio.file.{Files, Path} import com.fasterxml.jackson.databind._ import com.fasterxml.jackson.module.scala.DefaultScalaModule object InternalFileDepsOverridesReader { private val mapper = new ObjectMapper().registerModule(DefaultScalaModule) def from(repoRoot: Path): InternalFileDepsOverrides = { val overridesPath = repoRoot.resolve("bazel_migration").resolve("internal_file_deps.overrides") if (Files.exists(overridesPath)) mapper.readValue( Files.newBufferedReader(overridesPath), classOf[InternalFileDepsOverrides] ) else InternalFileDepsOverrides.empty } }
Example 65
Source File: AdditionalDepsByMavenDepsOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.overrides import java.nio.file.{Files, Path} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import scala.util.{Failure, Success, Try} object AdditionalDepsByMavenDepsOverridesReader { private val mapper = new ObjectMapper() .registerModule(DefaultScalaModule) def from(filepath: Path): AdditionalDepsByMavenDepsOverrides = { if (Files.exists(filepath)) readContentIn(filepath) else AdditionalDepsByMavenDepsOverrides.empty } private def readContentIn(filepath: Path) = { Try(mapper.readValue( Files.newBufferedReader(filepath), classOf[AdditionalDepsByMavenDepsOverrides] )) match { case Success(overrides) => overrides case Failure(e) => throw OverrideParsingException(s"cannot parse $filepath", e) } } }
Example 66
Source File: InternalTargetOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.overrides import java.nio.file.{Files, Path} import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.bazel.migrator.model.TestType import com.wix.bazel.migrator.utils.TypeAddingMixin object InternalTargetOverridesReader { private val objectMapper = new ObjectMapper() .registerModule(DefaultScalaModule) .addMixIn(classOf[TestType], classOf[TypeAddingMixin]) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) def from(repoRootPath: Path): InternalTargetsOverrides = { val internalTargetsOverrides = repoRootPath.resolve("bazel_migration").resolve("internal_targets.overrides") if (Files.isReadable(internalTargetsOverrides)) { objectMapper.readValue(Files.newInputStream(internalTargetsOverrides), classOf[InternalTargetsOverrides]) } else { InternalTargetsOverrides() } } }
Example 67
Source File: MavenArchiveTargetsOverridesReader.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator.overrides import java.nio.file.{Files, Path} import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule object MavenArchiveTargetsOverridesReader { def from(repoRoot: Path): MavenArchiveTargetsOverrides = { val overridesPath = repoRoot.resolve("bazel_migration").resolve("maven_archive_targets.overrides") if (Files.exists(overridesPath)) { val objectMapper = new ObjectMapper().registerModule(DefaultScalaModule) objectMapper.readValue(Files.readAllBytes(overridesPath), classOf[MavenArchiveTargetsOverrides]) } else { MavenArchiveTargetsOverrides(Set.empty) } } }
Example 68
Source File: TestJsonSerializer.scala From embedded-kafka with MIT License | 5 votes |
package net.manub.embeddedkafka.serializers import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import org.apache.kafka.common.errors.SerializationException import org.apache.kafka.common.serialization.Serializer class TestJsonSerializer[T] extends Serializer[T] { private val mapper = new ObjectMapper().registerModule(DefaultScalaModule) override def serialize(topic: String, data: T): Array[Byte] = Option(data).map { _ => try mapper.writeValueAsBytes(data) catch { case e: Exception => throw new SerializationException("Error serializing JSON message", e) } }.orNull }
Example 69
Source File: StreamingProducer.scala From Scala-Programming-Projects with MIT License | 4 votes |
package coinyser import java.sql.Timestamp import java.text.SimpleDateFormat import java.util.TimeZone import cats.effect.IO import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.pusher.client.Client import com.pusher.client.channel.SubscriptionEventListener import com.typesafe.scalalogging.StrictLogging object StreamingProducer extends StrictLogging { def subscribe(pusher: Client)(onTradeReceived: String => Unit): IO[Unit] = for { _ <- IO(pusher.connect()) channel <- IO(pusher.subscribe("live_trades")) _ <- IO(channel.bind("trade", new SubscriptionEventListener() { override def onEvent(channel: String, event: String, data: String): Unit = { logger.info(s"Received event: $event with data: $data") onTradeReceived(data) } })) } yield () val mapper: ObjectMapper = { val m = new ObjectMapper() m.registerModule(DefaultScalaModule) val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") // Very important: the storage must be in UTC sdf.setTimeZone(TimeZone.getTimeZone("UTC")) m.setDateFormat(sdf) } def deserializeWebsocketTransaction(s: String): WebsocketTransaction = mapper.readValue(s, classOf[WebsocketTransaction]) def convertWsTransaction(wsTx: WebsocketTransaction): Transaction = Transaction( timestamp = new Timestamp(wsTx.timestamp.toLong * 1000), tid = wsTx.id, price = wsTx.price, sell = wsTx.`type` == 1, amount = wsTx.amount) def serializeTransaction(tx: Transaction): String = mapper.writeValueAsString(tx) }