com.google.common.collect.MapMaker Scala Examples
The following examples show how to use com.google.common.collect.MapMaker.
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: OuterScopes.scala From drizzle-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.encoders import java.util.concurrent.ConcurrentMap import com.google.common.collect.MapMaker import org.apache.spark.util.Utils object OuterScopes { @transient lazy val outerScopes: ConcurrentMap[String, AnyRef] = new MapMaker().weakValues().makeMap() def getOuterScope(innerCls: Class[_]): () => AnyRef = { assert(innerCls.isMemberClass) val outerClassName = innerCls.getDeclaringClass.getName val outer = outerScopes.get(outerClassName) if (outer == null) { outerClassName match { // If the outer class is generated by REPL, users don't need to register it as it has // only one instance and there is a way to retrieve it: get the `$read` object, call the // `INSTANCE()` method to get the single instance of class `$read`. Then call `$iw()` // method multiply times to get the single instance of the inner most `$iw` class. case REPLClass(baseClassName) => () => { val objClass = Utils.classForName(baseClassName + "$") val objInstance = objClass.getField("MODULE$").get(null) val baseInstance = objClass.getMethod("INSTANCE").invoke(objInstance) val baseClass = Utils.classForName(baseClassName) var getter = iwGetter(baseClass) var obj = baseInstance while (getter != null) { obj = getter.invoke(obj) getter = iwGetter(getter.getReturnType) } if (obj == null) { throw new RuntimeException(s"Failed to get outer pointer for ${innerCls.getName}") } outerScopes.putIfAbsent(outerClassName, obj) obj } case _ => null } } else { () => outer } } private def iwGetter(cls: Class[_]) = { try { cls.getMethod("$iw") } catch { case _: NoSuchMethodException => null } } // The format of REPL generated wrapper class's name, e.g. `$line12.$read$$iw$$iw` private[this] val REPLClass = """^(\$line(?:\d+)\.\$read)(?:\$\$iw)+$""".r }
Example 2
Source File: OuterScopes.scala From XSQL with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.encoders import java.util.concurrent.ConcurrentMap import com.google.common.collect.MapMaker import org.apache.spark.util.Utils object OuterScopes { @transient lazy val outerScopes: ConcurrentMap[String, AnyRef] = new MapMaker().weakValues().makeMap() def getOuterScope(innerCls: Class[_]): () => AnyRef = { assert(innerCls.isMemberClass) val outerClassName = innerCls.getDeclaringClass.getName val outer = outerScopes.get(outerClassName) if (outer == null) { outerClassName match { // If the outer class is generated by REPL, users don't need to register it as it has // only one instance and there is a way to retrieve it: get the `$read` object, call the // `INSTANCE()` method to get the single instance of class `$read`. Then call `$iw()` // method multiply times to get the single instance of the inner most `$iw` class. case REPLClass(baseClassName) => () => { val objClass = Utils.classForName(baseClassName + "$") val objInstance = objClass.getField("MODULE$").get(null) val baseInstance = objClass.getMethod("INSTANCE").invoke(objInstance) val baseClass = Utils.classForName(baseClassName) var getter = iwGetter(baseClass) var obj = baseInstance while (getter != null) { obj = getter.invoke(obj) getter = iwGetter(getter.getReturnType) } if (obj == null) { throw new RuntimeException(s"Failed to get outer pointer for ${innerCls.getName}") } outerScopes.putIfAbsent(outerClassName, obj) obj } case _ => null } } else { () => outer } } private def iwGetter(cls: Class[_]) = { try { cls.getMethod("$iw") } catch { case _: NoSuchMethodException => null } } // The format of REPL generated wrapper class's name, e.g. `$line12.$read$$iw$$iw` private[this] val REPLClass = """^(\$line(?:\d+)\.\$read)(?:\$\$iw)+$""".r }
Example 3
Source File: OuterScopes.scala From sparkoscope with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.encoders import java.util.concurrent.ConcurrentMap import com.google.common.collect.MapMaker import org.apache.spark.util.Utils object OuterScopes { @transient lazy val outerScopes: ConcurrentMap[String, AnyRef] = new MapMaker().weakValues().makeMap() def getOuterScope(innerCls: Class[_]): () => AnyRef = { assert(innerCls.isMemberClass) val outerClassName = innerCls.getDeclaringClass.getName val outer = outerScopes.get(outerClassName) if (outer == null) { outerClassName match { // If the outer class is generated by REPL, users don't need to register it as it has // only one instance and there is a way to retrieve it: get the `$read` object, call the // `INSTANCE()` method to get the single instance of class `$read`. Then call `$iw()` // method multiply times to get the single instance of the inner most `$iw` class. case REPLClass(baseClassName) => () => { val objClass = Utils.classForName(baseClassName + "$") val objInstance = objClass.getField("MODULE$").get(null) val baseInstance = objClass.getMethod("INSTANCE").invoke(objInstance) val baseClass = Utils.classForName(baseClassName) var getter = iwGetter(baseClass) var obj = baseInstance while (getter != null) { obj = getter.invoke(obj) getter = iwGetter(getter.getReturnType) } if (obj == null) { throw new RuntimeException(s"Failed to get outer pointer for ${innerCls.getName}") } outerScopes.putIfAbsent(outerClassName, obj) obj } case _ => null } } else { () => outer } } private def iwGetter(cls: Class[_]) = { try { cls.getMethod("$iw") } catch { case _: NoSuchMethodException => null } } // The format of REPL generated wrapper class's name, e.g. `$line12.$read$$iw$$iw` private[this] val REPLClass = """^(\$line(?:\d+)\.\$read)(?:\$\$iw)+$""".r }
Example 4
Source File: ObservableStream.scala From fotm-info with MIT License | 5 votes |
package info.fotm.util import com.google.common.collect.MapMaker import scala.collection.concurrent import scala.collection.JavaConverters._ trait Subscription { def unsubscribe(): Unit } trait ObservableReadStream[+T] { def foreach(observer: T => Unit): Subscription def filter(p: T => Boolean): ObservableReadStream[T] def map[U](f: T => U): ObservableReadStream[U] def flatMap[U](f: T => ObservableStream[U]): ObservableReadStream[U] } trait ObservableWriteStream[-T] { def publish(value: T): Unit } trait ObservableStream[T] extends ObservableReadStream[T] with ObservableWriteStream[T] { self => type Observer = T => Unit // private interface private val subs: concurrent.Map[Subscription, Observer] = new concurrent.TrieMap[Subscription, Observer]() private val weaksubs: concurrent.Map[Subscription, Observer] = new MapMaker().concurrencyLevel(4).weakKeys.makeMap[Subscription, Observer].asScala private def addsub(pool: concurrent.Map[Subscription, Observer], observer: Observer): Subscription = { val sub = new Subscription { def unsubscribe(): Unit = pool -= this } pool.put(sub, observer) sub } private def weaksub(observer: Observer): Subscription = addsub(weaksubs, observer) // implementers interface def publish(value: T) = { for { (_, o) <- subs } o(value) for { (_, o) <- weaksubs } o(value) } // public interface def foreach(observer: Observer) = addsub(subs, observer) def filter(p: T => Boolean) = new ObservableStream[T] { val sub = self.weaksub(t => if (p(t)) publish(t)) }.asInstanceOf[ObservableReadStream[T]] // TODO: make map expose ObservableReadStream def map[U](f: T => U) = new ObservableStream[U] { val sub = self.weaksub(f andThen publish) } def flatMap[U](f: T => ObservableStream[U]) = new ObservableStream[U] { val refs = scala.collection.mutable.Set.empty[Subscription] val sub = self.map(f).weaksub { refs += _.weaksub(publish) } }.asInstanceOf[ObservableReadStream[U]] }
Example 5
Source File: OuterScopes.scala From multi-tenancy-spark with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.encoders import java.util.concurrent.ConcurrentMap import com.google.common.collect.MapMaker import org.apache.spark.util.Utils object OuterScopes { @transient lazy val outerScopes: ConcurrentMap[String, AnyRef] = new MapMaker().weakValues().makeMap() def getOuterScope(innerCls: Class[_]): () => AnyRef = { assert(innerCls.isMemberClass) val outerClassName = innerCls.getDeclaringClass.getName val outer = outerScopes.get(outerClassName) if (outer == null) { outerClassName match { // If the outer class is generated by REPL, users don't need to register it as it has // only one instance and there is a way to retrieve it: get the `$read` object, call the // `INSTANCE()` method to get the single instance of class `$read`. Then call `$iw()` // method multiply times to get the single instance of the inner most `$iw` class. case REPLClass(baseClassName) => () => { val objClass = Utils.classForName(baseClassName + "$") val objInstance = objClass.getField("MODULE$").get(null) val baseInstance = objClass.getMethod("INSTANCE").invoke(objInstance) val baseClass = Utils.classForName(baseClassName) var getter = iwGetter(baseClass) var obj = baseInstance while (getter != null) { obj = getter.invoke(obj) getter = iwGetter(getter.getReturnType) } if (obj == null) { throw new RuntimeException(s"Failed to get outer pointer for ${innerCls.getName}") } outerScopes.putIfAbsent(outerClassName, obj) obj } case _ => null } } else { () => outer } } private def iwGetter(cls: Class[_]) = { try { cls.getMethod("$iw") } catch { case _: NoSuchMethodException => null } } // The format of REPL generated wrapper class's name, e.g. `$line12.$read$$iw$$iw` private[this] val REPLClass = """^(\$line(?:\d+)\.\$read)(?:\$\$iw)+$""".r }
Example 6
Source File: OuterScopes.scala From Spark-2.3.1 with Apache License 2.0 | 5 votes |
package org.apache.spark.sql.catalyst.encoders import java.util.concurrent.ConcurrentMap import com.google.common.collect.MapMaker import org.apache.spark.util.Utils object OuterScopes { @transient lazy val outerScopes: ConcurrentMap[String, AnyRef] = new MapMaker().weakValues().makeMap() def getOuterScope(innerCls: Class[_]): () => AnyRef = { assert(innerCls.isMemberClass) val outerClassName = innerCls.getDeclaringClass.getName val outer = outerScopes.get(outerClassName) if (outer == null) { outerClassName match { // If the outer class is generated by REPL, users don't need to register it as it has // only one instance and there is a way to retrieve it: get the `$read` object, call the // `INSTANCE()` method to get the single instance of class `$read`. Then call `$iw()` // method multiply times to get the single instance of the inner most `$iw` class. case REPLClass(baseClassName) => () => { val objClass = Utils.classForName(baseClassName + "$") val objInstance = objClass.getField("MODULE$").get(null) val baseInstance = objClass.getMethod("INSTANCE").invoke(objInstance) val baseClass = Utils.classForName(baseClassName) var getter = iwGetter(baseClass) var obj = baseInstance while (getter != null) { obj = getter.invoke(obj) getter = iwGetter(getter.getReturnType) } if (obj == null) { throw new RuntimeException(s"Failed to get outer pointer for ${innerCls.getName}") } outerScopes.putIfAbsent(outerClassName, obj) obj } case _ => null } } else { () => outer } } private def iwGetter(cls: Class[_]) = { try { cls.getMethod("$iw") } catch { case _: NoSuchMethodException => null } } // The format of REPL generated wrapper class's name, e.g. `$line12.$read$$iw$$iw` private[this] val REPLClass = """^(\$line(?:\d+)\.\$read)(?:\$\$iw)+$""".r }