当前位置: 首页>>代码示例>>Scala>>正文


Scala ParameterizedType类代码示例

本文整理汇总了Scala中java.lang.reflect.ParameterizedType的典型用法代码示例。如果您正苦于以下问题:Scala ParameterizedType类的具体用法?Scala ParameterizedType怎么用?Scala ParameterizedType使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了ParameterizedType类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。

示例1: JSONHTTP

//设置package包名称以及导入依赖的类
package works.weave.socks.aws.orders.dataaccess.web

import com.amazonaws.util.IOUtils
import com.fasterxml.jackson.core.`type`.TypeReference
import java.lang.reflect.ParameterizedType
import java.lang.reflect.Type
import java.net.URI
import javax.xml.ws.http.HTTPException
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.HttpClientBuilder
import org.slf4j.LoggerFactory
import works.weave.socks.aws.orders.ProjectDefaultJacksonMapper

object JSONHTTP {

  val Log = LoggerFactory.getLogger(getClass)

  val objectMapper = ProjectDefaultJacksonMapper.build() // after (_.bla)

  def get[T : Manifest : NotNothing](uri : URI) : T = {
    val client = HttpClientBuilder.create.build
    val get = new HttpGet(uri)
    get.addHeader("Accept", "application/json")
    val response = client.execute(get)
    val responseString = IOUtils.toString(response.getEntity.getContent)
    Log.info(s"Got status ${response.getStatusLine.getStatusCode}")
    if (response.getStatusLine.getStatusCode == 200) {
      Log.info(s"Got response from URI $uri: $responseString")
      objectMapper.readValue(responseString, typeReference[T])
    } else {
      throw new HTTPException(response.getStatusLine.getStatusCode)
    }
  }

  def typeReference[T : Manifest] = new TypeReference[T] {
    override def getType = typeFromManifest(manifest[T])
  }

  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
    }
  }

  // Trick to disable nothign for type param
  sealed trait NotNothing[-T]

  object NotNothing {
    implicit object notNothing extends NotNothing[Any]
    implicit object `The error is because the missing type parameter was resolved to Nothing` extends NotNothing[Nothing]
  }

} 
开发者ID:Compositional,项目名称:orders-aws,代码行数:57,代码来源:JSONHTTP.scala

示例2: JacksonSupport

//设置package包名称以及导入依赖的类
package com.github.andyglow.relaxed

import com.fasterxml.jackson.core.`type`.TypeReference
import com.fasterxml.jackson.databind._

case class JacksonSupport(json: JsonNode) extends Reader with ReaderSupport[JsonNode] {
  def isNull: (JsonNode) => Boolean = _.isNull
  def ctor: (JsonNode) => JacksonSupport = JacksonSupport.apply

  def get(field: String): Option[JsonNode] = {
    val node = json.findPath(field)
    if (node.isMissingNode) None else Some(node)
  }

  override def opt[T: Reads](field: String): Option[T] = {
    val r = implicitly[Reads[T]].asInstanceOf[JacksonSupport.JacksonReads[T]]
    get(field) map {x => r.mapper.readerFor(r.typeReference).readValue[T](x)}
  }

  override def optOpt[T: Reads](field: String): Option[Option[T]] = {
    val r = implicitly[Reads[T]].asInstanceOf[JacksonSupport.JacksonReads[T]]
    getOpt(field) map {_ map {x => r.mapper.readerFor(r.typeReference).readValue[T](x)}}
  }
}

object JacksonSupport {
  import java.lang.reflect.{Type, ParameterizedType}

  sealed trait JacksonReads[T] extends Reads[T] {
    def mapper: ObjectMapper
    def typeReference: TypeReference[T]
  }

  implicit def readsImpl[T](implicit x: ObjectMapper, m: Manifest[T]): Reads[T] = new JacksonReads[T]() {
    override def mapper: ObjectMapper = x
    override lazy val typeReference: TypeReference[T] = {
      def typeFromManifest(m: Manifest[_]): Type = {
        if (m.typeArguments.isEmpty) m.runtimeClass
        else new ParameterizedType {
          def getRawType: Class[_] = m.runtimeClass
          def getActualTypeArguments: Array[Type] = m.typeArguments.map(typeFromManifest).toArray
          def getOwnerType = null
        }
      }
      new TypeReference[T] {
        override def getType: Type = typeFromManifest(manifest[T])
      }
    }
  }
} 
开发者ID:andyglow,项目名称:relaxed-json-update,代码行数:51,代码来源:JacksonSupport.scala

示例3: VPackScalaDeserializers

//设置package包名称以及导入依赖的类
package com.arangodb.velocypack.module.scala.internal

import com.arangodb.velocypack.VPackDeserializer
import com.arangodb.velocypack.VPackDeserializationContext
import com.arangodb.velocypack.VPackSlice
import com.arangodb.velocypack.VPackDeserializerParameterizedType
import java.lang.reflect.ParameterizedType
import scala.collection.JavaConversions._
import scala.collection.JavaConverters._

object VPackScalaDeserializers {

  val OPTION = new VPackDeserializerParameterizedType[Option[Any]] {
    def deserialize(parent: VPackSlice, vpack: VPackSlice, context: VPackDeserializationContext): Option[Any] =
      throw new UnsupportedOperationException

    def deserialize(parent: VPackSlice, vpack: VPackSlice, context: VPackDeserializationContext, t: ParameterizedType): Option[Any] = {
      val value = context.deserialize(vpack, t.getActualTypeArguments()(0).asInstanceOf[Class[Any]])
      value match {
        case null => None
        case _    => Some(value)
      }
    }
  }

  val LIST = new VPackDeserializer[List[Any]] {
    def deserialize(parent: VPackSlice, vpack: VPackSlice, context: VPackDeserializationContext): List[Any] =
      context.deserialize(vpack, classOf[java.util.List[Any]]).toList
  }

  val MAP = new VPackDeserializer[Map[Any, Any]] {
    def deserialize(parent: VPackSlice, vpack: VPackSlice, context: VPackDeserializationContext): Map[Any, Any] =
      context.deserialize(vpack, classOf[java.util.Map[Any, Any]]).toMap
  }

} 
开发者ID:arangodb,项目名称:java-velocypack-module-scala,代码行数:37,代码来源:VPackScalaDeserializers.scala

示例4: serialize

//设置package包名称以及导入依赖的类
package com.lightbend.lagom.internal.javadsl.api

import java.lang.reflect.{ ParameterizedType, Type }
import java.util.Optional

import com.lightbend.lagom.javadsl.api.deser.{ PathParamSerializer, PathParamSerializers }
import org.pcollections.{ PSequence, TreePVector }

import scala.compat.java8.FunctionConverters._

trait UnresolvedPathParamSerializer[Param] extends PathParamSerializer[Param] {
  def serialize(parameter: Param) = throw new NotImplementedError("Cannot use unresolved path param serializer to serialize path params")

  def deserialize(parameters: PSequence[String]) = throw new NotImplementedError("Cannot use unresolved path param serializer to deserialize path params")

  def resolve(resolver: ServiceCallResolver, typeInfo: Type): PathParamSerializer[Param]
}

class UnresolvedTypePathParamSerializer[Param] extends UnresolvedPathParamSerializer[Param] {
  override def resolve(resolver: ServiceCallResolver, typeInfo: Type): PathParamSerializer[Param] = {
    resolver.pathParamSerializerFor(typeInfo, typeInfo)
  }
}

class UnresolvedOptionalPathParamSerializer[Param] extends UnresolvedPathParamSerializer[Optional[Param]] {
  override def resolve(resolver: ServiceCallResolver, typeInfo: Type): PathParamSerializer[Optional[Param]] = {
    typeInfo match {
      case paramType: ParameterizedType if paramType.getRawType == classOf[Optional[_]] =>
        val wrappedType = paramType.getActualTypeArguments.apply(0)
        val subTypeSerializer = resolver.pathParamSerializerFor[Param](wrappedType, wrappedType)
        PathParamSerializers.optional[Param](
          wrappedType.getTypeName,
          (subTypeSerializer.deserialize _).compose((p: String) => TreePVector.singleton(p)).asJava,
          (subTypeSerializer.serialize _).andThen {
          case single if single.size() == 1 => single.get(0)
          case other                        => throw new IllegalStateException("Can only wrap an Optional serializer around a path param serializer that produces exactly one parameter")
        }.asJava
        )
      case _ => throw new IllegalArgumentException("Unresolved optional path param serializer can only be resolved against ParamaterizedType descriptors for the Optional class. This serializer was resolved against: " + typeInfo)
    }
  }
} 
开发者ID:lagom,项目名称:lagom,代码行数:43,代码来源:PathParamSerializers.scala

示例5: EnumResolver

//设置package包名称以及导入依赖的类
package com.kakao.shaded.jackson.module.scala
package util

import java.lang.reflect.ParameterizedType

import com.kakao.shaded.jackson.databind.BeanProperty
import com.kakao.shaded.jackson.module.scala.introspect.ScalaAnnotationIntrospector
import com.kakao.shaded.jackson.module.scala.JsonScalaEnumeration

object EnumResolver {

  def apply(property: BeanProperty): Option[EnumResolver] = {
    Option(property)
      .flatMap(p => ScalaAnnotationIntrospector.propertyFor(p.getMember))
      .flatMap(_.findAnnotation[JsonScalaEnumeration])
      .map(a => apply(a))
  }

  def apply(a: JsonScalaEnumeration): EnumResolver = {
    val pt = a.value().getGenericSuperclass.asInstanceOf[ParameterizedType]
    val args = pt.getActualTypeArguments
    apply(args(0).asInstanceOf[Class[Enumeration]])
  }

  def apply[T <: Enumeration](cls: Class[T]): EnumResolver = {
    val enum = cls.getField("MODULE$").get(null).asInstanceOf[T]
    apply(enum)
  }

  def apply(e: Enumeration): EnumResolver = {
    val valueSet = e.values
    val map: Map[String, e.type#Value] = valueSet.map(v => (v.toString, v)).toMap
    new EnumResolver(e.getClass, valueSet, map)
  }
}

class EnumResolver(cls: Class[_], valueSet: Enumeration#ValueSet, enumsByName: Map[String, Enumeration#Value]) {

  def getEnum(key: String): Enumeration#Value = enumsByName(key)

  def getEnumClass = cls

} 
开发者ID:kakao,项目名称:mango,代码行数:44,代码来源:EnumResolver.scala

示例6: SeqTypeAdapterFactory

//设置package包名称以及导入依赖的类
package cz.augi.gsonscala

import java.lang.reflect.ParameterizedType

import com.google.gson.reflect.TypeToken
import com.google.gson.stream.{JsonReader, JsonToken, JsonWriter}
import com.google.gson.{Gson, TypeAdapter, TypeAdapterFactory}

object SeqTypeAdapterFactory extends TypeAdapterFactory {
  override def create[T](gson: Gson, t: TypeToken[T]): TypeAdapter[T] =
    if (classOf[Seq[_]].isAssignableFrom(t.getRawType)) new SeqTypeAdapter(gson, t) else null
}

class SeqTypeAdapter[T](gson: Gson, t: TypeToken[T]) extends TypeAdapter[T] {
  val innerType = t.getType.asInstanceOf[ParameterizedType].getActualTypeArguments()(0)

  override def write(out: JsonWriter, value: T): Unit = {
    out.beginArray()
    value.asInstanceOf[Seq[_]].foreach(i => gson.toJson(i, innerType, out))
    out.endArray()
  }

  override def read(in: JsonReader): T = {
    val builder = scala.collection.mutable.Seq.newBuilder
    in.beginArray()
    while(in.peek() != JsonToken.END_ARRAY) {
      builder += gson.fromJson(in, innerType)
    }
    in.endArray()
    val res = builder.result()
    (if (res.isEmpty) Seq.empty else res).asInstanceOf[T]
  }
} 
开发者ID:augi,项目名称:gson-scala,代码行数:34,代码来源:SeqTypeAdapter.scala

示例7: OptionalTypeAdapterFactory

//设置package包名称以及导入依赖的类
package cz.augi.gsonscala

import java.lang.reflect.ParameterizedType
import java.util.Optional

import com.google.gson.reflect.TypeToken
import com.google.gson.stream.{JsonReader, JsonWriter}
import com.google.gson.{Gson, TypeAdapter, TypeAdapterFactory}

object OptionalTypeAdapterFactory extends TypeAdapterFactory {
  override def create[T](gson: Gson, t: TypeToken[T]): TypeAdapter[T] =
    if (classOf[Optional[_]].isAssignableFrom(t.getRawType)) new OptionalTypeAdapter(gson, t) else null
}

class OptionalTypeAdapter[T](gson: Gson, t: TypeToken[T]) extends TypeAdapter[T] {
  val innerType = t.getType.asInstanceOf[ParameterizedType].getActualTypeArguments()(0)

  override def write(out: JsonWriter, value: T): Unit =
    value match {
      case o: Optional[_] =>
        if (o.isPresent) {
          gson.toJson(o.get, innerType, out)
        } else {
          // we must forcibly write null in order the read method to be called
          val orig = out.getSerializeNulls
          out.setSerializeNulls(true)
          out.nullValue()
          out.setSerializeNulls(orig)
        }
    }

  override def read(in: JsonReader): T = Optional.ofNullable(gson.fromJson(in, innerType)).asInstanceOf[T]
} 
开发者ID:augi,项目名称:gson-scala,代码行数:34,代码来源:OptionalTypeAdapter.scala

示例8: OptionTypeAdapterFactory

//设置package包名称以及导入依赖的类
package cz.augi.gsonscala

import java.lang.reflect.ParameterizedType

import com.google.gson.reflect.TypeToken
import com.google.gson.stream.{JsonReader, JsonWriter}
import com.google.gson.{Gson, TypeAdapter, TypeAdapterFactory}

object OptionTypeAdapterFactory extends TypeAdapterFactory {
  override def create[T](gson: Gson, t: TypeToken[T]): TypeAdapter[T] =
    if (classOf[Option[_]].isAssignableFrom(t.getRawType)) new OptionTypeAdapter(gson, t) else null
}

class OptionTypeAdapter[T](gson: Gson, t: TypeToken[T]) extends TypeAdapter[T] {
  val innerType = t.getType.asInstanceOf[ParameterizedType].getActualTypeArguments()(0)

  override def write(out: JsonWriter, value: T): Unit =
    value match {
      case o: Option[_] => o match {
        case Some(v) => gson.toJson(v, innerType, out)
        case None =>
          // we must forcibly write null in order the read method to be called
          val orig = out.getSerializeNulls
          out.setSerializeNulls(true)
          out.nullValue()
          out.setSerializeNulls(orig)
      }
    }

  override def read(in: JsonReader): T = Option(gson.fromJson(in, innerType)).asInstanceOf[T]
} 
开发者ID:augi,项目名称:gson-scala,代码行数:32,代码来源:OptionTypeAdapter.scala


注:本文中的java.lang.reflect.ParameterizedType类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。