Skip to content

Commit

Permalink
Accommodate collections API changes in 2.12
Browse files Browse the repository at this point in the history
  • Loading branch information
mrerrormessage committed Nov 18, 2016
1 parent 14c6e6a commit 760f27d
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 32 deletions.
4 changes: 2 additions & 2 deletions netlogo-core/src/main/shape/VectorShape.scala
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ class VectorShape extends Observable with BaseVectorShape with Cloneable with ja
elementList.foreach(_.filled = false)

def getElements: java.util.List[Element] = {
import scala.collection.JavaConversions._
elementList.toList
import scala.collection.JavaConverters._
elementList.toList.asJava
}

def setRotatable(rotatable: Boolean) =
Expand Down
9 changes: 5 additions & 4 deletions netlogo-gui/src/main/app/App.scala
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ object App{
pico.addScalaObject("org.nlogo.sdm.gui.SDMGuiAutoConvertable")

class ModelLoaderComponent extends AbstractAdapter[ModelLoader](classOf[ModelLoader], classOf[ConfigurableModelLoader]) {
import scala.collection.JavaConversions._
import scala.collection.JavaConverters._

def getDescriptor(): String = "ModelLoaderComponent"
def verify(x$1: org.picocontainer.PicoContainer): Unit = {}
Expand All @@ -105,7 +105,7 @@ object App{
val loader =
fileformat.standardLoader(compilerServices)
val additionalComponents =
container.getComponents(classOf[ComponentSerialization[Array[String], NLogoFormat]])
container.getComponents(classOf[ComponentSerialization[Array[String], NLogoFormat]]).asScala
if (additionalComponents.nonEmpty)
additionalComponents.foldLeft(loader) {
case (l, serialization) =>
Expand All @@ -119,15 +119,16 @@ object App{
pico.addAdapter(new ModelLoaderComponent())

class ModelConverterComponent extends AbstractAdapter[ModelConversion](classOf[ModelConversion], classOf[ModelConverter]) {
import scala.collection.JavaConversions._
import scala.collection.JavaConverters._

def getDescriptor(): String = "ModelConverterComponent"
def verify(x$1: org.picocontainer.PicoContainer): Unit = {}

def getComponentInstance(container: org.picocontainer.PicoContainer, into: java.lang.reflect.Type) = {
val workspace = container.getComponent(classOf[org.nlogo.api.Workspace])

val allAutoConvertables = fileformat.defaultAutoConvertables ++ container.getComponents(classOf[AutoConvertable])
val allAutoConvertables =
fileformat.defaultAutoConvertables ++ container.getComponents(classOf[AutoConvertable]).asScala

fileformat.converter(workspace.getExtensionManager, workspace.getCompilationEnvironment, workspace, allAutoConvertables)(container.getComponent(classOf[Dialect]))
}
Expand Down
4 changes: 3 additions & 1 deletion netlogo-gui/src/main/headless/ModelLoaderComponent.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import org.nlogo.nvm.{ DefaultCompilerServices, CompilerInterface }
import org.picocontainer.PicoContainer
import org.picocontainer.adapters.AbstractAdapter

import scala.collection.JavaConverters._

class ModelLoaderComponent extends AbstractAdapter[ModelLoader](classOf[ModelLoader], classOf[ConfigurableModelLoader]) {
import org.nlogo.fileformat, fileformat.NLogoFormat
import scala.collection.JavaConversions._
Expand All @@ -24,7 +26,7 @@ class ModelLoaderComponent extends AbstractAdapter[ModelLoader](classOf[ModelLoa
val compilerServices = new DefaultCompilerServices(compiler)
val loader = fileformat.standardLoader(compilerServices)
val additionalComponents =
container.getComponents(classOf[ComponentSerialization[Array[String], NLogoFormat]])
container.getComponents(classOf[ComponentSerialization[Array[String], NLogoFormat]]).asScala
if (additionalComponents.nonEmpty)
additionalComponents.foldLeft(loader) {
case (l, serialization) =>
Expand Down
4 changes: 3 additions & 1 deletion netlogo-gui/src/main/lab/Worker.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import org.nlogo.nvm.{LabInterface, Workspace}
import org.nlogo.api.MersenneTwisterFast
import LabInterface.ProgressListener

import scala.collection.JavaConverters._

class Worker(val protocol: LabProtocol)
extends LabInterface.Worker
{
Expand Down Expand Up @@ -38,7 +40,7 @@ class Worker(val protocol: LabProtocol)
import collection.JavaConverters._
// The explicit use of JavaConversions here with a type parameter, instead of just plain
// "asJava", is required to compile against Java 5 - ST 8/17/11
executor.invokeAll(collection.JavaConversions.asJavaCollection[Callable[Unit]](runners)).asScala
executor.invokeAll(runners.asJava).asScala
}
executor.shutdown()
executor.awaitTermination(java.lang.Integer.MAX_VALUE, TimeUnit.SECONDS)
Expand Down
6 changes: 3 additions & 3 deletions netlogo-gui/src/main/workspace/ExtensionManager.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import java.util.{ List => JList }

import org.nlogo.nvm.FileManager

import scala.collection.JavaConversions._
import scala.collection.JavaConverters._

/**
* Some simple notes on loading and unloading extensions:
Expand Down Expand Up @@ -117,7 +117,7 @@ class ExtensionManager(val workspace: ExtendableWorkspace, loader: ExtensionLoad
def anyExtensionsLoaded: Boolean = jars.nonEmpty

def loadedExtensions: JIterable[ClassManager] =
asJavaIterable(jars.values.map(_.classManager))
jars.values.map(_.classManager).asJava

private var obj: AnyRef = null

Expand Down Expand Up @@ -247,7 +247,7 @@ class ExtensionManager(val workspace: ExtendableWorkspace, loader: ExtensionLoad
def dumpExtensionPrimitives: String = tabulate(
Seq("EXTENSION", "PRIMITIVE", "TYPE"),
{ jarContainer =>
jarContainer.primManager.getPrimitiveNames.map { n =>
jarContainer.primManager.getPrimitiveNames.asScala.map { n =>
val p = jarContainer.primManager.getPrimitive(n)
Seq(jarContainer.extensionName, n, if (p.isInstanceOf[Reporter]) "Reporter" else "Command")
}.toSeq
Expand Down
4 changes: 2 additions & 2 deletions netlogo-gui/src/test/fileformat/NLogoFormatTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import org.nlogo.api.{ ComponentSerialization, ConfigurableModelLoader, ModelLoa
import org.nlogo.core.{ DummyCompilationEnvironment, DummyExtensionManager, Femto, LiteralParser, Model, Shape, Widget },
Shape.{ LinkShape, VectorShape }

import scala.collection.JavaConversions._
import scala.collection.JavaConverters._
import scala.util.Try

abstract class NLogoFormatTest[A] extends ModelSectionTest[Array[String], NLogoFormat, A] {
Expand Down Expand Up @@ -52,7 +52,7 @@ class NLogoFormatIOTest extends FunSuite {
val result = format.writeSections(sections, pathToWrite.toUri)
assert(result.isSuccess)
assert(Paths.get(result.get).toAbsolutePath == pathToWrite.toAbsolutePath)
assert(Files.readAllLines(Paths.get(result.get)).mkString("\n") == Files.readAllLines(antsBenchmarkPath).mkString("\n"))
assert(Files.readAllLines(Paths.get(result.get)).asScala.mkString("\n") == Files.readAllLines(antsBenchmarkPath).asScala.mkString("\n"))
}

test("Invalid NetLogo file gives an error about section count") {
Expand Down
6 changes: 3 additions & 3 deletions netlogo-gui/src/test/headless/TestImportExport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import org.scalatest.{ FunSuite, OneInstancePerTest, BeforeAndAfterEach }
import org.nlogo.api.{ FileIO, Perspective, Version }
import org.nlogo.workspace.Checksummer
import org.nlogo.util.SlowTest
import scala.collection.JavaConversions._
import scala.collection.JavaConverters._
class TestImportExport extends FunSuite with AbstractTestLanguage
with BeforeAndAfterEach with OneInstancePerTest with SlowTest {

Expand Down Expand Up @@ -261,13 +261,13 @@ with BeforeAndAfterEach with OneInstancePerTest with SlowTest {
testCommand("ca")
testCommand("import-world \"" + filename + "\"")
testReporter("[who] of subject", "1")
assertResult(workspace.world.observer().perspective())(Perspective.Follow(workspace.world.turtles.agents.iterator.toSeq(1), 5))
assertResult(workspace.world.observer().perspective())(Perspective.Follow(workspace.world.turtles.agents.asScala.iterator.toSeq(1), 5))
testCommand("ride turtle 1")
testCommand("export-world \"" + filename + "\"")
testCommand("ca")
testCommand("import-world \"" + filename + "\"")
testReporter("[who] of subject", "1")
assertResult(workspace.world.observer().perspective())(Perspective.Ride(workspace.world.turtles.agents.iterator.toSeq(1)))
assertResult(workspace.world.observer().perspective())(Perspective.Ride(workspace.world.turtles.agents.asScala.iterator.toSeq(1)))
}

if(!Version.is3D)
Expand Down
18 changes: 9 additions & 9 deletions netlogo-gui/src/test/workspace/ExtensionManagerTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import ExtensionManager.ExtensionLoader

import org.scalatest.{ BeforeAndAfter, FunSuite }

import scala.collection.JavaConversions._
import scala.collection.JavaConverters._

class ExtensionManagerTests extends FunSuite with BeforeAndAfter {
before {
Expand Down Expand Up @@ -56,13 +56,13 @@ class ExtensionManagerTests extends FunSuite with BeforeAndAfter {
}

test("loadedExtensions returns empty list when no extensions loaded") {
assert(emptyManager.loadedExtensions.isEmpty)
assert(emptyManager.loadedExtensions.asScala.isEmpty)
}

test("loadedExtensions returns a list of extensions when extensions loaded") {
new WithLoadedArrayExtension {
assert(loadedManager.loadedExtensions.nonEmpty)
assert(loadedManager.loadedExtensions.head.getClass.getCanonicalName == "org.nlogo.extensions.array.ArrayExtension")
assert(loadedManager.loadedExtensions.asScala.nonEmpty)
assert(loadedManager.loadedExtensions.asScala.head.getClass.getCanonicalName == "org.nlogo.extensions.array.ArrayExtension")
}
}

Expand Down Expand Up @@ -168,7 +168,7 @@ class ExtensionManagerTests extends FunSuite with BeforeAndAfter {
new WithLoadedArrayExtension {
loadedManager.reset()
assert(! loadedManager.anyExtensionsLoaded)
assert(loadedManager.loadedExtensions.isEmpty)
assert(loadedManager.loadedExtensions.asScala.isEmpty)
}
}

Expand All @@ -180,7 +180,7 @@ class ExtensionManagerTests extends FunSuite with BeforeAndAfter {
new WithLoadedArrayExtension {
loadedManager.startFullCompilation()
loadedManager.finishFullCompilation()
assert(loadedManager.loadedExtensions.isEmpty)
assert(loadedManager.loadedExtensions.asScala.isEmpty)
}
}

Expand All @@ -189,19 +189,19 @@ class ExtensionManagerTests extends FunSuite with BeforeAndAfter {
loadedManager.startFullCompilation()
loadedManager.importExtension("array", errorSource)
loadedManager.finishFullCompilation()
assert(loadedManager.loadedExtensions.toSeq.length == 1)
assert(loadedManager.loadedExtensions.asScala.toSeq.length == 1)
}
}

test("importExtensionData takes an extension name, a bunch of data, and an importHandler, and imports the world for an extension") {
new WithLoadedArrayExtension {
loadedManager.importExtensionData("array", List(Array("{{array: 0: 0 0 0 0 0}}")), null)
loadedManager.importExtensionData("array", List(Array("{{array: 0: 0 0 0 0 0}}")).asJava, null)
}
}

test("importExtensionData errors with ExtensionException if the named extension can't be loaded") {
intercept[ExtensionException] {
emptyManager.importExtensionData("notfound", List[Array[String]](), null)
emptyManager.importExtensionData("notfound", List[Array[String]]().asJava, null)
}
}

Expand Down
8 changes: 4 additions & 4 deletions parser-core/src/main/parse/CarefullyVisitor.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ import org.nlogo.core.prim._
*/

class CarefullyVisitor extends AstTransformer {
private val stack = new collection.mutable.Stack[_carefully]
private var stack = List.empty[_carefully]
override def visitStatement(stmt: Statement): Statement = {
stmt.command match {
case c:_carefully =>
// carefully takes two arguments, both command blocks.
// error-message is allowed only within the second block.
val arg1 = visitExpression(stmt.args(0))
stack.push(c)
stack = c::stack
val arg2 = visitExpression(stmt.args(1))
stack.pop()
stack = stack.tail
stmt.copy(args = Seq(arg1, arg2))
case _ => super.visitStatement(stmt)
}
Expand All @@ -31,7 +31,7 @@ class CarefullyVisitor extends AstTransformer {
case em: _errormessage =>
if(stack.isEmpty)
exception(I18N.errors.getN("compiler.CarefullyVisitor.badNesting", em.token.text), app)
app.copy(reporter = em.copy(let = Option(stack.top.let)))
app.copy(reporter = em.copy(let = Option(stack.head.let)))
case _ => super.visitReporterApp(app)
}
}
Expand Down
6 changes: 3 additions & 3 deletions parser-jvm/src/main/core/I18N.scala
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,9 @@ object I18N {
}
// internal use only, get all the keys for the given locale.
// use getKeys not keySet since keySet is new in Java 6 - ST 2/11/11
def keys(locale: Locale): Iterator[String] = {
import collection.JavaConversions._
getBundle(locale).getKeys
def keys(locale: Locale): Set[String] = {
import collection.JavaConverters._
getBundle(locale).keySet.asScala.toSet
}
// internal use only, used to set the locale for error messages in the GUI only.
def setLanguage(locale: Locale) =
Expand Down

0 comments on commit 760f27d

Please sign in to comment.