From 814cfa286ce91f6bbc4c78a9573e3fa62740d327 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Fri, 24 May 2019 08:11:50 +0200 Subject: [PATCH] Scala 2.13.0 rc2 (#26967) --- .travis.yml | 2 +- .../testkit/typed/CapturedLogEvent.scala | 2 +- .../typed/internal/BehaviorTestKitImpl.scala | 2 +- .../typed/internal/TestProbeImpl.scala | 2 +- .../testkit/typed/javadsl/TestInbox.scala | 2 +- .../test/java/akka/japi/ThrowablesTest.java | 3 - .../scala/akka/actor/ActorSelectionSpec.scala | 4 +- .../scala/akka/actor/ActorWithStashSpec.scala | 3 +- .../akka/actor/CoordinatedShutdownSpec.scala | 3 +- .../test/scala/akka/actor/ExtensionSpec.scala | 4 +- .../test/scala/akka/actor/FSMActorSpec.scala | 2 +- .../scala/akka/actor/FSMTransitionSpec.scala | 2 +- .../test/scala/akka/actor/JavaAPISpec.scala | 4 +- .../akka/actor/dispatch/ActorModelSpec.scala | 4 +- .../akka/actor/dispatch/DispatchersSpec.scala | 4 +- .../dispatch/PriorityDispatcherSpec.scala | 18 +-- .../StablePriorityDispatcherSpec.scala | 13 +- .../scala/akka/event/LoggingReceiveSpec.scala | 2 +- .../akka/io/TcpIntegrationSpecSupport.scala | 10 +- .../akka/io/dns/DockerBindDnsService.scala | 2 +- .../dns/internal/ResolvConfParserSpec.scala | 2 +- .../test/scala/akka/japi/JavaAPITest.scala | 4 +- .../BackoffOnRestartSupervisorSpec.scala | 2 +- .../akka/util/BoundedBlockingQueueSpec.scala | 2 +- .../test/scala/akka/util/ByteStringSpec.scala | 2 +- .../scala/akka/util/JavaDurationSpec.scala | 4 +- .../typed/eventstream/EventStreamSpec.scala | 3 +- .../actor/typed/internal/ExtensionsImpl.scala | 2 +- .../internal/adapter/LoggerAdapterImpl.scala | 2 +- .../receptionist/ReceptionistMessages.scala | 2 +- .../akka/actor/typed/javadsl/Behaviors.scala | 2 +- .../typed/receptionist/Receptionist.scala | 2 +- .../mima-filters/2.5.23.backwards.excludes | 9 ++ .../scala-2.13+/akka/util/ByteString.scala | 14 +-- .../akka/util/ccompat/package.scala | 6 + .../akka/util/ccompat/package.scala | 2 + .../akka/actor/CoordinatedShutdown.scala | 4 +- .../src/main/scala/akka/actor/Deployer.scala | 2 +- .../src/main/scala/akka/actor/Stash.scala | 2 + .../scala/akka/actor/dungeon/Children.scala | 1 + .../scala/akka/dispatch/Dispatchers.scala | 4 +- .../src/main/scala/akka/dispatch/Future.scala | 2 +- .../main/scala/akka/dispatch/Mailboxes.scala | 4 +- .../src/main/scala/akka/event/Logging.scala | 4 +- akka-actor/src/main/scala/akka/io/Tcp.scala | 2 +- .../main/scala/akka/io/TcpConnection.scala | 2 +- akka-actor/src/main/scala/akka/io/Udp.scala | 2 +- .../src/main/scala/akka/io/UdpConnected.scala | 2 +- .../main/scala/akka/io/dns/DnsProtocol.scala | 2 +- .../main/scala/akka/io/dns/DnsSettings.scala | 2 +- .../io/dns/internal/ResolvConfParser.scala | 2 +- .../main/scala/akka/pattern/AskSupport.scala | 27 ---- .../scala/akka/routing/ConsistentHash.scala | 2 +- .../src/main/scala/akka/routing/Router.scala | 2 +- .../scala/akka/routing/RouterConfig.scala | 2 +- .../akka/serialization/Serialization.scala | 2 +- .../serialization/SerializationSetup.scala | 2 +- .../src/main/scala/akka/util/Index.scala | 7 +- .../src/main/scala/akka/util/Unused.scala | 11 ++ .../src/main/scala/akka/BenchRunner.scala | 2 +- .../src/main/scala/akka/BenchRunner.scala | 2 +- .../metrics/ClusterMetricsCollector.scala | 3 + .../scala/akka/cluster/metrics/Metric.scala | 3 + .../metrics/protobuf/MessageSerializer.scala | 2 +- .../cluster/sharding/ClusterSharding.scala | 2 +- .../cluster/sharding/ShardCoordinator.scala | 4 +- .../akka/cluster/sharding/ShardRegion.scala | 10 +- .../ClusterShardingMessageSerializer.scala | 2 +- .../akka/cluster/client/ClusterClient.scala | 6 +- .../ClusterClientMessageSerializer.scala | 2 +- .../pubsub/DistributedPubSubMediator.scala | 14 +-- .../DistributedPubSubMessageSerializer.scala | 2 +- .../test/scala/akka/cluster/TestLease.scala | 2 +- .../src/main/scala/akka/cluster/Cluster.scala | 3 + .../scala/akka/cluster/ClusterEvent.scala | 9 +- .../scala/akka/cluster/ClusterSettings.scala | 6 +- .../cluster/JoinConfigCompatChecker.scala | 2 +- .../src/main/scala/akka/cluster/Member.scala | 1 + .../protobuf/ClusterMessageSerializer.scala | 7 +- .../cluster/routing/ClusterRouterConfig.scala | 2 +- .../scala/akka/cluster/StressSpec.scala | 2 +- .../akka/cluster/ClusterConfigSpec.scala | 5 +- ...JoinConfigCompatPreDefinedChecksSpec.scala | 116 ++++++++++-------- .../ClusterMessageSerializerSpec.scala | 5 +- .../akka/discovery/ServiceDiscovery.scala | 4 +- .../aggregate/AggregateServiceDiscovery.scala | 2 +- .../config/ConfigServiceDiscovery.scala | 2 +- .../akka/cluster/ddata/DurableStore.scala | 4 +- .../main/scala/akka/cluster/ddata/GSet.scala | 2 +- .../scala/akka/cluster/ddata/LWWMap.scala | 2 +- .../main/scala/akka/cluster/ddata/ORMap.scala | 2 +- .../scala/akka/cluster/ddata/ORMultiMap.scala | 6 +- .../main/scala/akka/cluster/ddata/ORSet.scala | 2 +- .../akka/cluster/ddata/PNCounterMap.scala | 2 +- .../scala/akka/cluster/ddata/Replicator.scala | 18 +-- .../protobuf/ReplicatedDataSerializer.scala | 2 +- .../ReplicatorMessageSerializer.scala | 2 +- .../ddata/protobuf/SerializationSupport.scala | 2 +- .../akka/cluster/ddata/ORMultiMapSpec.scala | 2 +- .../LambdaPersistencePluginDocTest.java | 1 + .../docs/ddata/DistributedDataDocSpec.scala | 2 +- .../protobuf/TwoPhaseSetSerializer.scala | 2 +- .../scala/docs/io/ScalaUdpMulticastSpec.scala | 2 +- .../query/PersistenceQueryDocSpec.scala | 2 +- .../scala/docs/routing/RouterDocSpec.scala | 2 +- .../scala/docs/stream/GraphStageDocSpec.scala | 2 +- .../akka/remote/testkit/MultiNodeSpec.scala | 4 +- .../osgi/BundleDelegatingClassLoader.scala | 2 +- .../scala/akka/osgi/PojoSRTestSupport.scala | 2 +- .../persistence/typed/javadsl/Effect.scala | 2 +- .../typed/javadsl/EventSourcedBehavior.scala | 2 +- .../persistence/AtLeastOnceDelivery.scala | 4 +- .../akka/persistence/fsm/PersistentFSM.scala | 4 + .../persistence/fsm/PersistentFSMBase.scala | 1 + .../persistence/journal/EventAdapters.scala | 4 +- .../akka/persistence/journal/Tagged.scala | 2 +- .../journal/japi/AsyncRecovery.scala | 2 +- .../journal/japi/AsyncWriteJournal.scala | 4 +- .../journal/leveldb/LeveldbStore.scala | 5 +- .../serialization/MessageSerializer.scala | 4 +- .../snapshot/japi/SnapshotStore.scala | 2 +- .../akka/remote/artery/TestMessage.scala | 2 +- .../main/scala/akka/remote/RemoteDaemon.scala | 2 +- .../scala/akka/remote/RemoteSettings.scala | 2 +- .../scala/akka/remote/RemoteWatcher.scala | 2 + .../akka/remote/RemotingLifecycleEvent.scala | 1 + .../akka/remote/artery/ArterySettings.scala | 2 +- .../akka/remote/artery/RemoteInstrument.scala | 2 +- .../artery/compress/InboundCompressions.scala | 2 +- .../ArteryMessageSerializer.scala | 2 +- .../DaemonMsgCreateSerializer.scala | 2 +- .../MessageContainerSerializer.scala | 2 +- .../serialization/MiscMessageSerializer.scala | 2 +- .../serialization/ThrowableSupport.scala | 2 +- .../akka/remote/transport/AkkaPduCodec.scala | 2 +- .../FailureInjectorTransportAdapter.scala | 4 +- .../transport/netty/NettyTransport.scala | 2 +- .../test/scala/akka/remote/DaemonicSpec.scala | 2 +- .../remote/classic/RemoteInitErrorSpec.scala | 2 +- .../scala/akka/event/slf4j/Slf4jLogger.scala | 4 +- .../scala/akka/stream/scaladsl/SinkSpec.scala | 2 +- .../main/scala/akka/stream/Attributes.scala | 2 +- .../src/main/scala/akka/stream/Shape.scala | 2 +- .../impl/ActorRefBackpressureSource.scala | 6 +- .../stream/impl/fusing/StreamOfStreams.scala | 4 +- .../akka/stream/impl/io/FileSubscriber.scala | 2 +- .../scala/akka/stream/javadsl/FileIO.scala | 2 +- .../main/scala/akka/stream/javadsl/Flow.scala | 2 +- .../akka/stream/javadsl/FlowWithContext.scala | 2 +- .../scala/akka/stream/javadsl/Graph.scala | 4 +- .../akka/stream/javadsl/MergeLatest.scala | 2 +- .../main/scala/akka/stream/javadsl/Sink.scala | 6 +- .../scala/akka/stream/javadsl/Source.scala | 7 +- .../stream/javadsl/SourceWithContext.scala | 2 +- .../scala/akka/stream/javadsl/SubFlow.scala | 2 +- .../scala/akka/stream/javadsl/SubSource.scala | 2 +- .../scala/akka/stream/stage/GraphStage.scala | 6 +- .../ExplicitlyTriggeredScheduler.scala | 2 +- .../src/main/scala/akka/testkit/TestKit.scala | 2 +- .../scala/akka/testkit/javadsl/TestKit.scala | 2 +- .../test/scala/akka/testkit/AkkaSpec.scala | 2 +- .../scala/akka/testkit/AkkaSpecSpec.scala | 2 +- .../metrics/FileDescriptorMetricSet.scala | 2 +- .../akka/testkit/metrics/MetricsKit.scala | 6 +- .../akka/testkit/metrics/MetricsKitOps.scala | 2 +- .../reporter/AkkaConsoleReporter.scala | 2 +- project/AkkaDisciplinePlugin.scala | 2 +- project/Dependencies.scala | 26 ++-- 168 files changed, 396 insertions(+), 315 deletions(-) create mode 100644 akka-actor/src/main/mima-filters/2.5.23.backwards.excludes diff --git a/.travis.yml b/.travis.yml index 12726c7b35..e3a3db78c0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ sudo: false scala: - "2.12.8" - - "2.13.0-M5" + - "2.13.0-RC2" before_install: # using jabba for custom jdk management diff --git a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/CapturedLogEvent.scala b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/CapturedLogEvent.scala index c21c5a2553..10fa9396d2 100644 --- a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/CapturedLogEvent.scala +++ b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/CapturedLogEvent.scala @@ -11,7 +11,7 @@ import akka.annotation.InternalApi import akka.event.Logging.LogLevel import akka.util.OptionVal -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.compat.java8.OptionConverters._ /** diff --git a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/BehaviorTestKitImpl.scala b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/BehaviorTestKitImpl.scala index ff8547c30e..dd215a24b7 100644 --- a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/BehaviorTestKitImpl.scala +++ b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/BehaviorTestKitImpl.scala @@ -13,7 +13,7 @@ import akka.actor.testkit.typed.{ CapturedLogEvent, Effect } import akka.actor.testkit.typed.Effect._ import scala.annotation.tailrec -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import scala.reflect.ClassTag import scala.util.control.Exception.Catcher diff --git a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/TestProbeImpl.scala b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/TestProbeImpl.scala index e7600e2f7b..3f64b2a4a6 100644 --- a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/TestProbeImpl.scala +++ b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/internal/TestProbeImpl.scala @@ -12,7 +12,7 @@ import java.util.function.Supplier import java.util.{ List => JList } import scala.annotation.tailrec -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import scala.concurrent.Await import scala.concurrent.duration._ diff --git a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/javadsl/TestInbox.scala b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/javadsl/TestInbox.scala index a139adc572..174b76cb4c 100644 --- a/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/javadsl/TestInbox.scala +++ b/akka-actor-testkit-typed/src/main/scala/akka/actor/testkit/typed/javadsl/TestInbox.scala @@ -10,7 +10,7 @@ import akka.actor.testkit.typed.internal.TestInboxImpl import java.util.concurrent.ThreadLocalRandom -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable object TestInbox { diff --git a/akka-actor-tests/src/test/java/akka/japi/ThrowablesTest.java b/akka-actor-tests/src/test/java/akka/japi/ThrowablesTest.java index 2a587f6079..abe379ff79 100644 --- a/akka-actor-tests/src/test/java/akka/japi/ThrowablesTest.java +++ b/akka-actor-tests/src/test/java/akka/japi/ThrowablesTest.java @@ -14,14 +14,11 @@ public class ThrowablesTest { Assert.assertTrue(Throwables.isNonFatal(new IllegalArgumentException("isNonFatal"))); } - private static class ControlThrowableImpl extends Throwable implements ControlThrowable {} - @Test public void testIsFatal() { Assert.assertTrue(Throwables.isFatal(new StackOverflowError("fatal"))); Assert.assertTrue(Throwables.isFatal(new ThreadDeath())); Assert.assertTrue(Throwables.isFatal(new InterruptedException("fatal"))); Assert.assertTrue(Throwables.isFatal(new LinkageError("fatal"))); - Assert.assertTrue(Throwables.isFatal(new ControlThrowableImpl())); } } diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala index aae504279f..7e57680b05 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorSelectionSpec.scala @@ -95,7 +95,7 @@ class ActorSelectionSpec extends AkkaSpec with DefaultTimeout { identify(system.child("c2").child("c21")) should ===(Some(c21)) // test Java API identify(system / Seq("c2", "c21")) should ===(Some(c21)) - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ identify(system.descendant(Seq("c2", "c21").asJava)) // test Java API } @@ -244,7 +244,7 @@ class ActorSelectionSpec extends AkkaSpec with DefaultTimeout { } "return deadLetters or ActorIdentity(None), respectively, for non-existing paths" in { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ def checkOne(looker: ActorRef, query: Query, result: Option[ActorRef]): Unit = { val lookup = askNode(looker, query) diff --git a/akka-actor-tests/src/test/scala/akka/actor/ActorWithStashSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ActorWithStashSpec.scala index 412ffd042c..89029ff028 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ActorWithStashSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ActorWithStashSpec.scala @@ -15,7 +15,7 @@ import com.github.ghik.silencer.silent import scala.concurrent.duration._ import org.scalatest.BeforeAndAfterEach -import org.scalatestplus.junit.JUnitSuiteLike +import org.scalatest.junit.JUnitSuiteLike object ActorWithStashSpec { @@ -102,6 +102,7 @@ object ActorWithStashSpec { } +@silent class JavaActorWithStashSpec extends StashJavaAPI with JUnitSuiteLike @silent diff --git a/akka-actor-tests/src/test/scala/akka/actor/CoordinatedShutdownSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/CoordinatedShutdownSpec.scala index 7c3f3a341f..462384e785 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/CoordinatedShutdownSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/CoordinatedShutdownSpec.scala @@ -15,7 +15,8 @@ import akka.testkit.{ AkkaSpec, EventFilter, TestKit } import com.typesafe.config.{ Config, ConfigFactory } import akka.actor.CoordinatedShutdown.Phase import akka.actor.CoordinatedShutdown.UnknownReason -import scala.collection.JavaConverters._ + +import akka.util.ccompat.JavaConverters._ import scala.concurrent.Promise import java.util.concurrent.TimeoutException diff --git a/akka-actor-tests/src/test/scala/akka/actor/ExtensionSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/ExtensionSpec.scala index 608d08462c..582885bbee 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/ExtensionSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/ExtensionSpec.scala @@ -10,10 +10,12 @@ import akka.testkit.EventFilter import akka.testkit.TestKit._ import com.typesafe.config.ConfigFactory import org.scalatest.{ Matchers, WordSpec } -import org.scalatestplus.junit.JUnitSuiteLike +import org.scalatest.junit.JUnitSuiteLike import scala.util.control.NoStackTrace +import com.github.ghik.silencer.silent +@silent class JavaExtensionSpec extends JavaExtension with JUnitSuiteLike object TestExtension extends ExtensionId[TestExtension] with ExtensionIdProvider { diff --git a/akka-actor-tests/src/test/scala/akka/actor/FSMActorSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/FSMActorSpec.scala index 6b3c02394b..0786cee148 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/FSMActorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/FSMActorSpec.scala @@ -251,7 +251,7 @@ class FSMActorSpec extends AkkaSpec(Map("akka.actor.debug.fsm" -> true)) with Im } "log events and transitions if asked to do so" in { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val config = ConfigFactory .parseMap(Map( "akka.loglevel" -> "DEBUG", diff --git a/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala index d647aa6e3b..2f71c39912 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/FSMTransitionSpec.scala @@ -27,7 +27,7 @@ object FSMTransitionSpec { } class MyFSM(target: ActorRef) extends Actor with FSM[Int, Unit] { - startWith(0, Unit) + startWith(0, ()) when(0) { case Event("tick", _) => goto(1) } diff --git a/akka-actor-tests/src/test/scala/akka/actor/JavaAPISpec.scala b/akka-actor-tests/src/test/scala/akka/actor/JavaAPISpec.scala index 5a602767e0..c0278e2608 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/JavaAPISpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/JavaAPISpec.scala @@ -4,6 +4,8 @@ package akka.actor -import org.scalatestplus.junit.JUnitSuiteLike +import org.scalatest.junit.JUnitSuiteLike +import com.github.ghik.silencer.silent +@silent class JavaAPISpec extends JavaAPI with JUnitSuiteLike diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala index c8caad9acf..510412abb2 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/ActorModelSpec.scala @@ -409,7 +409,7 @@ abstract class ActorModelSpec(config: String) extends AkkaSpec(config) with Defa System.err.println( "Teammates left: " + team.size + " stopLatch: " + stopLatch.getCount + " inhab:" + dispatcher.inhabitants) - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ team.asScala.toList.sortBy(_.self.path).foreach { cell: ActorCell => System.err.println( " - " + cell.self.path + " " + cell.isTerminated + " " + cell.mailbox.currentStatus + " " @@ -452,7 +452,7 @@ abstract class ActorModelSpec(config: String) extends AkkaSpec(config) with Defa val f6 = a ? Reply("bar2") val c = system.scheduler.scheduleOnce(2.seconds) { - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ Thread.getAllStackTraces().asScala.foreach { case (thread, stack) => println(s"$thread:") diff --git a/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala b/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala index 97f8cdec77..8dff5dff6f 100644 --- a/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/actor/dispatch/DispatchersSpec.scala @@ -4,7 +4,6 @@ package akka.actor.dispatch -import scala.collection.JavaConverters.mapAsJavaMapConverter import scala.reflect.ClassTag import com.typesafe.config.Config import com.typesafe.config.ConfigFactory @@ -122,6 +121,8 @@ class DispatchersSpec extends AkkaSpec(DispatchersSpec.config) with ImplicitSend val defaultDispatcherConfig = settings.config.getConfig("akka.actor.default-dispatcher") lazy val allDispatchers: Map[String, MessageDispatcher] = { + import akka.util.ccompat.JavaConverters._ + validTypes .map(t => (t, from(ConfigFactory.parseMap(Map(tipe -> t, id -> t).asJava).withFallback(defaultDispatcherConfig)))) .toMap @@ -160,6 +161,7 @@ class DispatchersSpec extends AkkaSpec(DispatchersSpec.config) with ImplicitSend } "throw ConfigurationException if type does not exist" in { + import akka.util.ccompat.JavaConverters._ intercept[ConfigurationException] { from( ConfigFactory diff --git a/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala b/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala index 65c30ec24c..9e0b452b3b 100644 --- a/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/dispatch/PriorityDispatcherSpec.scala @@ -13,6 +13,9 @@ import akka.util.unused import scala.concurrent.duration._ object PriorityDispatcherSpec { + + case object Result + val config = """ unbounded-prio-dispatcher { mailbox-type = "akka.dispatch.PriorityDispatcherSpec$Unbounded" @@ -24,19 +27,20 @@ object PriorityDispatcherSpec { class Unbounded(@unused settings: ActorSystem.Settings, @unused config: Config) extends UnboundedPriorityMailbox(PriorityGenerator({ - case i: Int => i //Reverse order - case "Result" => Int.MaxValue + case i: Int => i //Reverse order + case Result => Int.MaxValue }: Any => Int)) class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config) extends BoundedPriorityMailbox(PriorityGenerator({ - case i: Int => i //Reverse order - case "Result" => Int.MaxValue + case i: Int => i //Reverse order + case Result => Int.MaxValue }: Any => Int), 1000, 10 seconds) } class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) with DefaultTimeout { + import PriorityDispatcherSpec._ "A PriorityDispatcher" must { "Order it's messages according to the specified comparator using an unbounded mailbox" in { @@ -66,11 +70,11 @@ class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) wit self ! m } - self.tell("Result", testActor) + self.tell(Result, testActor) def receive = { - case i: Int => acc += i - case "Result" => sender() ! acc.toList + case i: Int => acc += i + case Result => sender() ! acc.toList } }).withDispatcher(dispatcherKey)) diff --git a/akka-actor-tests/src/test/scala/akka/dispatch/StablePriorityDispatcherSpec.scala b/akka-actor-tests/src/test/scala/akka/dispatch/StablePriorityDispatcherSpec.scala index ddf2b6a6d5..f7a27de17e 100644 --- a/akka-actor-tests/src/test/scala/akka/dispatch/StablePriorityDispatcherSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/dispatch/StablePriorityDispatcherSpec.scala @@ -13,6 +13,8 @@ import akka.util.unused import scala.concurrent.duration._ object StablePriorityDispatcherSpec { + case object Result + val config = """ unbounded-stable-prio-dispatcher { mailbox-type = "akka.dispatch.StablePriorityDispatcherSpec$Unbounded" @@ -26,19 +28,20 @@ object StablePriorityDispatcherSpec { extends UnboundedStablePriorityMailbox(PriorityGenerator({ case i: Int if i <= 100 => i // Small integers have high priority case _: Int => 101 // Don't care for other integers - case "Result" => Int.MaxValue + case Result => Int.MaxValue }: Any => Int)) class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config) extends BoundedStablePriorityMailbox(PriorityGenerator({ case i: Int if i <= 100 => i // Small integers have high priority case _: Int => 101 // Don't care for other integers - case "Result" => Int.MaxValue + case Result => Int.MaxValue }: Any => Int), 1000, 10 seconds) } class StablePriorityDispatcherSpec extends AkkaSpec(StablePriorityDispatcherSpec.config) with DefaultTimeout { + import StablePriorityDispatcherSpec._ "A StablePriorityDispatcher" must { "Order its messages according to the specified comparator while preserving FIFO for equal priority messages, " + @@ -70,11 +73,11 @@ class StablePriorityDispatcherSpec extends AkkaSpec(StablePriorityDispatcherSpec self ! m } - self.tell("Result", testActor) + self.tell(Result, testActor) def receive = { - case i: Int => acc += i - case "Result" => sender() ! acc.toList + case i: Int => acc += i + case Result => sender() ! acc.toList } }).withDispatcher(dispatcherKey)) diff --git a/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala b/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala index ac053c108c..ef60aa34a2 100644 --- a/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/event/LoggingReceiveSpec.scala @@ -11,7 +11,7 @@ import scala.concurrent.duration._ import akka.testkit._ import org.scalatest.WordSpec import com.typesafe.config.ConfigFactory -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.actor._ import scala.annotation.tailrec diff --git a/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala b/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala index 3005886a75..83ad29731e 100644 --- a/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala +++ b/akka-actor-tests/src/test/scala/akka/io/TcpIntegrationSpecSupport.scala @@ -40,11 +40,17 @@ trait TcpIntegrationSpecSupport { _: AkkaSpec => def establishNewClientConnection(): (TestProbe, ActorRef, TestProbe, ActorRef) = { val connectCommander = TestProbe()(clientSystem) connectCommander.send(IO(Tcp)(clientSystem), Connect(endpoint, options = connectOptions)) - val Connected(`endpoint`, localAddress) = connectCommander.expectMsgType[Connected] + val localAddress = connectCommander.expectMsgType[Connected] match { + case Connected(`endpoint`, localAddress) => localAddress + case Connected(other, _) => fail(s"No match: $other") + } val clientHandler = TestProbe()(clientSystem) connectCommander.sender() ! Register(clientHandler.ref) - val Connected(`localAddress`, `endpoint`) = bindHandler.expectMsgType[Connected] + bindHandler.expectMsgType[Connected] match { + case Connected(`localAddress`, `endpoint`) => //ok + case other => fail(s"No match: ${other}") + } val serverHandler = TestProbe() bindHandler.sender() ! Register(serverHandler.ref) diff --git a/akka-actor-tests/src/test/scala/akka/io/dns/DockerBindDnsService.scala b/akka-actor-tests/src/test/scala/akka/io/dns/DockerBindDnsService.scala index 74ff325b18..0d3e413a09 100644 --- a/akka-actor-tests/src/test/scala/akka/io/dns/DockerBindDnsService.scala +++ b/akka-actor-tests/src/test/scala/akka/io/dns/DockerBindDnsService.scala @@ -4,7 +4,7 @@ package akka.io.dns -import collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.testkit.AkkaSpec import com.spotify.docker.client.DefaultDockerClient import com.spotify.docker.client.DockerClient.{ ListContainersParam, LogsParam } diff --git a/akka-actor-tests/src/test/scala/akka/io/dns/internal/ResolvConfParserSpec.scala b/akka-actor-tests/src/test/scala/akka/io/dns/internal/ResolvConfParserSpec.scala index f538fd3cf5..c64c276f48 100644 --- a/akka-actor-tests/src/test/scala/akka/io/dns/internal/ResolvConfParserSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/io/dns/internal/ResolvConfParserSpec.scala @@ -9,7 +9,7 @@ import org.scalatest.{ Matchers, WordSpec } class ResolvConfParserSpec extends WordSpec with Matchers { private def parse(str: String): ResolvConf = { - ResolvConfParser.parseLines(str.lines) + ResolvConfParser.parseLines(str.linesIterator) } "The ResolvConfParser" should { diff --git a/akka-actor-tests/src/test/scala/akka/japi/JavaAPITest.scala b/akka-actor-tests/src/test/scala/akka/japi/JavaAPITest.scala index 35585ee59b..d24c3a460f 100644 --- a/akka-actor-tests/src/test/scala/akka/japi/JavaAPITest.scala +++ b/akka-actor-tests/src/test/scala/akka/japi/JavaAPITest.scala @@ -4,6 +4,8 @@ package akka.japi -import org.scalatestplus.junit.JUnitSuiteLike +import org.scalatest.junit.JUnitSuiteLike +import com.github.ghik.silencer.silent +@silent class JavaAPITest extends JavaAPITestBase with JUnitSuiteLike diff --git a/akka-actor-tests/src/test/scala/akka/pattern/BackoffOnRestartSupervisorSpec.scala b/akka-actor-tests/src/test/scala/akka/pattern/BackoffOnRestartSupervisorSpec.scala index 1c5b3b8523..366335eaf9 100644 --- a/akka-actor-tests/src/test/scala/akka/pattern/BackoffOnRestartSupervisorSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/pattern/BackoffOnRestartSupervisorSpec.scala @@ -167,7 +167,7 @@ class BackoffOnRestartSupervisorSpec extends AkkaSpec with ImplicitSender { supervisor ! BackoffSupervisor.GetCurrentChild // new instance - val Some(child) = expectMsgType[BackoffSupervisor.CurrentChild].ref + val child = expectMsgType[BackoffSupervisor.CurrentChild].ref.get child ! "PING" expectMsg("PONG") diff --git a/akka-actor-tests/src/test/scala/akka/util/BoundedBlockingQueueSpec.scala b/akka-actor-tests/src/test/scala/akka/util/BoundedBlockingQueueSpec.scala index f6566447b3..b909e43c1c 100644 --- a/akka-actor-tests/src/test/scala/akka/util/BoundedBlockingQueueSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/util/BoundedBlockingQueueSpec.scala @@ -17,7 +17,7 @@ import org.scalatest.time.Span import org.scalatest.time.SpanSugar._ import org.scalatest.{ Matchers, WordSpec } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.mutable import scala.concurrent.{ Await, ExecutionContext, ExecutionContextExecutor, Future } import scala.util.control.Exception diff --git a/akka-actor-tests/src/test/scala/akka/util/ByteStringSpec.scala b/akka-actor-tests/src/test/scala/akka/util/ByteStringSpec.scala index 55e4e95ba6..e917ca6d00 100644 --- a/akka-actor-tests/src/test/scala/akka/util/ByteStringSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/util/ByteStringSpec.scala @@ -742,7 +742,7 @@ class ByteStringSpec extends WordSpec with Matchers with Checkers { a.asByteBuffers.forall(_.isReadOnly) } check { (a: ByteString) => - import scala.collection.JavaConverters.iterableAsScalaIterableConverter + import akka.util.ccompat.JavaConverters._ a.asByteBuffers.zip(a.getByteBuffers().asScala).forall(x => x._1 == x._2) } } diff --git a/akka-actor-tests/src/test/scala/akka/util/JavaDurationSpec.scala b/akka-actor-tests/src/test/scala/akka/util/JavaDurationSpec.scala index 4baa7eeb2b..12f91ef8e2 100644 --- a/akka-actor-tests/src/test/scala/akka/util/JavaDurationSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/util/JavaDurationSpec.scala @@ -4,6 +4,8 @@ package akka.util -import org.scalatestplus.junit.JUnitSuiteLike +import org.scalatest.junit.JUnitSuiteLike +import com.github.ghik.silencer.silent +@silent class JavaDurationSpec extends JavaDuration with JUnitSuiteLike diff --git a/akka-actor-typed-tests/src/test/scala/akka/actor/typed/eventstream/EventStreamSpec.scala b/akka-actor-typed-tests/src/test/scala/akka/actor/typed/eventstream/EventStreamSpec.scala index 21d468f600..307b0f3fee 100644 --- a/akka-actor-typed-tests/src/test/scala/akka/actor/typed/eventstream/EventStreamSpec.scala +++ b/akka-actor-typed-tests/src/test/scala/akka/actor/typed/eventstream/EventStreamSpec.scala @@ -5,6 +5,7 @@ package akka.actor.typed.eventstream import scala.concurrent.duration._ +import scala.language.postfixOps import akka.actor.testkit.typed.scaladsl.{ ScalaTestWithActorTestKit, TestProbe } import org.scalatest.WordSpecLike @@ -13,7 +14,7 @@ class EventStreamSpec extends ScalaTestWithActorTestKit with WordSpecLike { import EventStreamSpec._ - private final val ShortWait = 100 milli + private final val ShortWait = 100.millis "system event stream".can { val eventObjListener: TestProbe[EventObj.type] = testKit.createTestProbe() diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/ExtensionsImpl.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/ExtensionsImpl.scala index 08204d3773..e4a7de1a05 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/ExtensionsImpl.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/ExtensionsImpl.scala @@ -10,7 +10,7 @@ import akka.annotation.InternalApi import akka.actor.typed.{ ActorSystem, Extension, ExtensionId, Extensions } import scala.annotation.tailrec import scala.util.{ Failure, Success, Try } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.actor.typed.ExtensionSetup diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/LoggerAdapterImpl.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/LoggerAdapterImpl.scala index f1f18bfaf0..9f8588e661 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/LoggerAdapterImpl.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/adapter/LoggerAdapterImpl.scala @@ -10,7 +10,7 @@ import akka.event.Logging._ import akka.event.{ LoggingBus, LoggingFilterWithMarker, LogMarker => UntypedLM } import akka.util.OptionVal -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ /** * INTERNAL API diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/receptionist/ReceptionistMessages.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/receptionist/ReceptionistMessages.scala index db87c786ba..9870889057 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/internal/receptionist/ReceptionistMessages.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/internal/receptionist/ReceptionistMessages.scala @@ -9,7 +9,7 @@ import akka.actor.typed.receptionist.Receptionist.Command import akka.actor.typed.receptionist.{ Receptionist, ServiceKey } import akka.annotation.InternalApi -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ /** * Internal API diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala index d1fd39087e..5eb9ca6156 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/javadsl/Behaviors.scala @@ -14,7 +14,7 @@ import akka.japi.function.{ Effect, Function2 => JapiFunction2 } import akka.japi.pf.PFBuilder import akka.util.unused -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.reflect.ClassTag /** diff --git a/akka-actor-typed/src/main/scala/akka/actor/typed/receptionist/Receptionist.scala b/akka-actor-typed/src/main/scala/akka/actor/typed/receptionist/Receptionist.scala index 6110998cc2..0b00037945 100644 --- a/akka-actor-typed/src/main/scala/akka/actor/typed/receptionist/Receptionist.scala +++ b/akka-actor-typed/src/main/scala/akka/actor/typed/receptionist/Receptionist.scala @@ -8,7 +8,7 @@ import akka.actor.typed.{ ActorRef, ActorSystem, Dispatchers, Extension, Extensi import akka.actor.typed.internal.receptionist._ import akka.annotation.DoNotInherit -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.reflect.ClassTag import akka.annotation.InternalApi diff --git a/akka-actor/src/main/mima-filters/2.5.23.backwards.excludes b/akka-actor/src/main/mima-filters/2.5.23.backwards.excludes new file mode 100644 index 0000000000..b46d14c726 --- /dev/null +++ b/akka-actor/src/main/mima-filters/2.5.23.backwards.excludes @@ -0,0 +1,9 @@ +# These were added for bincompat with 2.4 but no longer part of the public API, +# so can be safely excluded now. Required to avoid naming clashes with extension +# methods generated on Scala 2.13 (https://github.com/scala/scala/commit/f9879b63a87b1e3062c58abd9ce30e68d9fee8ca) +# These should go into the .backwards.excludes for the last 2.5 version in +# which Scala 2.13 support is merged +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorRef.ask$extension") +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorRef.?$extension") +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorSelection.ask$extension") +ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorSelection.?$extension") diff --git a/akka-actor/src/main/scala-2.13+/akka/util/ByteString.scala b/akka-actor/src/main/scala-2.13+/akka/util/ByteString.scala index 64405bdd61..fc0f83d1fc 100644 --- a/akka-actor/src/main/scala-2.13+/akka/util/ByteString.scala +++ b/akka-actor/src/main/scala-2.13+/akka/util/ByteString.scala @@ -7,13 +7,15 @@ package akka.util import java.io.{ ObjectInputStream, ObjectOutputStream } import java.nio.{ ByteBuffer, ByteOrder } import java.lang.{ Iterable => JIterable } +import java.nio.charset.{ Charset, StandardCharsets } import scala.annotation.{ tailrec, varargs } import scala.collection.mutable.{ Builder, WrappedArray } import scala.collection.{ immutable, mutable } import scala.collection.immutable.{ IndexedSeq, IndexedSeqOps, StrictOptimizedSeqOps, VectorBuilder } import scala.reflect.ClassTag -import java.nio.charset.{ Charset, StandardCharsets } + +import com.github.ghik.silencer.silent object ByteString { @@ -384,7 +386,7 @@ object ByteString { } } - override protected def writeReplace(): AnyRef = new SerializationProxy(this) + protected def writeReplace(): AnyRef = new SerializationProxy(this) } private[akka] object ByteStrings extends Companion { @@ -626,7 +628,7 @@ object ByteString { } } - override protected def writeReplace(): AnyRef = new SerializationProxy(this) + protected def writeReplace(): AnyRef = new SerializationProxy(this) } @SerialVersionUID(1L) @@ -675,10 +677,7 @@ sealed abstract class ByteString override protected def fromSpecific(coll: IterableOnce[Byte]): ByteString = ByteString(coll) override protected def newSpecificBuilder: mutable.Builder[Byte, ByteString] = ByteString.newBuilder - - // FIXME this is a workaround for - // https://github.com/scala/bug/issues/11192#issuecomment-436926231 - protected[this] override def writeReplace(): AnyRef = this + override val empty: ByteString = ByteString.empty def apply(idx: Int): Byte private[akka] def byteStringCompanion: ByteString.Companion @@ -814,6 +813,7 @@ sealed abstract class ByteString * Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings * all fragments. Will always have at least one entry. */ + @silent def getByteBuffers(): JIterable[ByteBuffer] = { import scala.collection.JavaConverters.asJavaIterableConverter asByteBuffers.asJava diff --git a/akka-actor/src/main/scala-2.13+/akka/util/ccompat/package.scala b/akka-actor/src/main/scala-2.13+/akka/util/ccompat/package.scala index eb5b71d13b..62725a62bf 100644 --- a/akka-actor/src/main/scala-2.13+/akka/util/ccompat/package.scala +++ b/akka-actor/src/main/scala-2.13+/akka/util/ccompat/package.scala @@ -14,4 +14,10 @@ package akka.util package object ccompat { private[akka] type Factory[-A, +C] = scala.collection.Factory[A, C] private[akka] val Factory = scala.collection.Factory + + // When we drop support for 2.12 we can delete this concept + // and import scala.jdk.CollectionConverters.Ops._ instead + object JavaConverters + extends scala.collection.convert.AsJavaExtensions + with scala.collection.convert.AsScalaExtensions } diff --git a/akka-actor/src/main/scala-2.13-/akka/util/ccompat/package.scala b/akka-actor/src/main/scala-2.13-/akka/util/ccompat/package.scala index 4f282df4a5..be055fa19b 100644 --- a/akka-actor/src/main/scala-2.13-/akka/util/ccompat/package.scala +++ b/akka-actor/src/main/scala-2.13-/akka/util/ccompat/package.scala @@ -82,4 +82,6 @@ package object ccompat { implicit class ImmutableSortedSetOps[A](val real: i.SortedSet[A]) extends AnyVal { def unsorted: i.Set[A] = real } + + object JavaConverters extends scala.collection.convert.DecorateAsJava with scala.collection.convert.DecorateAsScala } diff --git a/akka-actor/src/main/scala/akka/actor/CoordinatedShutdown.scala b/akka-actor/src/main/scala/akka/actor/CoordinatedShutdown.scala index 372cc7cce3..c4755c9962 100644 --- a/akka-actor/src/main/scala/akka/actor/CoordinatedShutdown.scala +++ b/akka-actor/src/main/scala/akka/actor/CoordinatedShutdown.scala @@ -294,7 +294,7 @@ object CoordinatedShutdown extends ExtensionId[CoordinatedShutdown] with Extensi * INTERNAL API */ private[akka] def phasesFromConfig(conf: Config): Map[String, Phase] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val defaultPhaseTimeout = conf.getString("default-phase-timeout") val phasesConf = conf.getConfig("phases") val defaultPhaseConfig = ConfigFactory.parseString(s""" @@ -588,7 +588,7 @@ final class CoordinatedShutdown private[akka] ( * Sum of timeouts of all phases that have some task. */ def totalTimeout(): FiniteDuration = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ tasks.keySet.asScala.foldLeft(Duration.Zero) { case (acc, phase) => acc + timeout(phase) } diff --git a/akka-actor/src/main/scala/akka/actor/Deployer.scala b/akka-actor/src/main/scala/akka/actor/Deployer.scala index f09b0a6017..adb7b125bb 100644 --- a/akka-actor/src/main/scala/akka/actor/Deployer.scala +++ b/akka-actor/src/main/scala/akka/actor/Deployer.scala @@ -135,7 +135,7 @@ case object NoScopeGiven extends NoScopeGiven { */ private[akka] class Deployer(val settings: ActorSystem.Settings, val dynamicAccess: DynamicAccess) { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ private val resizerEnabled: Config = ConfigFactory.parseString("resizer.enabled=on") private val deployments = new AtomicReference(WildcardIndex[Deploy]()) diff --git a/akka-actor/src/main/scala/akka/actor/Stash.scala b/akka-actor/src/main/scala/akka/actor/Stash.scala index cb372e74d0..4fed3d955e 100644 --- a/akka-actor/src/main/scala/akka/actor/Stash.scala +++ b/akka-actor/src/main/scala/akka/actor/Stash.scala @@ -75,6 +75,7 @@ trait UnrestrictedStash extends Actor with StashSupport { * Overridden callback. Prepends all messages in the stash to the mailbox, * clears the stash, stops all children and invokes the postStop() callback. */ + @throws(classOf[Exception]) override def preRestart(reason: Throwable, message: Option[Any]): Unit = { try unstashAll() finally super.preRestart(reason, message) @@ -85,6 +86,7 @@ trait UnrestrictedStash extends Actor with StashSupport { * Must be called when overriding this method, otherwise stashed messages won't be propagated to DeadLetters * when actor stops. */ + @throws(classOf[Exception]) override def postStop(): Unit = try unstashAll() finally super.postStop() diff --git a/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala b/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala index 83e876bfad..87728dfccb 100644 --- a/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala +++ b/akka-actor/src/main/scala/akka/actor/dungeon/Children.scala @@ -30,6 +30,7 @@ private[akka] trait Children { this: ActorCell => Unsafe.instance.getObjectVolatile(this, AbstractActorCell.childrenOffset).asInstanceOf[ChildrenContainer] final def children: immutable.Iterable[ActorRef] = childrenRefs.children + @silent final def getChildren(): java.lang.Iterable[ActorRef] = scala.collection.JavaConverters.asJavaIterableConverter(children).asJava diff --git a/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala b/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala index d8983eb4f4..0158e68d7e 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Dispatchers.scala @@ -194,7 +194,7 @@ class Dispatchers @InternalApi private[akka] ( * INTERNAL API */ private[akka] def config(id: String, appConfig: Config): Config = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ def simpleName = id.substring(id.lastIndexOf('.') + 1) idConfig(id) .withFallback(appConfig) @@ -203,7 +203,7 @@ class Dispatchers @InternalApi private[akka] ( } private def idConfig(id: String): Config = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ ConfigFactory.parseMap(Map("id" -> id).asJava) } diff --git a/akka-actor/src/main/scala/akka/dispatch/Future.scala b/akka-actor/src/main/scala/akka/dispatch/Future.scala index 5ee0b761e2..649f7d3922 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Future.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Future.scala @@ -93,7 +93,7 @@ object ExecutionContexts { * Futures is the Java API for Futures and Promises */ object Futures { - import scala.collection.JavaConverters.iterableAsScalaIterableConverter + import akka.util.ccompat.JavaConverters._ /** * Starts an asynchronous computation and returns a `Future` object with the result of that computation. diff --git a/akka-actor/src/main/scala/akka/dispatch/Mailboxes.scala b/akka-actor/src/main/scala/akka/dispatch/Mailboxes.scala index 0b311cb0e6..63b7e4dfcb 100644 --- a/akka-actor/src/main/scala/akka/dispatch/Mailboxes.scala +++ b/akka-actor/src/main/scala/akka/dispatch/Mailboxes.scala @@ -55,7 +55,7 @@ private[akka] class Mailboxes( private val mailboxTypeConfigurators = new ConcurrentHashMap[String, MailboxType] private val mailboxBindings: Map[Class[_ <: Any], String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ settings.config .getConfig("akka.actor.mailbox.requirements") .root @@ -255,7 +255,7 @@ private[akka] class Mailboxes( //INTERNAL API private def config(id: String): Config = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ ConfigFactory .parseMap(Map("id" -> id).asJava) .withFallback(settings.config.getConfig(id)) diff --git a/akka-actor/src/main/scala/akka/event/Logging.scala b/akka-actor/src/main/scala/akka/event/Logging.scala index e52aaf4d42..4f5721288f 100644 --- a/akka-actor/src/main/scala/akka/event/Logging.scala +++ b/akka-actor/src/main/scala/akka/event/Logging.scala @@ -745,7 +745,7 @@ object Logging { * Java API: Retrieve the contents of the MDC. */ def getMDC: java.util.Map[String, Any] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ mdc.asJava } } @@ -1564,7 +1564,7 @@ trait DiagnosticLoggingAdapter extends LoggingAdapter { import Logging._ - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ private var _mdc = emptyMDC diff --git a/akka-actor/src/main/scala/akka/io/Tcp.scala b/akka-actor/src/main/scala/akka/io/Tcp.scala index ad679be642..3510007f6f 100644 --- a/akka-actor/src/main/scala/akka/io/Tcp.scala +++ b/akka-actor/src/main/scala/akka/io/Tcp.scala @@ -12,7 +12,7 @@ import com.typesafe.config.Config import scala.concurrent.duration._ import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.util.{ ByteString, Helpers } import akka.util.Helpers.Requiring import akka.util.JavaDurationConverters._ diff --git a/akka-actor/src/main/scala/akka/io/TcpConnection.scala b/akka-actor/src/main/scala/akka/io/TcpConnection.scala index 73e4794af9..b5e46d99b6 100644 --- a/akka-actor/src/main/scala/akka/io/TcpConnection.scala +++ b/akka-actor/src/main/scala/akka/io/TcpConnection.scala @@ -387,7 +387,7 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha val interestedInClose: Set[ActorRef] = (if (writePending) Set(pendingWrite.commander) else Set.empty) ++ - closedMessage.toSet[CloseInformation].flatMap(_.notificationsTo) + closedMessage.toList.flatMap(_.notificationsTo).toSet if (channel.isOpen) // if channel is still open here, we didn't go through stopWith => unexpected actor termination prepareAbort() diff --git a/akka-actor/src/main/scala/akka/io/Udp.scala b/akka-actor/src/main/scala/akka/io/Udp.scala index d1cc8eb72c..4cd4d19374 100644 --- a/akka-actor/src/main/scala/akka/io/Udp.scala +++ b/akka-actor/src/main/scala/akka/io/Udp.scala @@ -245,7 +245,7 @@ class UdpExt(system: ExtendedActorSystem) extends IO.Extension { object UdpMessage { import Udp._ import java.lang.{ Iterable => JIterable } - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ /** * Each [[Udp.Send]] can optionally request a positive acknowledgment to be sent diff --git a/akka-actor/src/main/scala/akka/io/UdpConnected.scala b/akka-actor/src/main/scala/akka/io/UdpConnected.scala index add7d2085b..17b155490f 100644 --- a/akka-actor/src/main/scala/akka/io/UdpConnected.scala +++ b/akka-actor/src/main/scala/akka/io/UdpConnected.scala @@ -256,7 +256,7 @@ object UdpConnectedMessage { def resumeReading: Command = ResumeReading implicit private def fromJava[T](coll: JIterable[T]): immutable.Iterable[T] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ coll.asScala.to(immutable.Iterable) } } diff --git a/akka-actor/src/main/scala/akka/io/dns/DnsProtocol.scala b/akka-actor/src/main/scala/akka/io/dns/DnsProtocol.scala index 67ee405475..f64bb21731 100644 --- a/akka-actor/src/main/scala/akka/io/dns/DnsProtocol.scala +++ b/akka-actor/src/main/scala/akka/io/dns/DnsProtocol.scala @@ -9,7 +9,7 @@ import java.util import akka.actor.NoSerializationVerificationNeeded import scala.collection.{ immutable => im } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ /** * Supersedes [[akka.io.Dns]] protocol. diff --git a/akka-actor/src/main/scala/akka/io/dns/DnsSettings.scala b/akka-actor/src/main/scala/akka/io/dns/DnsSettings.scala index 01695e61a1..91cc2e4fe1 100644 --- a/akka-actor/src/main/scala/akka/io/dns/DnsSettings.scala +++ b/akka-actor/src/main/scala/akka/io/dns/DnsSettings.scala @@ -15,7 +15,7 @@ import akka.util.Helpers import akka.util.JavaDurationConverters._ import com.typesafe.config.{ Config, ConfigValueType } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import scala.concurrent.duration.FiniteDuration import scala.util.{ Failure, Success, Try } diff --git a/akka-actor/src/main/scala/akka/io/dns/internal/ResolvConfParser.scala b/akka-actor/src/main/scala/akka/io/dns/internal/ResolvConfParser.scala index f0551de066..b7d9df0d5e 100644 --- a/akka-actor/src/main/scala/akka/io/dns/internal/ResolvConfParser.scala +++ b/akka-actor/src/main/scala/akka/io/dns/internal/ResolvConfParser.scala @@ -7,7 +7,7 @@ package akka.io.dns.internal import java.io.File import java.nio.file.Files -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.util.Try private[dns] case class ResolvConf(search: List[String], ndots: Int) diff --git a/akka-actor/src/main/scala/akka/pattern/AskSupport.scala b/akka-actor/src/main/scala/akka/pattern/AskSupport.scala index b22ae8bd2d..b9e0038689 100644 --- a/akka-actor/src/main/scala/akka/pattern/AskSupport.scala +++ b/akka-actor/src/main/scala/akka/pattern/AskSupport.scala @@ -261,18 +261,6 @@ trait ExplicitAskSupport { object AskableActorRef { - /** - * INTERNAL API: for binary compatibility - */ - private[pattern] def ask$extension(actorRef: ActorRef, message: Any, timeout: Timeout): Future[Any] = - actorRef.internalAsk(message, timeout, ActorRef.noSender) - - /** - * INTERNAL API: for binary compatibility - */ - private[pattern] def $qmark$extension(actorRef: ActorRef, message: Any, timeout: Timeout): Future[Any] = - actorRef.internalAsk(message, timeout, ActorRef.noSender) - private def messagePartOfException(message: Any, sender: ActorRef): String = { val msg = if (message == null) "unknown" else message val wasSentBy = if (sender == ActorRef.noSender) "" else s" was sent by [$sender]" @@ -402,21 +390,6 @@ final class ExplicitlyAskableActorRef(val actorRef: ActorRef) extends AnyVal { } } -object AskableActorSelection { - - /** - * INTERNAL API: for binary compatibility - */ - private[pattern] def ask$extension(actorSel: ActorSelection, message: Any, timeout: Timeout): Future[Any] = - actorSel.internalAsk(message, timeout, ActorRef.noSender) - - /** - * INTERNAL API: for binary compatibility - */ - private[pattern] def $qmark$extension(actorSel: ActorSelection, message: Any, timeout: Timeout): Future[Any] = - actorSel.internalAsk(message, timeout, ActorRef.noSender) -} - /* * Implementation class of the “ask” pattern enrichment of ActorSelection */ diff --git a/akka-actor/src/main/scala/akka/routing/ConsistentHash.scala b/akka-actor/src/main/scala/akka/routing/ConsistentHash.scala index e71f8b3531..2c845fabc7 100644 --- a/akka-actor/src/main/scala/akka/routing/ConsistentHash.scala +++ b/akka-actor/src/main/scala/akka/routing/ConsistentHash.scala @@ -126,7 +126,7 @@ object ConsistentHash { * Java API: Factory method to create a ConsistentHash */ def create[T](nodes: java.lang.Iterable[T], virtualNodesFactor: Int): ConsistentHash[T] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ apply(nodes.asScala, virtualNodesFactor)(ClassTag(classOf[Any].asInstanceOf[Class[T]])) } diff --git a/akka-actor/src/main/scala/akka/routing/Router.scala b/akka-actor/src/main/scala/akka/routing/Router.scala index 7a6ee21851..d4b160882d 100644 --- a/akka-actor/src/main/scala/akka/routing/Router.scala +++ b/akka-actor/src/main/scala/akka/routing/Router.scala @@ -78,7 +78,7 @@ final case class SeveralRoutees(routees: immutable.IndexedSeq[Routee]) extends R * Java API */ def getRoutees(): java.util.List[Routee] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ routees.asJava } diff --git a/akka-actor/src/main/scala/akka/routing/RouterConfig.scala b/akka-actor/src/main/scala/akka/routing/RouterConfig.scala index 6e7430a2d7..21b642a1ad 100644 --- a/akka-actor/src/main/scala/akka/routing/RouterConfig.scala +++ b/akka-actor/src/main/scala/akka/routing/RouterConfig.scala @@ -405,7 +405,7 @@ final case class Routees(routees: immutable.IndexedSeq[Routee]) { * Java API */ def getRoutees: java.util.List[Routee] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ routees.asJava } } diff --git a/akka-actor/src/main/scala/akka/serialization/Serialization.scala b/akka-actor/src/main/scala/akka/serialization/Serialization.scala index 97470cb865..895fdf8ace 100644 --- a/akka-actor/src/main/scala/akka/serialization/Serialization.scala +++ b/akka-actor/src/main/scala/akka/serialization/Serialization.scala @@ -63,7 +63,7 @@ object Serialization { } private final def configToMap(cfg: Config): Map[String, String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ cfg.root.unwrapped.asScala.toMap.map { case (k, v) => (k -> v.toString) } } } diff --git a/akka-actor/src/main/scala/akka/serialization/SerializationSetup.scala b/akka-actor/src/main/scala/akka/serialization/SerializationSetup.scala index 3e8eec211e..fb38d81a72 100644 --- a/akka-actor/src/main/scala/akka/serialization/SerializationSetup.scala +++ b/akka-actor/src/main/scala/akka/serialization/SerializationSetup.scala @@ -8,7 +8,7 @@ import akka.actor.ExtendedActorSystem import akka.actor.setup.Setup import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ object SerializationSetup { diff --git a/akka-actor/src/main/scala/akka/util/Index.scala b/akka-actor/src/main/scala/akka/util/Index.scala index ec152e5868..acc8a7f2d6 100644 --- a/akka-actor/src/main/scala/akka/util/Index.scala +++ b/akka-actor/src/main/scala/akka/util/Index.scala @@ -8,7 +8,11 @@ import annotation.tailrec import java.util.concurrent.{ ConcurrentHashMap, ConcurrentSkipListSet } import java.util.Comparator -import scala.collection.JavaConverters.{ asScalaIteratorConverter, collectionAsScalaIterableConverter } + +import scala.collection.JavaConverters.collectionAsScalaIterableConverter +import akka.util.ccompat.JavaConverters._ + +import com.github.ghik.silencer.silent /** * An implementation of a ConcurrentMultiMap @@ -143,6 +147,7 @@ class Index[K, V](val mapSize: Int, val valueComparator: Comparator[V]) { if (set ne null) { set.synchronized { container.remove(key, set) + @silent val ret = collectionAsScalaIterableConverter(set.clone()).asScala // Make copy since we need to clear the original set.clear() // Clear the original set to signal to any pending writers that there was a conflict Some(ret) diff --git a/akka-actor/src/main/scala/akka/util/Unused.scala b/akka-actor/src/main/scala/akka/util/Unused.scala index 0768e84ade..7faa0a395e 100644 --- a/akka-actor/src/main/scala/akka/util/Unused.scala +++ b/akka-actor/src/main/scala/akka/util/Unused.scala @@ -4,6 +4,8 @@ package akka.util +import com.github.ghik.silencer.silent + import akka.annotation.InternalApi /** @@ -12,6 +14,15 @@ import akka.annotation.InternalApi * or other reason. Useful in combination with * `-Ywarn-unused:explicits,implicits` compiler options. * + * Extends 'deprecated' to make sure using a parameter marked @unused + * produces a warning, and not using a parameter marked @unused does not + * produce an 'unused parameter' warning. + * + * This approach is deprecated in Scala 2.13 and scheduled to be + * removed in 2.14. Perhaps we should promote introducing an `@unused` + * to Scala? https://contributors.scala-lang.org/t/more-error-reporting-annotations/1681/7 + * * INTERNAL API */ +@silent @InternalApi private[akka] class unused extends deprecated("unused", "") diff --git a/akka-bench-jmh-typed/src/main/scala/akka/BenchRunner.scala b/akka-bench-jmh-typed/src/main/scala/akka/BenchRunner.scala index d5632bc741..221765fe87 100644 --- a/akka-bench-jmh-typed/src/main/scala/akka/BenchRunner.scala +++ b/akka-bench-jmh-typed/src/main/scala/akka/BenchRunner.scala @@ -10,7 +10,7 @@ import org.openjdk.jmh.runner.options.CommandLineOptions object BenchRunner { def main(args: Array[String]) = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val args2 = args.toList.flatMap { case "quick" => "-i 1 -wi 1 -f1 -t1".split(" ").toList diff --git a/akka-bench-jmh/src/main/scala/akka/BenchRunner.scala b/akka-bench-jmh/src/main/scala/akka/BenchRunner.scala index d5632bc741..221765fe87 100644 --- a/akka-bench-jmh/src/main/scala/akka/BenchRunner.scala +++ b/akka-bench-jmh/src/main/scala/akka/BenchRunner.scala @@ -10,7 +10,7 @@ import org.openjdk.jmh.runner.options.CommandLineOptions object BenchRunner { def main(args: Array[String]) = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val args2 = args.toList.flatMap { case "quick" => "-i 1 -wi 1 -f1 -t1".split(" ").toList diff --git a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala index bf4fd0a458..963ad25271 100644 --- a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala +++ b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala @@ -16,6 +16,8 @@ import akka.cluster.MemberStatus import java.util.concurrent.ThreadLocalRandom import akka.actor.DeadLetterSuppression +import com.github.ghik.silencer.silent + /** * Runtime collection management commands. */ @@ -92,6 +94,7 @@ trait ClusterMetricsEvent final case class ClusterMetricsChanged(nodeMetrics: Set[NodeMetrics]) extends ClusterMetricsEvent { /** Java API */ + @silent def getNodeMetrics: java.lang.Iterable[NodeMetrics] = scala.collection.JavaConverters.asJavaIterableConverter(nodeMetrics).asJava } diff --git a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/Metric.scala b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/Metric.scala index 340e5b6aae..66f81888fe 100644 --- a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/Metric.scala +++ b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/Metric.scala @@ -9,6 +9,8 @@ import scala.util.Success import scala.util.Failure import scala.util.Try +import com.github.ghik.silencer.silent + /** * Metrics key/value. * @@ -323,6 +325,7 @@ final case class NodeMetrics(address: Address, timestamp: Long, metrics: Set[Met /** * Java API */ + @silent def getMetrics: java.lang.Iterable[Metric] = scala.collection.JavaConverters.asJavaIterableConverter(metrics).asJava diff --git a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/protobuf/MessageSerializer.scala b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/protobuf/MessageSerializer.scala index 8dd8f7b3f6..3d223e6b34 100644 --- a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/protobuf/MessageSerializer.scala +++ b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/protobuf/MessageSerializer.scala @@ -18,7 +18,7 @@ import akka.util.ccompat._ import scala.annotation.tailrec import scala.collection.immutable -import scala.collection.JavaConverters.{ asJavaIterableConverter, asScalaBufferConverter, setAsJavaSetConverter } +import akka.util.ccompat.JavaConverters._ import java.io.NotSerializableException import akka.dispatch.Dispatchers diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ClusterSharding.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ClusterSharding.scala index 61caec6db0..5dee7d2486 100755 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ClusterSharding.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ClusterSharding.scala @@ -8,7 +8,7 @@ import java.net.URLEncoder import java.util.Optional import java.util.concurrent.ConcurrentHashMap -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import scala.concurrent.Await import scala.util.control.NonFatal diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala index d87d899a57..78990f62f1 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardCoordinator.scala @@ -109,14 +109,14 @@ object ShardCoordinator { shardId: ShardId, currentShardAllocations: Map[ActorRef, immutable.IndexedSeq[ShardId]]): Future[ActorRef] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ allocateShard(requester, shardId, currentShardAllocations.asJava) } override final def rebalance( currentShardAllocations: Map[ActorRef, immutable.IndexedSeq[ShardId]], rebalanceInProgress: Set[ShardId]): Future[Set[ShardId]] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ implicit val ec = ExecutionContexts.sameThreadExecutionContext rebalance(currentShardAllocations.asJava, rebalanceInProgress.asJava).map(_.asScala.toSet) } diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala index 0ee31dfbc2..629f0cc82c 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala @@ -242,7 +242,7 @@ object ShardRegion { * Java API */ def getRegions: java.util.Set[Address] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ regions.asJava } @@ -269,7 +269,7 @@ object ShardRegion { * Java API */ def getRegions(): java.util.Map[Address, ShardRegionStats] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ regions.asJava } } @@ -297,7 +297,7 @@ object ShardRegion { * Java API */ def getStats(): java.util.Map[ShardId, Int] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ stats.asJava } @@ -329,7 +329,7 @@ object ShardRegion { * If gathering the shard information times out the set of shards will be empty. */ def getShards(): java.util.Set[ShardState] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ shards.asJava } } @@ -340,7 +340,7 @@ object ShardRegion { * Java API: */ def getEntityIds(): java.util.Set[EntityId] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ entityIds.asJava } } diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala index 5f3de33350..e6cb0a93ba 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala @@ -9,7 +9,7 @@ import java.util.zip.GZIPInputStream import java.util.zip.GZIPOutputStream import scala.annotation.tailrec -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import akka.actor.ActorRef import akka.actor.ExtendedActorSystem diff --git a/akka-cluster-tools/src/main/scala/akka/cluster/client/ClusterClient.scala b/akka-cluster-tools/src/main/scala/akka/cluster/client/ClusterClient.scala index 3f515dc8e8..125ecf4529 100644 --- a/akka-cluster-tools/src/main/scala/akka/cluster/client/ClusterClient.scala +++ b/akka-cluster-tools/src/main/scala/akka/cluster/client/ClusterClient.scala @@ -152,7 +152,7 @@ final class ClusterClientSettings( * Java API */ def withInitialContacts(initialContacts: java.util.Set[ActorPath]): ClusterClientSettings = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ withInitialContacts(initialContacts.asScala.toSet) } @@ -262,7 +262,7 @@ case object GetContactPoints extends GetContactPoints { * @param contactPoints The presently known list of contact points. */ final case class ContactPoints(contactPoints: Set[ActorPath]) { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ /** * Java API @@ -811,7 +811,7 @@ case object GetClusterClients extends GetClusterClients { * @param clusterClients The presently known list of cluster clients. */ final case class ClusterClients(clusterClients: Set[ActorRef]) { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ /** * Java API diff --git a/akka-cluster-tools/src/main/scala/akka/cluster/client/protobuf/ClusterClientMessageSerializer.scala b/akka-cluster-tools/src/main/scala/akka/cluster/client/protobuf/ClusterClientMessageSerializer.scala index 0465943d76..d5bd9f8cda 100644 --- a/akka-cluster-tools/src/main/scala/akka/cluster/client/protobuf/ClusterClientMessageSerializer.scala +++ b/akka-cluster-tools/src/main/scala/akka/cluster/client/protobuf/ClusterClientMessageSerializer.scala @@ -4,7 +4,7 @@ package akka.cluster.client.protobuf -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.actor.ExtendedActorSystem import akka.serialization.BaseSerializer import akka.serialization.SerializerWithStringManifest diff --git a/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala b/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala index 5d7f99a71e..1ac22a52a7 100644 --- a/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala +++ b/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/DistributedPubSubMediator.scala @@ -236,7 +236,7 @@ object DistributedPubSubMediator { * Java API */ def getTopics(): java.util.Set[String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ topics.asJava } } @@ -590,14 +590,12 @@ class DistributedPubSubMediator(settings: DistributedPubSubSettings) case Send(path, msg, localAffinity) => val routees = registry(selfAddress).content.get(path) match { case Some(valueHolder) if localAffinity => - (for { - routee <- valueHolder.routee - } yield routee).toVector + valueHolder.routee.toList.toIndexedSeq case _ => (for { (_, bucket) <- registry - valueHolder <- bucket.content.get(path).toSeq - routee <- valueHolder.routee.toSeq + valueHolder <- bucket.content.get(path).toList + routee <- valueHolder.routee.toList } yield routee).toVector } @@ -780,8 +778,8 @@ class DistributedPubSubMediator(settings: DistributedPubSubSettings) val refs = for { (address, bucket) <- registry if !(allButSelf && address == selfAddress) // if we should skip sender() node and current address == self address => skip - valueHolder <- bucket.content.get(path).toSeq - ref <- valueHolder.ref.toSeq + valueHolder <- bucket.content.get(path).toList + ref <- valueHolder.ref.toList } yield ref if (refs.isEmpty) ignoreOrSendToDeadLetters(msg) else refs.foreach(_.forward(msg)) diff --git a/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/protobuf/DistributedPubSubMessageSerializer.scala b/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/protobuf/DistributedPubSubMessageSerializer.scala index 3649cfd673..296a28323f 100644 --- a/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/protobuf/DistributedPubSubMessageSerializer.scala +++ b/akka-cluster-tools/src/main/scala/akka/cluster/pubsub/protobuf/DistributedPubSubMessageSerializer.scala @@ -12,7 +12,7 @@ import java.util.zip.GZIPOutputStream import java.util.zip.GZIPInputStream import scala.annotation.tailrec import akka.cluster.pubsub.protobuf.msg.{ DistributedPubSubMessages => dm } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.cluster.pubsub.DistributedPubSubMediator._ import akka.cluster.pubsub.DistributedPubSubMediator.Internal._ import akka.actor.ActorRef diff --git a/akka-cluster-tools/src/test/scala/akka/cluster/TestLease.scala b/akka-cluster-tools/src/test/scala/akka/cluster/TestLease.scala index 3920222fa2..92251a929a 100644 --- a/akka-cluster-tools/src/test/scala/akka/cluster/TestLease.scala +++ b/akka-cluster-tools/src/test/scala/akka/cluster/TestLease.scala @@ -15,7 +15,7 @@ import akka.testkit.TestProbe import com.typesafe.config.ConfigFactory import scala.concurrent.{ Future, Promise } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ object TestLeaseExt extends ExtensionId[TestLeaseExt] with ExtensionIdProvider { override def get(system: ActorSystem): TestLeaseExt = super.get(system) diff --git a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala index 70097c4331..7b108ca927 100644 --- a/akka-cluster/src/main/scala/akka/cluster/Cluster.scala +++ b/akka-cluster/src/main/scala/akka/cluster/Cluster.scala @@ -26,6 +26,8 @@ import scala.util.control.NonFatal import akka.event.Logging.LogLevel +import com.github.ghik.silencer.silent + /** * Cluster Extension Id and factory for creating Cluster extension. */ @@ -94,6 +96,7 @@ class Cluster(val system: ExtendedActorSystem) extends Extension { /** * Java API: roles that this member has */ + @silent def getSelfRoles: java.util.Set[String] = scala.collection.JavaConverters.setAsJavaSetConverter(selfRoles).asJava diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala index 95864b6974..a9e85e15f5 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala @@ -19,6 +19,8 @@ import akka.util.ccompat._ import scala.runtime.AbstractFunction5 +import com.github.ghik.silencer.silent + /** * Domain events published to the event bus. * Subscribe with: @@ -120,25 +122,28 @@ object ClusterEvent { * Java API: get current member list. */ def getMembers: java.lang.Iterable[Member] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ members.asJava } /** * Java API: get current unreachable set. */ + @silent def getUnreachable: java.util.Set[Member] = scala.collection.JavaConverters.setAsJavaSetConverter(unreachable).asJava /** * Java API: All data centers in the cluster */ + @silent def getUnreachableDataCenters: java.util.Set[String] = scala.collection.JavaConverters.setAsJavaSetConverter(unreachableDataCenters).asJava /** * Java API: get current “seen-by” set. */ + @silent def getSeenBy: java.util.Set[Address] = scala.collection.JavaConverters.setAsJavaSetConverter(seenBy).asJava @@ -166,6 +171,7 @@ object ClusterEvent { /** * Java API: All node roles in the cluster */ + @silent def getAllRoles: java.util.Set[String] = scala.collection.JavaConverters.setAsJavaSetConverter(allRoles).asJava @@ -177,6 +183,7 @@ object ClusterEvent { /** * Java API: All data centers in the cluster */ + @silent def getAllDataCenters: java.util.Set[String] = scala.collection.JavaConverters.setAsJavaSetConverter(allDataCenters).asJava diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala index a9d423904d..b7c0f5de68 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala @@ -166,7 +166,7 @@ final class ClusterSettings(val config: Config, val systemName: String) { cc.getInt("min-nr-of-members") }.requiring(_ > 0, "min-nr-of-members must be > 0") val MinNrOfMembersOfRole: Map[String, Int] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ cc.getConfig("role") .root .asScala @@ -186,7 +186,7 @@ final class ClusterSettings(val config: Config, val systemName: String) { val ByPassConfigCompatCheck: Boolean = !cc.getBoolean("configuration-compatibility-check.enforce-on-join") val ConfigCompatCheckers: Set[String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ cc.getConfig("configuration-compatibility-check.checkers") .root .unwrapped @@ -200,7 +200,7 @@ final class ClusterSettings(val config: Config, val systemName: String) { } val SensitiveConfigPaths = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val sensitiveKeys = cc.getConfig("configuration-compatibility-check.sensitive-config-paths") diff --git a/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala b/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala index 0b20191e9e..f70bb1923d 100644 --- a/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala +++ b/akka-cluster/src/main/scala/akka/cluster/JoinConfigCompatChecker.scala @@ -11,7 +11,7 @@ import akka.annotation.{ DoNotInherit, InternalApi } import akka.util.ccompat._ import com.typesafe.config.{ Config, ConfigFactory, ConfigValue } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.{ immutable => im } abstract class JoinConfigCompatChecker { diff --git a/akka-cluster/src/main/scala/akka/cluster/Member.scala b/akka-cluster/src/main/scala/akka/cluster/Member.scala index 4dd222ea54..1b77f73c4c 100644 --- a/akka-cluster/src/main/scala/akka/cluster/Member.scala +++ b/akka-cluster/src/main/scala/akka/cluster/Member.scala @@ -49,6 +49,7 @@ class Member private[cluster] ( /** * Java API */ + @silent def getRoles: java.util.Set[String] = scala.collection.JavaConverters.setAsJavaSetConverter(roles).asJava diff --git a/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala b/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala index b87ebdbd90..e0ccaec944 100644 --- a/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala +++ b/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala @@ -15,14 +15,13 @@ import akka.protobuf.{ ByteString, MessageLite } import scala.annotation.tailrec import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.duration.Deadline import akka.annotation.InternalApi import akka.cluster.InternalClusterAction._ import akka.cluster.routing.{ ClusterRouterPool, ClusterRouterPoolSettings } import akka.routing.Pool import akka.util.ccompat._ -import akka.util.ccompat._ import com.github.ghik.silencer.silent import com.typesafe.config.{ Config, ConfigFactory, ConfigRenderOptions } @@ -184,6 +183,7 @@ final class ClusterMessageSerializer(val system: ExtendedActorSystem) builder.build() } + @silent private def clusterRouterPoolSettingsToProto(settings: ClusterRouterPoolSettings): cm.ClusterRouterPoolSettings = { val builder = cm.ClusterRouterPoolSettings.newBuilder() builder @@ -193,8 +193,7 @@ final class ClusterMessageSerializer(val system: ExtendedActorSystem) .addAllUseRoles(settings.useRoles.asJava) // for backwards compatibility - @silent - val _ = settings.useRole.foreach(builder.setUseRole) + settings.useRole.foreach(builder.setUseRole) builder.build() } diff --git a/akka-cluster/src/main/scala/akka/cluster/routing/ClusterRouterConfig.scala b/akka-cluster/src/main/scala/akka/cluster/routing/ClusterRouterConfig.scala index b0424176a2..e729c23185 100644 --- a/akka-cluster/src/main/scala/akka/cluster/routing/ClusterRouterConfig.scala +++ b/akka-cluster/src/main/scala/akka/cluster/routing/ClusterRouterConfig.scala @@ -30,7 +30,7 @@ import com.typesafe.config.ConfigFactory import scala.annotation.{ tailrec, varargs } import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ object ClusterRouterGroupSettings { @deprecated("useRole has been replaced with useRoles", since = "2.5.4") diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala index e43b21e71d..aee4b0d748 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala @@ -770,7 +770,7 @@ abstract class StressSpec .append(" MB") sb.append("\n") - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val args = runtime.getInputArguments.asScala.filterNot(_.contains("classpath")).mkString("\n ") sb.append("Args:\n ").append(args) sb.append("\n") diff --git a/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala b/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala index 062dced6cd..c7bd88da6d 100644 --- a/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala @@ -12,8 +12,10 @@ import akka.dispatch.Dispatchers import akka.remote.PhiAccrualFailureDetector import akka.util.Helpers.ConfigOps import akka.actor.Address + import com.github.ghik.silencer.silent +@silent class ClusterConfigSpec extends AkkaSpec { "Clustering" must { @@ -41,8 +43,7 @@ class ClusterConfigSpec extends AkkaSpec { UnreachableNodesReaperInterval should ===(1 second) PublishStatsInterval should ===(Duration.Undefined) AutoDownUnreachableAfter should ===(Duration.Undefined) - @silent - val _ = DownRemovalMargin should ===(Duration.Zero) + DownRemovalMargin should ===(Duration.Zero) MinNrOfMembers should ===(1) MinNrOfMembersOfRole should ===(Map.empty[String, Int]) SelfDataCenter should ===("default") diff --git a/akka-cluster/src/test/scala/akka/cluster/JoinConfigCompatPreDefinedChecksSpec.scala b/akka-cluster/src/test/scala/akka/cluster/JoinConfigCompatPreDefinedChecksSpec.scala index 1fce5bb232..188c1aa3ce 100644 --- a/akka-cluster/src/test/scala/akka/cluster/JoinConfigCompatPreDefinedChecksSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/JoinConfigCompatPreDefinedChecksSpec.scala @@ -37,18 +37,20 @@ class JoinConfigCompatPreDefinedChecksSpec extends WordSpec with Matchers { "fail when some required keys are NOT provided" in { - val Invalid(incompatibleKeys) = - JoinConfigCompatChecker.exists( - requiredKeys, - config(""" - |{ - | akka.cluster.min-nr-of-members = 1 - |} - """.stripMargin)) - - incompatibleKeys should have size 2 - incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing") - incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing") + JoinConfigCompatChecker.exists( + requiredKeys, + config(""" + |{ + | akka.cluster.min-nr-of-members = 1 + |} + """.stripMargin)) match { + case Valid => + fail() + case Invalid(incompatibleKeys) => + incompatibleKeys should have size 2 + incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing") + incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing") + } } } @@ -87,56 +89,62 @@ class JoinConfigCompatPreDefinedChecksSpec extends WordSpec with Matchers { "fail when some required keys are NOT provided" in { - val Invalid(incompatibleKeys) = - JoinConfigCompatChecker.fullMatch( - requiredKeys, - config(""" - |{ - | akka.cluster.min-nr-of-members = 1 - |} - """.stripMargin), - clusterConfig) - - incompatibleKeys should have size 2 - incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing") - incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing") + JoinConfigCompatChecker.fullMatch( + requiredKeys, + config(""" + |{ + | akka.cluster.min-nr-of-members = 1 + |} + """.stripMargin), + clusterConfig) match { + case Valid => + fail() + case Invalid(incompatibleKeys) => + incompatibleKeys should have size 2 + incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing") + incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing") + } } "fail when all required keys are passed, but some values don't match cluster config" in { - val Invalid(incompatibleKeys) = - JoinConfigCompatChecker.fullMatch( - requiredKeys, - config(""" - |{ - | akka.cluster.min-nr-of-members = 1 - | akka.cluster.retry-unsuccessful-join-after = 15s - | akka.cluster.allow-weakly-up-members = off - |} - """.stripMargin), - clusterConfig) - - incompatibleKeys should have size 2 - incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is incompatible") - incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible") + JoinConfigCompatChecker.fullMatch( + requiredKeys, + config(""" + |{ + | akka.cluster.min-nr-of-members = 1 + | akka.cluster.retry-unsuccessful-join-after = 15s + | akka.cluster.allow-weakly-up-members = off + |} + """.stripMargin), + clusterConfig) match { + case Valid => + fail() + case Invalid(incompatibleKeys) => + incompatibleKeys should have size 2 + incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is incompatible") + incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible") + } } "fail when all required keys are passed, but some are missing and others don't match cluster config" in { - val Invalid(incompatibleKeys) = - JoinConfigCompatChecker.fullMatch( - requiredKeys, - config(""" - |{ - | akka.cluster.min-nr-of-members = 1 - | akka.cluster.allow-weakly-up-members = off - |} - """.stripMargin), - clusterConfig) - - incompatibleKeys should have size 2 - incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing") - incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible") + JoinConfigCompatChecker.fullMatch( + requiredKeys, + config(""" + |{ + | akka.cluster.min-nr-of-members = 1 + | akka.cluster.allow-weakly-up-members = off + |} + """.stripMargin), + clusterConfig) match { + case Valid => + fail() + case Invalid(incompatibleKeys) => + incompatibleKeys should have size 2 + incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing") + incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible") + } } } diff --git a/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala b/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala index 479612d4fe..d784d6fdf2 100644 --- a/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala @@ -14,7 +14,7 @@ import collection.immutable.SortedSet import akka.testkit.{ AkkaSpec, TestKit } import com.github.ghik.silencer.silent import com.typesafe.config.ConfigFactory - +@silent class ClusterMessageSerializerSpec extends AkkaSpec("akka.actor.provider = cluster") { val serializer = new ClusterMessageSerializer(system.asInstanceOf[ExtendedActorSystem]) @@ -148,8 +148,7 @@ class ClusterMessageSerializerSpec extends AkkaSpec("akka.actor.provider = clust pool.settings.totalInstances should ===(123) pool.settings.maxInstancesPerNode should ===(345) pool.settings.allowLocalRoutees should ===(true) - @silent - val _ = pool.settings.useRole should ===(Some("role ABC")) + pool.settings.useRole should ===(Some("role ABC")) pool.settings.useRoles should ===(Set("role ABC")) } } finally { diff --git a/akka-discovery/src/main/scala/akka/discovery/ServiceDiscovery.scala b/akka-discovery/src/main/scala/akka/discovery/ServiceDiscovery.scala index 13f1c0f0b9..c0f53e851c 100644 --- a/akka-discovery/src/main/scala/akka/discovery/ServiceDiscovery.scala +++ b/akka-discovery/src/main/scala/akka/discovery/ServiceDiscovery.scala @@ -35,7 +35,7 @@ object ServiceDiscovery { * Java API */ def getAddresses: java.util.List[ResolvedTarget] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ addresses.asJava } @@ -58,6 +58,8 @@ object ServiceDiscovery { object ResolvedTarget { // Simply compare the bytes of the address. // This may not work in exotic cases such as IPv4 addresses encoded as IPv6 addresses. + import com.github.ghik.silencer.silent + @silent private implicit val inetAddressOrdering: Ordering[InetAddress] = Ordering.by[InetAddress, Iterable[Byte]](_.getAddress) diff --git a/akka-discovery/src/main/scala/akka/discovery/aggregate/AggregateServiceDiscovery.scala b/akka-discovery/src/main/scala/akka/discovery/aggregate/AggregateServiceDiscovery.scala index be780f4f02..965d8cfb2f 100644 --- a/akka-discovery/src/main/scala/akka/discovery/aggregate/AggregateServiceDiscovery.scala +++ b/akka-discovery/src/main/scala/akka/discovery/aggregate/AggregateServiceDiscovery.scala @@ -13,7 +13,7 @@ import akka.event.Logging import akka.util.Helpers.Requiring import com.typesafe.config.Config -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.Future import scala.concurrent.duration.FiniteDuration import scala.util.control.NonFatal diff --git a/akka-discovery/src/main/scala/akka/discovery/config/ConfigServiceDiscovery.scala b/akka-discovery/src/main/scala/akka/discovery/config/ConfigServiceDiscovery.scala index 37e76e3567..4d85325ddb 100644 --- a/akka-discovery/src/main/scala/akka/discovery/config/ConfigServiceDiscovery.scala +++ b/akka-discovery/src/main/scala/akka/discovery/config/ConfigServiceDiscovery.scala @@ -11,7 +11,7 @@ import akka.discovery.ServiceDiscovery.{ Resolved, ResolvedTarget } import akka.event.Logging import com.typesafe.config.Config -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.Future import scala.concurrent.duration.FiniteDuration diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/DurableStore.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/DurableStore.scala index 984ffba21e..d026c6214b 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/DurableStore.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/DurableStore.scala @@ -8,7 +8,7 @@ import java.io.File import java.nio.ByteBuffer import java.util.concurrent.TimeUnit -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.duration._ import scala.util.Try import scala.util.control.NonFatal @@ -301,7 +301,7 @@ final class LmdbDurableStore(config: Config) extends Actor with ActorLogging { TimeUnit.NANOSECONDS.toMillis(System.nanoTime - t0)) } catch { case NonFatal(e) => - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ log.error(e, "failed to store [{}]", pending.keySet.asScala.mkString(",")) tx.abort() } finally { diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/GSet.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/GSet.scala index b1c551c047..3809234df0 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/GSet.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/GSet.scala @@ -43,7 +43,7 @@ final case class GSet[A] private (elements: Set[A])(override val delta: Option[G * Java API */ def getElements(): java.util.Set[A] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ elements.asJava } diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/LWWMap.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/LWWMap.scala index 9d0bf67b5c..701024f7a9 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/LWWMap.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/LWWMap.scala @@ -75,7 +75,7 @@ final class LWWMap[A, B] private[akka] (private[akka] val underlying: ORMap[A, L * Java API: All entries of the map. */ def getEntries(): java.util.Map[A, B] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ entries.asJava } diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMap.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMap.scala index 0f290095eb..435fefbdbd 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMap.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMap.scala @@ -196,7 +196,7 @@ final class ORMap[A, B <: ReplicatedData] private[akka] ( * Java API: All entries of the map. */ def getEntries(): java.util.Map[A, B] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ entries.asJava } diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMultiMap.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMultiMap.scala index edc9d6ef55..58a5766185 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMultiMap.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORMultiMap.scala @@ -102,7 +102,7 @@ final class ORMultiMap[A, B] private[akka] ( * Java API: All entries of a multimap where keys are strings and values are sets. */ def getEntries(): java.util.Map[A, java.util.Set[B]] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val result = new java.util.HashMap[A, java.util.Set[B]] if (withValueDeltas) underlying.entries.foreach { @@ -165,14 +165,14 @@ final class ORMultiMap[A, B] private[akka] ( * replicated data set. */ def put(node: SelfUniqueAddress, key: A, value: java.util.Set[B]): ORMultiMap[A, B] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ put(node.uniqueAddress, key, value.asScala.toSet) } @Deprecated @deprecated("Use `put` that takes a `SelfUniqueAddress` parameter instead.", since = "2.5.20") def put(node: Cluster, key: A, value: java.util.Set[B]): ORMultiMap[A, B] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ put(node.selfUniqueAddress, key, value.asScala.toSet) } diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORSet.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORSet.scala index bbba7754ed..6f4b7a01b9 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORSet.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/ORSet.scala @@ -309,7 +309,7 @@ final class ORSet[A] private[akka] ( * Java API */ def getElements(): java.util.Set[A] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ elements.asJava } diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/PNCounterMap.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/PNCounterMap.scala index baa8442152..9b5cb5f2b1 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/PNCounterMap.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/PNCounterMap.scala @@ -54,7 +54,7 @@ final class PNCounterMap[A] private[akka] (private[akka] val underlying: ORMap[A /** Java API */ def getEntries: java.util.Map[A, BigInteger] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ underlying.entries.map { case (k, c) => k -> c.value.bigInteger }.asJava } diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/Replicator.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/Replicator.scala index c76062a9f6..cdd1a1b1ab 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/Replicator.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/Replicator.scala @@ -65,6 +65,8 @@ import akka.event.Logging import akka.util.JavaDurationConverters._ import akka.util.ccompat._ +import com.github.ghik.silencer.silent + @ccompatUsedUntil213 object ReplicatorSettings { @@ -87,7 +89,7 @@ object ReplicatorSettings { case _ => config.getDuration("pruning-interval", MILLISECONDS).millis } - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ new ReplicatorSettings( role = roleOption(config.getString("role")), gossipInterval = config.getDuration("gossip-interval", MILLISECONDS).millis, @@ -177,7 +179,7 @@ final class ReplicatorSettings( deltaCrdtEnabled: Boolean, maxDeltaSize: Int) = this( - role.toSet, + role.iterator.toSet, gossipInterval, notifySubscribersInterval, maxDeltaElements, @@ -201,7 +203,7 @@ final class ReplicatorSettings( pruningInterval: FiniteDuration, maxPruningDissemination: FiniteDuration) = this( - roles = role.toSet, + roles = role.iterator.toSet, gossipInterval, notifySubscribersInterval, maxDeltaElements, @@ -270,9 +272,9 @@ final class ReplicatorSettings( deltaCrdtEnabled, 200) - def withRole(role: String): ReplicatorSettings = copy(roles = ReplicatorSettings.roleOption(role).toSet) + def withRole(role: String): ReplicatorSettings = copy(roles = ReplicatorSettings.roleOption(role).iterator.toSet) - def withRole(role: Option[String]): ReplicatorSettings = copy(roles = role.toSet) + def withRole(role: Option[String]): ReplicatorSettings = copy(roles = role.iterator.toSet) @varargs def withRoles(roles: String*): ReplicatorSettings = copy(roles = roles.toSet) @@ -325,7 +327,7 @@ final class ReplicatorSettings( * Java API */ def withDurableKeys(durableKeys: java.util.Set[String]): ReplicatorSettings = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ withDurableKeys(durableKeys.asScala.toSet) } @@ -464,7 +466,7 @@ object Replicator { * Java API */ def getKeyIds: java.util.Set[String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ keyIds.asJava } } @@ -1329,7 +1331,9 @@ final class Replicator(settings: ReplicatorSettings) extends Actor with ActorLog // possibility to disable Gossip for testing purpose var fullStateGossipEnabled = true + @silent val subscribers = new mutable.HashMap[KeyId, mutable.Set[ActorRef]] with mutable.MultiMap[KeyId, ActorRef] + @silent val newSubscribers = new mutable.HashMap[KeyId, mutable.Set[ActorRef]] with mutable.MultiMap[KeyId, ActorRef] var subscriptionKeys = Map.empty[KeyId, KeyR] diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatedDataSerializer.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatedDataSerializer.scala index 370343e103..cccb712cfe 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatedDataSerializer.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatedDataSerializer.scala @@ -11,7 +11,7 @@ import java.util.Comparator import java.util.TreeSet import scala.annotation.tailrec -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import akka.actor.ExtendedActorSystem diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatorMessageSerializer.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatorMessageSerializer.scala index 0db232e54c..6e0f949c4f 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatorMessageSerializer.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/ReplicatorMessageSerializer.scala @@ -6,7 +6,7 @@ package akka.cluster.ddata.protobuf import scala.concurrent.duration._ import java.util.concurrent.TimeUnit -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import scala.concurrent.duration.Duration import akka.actor.ExtendedActorSystem diff --git a/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/SerializationSupport.scala b/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/SerializationSupport.scala index 3ce55a5e9e..356adb56c1 100644 --- a/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/SerializationSupport.scala +++ b/akka-distributed-data/src/main/scala/akka/cluster/ddata/protobuf/SerializationSupport.scala @@ -10,7 +10,7 @@ import java.util.zip.GZIPInputStream import java.util.zip.GZIPOutputStream import scala.annotation.tailrec import scala.collection.immutable.TreeMap -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.actor.ActorRef import akka.actor.Address import akka.actor.ExtendedActorSystem diff --git a/akka-distributed-data/src/test/scala/akka/cluster/ddata/ORMultiMapSpec.scala b/akka-distributed-data/src/test/scala/akka/cluster/ddata/ORMultiMapSpec.scala index f6a572dfc8..f65c72b785 100644 --- a/akka-distributed-data/src/test/scala/akka/cluster/ddata/ORMultiMapSpec.scala +++ b/akka-distributed-data/src/test/scala/akka/cluster/ddata/ORMultiMapSpec.scala @@ -138,7 +138,7 @@ class ORMultiMapSpec extends WordSpec with Matchers { "be able to get all bindings for an entry and then reduce them upon putting them back" in { val m = ORMultiMap().addBinding(node1, "a", "A1").addBinding(node1, "a", "A2").addBinding(node1, "b", "B1") - val Some(a) = m.get("a") + val a = m.get("a").get a should be(Set("A1", "A2")) diff --git a/akka-docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java b/akka-docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java index 33ee38ffd7..a4019131bf 100644 --- a/akka-docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java +++ b/akka-docs/src/test/java/jdocs/persistence/LambdaPersistencePluginDocTest.java @@ -169,6 +169,7 @@ public class LambdaPersistencePluginDocTest { static Object o4 = new Object() { + // https://github.com/akka/akka/issues/26826 // #journal-tck-before-after-java @RunWith(JUnitRunner.class) class MyJournalSpecTest extends JavaJournalSpec { diff --git a/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala b/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala index d1d17d61f0..e758c485d3 100644 --- a/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala +++ b/akka-docs/src/test/scala/docs/ddata/DistributedDataDocSpec.scala @@ -400,7 +400,7 @@ class DistributedDataDocSpec extends AkkaSpec(DistributedDataDocSpec.config) { } "test japi.TwoPhaseSetSerializer" in { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val s1 = ddata.TwoPhaseSet.create().add("a").add("b").add("c").remove("b") s1.getElements.asScala should be(Set("a", "c")) val serializer = SerializationExtension(system).findSerializerFor(s1) diff --git a/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala b/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala index 7b5d67609b..a6e82abfd2 100644 --- a/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala +++ b/akka-docs/src/test/scala/docs/ddata/protobuf/TwoPhaseSetSerializer.scala @@ -7,7 +7,7 @@ package docs.ddata.protobuf //#serializer import java.util.ArrayList import java.util.Collections -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.actor.ExtendedActorSystem import akka.cluster.ddata.GSet import akka.cluster.ddata.protobuf.SerializationSupport diff --git a/akka-docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala b/akka-docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala index 172592bfdb..44e9e82be9 100644 --- a/akka-docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala +++ b/akka-docs/src/test/scala/docs/io/ScalaUdpMulticastSpec.scala @@ -13,7 +13,7 @@ import akka.testkit.TestKit import org.scalatest.{ BeforeAndAfter, WordSpecLike } import org.scalatest.BeforeAndAfterAll import akka.testkit.SocketUtil -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ class ScalaUdpMulticastSpec extends TestKit(ActorSystem("ScalaUdpMulticastSpec")) diff --git a/akka-docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala b/akka-docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala index accd50bab2..c635d73859 100644 --- a/akka-docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala +++ b/akka-docs/src/test/scala/docs/persistence/query/PersistenceQueryDocSpec.scala @@ -126,7 +126,7 @@ object PersistenceQueryDocSpec { // possibility to add more plugin specific queries def byTagsWithMeta(tags: java.util.Set[String]): javadsl.Source[RichEvent, QueryMetadata] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ scaladslReadJournal.byTagsWithMeta(tags.asScala.toSet).asJava } } diff --git a/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala b/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala index 44d27eebcc..8bb5303128 100644 --- a/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala +++ b/akka-docs/src/test/scala/docs/routing/RouterDocSpec.scala @@ -24,7 +24,7 @@ import akka.routing.ScatterGatherFirstCompletedPool import akka.routing.BalancingPool import akka.routing.TailChoppingGroup import akka.routing.TailChoppingPool -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ object RouterDocSpec { diff --git a/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala b/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala index 80b9e722a6..f7b8f35e1a 100644 --- a/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala +++ b/akka-docs/src/test/scala/docs/stream/GraphStageDocSpec.scala @@ -349,7 +349,7 @@ class GraphStageDocSpec extends AkkaSpec { out.expectNext(1) - switch.success(Unit) + switch.success(()) out.expectComplete() } diff --git a/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/MultiNodeSpec.scala b/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/MultiNodeSpec.scala index 9f4028f32d..ccca9d2adc 100644 --- a/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/MultiNodeSpec.scala +++ b/akka-multi-node-testkit/src/main/scala/akka/remote/testkit/MultiNodeSpec.scala @@ -241,7 +241,7 @@ object MultiNodeSpec { """) private def mapToConfig(map: Map[String, Any]): Config = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ ConfigFactory.parseMap(map.asJava) } @@ -467,7 +467,7 @@ abstract class MultiNodeSpec( base.replace(tag, replaceWith) } } - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ ConfigFactory.parseString(deployString).root.asScala.foreach { case (key, value: ConfigObject) => deployer.parseConfig(key, value.toConfig).foreach(deployer.deploy) case (key, x) => diff --git a/akka-osgi/src/main/scala/akka/osgi/BundleDelegatingClassLoader.scala b/akka-osgi/src/main/scala/akka/osgi/BundleDelegatingClassLoader.scala index a2dfe882f8..9acd841853 100644 --- a/akka-osgi/src/main/scala/akka/osgi/BundleDelegatingClassLoader.scala +++ b/akka-osgi/src/main/scala/akka/osgi/BundleDelegatingClassLoader.scala @@ -9,7 +9,7 @@ import java.util.Enumeration import org.osgi.framework.{ Bundle, BundleContext } import scala.util.Try import org.osgi.framework.wiring.{ BundleRevision, BundleWire, BundleWiring } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.util.Success import scala.util.Failure import scala.annotation.tailrec diff --git a/akka-osgi/src/test/scala/akka/osgi/PojoSRTestSupport.scala b/akka-osgi/src/test/scala/akka/osgi/PojoSRTestSupport.scala index 5c5ac7ff26..815319de95 100644 --- a/akka-osgi/src/test/scala/akka/osgi/PojoSRTestSupport.scala +++ b/akka-osgi/src/test/scala/akka/osgi/PojoSRTestSupport.scala @@ -6,7 +6,7 @@ package akka.osgi import de.kalpatec.pojosr.framework.launch.{ BundleDescriptor, ClasspathScanner, PojoServiceRegistryFactory } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import org.apache.commons.io.IOUtils.copy import org.osgi.framework._ diff --git a/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/Effect.scala b/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/Effect.scala index b8afded1c9..eb09b820ee 100644 --- a/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/Effect.scala +++ b/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/Effect.scala @@ -4,7 +4,7 @@ package akka.persistence.typed.javadsl -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.annotation.DoNotInherit import akka.annotation.InternalApi import akka.japi.function diff --git a/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala b/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala index 26be99c0a1..4b26f3926e 100644 --- a/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala +++ b/akka-persistence-typed/src/main/scala/akka/persistence/typed/javadsl/EventSourcedBehavior.scala @@ -160,7 +160,7 @@ abstract class EventSourcedBehavior[Command, Event, State] private[akka] ( val snapshotWhen: (State, Event, Long) => Boolean = (state, event, seqNr) => shouldSnapshot(state, event, seqNr) val tagger: Event => Set[String] = { event => - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val tags = tagsFor(event) if (tags.isEmpty) Set.empty else tags.asScala.toSet diff --git a/akka-persistence/src/main/scala/akka/persistence/AtLeastOnceDelivery.scala b/akka-persistence/src/main/scala/akka/persistence/AtLeastOnceDelivery.scala index 784d87c3b6..e0e09dd595 100644 --- a/akka-persistence/src/main/scala/akka/persistence/AtLeastOnceDelivery.scala +++ b/akka-persistence/src/main/scala/akka/persistence/AtLeastOnceDelivery.scala @@ -34,7 +34,7 @@ object AtLeastOnceDelivery { * Java API */ def getUnconfirmedDeliveries: java.util.List[UnconfirmedDelivery] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ unconfirmedDeliveries.asJava } @@ -50,7 +50,7 @@ object AtLeastOnceDelivery { * Java API */ def getUnconfirmedDeliveries: java.util.List[UnconfirmedDelivery] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ unconfirmedDeliveries.asJava } } diff --git a/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSM.scala b/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSM.scala index b0e6e2b726..c6536b90a4 100644 --- a/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSM.scala +++ b/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSM.scala @@ -482,6 +482,9 @@ abstract class AbstractPersistentFSM[S <: FSMState, D, E] * Used for identifying domain events during recovery */ def domainEventClass: Class[E] + + // workaround, possibly for https://github.com/scala/bug/issues/11512 + override def receive: Receive = super.receive } /** @@ -490,6 +493,7 @@ abstract class AbstractPersistentFSM[S <: FSMState, D, E] * Persistent Finite State Machine actor abstract base class with FSM Logging * */ +@silent abstract class AbstractPersistentLoggingFSM[S <: FSMState, D, E] extends AbstractPersistentFSM[S, D, E] with LoggingPersistentFSM[S, D, E] diff --git a/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSMBase.scala b/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSMBase.scala index 8785ba09cb..743567464b 100644 --- a/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSMBase.scala +++ b/akka-persistence/src/main/scala/akka/persistence/fsm/PersistentFSMBase.scala @@ -518,6 +518,7 @@ trait PersistentFSMBase[S, D, E] extends Actor with Listeners with ActorLogging * so override that one if `onTermination` shall not be called during * restart. */ + @throws(classOf[Exception]) override def postStop(): Unit = { /* * setting this instance’s state to terminated does no harm during restart diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala b/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala index 41c6fbdafc..d42a6d2f7b 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/EventAdapters.scala @@ -162,14 +162,14 @@ private[akka] object EventAdapters { .to(immutable.Seq) private final def configToMap(config: Config, path: String): Map[String, String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ if (config.hasPath(path)) { config.getConfig(path).root.unwrapped.asScala.toMap.map { case (k, v) => k -> v.toString } } else Map.empty } private final def configToListMap(config: Config, path: String): Map[String, immutable.Seq[String]] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ if (config.hasPath(path)) { config.getConfig(path).root.unwrapped.asScala.toMap.map { case (k, v: util.ArrayList[_]) if v.isInstanceOf[util.ArrayList[_]] => k -> v.asScala.map(_.toString).toList diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/Tagged.scala b/akka-persistence/src/main/scala/akka/persistence/journal/Tagged.scala index 7cc4b9212e..8815f2393f 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/Tagged.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/Tagged.scala @@ -4,7 +4,7 @@ package akka.persistence.journal -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ /** * The journal may support tagging of events that are used by the diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncRecovery.scala b/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncRecovery.scala index 7166212cb8..bff8c7a91f 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncRecovery.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncRecovery.scala @@ -21,7 +21,7 @@ abstract class AsyncRecovery extends SAsyncReplay with AsyncRecoveryPlugin { thi replayCallback: (PersistentRepr) => Unit) = doAsyncReplayMessages(persistenceId, fromSequenceNr, toSequenceNr, max, new Consumer[PersistentRepr] { def accept(p: PersistentRepr) = replayCallback(p) - }).map(Unit.unbox) + }).map(_ => ()) final def asyncReadHighestSequenceNr(persistenceId: String, fromSequenceNr: Long): Future[Long] = doAsyncReadHighestSequenceNr(persistenceId, fromSequenceNr: Long).map(_.longValue) diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncWriteJournal.scala b/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncWriteJournal.scala index 03aca23371..65e429bbce 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncWriteJournal.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/japi/AsyncWriteJournal.scala @@ -5,7 +5,7 @@ package akka.persistence.journal.japi import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.persistence._ import akka.persistence.journal.{ AsyncWriteJournal => SAsyncWriteJournal } import akka.util.ccompat._ @@ -32,5 +32,5 @@ abstract class AsyncWriteJournal extends AsyncRecovery with SAsyncWriteJournal w } final def asyncDeleteMessagesTo(persistenceId: String, toSequenceNr: Long) = - doAsyncDeleteMessagesTo(persistenceId, toSequenceNr).map(Unit.unbox) + doAsyncDeleteMessagesTo(persistenceId, toSequenceNr).map(_ => ()) } diff --git a/akka-persistence/src/main/scala/akka/persistence/journal/leveldb/LeveldbStore.scala b/akka-persistence/src/main/scala/akka/persistence/journal/leveldb/LeveldbStore.scala index c67c33e5cf..d3f8d91fe9 100644 --- a/akka-persistence/src/main/scala/akka/persistence/journal/leveldb/LeveldbStore.scala +++ b/akka-persistence/src/main/scala/akka/persistence/journal/leveldb/LeveldbStore.scala @@ -14,7 +14,7 @@ import akka.serialization.SerializationExtension import org.iq80.leveldb._ import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.util._ import scala.concurrent.Future import scala.util.control.NonFatal @@ -52,8 +52,11 @@ private[persistence] trait LeveldbStore override val compactionIntervals: Map[String, Long] = LeveldbStore.toCompactionIntervalMap(config.getObject("compaction-intervals")) + import com.github.ghik.silencer.silent + @silent private val persistenceIdSubscribers = new mutable.HashMap[String, mutable.Set[ActorRef]] with mutable.MultiMap[String, ActorRef] + @silent private val tagSubscribers = new mutable.HashMap[String, mutable.Set[ActorRef]] with mutable.MultiMap[String, ActorRef] private var allPersistenceIdsSubscribers = Set.empty[ActorRef] diff --git a/akka-persistence/src/main/scala/akka/persistence/serialization/MessageSerializer.scala b/akka-persistence/src/main/scala/akka/persistence/serialization/MessageSerializer.scala index 2ea3c8a3da..9b8b9d74c2 100644 --- a/akka-persistence/src/main/scala/akka/persistence/serialization/MessageSerializer.scala +++ b/akka-persistence/src/main/scala/akka/persistence/serialization/MessageSerializer.scala @@ -113,7 +113,7 @@ class MessageSerializer(val system: ExtendedActorSystem) extends BaseSerializer def atLeastOnceDeliverySnapshot( atLeastOnceDeliverySnapshot: mf.AtLeastOnceDeliverySnapshot): AtLeastOnceDeliverySnapshot = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val unconfirmedDeliveries = new VectorBuilder[UnconfirmedDelivery]() atLeastOnceDeliverySnapshot.getUnconfirmedDeliveriesList().iterator().asScala.foreach { next => unconfirmedDeliveries += UnconfirmedDelivery( @@ -205,7 +205,7 @@ class MessageSerializer(val system: ExtendedActorSystem) extends BaseSerializer } private def atomicWrite(atomicWrite: mf.AtomicWrite): AtomicWrite = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ AtomicWrite(atomicWrite.getPayloadList.asScala.iterator.map(persistent).to(immutable.IndexedSeq)) } diff --git a/akka-persistence/src/main/scala/akka/persistence/snapshot/japi/SnapshotStore.scala b/akka-persistence/src/main/scala/akka/persistence/snapshot/japi/SnapshotStore.scala index e5644ddfa4..51970cdebd 100644 --- a/akka-persistence/src/main/scala/akka/persistence/snapshot/japi/SnapshotStore.scala +++ b/akka-persistence/src/main/scala/akka/persistence/snapshot/japi/SnapshotStore.scala @@ -22,7 +22,7 @@ abstract class SnapshotStore extends SSnapshotStore with SnapshotStorePlugin { doLoadAsync(persistenceId, criteria).map(option) override final def saveAsync(metadata: SnapshotMetadata, snapshot: Any): Future[Unit] = - doSaveAsync(metadata, snapshot).map(Unit.unbox) + doSaveAsync(metadata, snapshot).map(_ => ()) override final def deleteAsync(metadata: SnapshotMetadata): Future[Unit] = doDeleteAsync(metadata).map(_ => ()) diff --git a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/TestMessage.scala b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/TestMessage.scala index 2da9f6c550..fc53ee6ed0 100644 --- a/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/TestMessage.scala +++ b/akka-remote-tests/src/multi-jvm/scala/akka/remote/artery/TestMessage.scala @@ -49,7 +49,7 @@ class TestMessageSerializer(val system: ExtendedActorSystem) extends SerializerW override def fromBinary(bytes: Array[Byte], manifest: String): AnyRef = { val protoMsg = proto.TestMessage.parseFrom(bytes) - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val items = protoMsg.getItemsList.asScala.map { item => TestMessage.Item(item.getId, item.getName) }.toVector diff --git a/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala b/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala index 962e22eb5f..84d149da42 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteDaemon.scala @@ -74,7 +74,7 @@ private[akka] class RemoteSystemDaemon( private val whitelistEnabled = system.settings.config.getBoolean("akka.remote.deployment.enable-whitelist") private val remoteDeploymentWhitelist: immutable.Set[String] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ if (whitelistEnabled) system.settings.config.getStringList("akka.remote.deployment.whitelist").asScala.toSet else Set.empty } diff --git a/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala b/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala index 1bc840231d..15a2c8e9f4 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteSettings.scala @@ -20,7 +20,7 @@ import akka.remote.artery.ArterySettings final class RemoteSettings(val config: Config) { import config._ - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val Artery = ArterySettings(getConfig("akka.remote.artery")) diff --git a/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala b/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala index 8e327e7b87..81a8fbd4a2 100644 --- a/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala +++ b/akka-remote/src/main/scala/akka/remote/RemoteWatcher.scala @@ -116,10 +116,12 @@ private[akka] class RemoteWatcher( } // actors that this node is watching, map of watchee -> Set(watchers) + @silent val watching = new mutable.HashMap[InternalActorRef, mutable.Set[InternalActorRef]]() with mutable.MultiMap[InternalActorRef, InternalActorRef] // nodes that this node is watching, i.e. expecting heartbeats from these nodes. Map of address -> Set(watchee) on this address + @silent val watcheeByNodes = new mutable.HashMap[Address, mutable.Set[InternalActorRef]]() with mutable.MultiMap[Address, InternalActorRef] def watchingNodes = watcheeByNodes.keySet diff --git a/akka-remote/src/main/scala/akka/remote/RemotingLifecycleEvent.scala b/akka-remote/src/main/scala/akka/remote/RemotingLifecycleEvent.scala index a50e146f2d..6cd9b7ddca 100644 --- a/akka-remote/src/main/scala/akka/remote/RemotingLifecycleEvent.scala +++ b/akka-remote/src/main/scala/akka/remote/RemotingLifecycleEvent.scala @@ -61,6 +61,7 @@ final case class AssociationErrorEvent( @SerialVersionUID(1L) final case class RemotingListenEvent(listenAddresses: Set[Address]) extends RemotingLifecycleEvent { + @silent def getListenAddresses: java.util.Set[Address] = scala.collection.JavaConverters.setAsJavaSetConverter(listenAddresses).asJava override def logLevel: Logging.LogLevel = Logging.InfoLevel diff --git a/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala b/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala index b1b8b5b0ca..621d9580f4 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala @@ -6,7 +6,7 @@ package akka.remote.artery import java.net.InetAddress -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.duration._ import akka.NotUsed diff --git a/akka-remote/src/main/scala/akka/remote/artery/RemoteInstrument.scala b/akka-remote/src/main/scala/akka/remote/artery/RemoteInstrument.scala index 4dc0c09768..3f42d2eba8 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/RemoteInstrument.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/RemoteInstrument.scala @@ -330,7 +330,7 @@ private[remote] object RemoteInstruments { def create(system: ExtendedActorSystem, @unused log: LoggingAdapter): Vector[RemoteInstrument] = { val c = system.settings.config val path = "akka.remote.artery.advanced.instruments" - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ c.getStringList(path) .asScala .iterator diff --git a/akka-remote/src/main/scala/akka/remote/artery/compress/InboundCompressions.scala b/akka-remote/src/main/scala/akka/remote/artery/compress/InboundCompressions.scala index 781917187b..b8e72668e3 100644 --- a/akka-remote/src/main/scala/akka/remote/artery/compress/InboundCompressions.scala +++ b/akka-remote/src/main/scala/akka/remote/artery/compress/InboundCompressions.scala @@ -149,7 +149,7 @@ private[remote] final class InboundCompressionsImpl( } override def currentOriginUids: Set[Long] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ // can't use union because of java.lang.Long and Scala Long mismatch, // only used for testing so doesn't matter val result = Set.empty[java.lang.Long] ++ _actorRefsIns.keySet.asScala.iterator ++ diff --git a/akka-remote/src/main/scala/akka/remote/serialization/ArteryMessageSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/ArteryMessageSerializer.scala index 41de9f66da..635227617b 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/ArteryMessageSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/ArteryMessageSerializer.scala @@ -108,7 +108,7 @@ private[akka] final class ArteryMessageSerializer(val system: ExtendedActorSyste s"Manifest '$manifest' not defined for ArteryControlMessageSerializer (serializer id $identifier)") } - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ def serializeQuarantined(quarantined: Quarantined): ArteryControlFormats.Quarantined = ArteryControlFormats.Quarantined diff --git a/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala index 86a7aa7320..994e2f11b6 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/DaemonMsgCreateSerializer.scala @@ -153,7 +153,7 @@ private[akka] final class DaemonMsgCreateSerializer(val system: ExtendedActorSys } def props = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val protoProps = proto.getProps val actorClass = system.dynamicAccess.getClassFor[AnyRef](protoProps.getClazz).get val args: Vector[AnyRef] = diff --git a/akka-remote/src/main/scala/akka/remote/serialization/MessageContainerSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/MessageContainerSerializer.scala index 91713d1e09..093742c6bd 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/MessageContainerSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/MessageContainerSerializer.scala @@ -69,7 +69,7 @@ class MessageContainerSerializer(val system: ExtendedActorSystem) extends BaseSe .deserialize(selectionEnvelope.getEnclosedMessage.toByteArray, selectionEnvelope.getSerializerId, manifest) .get - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val elements: immutable.Iterable[SelectionPathElement] = selectionEnvelope.getPatternList.asScala.iterator .map { x => x.getType match { diff --git a/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala b/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala index f0dd1da1f7..e4cb1421c9 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/MiscMessageSerializer.scala @@ -19,7 +19,7 @@ import akka.routing._ import akka.serialization.{ BaseSerializer, Serialization, SerializationExtension, SerializerWithStringManifest } import com.typesafe.config.{ Config, ConfigFactory, ConfigRenderOptions } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.duration.{ FiniteDuration, TimeUnit } class MiscMessageSerializer(val system: ExtendedActorSystem) extends SerializerWithStringManifest with BaseSerializer { diff --git a/akka-remote/src/main/scala/akka/remote/serialization/ThrowableSupport.scala b/akka-remote/src/main/scala/akka/remote/serialization/ThrowableSupport.scala index c08935cda1..e058708633 100644 --- a/akka-remote/src/main/scala/akka/remote/serialization/ThrowableSupport.scala +++ b/akka-remote/src/main/scala/akka/remote/serialization/ThrowableSupport.scala @@ -70,7 +70,7 @@ private[akka] class ThrowableSupport(system: ExtendedActorSystem) { system.dynamicAccess.createInstanceFor[Throwable](clazz, List(classOf[String] -> protoT.getMessage)).get } - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val stackTrace = protoT.getStackTraceList.asScala.map { elem => val fileName = elem.getFileName diff --git a/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala b/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala index c7e206a2e7..d000061d2a 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/AkkaPduCodec.scala @@ -207,7 +207,7 @@ private[remote] object AkkaPduProtobufCodec extends AkkaPduCodec { val ackAndEnvelope = AckAndEnvelopeContainer.parseFrom(raw.toArray) val ackOption = if (ackAndEnvelope.hasAck) { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ Some( Ack( SeqNo(ackAndEnvelope.getAck.getCumulativeAck), diff --git a/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala b/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala index 7d7376ff66..0d5f182fb8 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/FailureInjectorTransportAdapter.scala @@ -101,9 +101,9 @@ private[remote] class FailureInjectorTransportAdapter( protected def interceptAssociate(remoteAddress: Address, statusPromise: Promise[AssociationHandle]): Unit = { // Association is simulated to be failed if there was either an inbound or outbound message drop - if (shouldDropInbound(remoteAddress, Unit, "interceptAssociate") || shouldDropOutbound( + if (shouldDropInbound(remoteAddress, (), "interceptAssociate") || shouldDropOutbound( remoteAddress, - Unit, + (), "interceptAssociate")) statusPromise.failure(new FailureInjectorException("Simulated failure of association to " + remoteAddress)) else diff --git a/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala b/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala index f7d7c72414..0c7dbbfae8 100644 --- a/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala +++ b/akka-remote/src/main/scala/akka/remote/transport/netty/NettyTransport.scala @@ -71,7 +71,7 @@ object NettyFutureBridge { } def apply(nettyFuture: ChannelGroupFuture): Future[ChannelGroup] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val p = Promise[ChannelGroup] nettyFuture.addListener(new ChannelGroupFutureListener { def operationComplete(future: ChannelGroupFuture): Unit = diff --git a/akka-remote/src/test/scala/akka/remote/DaemonicSpec.scala b/akka-remote/src/test/scala/akka/remote/DaemonicSpec.scala index 81520eee10..765e5af22e 100644 --- a/akka-remote/src/test/scala/akka/remote/DaemonicSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/DaemonicSpec.scala @@ -11,7 +11,7 @@ import akka.actor.{ ActorSystem, Address } import akka.util.ccompat._ import com.typesafe.config.ConfigFactory -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ @ccompatUsedUntil213 class DaemonicSpec extends AkkaSpec { diff --git a/akka-remote/src/test/scala/akka/remote/classic/RemoteInitErrorSpec.scala b/akka-remote/src/test/scala/akka/remote/classic/RemoteInitErrorSpec.scala index 1a09383fa6..6e51844665 100644 --- a/akka-remote/src/test/scala/akka/remote/classic/RemoteInitErrorSpec.scala +++ b/akka-remote/src/test/scala/akka/remote/classic/RemoteInitErrorSpec.scala @@ -9,7 +9,7 @@ import com.typesafe.config.ConfigFactory import org.scalatest.concurrent.Eventually._ import org.scalatest.{ Matchers, WordSpec } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.mutable.Set import scala.concurrent.duration._ import scala.language.postfixOps diff --git a/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala b/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala index 448ce18415..e13749b514 100644 --- a/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala +++ b/akka-slf4j/src/main/scala/akka/event/slf4j/Slf4jLogger.scala @@ -89,12 +89,12 @@ class Slf4jLogger extends Actor with SLF4JLogging with RequiresMessageQueue[Logg case event @ Info(logSource, logClass, message) => withMdc(logSource, event) { - Logger(logClass, logSource).info(markerIfPresent(event), "{}", message.asInstanceOf[AnyRef]) + Logger(logClass, logSource).info(markerIfPresent(event), "{}", message: Any) } case event @ Debug(logSource, logClass, message) => withMdc(logSource, event) { - Logger(logClass, logSource).debug(markerIfPresent(event), "{}", message.asInstanceOf[AnyRef]) + Logger(logClass, logSource).debug(markerIfPresent(event), "{}", message: Any) } case InitializeLogger(_) => diff --git a/akka-stream-tests/src/test/scala/akka/stream/scaladsl/SinkSpec.scala b/akka-stream-tests/src/test/scala/akka/stream/scaladsl/SinkSpec.scala index 99f86cb85a..a75c9c9c87 100644 --- a/akka-stream-tests/src/test/scala/akka/stream/scaladsl/SinkSpec.scala +++ b/akka-stream-tests/src/test/scala/akka/stream/scaladsl/SinkSpec.scala @@ -360,7 +360,7 @@ class SinkSpec extends StreamSpec with DefaultTimeout with ScalaFutures { result.map(println)(system.dispatcher) // 55 //#reduce-operator-example - assert(result.futureValue == (1 to 10 sum)) + assert(result.futureValue == (1 to 10).sum) } } diff --git a/akka-stream/src/main/scala/akka/stream/Attributes.scala b/akka-stream/src/main/scala/akka/stream/Attributes.scala index 2421c2e834..1eb56e0f5c 100644 --- a/akka-stream/src/main/scala/akka/stream/Attributes.scala +++ b/akka-stream/src/main/scala/akka/stream/Attributes.scala @@ -201,7 +201,7 @@ final case class Attributes(attributeList: List[Attributes.Attribute] = Nil) { * `get` to get the most specific attribute value. */ def getAttributeList(): java.util.List[Attribute] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ attributeList.asJava } diff --git a/akka-stream/src/main/scala/akka/stream/Shape.scala b/akka-stream/src/main/scala/akka/stream/Shape.scala index 0a8e9c28a5..27758529d6 100644 --- a/akka-stream/src/main/scala/akka/stream/Shape.scala +++ b/akka-stream/src/main/scala/akka/stream/Shape.scala @@ -6,7 +6,7 @@ package akka.stream import akka.util.Collections.EmptyImmutableSeq import scala.collection.immutable -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.annotation.unchecked.uncheckedVariance import akka.annotation.InternalApi diff --git a/akka-stream/src/main/scala/akka/stream/impl/ActorRefBackpressureSource.scala b/akka-stream/src/main/scala/akka/stream/impl/ActorRefBackpressureSource.scala index 3933e693fe..2020f66173 100644 --- a/akka-stream/src/main/scala/akka/stream/impl/ActorRefBackpressureSource.scala +++ b/akka-stream/src/main/scala/akka/stream/impl/ActorRefBackpressureSource.scala @@ -48,9 +48,9 @@ private object ActorRefBackpressureSource { inheritedAttributes.get[Attributes.Name].map(_.n).getOrElse(super.stageActorName) val ref: ActorRef = getEagerStageActor(eagerMaterializer, poisonPillCompatibility = false) { - case (_, m) if failureMatcher.isDefinedAt(m) ⇒ + case (_, m) if failureMatcher.isDefinedAt(m) => failStage(failureMatcher(m)) - case (_, m) if completionMatcher.isDefinedAt(m) ⇒ + case (_, m) if completionMatcher.isDefinedAt(m) => completionMatcher(m) match { case CompletionStrategy.Draining => isCompleting = true @@ -58,7 +58,7 @@ private object ActorRefBackpressureSource { case CompletionStrategy.Immediately => completeStage() } - case e: (ActorRef, T) @unchecked ⇒ + case e: (ActorRef, T) @unchecked => if (element.isDefined) { failStage(new IllegalStateException("Received new element before ack was signaled back")) } else { diff --git a/akka-stream/src/main/scala/akka/stream/impl/fusing/StreamOfStreams.scala b/akka-stream/src/main/scala/akka/stream/impl/fusing/StreamOfStreams.scala index a471f4cb50..aca0db4726 100644 --- a/akka-stream/src/main/scala/akka/stream/impl/fusing/StreamOfStreams.scala +++ b/akka-stream/src/main/scala/akka/stream/impl/fusing/StreamOfStreams.scala @@ -23,7 +23,7 @@ import scala.util.control.NonFatal import scala.annotation.tailrec import akka.stream.impl.{ Buffer => BufferImpl } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.stream.impl.TraversalBuilder import akka.stream.impl.fusing.GraphStages.SingleSource @@ -299,7 +299,7 @@ import akka.stream.impl.fusing.GraphStages.SingleSource private def tryCancel(): Boolean = // if there's no active substreams or there's only one but it's not been pushed yet - if (activeSubstreamsMap.isEmpty || (activeSubstreamsMap.size == substreamWaitingToBePushed.size)) { + if (activeSubstreamsMap.isEmpty || (activeSubstreamsMap.size == 1 && substreamWaitingToBePushed.isDefined)) { completeStage() true } else false diff --git a/akka-stream/src/main/scala/akka/stream/impl/io/FileSubscriber.scala b/akka-stream/src/main/scala/akka/stream/impl/io/FileSubscriber.scala index 123b0c41d0..bbca647c03 100644 --- a/akka-stream/src/main/scala/akka/stream/impl/io/FileSubscriber.scala +++ b/akka-stream/src/main/scala/akka/stream/impl/io/FileSubscriber.scala @@ -15,7 +15,7 @@ import akka.stream.actor.{ ActorSubscriberMessage, WatermarkRequestStrategy } import akka.util.ByteString import com.github.ghik.silencer.silent -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.Promise import scala.util.{ Failure, Success, Try } diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/FileIO.scala b/akka-stream/src/main/scala/akka/stream/javadsl/FileIO.scala index 877b435bfe..79df76eaed 100644 --- a/akka-stream/src/main/scala/akka/stream/javadsl/FileIO.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/FileIO.scala @@ -12,7 +12,7 @@ import java.util.concurrent.CompletionStage import akka.stream.{ javadsl, scaladsl, IOResult } import akka.util.ByteString -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ /** * Java API: Factories to create sinks and sources from files diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/Flow.scala b/akka-stream/src/main/scala/akka/stream/javadsl/Flow.scala index b1c8441993..b9c11f07e7 100755 --- a/akka-stream/src/main/scala/akka/stream/javadsl/Flow.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/Flow.scala @@ -298,7 +298,7 @@ object Flow { /** Create a `Flow` which can process elements of type `T`. */ final class Flow[In, Out, Mat](delegate: scaladsl.Flow[In, Out, Mat]) extends Graph[FlowShape[In, Out], Mat] { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ override def shape: FlowShape[In, Out] = delegate.shape override def traversalBuilder = delegate.traversalBuilder diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/FlowWithContext.scala b/akka-stream/src/main/scala/akka/stream/javadsl/FlowWithContext.scala index 90fa46f016..66efef46ce 100644 --- a/akka-stream/src/main/scala/akka/stream/javadsl/FlowWithContext.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/FlowWithContext.scala @@ -11,7 +11,7 @@ import akka.event.LoggingAdapter import akka.util.ConstantFun import scala.annotation.unchecked.uncheckedVariance -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import java.util.concurrent.CompletionStage import scala.compat.java8.FutureConverters._ diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/Graph.scala b/akka-stream/src/main/scala/akka/stream/javadsl/Graph.scala index a8083f41e3..2d41cdb5ea 100644 --- a/akka-stream/src/main/scala/akka/stream/javadsl/Graph.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/Graph.scala @@ -12,7 +12,7 @@ import akka.japi.{ function, Pair } import akka.util.ConstantFun import scala.annotation.unchecked.uncheckedVariance -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import akka.stream.scaladsl.GenericGraph import akka.util.unused @@ -457,7 +457,7 @@ object ZipN { */ object ZipWithN { def create[A, O](zipper: function.Function[java.util.List[A], O], n: Int): Graph[UniformFanInShape[A, O], NotUsed] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ scaladsl.ZipWithN[A, O](seq => zipper.apply(seq.asJava))(n) } } diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/MergeLatest.scala b/akka-stream/src/main/scala/akka/stream/javadsl/MergeLatest.scala index 71761bdf24..767a05815c 100644 --- a/akka-stream/src/main/scala/akka/stream/javadsl/MergeLatest.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/MergeLatest.scala @@ -7,7 +7,7 @@ package akka.stream.javadsl import akka.stream.stage.GraphStage import akka.stream.{ scaladsl, UniformFanInShape } -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ /** * MergeLatest joins elements from N input streams into stream of lists of size N. diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/Sink.scala b/akka-stream/src/main/scala/akka/stream/javadsl/Sink.scala index 7976d1a651..ad01a49e1a 100644 --- a/akka-stream/src/main/scala/akka/stream/javadsl/Sink.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/Sink.scala @@ -198,7 +198,7 @@ object Sink { * If there is a failure signaled in the stream the `CompletionStage` will be completed with failure. */ def takeLast[In](n: Int): Sink[In, CompletionStage[java.util.List[In]]] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ new Sink( scaladsl.Sink .takeLast[In](n) @@ -216,7 +216,7 @@ object Sink { * See also [[Flow.limit]], [[Flow.limitWeighted]], [[Flow.take]], [[Flow.takeWithin]], [[Flow.takeWhile]] */ def seq[In]: Sink[In, CompletionStage[java.util.List[In]]] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ new Sink( scaladsl.Sink .seq[In] @@ -303,7 +303,7 @@ object Sink { output2: Sink[U, _], rest: java.util.List[Sink[U, _]], strategy: function.Function[java.lang.Integer, Graph[UniformFanOutShape[T, U], NotUsed]]): Sink[T, NotUsed] = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val seq = if (rest != null) rest.asScala.map(_.asScala).toSeq else immutable.Seq() new Sink(scaladsl.Sink.combine(output1.asScala, output2.asScala, seq: _*)(num => strategy.apply(num))) } diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala b/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala index 0ded76645d..79b614e61b 100755 --- a/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/Source.scala @@ -19,7 +19,7 @@ import akka.{ Done, NotUsed } import org.reactivestreams.{ Publisher, Subscriber } import scala.annotation.unchecked.uncheckedVariance -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.collection.immutable import scala.concurrent.duration.FiniteDuration import scala.concurrent.{ Future, Promise } @@ -141,9 +141,6 @@ object Source { // but there is not anything we can do to prevent that from happening. // ConcurrentModificationException will be thrown in some cases. val scalaIterable = new immutable.Iterable[O] { - - import collection.JavaConverters._ - override def iterator: Iterator[O] = iterable.iterator().asScala } new Source(scaladsl.Source(scalaIterable)) @@ -560,7 +557,7 @@ object Source { */ final class Source[Out, Mat](delegate: scaladsl.Source[Out, Mat]) extends Graph[SourceShape[Out], Mat] { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ override def shape: SourceShape[Out] = delegate.shape diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/SourceWithContext.scala b/akka-stream/src/main/scala/akka/stream/javadsl/SourceWithContext.scala index 888a85f130..45218aef86 100644 --- a/akka-stream/src/main/scala/akka/stream/javadsl/SourceWithContext.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/SourceWithContext.scala @@ -10,7 +10,7 @@ import akka.event.LoggingAdapter import akka.util.ConstantFun import scala.annotation.unchecked.uncheckedVariance -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import java.util.concurrent.CompletionStage import scala.compat.java8.FutureConverters._ diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/SubFlow.scala b/akka-stream/src/main/scala/akka/stream/javadsl/SubFlow.scala index 740ee8d762..0db2fdb5f3 100755 --- a/akka-stream/src/main/scala/akka/stream/javadsl/SubFlow.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/SubFlow.scala @@ -11,7 +11,7 @@ import akka.stream._ import akka.util.ConstantFun import akka.util.JavaDurationConverters._ -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.annotation.unchecked.uncheckedVariance import scala.concurrent.duration.FiniteDuration import akka.japi.Util diff --git a/akka-stream/src/main/scala/akka/stream/javadsl/SubSource.scala b/akka-stream/src/main/scala/akka/stream/javadsl/SubSource.scala index dc1438f4ba..e7f800b1c7 100755 --- a/akka-stream/src/main/scala/akka/stream/javadsl/SubSource.scala +++ b/akka-stream/src/main/scala/akka/stream/javadsl/SubSource.scala @@ -11,7 +11,7 @@ import akka.stream._ import akka.util.ConstantFun import akka.util.JavaDurationConverters._ -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.annotation.unchecked.uncheckedVariance import scala.concurrent.duration.FiniteDuration import java.util.Comparator diff --git a/akka-stream/src/main/scala/akka/stream/stage/GraphStage.scala b/akka-stream/src/main/scala/akka/stream/stage/GraphStage.scala index 080d3fe466..61160b9f34 100644 --- a/akka-stream/src/main/scala/akka/stream/stage/GraphStage.scala +++ b/akka-stream/src/main/scala/akka/stream/stage/GraphStage.scala @@ -742,7 +742,7 @@ abstract class GraphStageLogic private[stream] (val inCount: Int, val outCount: andThen: Procedure[java.util.List[T]], onClose: Procedure[java.util.List[T]]): Unit = { //FIXME `onClose` is a poor name for `onComplete` rename this at the earliest possible opportunity - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ readN(in, n)(seq => andThen(seq.asJava), seq => onClose(seq.asJava)) } @@ -852,7 +852,7 @@ abstract class GraphStageLogic private[stream] (val inCount: Int, val outCount: * signal. */ final protected def emitMultiple[T](out: Outlet[T], elems: java.util.Iterator[T]): Unit = { - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ emitMultiple(out, elems.asScala, DoNothing) } @@ -865,7 +865,7 @@ abstract class GraphStageLogic private[stream] (val inCount: Int, val outCount: * signal. */ final protected def emitMultiple[T](out: Outlet[T], elems: java.util.Iterator[T], andThen: Effect): Unit = { - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ emitMultiple(out, elems.asScala, andThen.apply _) } diff --git a/akka-testkit/src/main/scala/akka/testkit/ExplicitlyTriggeredScheduler.scala b/akka-testkit/src/main/scala/akka/testkit/ExplicitlyTriggeredScheduler.scala index e20e068d20..3117dd6d80 100644 --- a/akka-testkit/src/main/scala/akka/testkit/ExplicitlyTriggeredScheduler.scala +++ b/akka-testkit/src/main/scala/akka/testkit/ExplicitlyTriggeredScheduler.scala @@ -9,7 +9,7 @@ import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.atomic.AtomicLong import scala.annotation.tailrec -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.ExecutionContext import scala.concurrent.duration.{ Duration, FiniteDuration } import scala.util.Try diff --git a/akka-testkit/src/main/scala/akka/testkit/TestKit.scala b/akka-testkit/src/main/scala/akka/testkit/TestKit.scala index e89ee0343c..db8986eb58 100644 --- a/akka-testkit/src/main/scala/akka/testkit/TestKit.scala +++ b/akka-testkit/src/main/scala/akka/testkit/TestKit.scala @@ -131,7 +131,7 @@ class TestActor(queue: BlockingDeque[TestActor.Message]) extends Actor { } override def postStop() = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ queue.asScala.foreach { m => context.system.deadLetters.tell(DeadLetter(m.msg, m.sender, self), m.sender) } diff --git a/akka-testkit/src/main/scala/akka/testkit/javadsl/TestKit.scala b/akka-testkit/src/main/scala/akka/testkit/javadsl/TestKit.scala index f02c05c7bf..d0d66bf2d4 100644 --- a/akka-testkit/src/main/scala/akka/testkit/javadsl/TestKit.scala +++ b/akka-testkit/src/main/scala/akka/testkit/javadsl/TestKit.scala @@ -12,7 +12,7 @@ import akka.testkit.{ TestActor, TestDuration, TestProbe } import akka.util.JavaDurationConverters._ import scala.annotation.varargs -import scala.collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import scala.concurrent.duration._ /** diff --git a/akka-testkit/src/test/scala/akka/testkit/AkkaSpec.scala b/akka-testkit/src/test/scala/akka/testkit/AkkaSpec.scala index e8a8e6aa07..8c9aff012a 100644 --- a/akka-testkit/src/test/scala/akka/testkit/AkkaSpec.scala +++ b/akka-testkit/src/test/scala/akka/testkit/AkkaSpec.scala @@ -40,7 +40,7 @@ object AkkaSpec { """) def mapToConfig(map: Map[String, Any]): Config = { - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ ConfigFactory.parseMap(map.asJava) } diff --git a/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala b/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala index 50c753a083..6187473bcd 100644 --- a/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala +++ b/akka-testkit/src/test/scala/akka/testkit/AkkaSpecSpec.scala @@ -35,7 +35,7 @@ class AkkaSpecSpec extends WordSpec with Matchers { "terminate all actors" in { // verbose config just for demonstration purposes, please leave in in case of debugging - import scala.collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ val conf = Map( "akka.actor.debug.lifecycle" -> true, "akka.actor.debug.event-stream" -> true, diff --git a/akka-testkit/src/test/scala/akka/testkit/metrics/FileDescriptorMetricSet.scala b/akka-testkit/src/test/scala/akka/testkit/metrics/FileDescriptorMetricSet.scala index 18eba23dab..5d069c5eaa 100644 --- a/akka-testkit/src/test/scala/akka/testkit/metrics/FileDescriptorMetricSet.scala +++ b/akka-testkit/src/test/scala/akka/testkit/metrics/FileDescriptorMetricSet.scala @@ -5,7 +5,7 @@ package akka.testkit.metrics import java.util -import collection.JavaConverters._ +import akka.util.ccompat.JavaConverters._ import java.lang.management.{ ManagementFactory, OperatingSystemMXBean } import com.codahale.metrics.{ Gauge, Metric, MetricSet } import com.codahale.metrics.MetricRegistry._ diff --git a/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKit.scala b/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKit.scala index 99a8a0ce0f..0e5e64ce04 100644 --- a/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKit.scala +++ b/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKit.scala @@ -29,7 +29,7 @@ private[akka] trait MetricsKit extends MetricsKitOps { this: Notifying => import MetricsKit._ - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ private var reporters: List[ScheduledReporter] = Nil @@ -148,7 +148,7 @@ private[akka] trait MetricsKit extends MetricsKitOps { } private[metrics] def getOrRegister[M <: Metric](key: String, metric: => M)(implicit tag: ClassTag[M]): M = { - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ registry.getMetrics.asScala.find(_._1 == key).map(_._2) match { case Some(existing: M) => existing case Some(_) => @@ -192,7 +192,7 @@ trait AkkaMetricRegistry { def getHdrHistograms = filterFor(classOf[HdrHistogram]) def getAveragingGauges = filterFor(classOf[AveragingGauge]) - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ private def filterFor[T](clazz: Class[T]): mutable.Iterable[(String, T)] = for { (key, metric) <- getMetrics.asScala diff --git a/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKitOps.scala b/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKitOps.scala index 45d51e14c8..f75d715b52 100644 --- a/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKitOps.scala +++ b/akka-testkit/src/test/scala/akka/testkit/metrics/MetricsKitOps.scala @@ -100,7 +100,7 @@ private[metrics] trait MetricsPrefix extends MetricSet { abstract override def getMetrics: util.Map[String, Metric] = { // does not have to be fast, is only called once during registering registry - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ (super.getMetrics.asScala.map { case (k, v) => (prefix / k).toString -> v }).asJava } } diff --git a/akka-testkit/src/test/scala/akka/testkit/metrics/reporter/AkkaConsoleReporter.scala b/akka-testkit/src/test/scala/akka/testkit/metrics/reporter/AkkaConsoleReporter.scala index 55c8d4c2c8..1848f149d0 100644 --- a/akka-testkit/src/test/scala/akka/testkit/metrics/reporter/AkkaConsoleReporter.scala +++ b/akka-testkit/src/test/scala/akka/testkit/metrics/reporter/AkkaConsoleReporter.scala @@ -29,7 +29,7 @@ class AkkaConsoleReporter(registry: AkkaMetricRegistry, verbose: Boolean, output histograms: util.SortedMap[String, Histogram], meters: util.SortedMap[String, Meter], timers: util.SortedMap[String, Timer]): Unit = { - import collection.JavaConverters._ + import akka.util.ccompat.JavaConverters._ // default Metrics types printMetrics(gauges.asScala, printGauge) diff --git a/project/AkkaDisciplinePlugin.scala b/project/AkkaDisciplinePlugin.scala index 03ed15f686..6fff78122c 100644 --- a/project/AkkaDisciplinePlugin.scala +++ b/project/AkkaDisciplinePlugin.scala @@ -40,7 +40,7 @@ object AkkaDisciplinePlugin extends AutoPlugin with ScalafixSupport { Seq(coverageMinimum := 70, coverageFailOnMinimum := false, coverageOutputHTML := true, coverageHighlighting := true) lazy val silencerSettings = { - val silencerVersion = "1.3.1" + val silencerVersion = "1.3.3" Seq( libraryDependencies ++= Seq( compilerPlugin("com.github.ghik" %% "silencer-plugin" % silencerVersion), diff --git a/project/Dependencies.scala b/project/Dependencies.scala index b78ebdfdb5..ccf88d35fc 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -13,23 +13,35 @@ object Dependencies { lazy val scalaTestVersion = settingKey[String]("The version of ScalaTest to use.") lazy val scalaCheckVersion = settingKey[String]("The version of ScalaCheck to use.") lazy val java8CompatVersion = settingKey[String]("The version of scala-java8-compat to use.") + lazy val sslConfigVersion = settingKey[String]("The version of ssl-config to use.") val junitVersion = "4.12" - val sslConfigVersion = "0.3.7" val slf4jVersion = "1.7.25" val scalaXmlVersion = "1.0.6" val aeronVersion = "1.15.1" val Versions = Seq( - crossScalaVersions := Seq("2.12.8", "2.13.0-M5"), + crossScalaVersions := Seq("2.12.8", "2.13.0-RC2"), scalaVersion := System.getProperty("akka.build.scalaVersion", crossScalaVersions.value.head), scalaCheckVersion := sys.props.get("akka.build.scalaCheckVersion").getOrElse("1.14.0"), - scalaTestVersion := "3.0.7", + scalaTestVersion := { + CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, n)) if n >= 13 => "3.0.8-RC4" + case _ => "3.0.7" + } + }, java8CompatVersion := { CrossVersion.partialVersion(scalaVersion.value) match { + // java8-compat is only used in a couple of places for 2.13, + // it is probably possible to remove the dependency if needed. case Some((2, n)) if n >= 13 => "0.9.0" case _ => "0.8.0" } - }) + }, + sslConfigVersion := { + CrossVersion.partialVersion(scalaVersion.value) match { + case Some((2, n)) if n >= 13 => "0.4.0" + case _ => "0.3.7" + }}) object Compile { // Compile @@ -54,7 +66,7 @@ object Dependencies { val reactiveStreams = "org.reactivestreams" % "reactive-streams" % "1.0.2" // CC0 // ssl-config - val sslConfigCore = "com.typesafe" %% "ssl-config-core" % sslConfigVersion // ApacheV2 + val sslConfigCore = Def.setting { "com.typesafe" %% "ssl-config-core" % sslConfigVersion.value } // ApacheV2 val lmdb = "org.lmdbjava" % "lmdbjava" % "0.6.1" // ApacheV2, OpenLDAP Public License @@ -67,7 +79,7 @@ object Dependencies { val aeronClient = "io.aeron" % "aeron-client" % aeronVersion // ApacheV2 object Docs { - val sprayJson = "io.spray" %% "spray-json" % "1.3.4" % "test" + val sprayJson = "io.spray" %% "spray-json" % "1.3.5" % "test" val gson = "com.google.code.gson" % "gson" % "2.8.5" % "test" } @@ -213,7 +225,7 @@ object Dependencies { // akka stream - lazy val stream = l ++= Seq[sbt.ModuleID](reactiveStreams, sslConfigCore, Test.scalatest.value) + lazy val stream = l ++= Seq[sbt.ModuleID](reactiveStreams, sslConfigCore.value, Test.scalatest.value) lazy val streamTestkit = l ++= Seq(Test.scalatest.value, Test.scalacheck.value, Test.junit)