java.util.function Scala Examples
The following examples show how to use java.util.function.
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: SingletonMemorySink.scala From milan with Apache License 2.0 | 5 votes |
package com.amazon.milan.application.sinks import java.time.{Duration, Instant} import java.util.concurrent.{ConcurrentHashMap, ConcurrentLinkedQueue} import java.util.function import com.amazon.milan.Id import com.amazon.milan.application.DataSink import com.amazon.milan.typeutil.TypeDescriptor import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.databind.annotation.{JsonDeserialize, JsonSerialize} import scala.collection.mutable import scala.collection.mutable.ArrayBuffer import scala.concurrent.TimeoutException object SingletonMemorySink { private val values = new ConcurrentHashMap[String, ArrayBuffer[MemorySinkRecord[_]]]() private val nextSeqNum = new mutable.HashMap[String, Int]() private val locks = new ConcurrentHashMap[String, Object]() private def makeCreateBufferFunction[T]: java.util.function.Function[String, ArrayBuffer[MemorySinkRecord[_]]] = new function.Function[String, ArrayBuffer[MemorySinkRecord[_]]] { override def apply(t: String): ArrayBuffer[MemorySinkRecord[_]] = (new ArrayBuffer[MemorySinkRecord[T]]()).asInstanceOf[ArrayBuffer[MemorySinkRecord[_]]] } private val createLocker = new java.util.function.Function[String, Object] { override def apply(t: String): AnyRef = new Object() } @JsonIgnore def getRecordCount: Int = SingletonMemorySink.getBuffer(this.sinkId).size @JsonIgnore def getValues: List[T] = { SingletonMemorySink.getBuffer[T](this.sinkId).map(_.value).toList } @JsonIgnore def getRecords: List[MemorySinkRecord[T]] = { SingletonMemorySink.getBuffer[T](this.sinkId).toList } def waitForItems(itemCount: Int, timeout: Duration = null): Unit = { val endTime = if (timeout == null) Instant.MAX else Instant.now().plus(timeout) while (SingletonMemorySink.getBuffer(this.sinkId).size < itemCount) { if (Instant.now().isAfter(endTime)) { throw new TimeoutException() } Thread.sleep(1) } } override def equals(obj: Any): Boolean = { obj match { case o: SingletonMemorySink[_] => this.sinkId.equals(o.sinkId) case _ => false } } } class MemorySinkRecord[T](val seqNum: String, val createdTime: Instant, val value: T) extends Serializable
Example 2
Source File: KustoClientCache.scala From azure-kusto-spark with Apache License 2.0 | 5 votes |
package com.microsoft.kusto.spark.utils import java.util.concurrent.ConcurrentHashMap import java.util.function import com.microsoft.azure.kusto.data.ConnectionStringBuilder import com.microsoft.kusto.spark.authentication.{AadApplicationAuthentication, KeyVaultAuthentication, KustoAccessTokenAuthentication, KustoAuthentication} import com.microsoft.kusto.spark.utils.{KustoConstants => KCONST} object KustoClientCache { var clientCache = new ConcurrentHashMap[AliasAndAuth, KustoClient] def getClient(clusterAlias: String, authentication: KustoAuthentication): KustoClient = { val aliasAndAuth = AliasAndAuth(clusterAlias, authentication) clientCache.computeIfAbsent(aliasAndAuth, adderSupplier) } val adderSupplier: function.Function[AliasAndAuth, KustoClient] = new java.util.function.Function[AliasAndAuth, KustoClient]() { override def apply(aa: AliasAndAuth): KustoClient = createClient(aa) } private def createClient(aliasAndAuth: AliasAndAuth): KustoClient = { val (engineKcsb, ingestKcsb) = aliasAndAuth.authentication match { case null => throw new MatchError("Can't create ConnectionStringBuilder with null authentication params") case app: AadApplicationAuthentication => ( ConnectionStringBuilder.createWithAadApplicationCredentials(aliasAndAuth.engineUri, app.ID, app.password, app.authority), ConnectionStringBuilder.createWithAadApplicationCredentials(aliasAndAuth.ingestUri, app.ID, app.password, app.authority) ) case keyVaultParams: KeyVaultAuthentication => val app = KeyVaultUtils.getAadAppParametersFromKeyVault(keyVaultParams) ( ConnectionStringBuilder.createWithAadApplicationCredentials(aliasAndAuth.engineUri, app.ID, app.password, app.authority), ConnectionStringBuilder.createWithAadApplicationCredentials(aliasAndAuth.ingestUri, app.ID, app.password, app.authority) ) case userToken: KustoAccessTokenAuthentication => ( ConnectionStringBuilder.createWithAadAccessTokenAuthentication(aliasAndAuth.engineUri, userToken.token), ConnectionStringBuilder.createWithAadAccessTokenAuthentication(aliasAndAuth.ingestUri, userToken.token) ) } engineKcsb.setClientVersionForTracing(KCONST.clientName) ingestKcsb.setClientVersionForTracing(KCONST.clientName) new KustoClient(aliasAndAuth.clusterAlias, engineKcsb, ingestKcsb) } private[KustoClientCache] case class AliasAndAuth(clusterAlias: String, authentication: KustoAuthentication) { private[AliasAndAuth] val clusterUri = "https://%s.kusto.windows.net" val ingestClusterAlias = s"ingest-$clusterAlias" val engineUri: String = clusterUri.format(clusterAlias) val ingestUri: String = clusterUri.format(ingestClusterAlias) override def equals(that: Any): Boolean = that match { case aa: AliasAndAuth => clusterAlias == aa.clusterAlias && authentication == aa.authentication case _ => false } override def hashCode(): Int = clusterAlias.hashCode + authentication.hashCode } }
Example 3
Source File: SelectionBuilder.scala From sangria with Apache License 2.0 | 5 votes |
package sangria.validation.rules.experimental.overlappingfields import java.util import java.util.function import java.util.function.Consumer import sangria.ast import sangria.schema.{CompositeType, OutputType} def build(): util.ArrayList[SelectionContainer] = { roots.forEach { new Consumer[SelectionContainer] { override def accept(root: SelectionContainer): Unit = { root.computeEffectiveSelections() } } } roots } private def getOrInitFragment(name: String): SelectionContainer = { fragments.computeIfAbsent(name, new function.Function[String, SelectionContainer] { override def apply(key: String): SelectionContainer = new SelectionContainer }) } }
Example 4
Source File: JavaInvalidCharacterEscapingTest.scala From guardrail with MIT License | 5 votes |
package core.Dropwizard import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.ObjectMapper import invalidCharacters.client.dropwizard.invalidCharacters.InvalidCharactersClient import invalidCharacters.server.dropwizard.definitions.{InvalidCharacters, InvalidCharactersEnum} import io.netty.buffer.Unpooled import java.net.{SocketAddress, URI, URLDecoder} import java.util.concurrent.{CompletableFuture, CompletionStage} import java.util.function import org.asynchttpclient.Response.ResponseBuilder import org.asynchttpclient.netty.EagerResponseBodyPart import org.asynchttpclient.uri.Uri import org.asynchttpclient.{HttpResponseStatus, Request, Response} import org.scalatest.freespec.AnyFreeSpec import org.scalatest.matchers.must.Matchers import scala.collection.JavaConverters._ object JavaInvalidCharacterEscapingTest { private implicit class RichString(private val s: String) extends AnyVal { def dec: String = URLDecoder.decode(s, "UTF-8") } private object OkStatus extends HttpResponseStatus(Uri.create("http://localhost:1234/foo?foo^bar=query-param")) { override def getStatusCode = 200 override def getStatusText = "OK" override def getProtocolName = "HTTP" override def getProtocolMajorVersion = 1 override def getProtocolMinorVersion = 1 override def getProtocolText = "HTTP/1.1" override def getRemoteAddress: SocketAddress = ??? override def getLocalAddress: SocketAddress = ??? } } class JavaInvalidCharacterEscapingTest extends AnyFreeSpec with Matchers { import JavaInvalidCharacterEscapingTest._ "Invalid characters in Java enums should be escaped" in { InvalidCharactersEnum.NORMAL.getName mustBe "normal" InvalidCharactersEnum.BANG_MOO_COLON_COW_SEMICOLON.getName mustBe "!moo:cow;" InvalidCharactersEnum.POUND_YEAH.getName mustBe "#yeah" InvalidCharactersEnum.WEIRD_AT.getName mustBe "weird@" } "Invalid characters in Java POJO properties should be escaped" in { val invChar = new InvalidCharacters.Builder("stuff", InvalidCharactersEnum.POUND_YEAH).build() invChar.getCloseSquareBraceMoo mustBe "stuff" invChar.getSomeEnumAsteriskCaret mustBe InvalidCharactersEnum.POUND_YEAH classOf[InvalidCharacters].getDeclaredField("closeSquareBraceMoo").getAnnotation(classOf[JsonProperty]).value mustBe "]moo" classOf[InvalidCharacters].getDeclaredField("someEnumAsteriskCaret").getAnnotation(classOf[JsonProperty]).value mustBe "some-enum*^" } "Invalid characters in Java operation param names should be escaped" in { val httpClient = new function.Function[Request, CompletionStage[Response]] { override def apply(request: Request): CompletionStage[Response] = { println(request.getUri) println(request.getQueryParams.asScala.map(_.getName)) val qps = request.getQueryParams.asScala.map(p => (p.getName.dec, p.getValue.dec)) val fps = request.getFormParams.asScala.map(p => (p.getName.dec, p.getValue.dec)) qps.find(_._1 == "foo^bar").map(_._2) mustBe Some("firstarg") fps.find(_._1 == "a*b").map(_._2) mustBe Some("secondarg") fps.find(_._1 == "bc?").map(_._2) mustBe Some("thirdarg") fps.find(_._1 == "d/c").map(_._2) mustBe Some("fourtharg") val response = new ResponseBuilder() response.accumulate(OkStatus) response.accumulate(new EagerResponseBodyPart( Unpooled.copiedBuffer(new ObjectMapper().writeValueAsBytes(new InvalidCharacters.Builder("foo", InvalidCharactersEnum.WEIRD_AT).build())), true )) CompletableFuture.completedFuture(response.build()) } } val client = new InvalidCharactersClient.Builder(new URI("http://localhost:1234")).withHttpClient(httpClient).build() val response = client.getFoo("firstarg", "secondarg", "thirdarg", "fourtharg").call().toCompletableFuture.get() response.fold( { invChar => invChar.getCloseSquareBraceMoo mustBe "foo" invChar.getSomeEnumAsteriskCaret mustBe invalidCharacters.client.dropwizard.definitions.InvalidCharactersEnum.WEIRD_AT } ) } }
Example 5
Source File: Neo4jUtils.scala From neo4j-spark-connector with Apache License 2.0 | 5 votes |
package org.neo4j.spark.utils import java.sql.Timestamp import java.time._ import java.util.concurrent.Callable import java.util.function import io.github.resilience4j.retry.{Retry, RetryConfig} import org.apache.spark.sql.catalyst.util.DateTimeUtils import org.neo4j.driver.exceptions.{ServiceUnavailableException, SessionExpiredException, TransientException} import org.neo4j.driver.{Driver, Result, Session, Transaction} import org.neo4j.spark.Neo4jConfig import org.slf4j.LoggerFactory class Neo4jUtils object Neo4jUtils { private val logger = LoggerFactory.getLogger(classOf[Neo4jUtils]) def close(driver: Driver, session: Session): Unit = { try { if (session != null && session.isOpen) { closeSafety(session) } } finally { if (driver != null) { closeSafety(driver) } } } private def closeSafety(closable: AutoCloseable): Unit = { try { closable.close() } catch { case e: Throwable => { logger.error("Exception while trying to close an AutoCloseable, because of the following exception", e) } } } private val retryConfig = RetryConfig.custom.retryExceptions( classOf[SessionExpiredException], classOf[ServiceUnavailableException] // retry on the same exceptions the driver does [1] ) .retryOnException(new function.Predicate[Throwable] { override def test(exception: Throwable): Boolean = exception match { case t: TransientException => { val code = t.code() !("Neo.TransientError.Transaction.Terminated" == code) && !("Neo.TransientError.Transaction.LockClientStopped" == code) } case _ => false } }) .maxAttempts(3) .build def executeTxWithRetries[T](neo4jConfig: Neo4jConfig, query: String, params: java.util.Map[String, AnyRef], write: Boolean): (Driver, Session, Transaction, Result) = { val driver: Driver = neo4jConfig.driver() val session: Session = driver.session(neo4jConfig.sessionConfig(write)) Retry.decorateCallable( Retry.of("neo4jTransactionRetryPool", retryConfig), new Callable[(Driver, Session, Transaction, Result)] { override def call(): (Driver, Session, Transaction, Result) = { val transaction = session.beginTransaction() val result = transaction.run(query, params) (driver, session, transaction, result) } } ) .call() } def convert(value: AnyRef): AnyRef = value match { case m: ZonedDateTime => new Timestamp(DateTimeUtils.fromUTCTime(m.toInstant.toEpochMilli, m.getZone.getId)) case m: LocalDateTime => new Timestamp(DateTimeUtils.fromUTCTime(m.toInstant(ZoneOffset.UTC).toEpochMilli,"UTC")) case m: LocalDate => java.sql.Date.valueOf(m) case m: OffsetTime => new Timestamp(m.atDate(LocalDate.ofEpochDay(0)).toInstant.toEpochMilli) case _ => value } }
Example 6
Source File: Scalafmtter.scala From neo-sbt-scalafmt with Apache License 2.0 | 5 votes |
package com.lucidchart.scalafmt.impl import com.lucidchart.scalafmt.api import com.lucidchart.scalafmt.api.Dialect import java.nio.file.Path import java.util.function import org.scalafmt import org.scalafmt.config.ScalafmtConfig import scala.meta.dialects class Scalafmtter(config: ScalafmtConfig) extends api.Scalafmtter { self => def formatter(dialect: Dialect) = new function.Function[String, String] { private[this] val config = dialect match { case Dialect.SBT => ScalafmtConfigUtil.setDialect(self.config, dialects.Sbt0137) case Dialect.SCALA => self.config } def apply(code: String) = scalafmt.Scalafmt.format(code, config).get } def includeFile(file: Path) = config.project.matcher.matches(file.toString) // Otherwise, this cache hangs on to a lot override protected def finalize() = try ScalametaUtil.clearCache() finally super.finalize() }