Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to Scala 2.13 #25190

Merged
merged 12 commits into from
Aug 31, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import play.api.libs.ws.WSClient
import play.api.mvc.{Action, AnyContent, BaseController, ControllerComponents}
import tools.LoadBalancer

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.Future
import scala.concurrent.duration._
import scala.util.Random
Expand Down
3 changes: 2 additions & 1 deletion admin/app/dfp/DfpApi.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package dfp
// https://developers.google.com/ad-manager/api/pqlreference
import com.google.api.ads.admanager.axis.utils.v202108.StatementBuilder
import com.google.api.ads.admanager.axis.v202108._
import com.madgag.scala.collection.decorators.MapDecorator
import common.GuLogging
import common.dfp._
import org.joda.time.DateTime
Expand Down Expand Up @@ -31,7 +32,7 @@ class DfpApi(dataMapper: DataMapper, dataValidation: DataValidation) extends GuL
// item, potentially making one API call per lineitem.
val validatedLineItems = lineItems
.groupBy(Function.tupled(dataValidation.isGuLineItemValid))
.mapValues(_.map(_._1))
.mapV(_.map(_._1))

DfpLineItems(
validItems = validatedLineItems.getOrElse(true, Nil),
Expand Down
2 changes: 1 addition & 1 deletion admin/app/dfp/SessionWrapper.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import common.GuLogging
import conf.{AdminConfiguration, Configuration}
import dfp.Reader.read
import dfp.SessionLogger.{logAroundCreate, logAroundPerform, logAroundRead, logAroundReadSingle}
import collection.JavaConverters._
import scala.jdk.CollectionConverters._

import scala.util.control.NonFatal

Expand Down
3 changes: 1 addition & 2 deletions admin/app/football/model/PA.scala
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package football.model

import pa.{Season, Team}
import implicits.Collections

import java.time.ZoneId

object PA extends Collections {
object PA {

val competitionNames = Map[String, String](
("100", "Premier League"),
Expand Down
2 changes: 1 addition & 1 deletion admin/app/jobs/AnalyticsSanityCheckJob.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import model.diagnostics.CloudWatch
import java.time.{LocalDateTime, ZoneId}
import services.{CloudWatchStats, OphanApi}

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.{ExecutionContext, Future}

class AnalyticsSanityCheckJob(ophanApi: OphanApi) extends GuLogging {
Expand Down
5 changes: 3 additions & 2 deletions admin/app/jobs/FastlyCloudwatchLoadJob.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jobs

import com.amazonaws.services.cloudwatch.model.StandardUnit
import com.madgag.scala.collection.decorators.MapDecorator
import common.GuLogging
import metrics.SamplerMetric
import model.diagnostics.CloudWatch
Expand Down Expand Up @@ -61,8 +62,8 @@ class FastlyCloudwatchLoadJob(fastlyStatisticService: FastlyStatisticService) ex
}

val groups = fresh groupBy { _.key }
val timestampsSent = groups mapValues { _ map { _.timestamp } }
timestampsSent mapValues { _.max } foreach {
val timestampsSent = groups mapV { _ map { _.timestamp } }
timestampsSent mapV { _.max } foreach {
case (key, value) =>
latestTimestampsSent.update(key, value)
}
Expand Down
2 changes: 1 addition & 1 deletion admin/app/model/abtests/AbTestJob.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import common.GuLogging
import tools.CloudWatch
import views.support.CamelCase

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.ExecutionContext

object AbTestJob extends GuLogging {
Expand Down
2 changes: 1 addition & 1 deletion admin/app/services/EmailService.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import com.amazonaws.services.simpleemail.model.{Destination => EmailDestination
import common.{AkkaAsync, GuLogging}
import conf.Configuration.aws.mandatoryCredentials

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.duration._
import scala.concurrent.{ExecutionContext, Future, Promise}
import scala.util.control.NonFatal
Expand Down
2 changes: 1 addition & 1 deletion admin/app/tools/AssetMetrics.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import common.{Box, GuLogging}
import org.joda.time.DateTime
import tools.CloudWatch._

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.{ExecutionContext, Future}
import scala.math.BigDecimal
import scala.util.control.NonFatal
Expand Down
2 changes: 1 addition & 1 deletion admin/app/tools/CloudWatch.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import conf.Configuration
import conf.Configuration._
import org.joda.time.DateTime

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.{ExecutionContext, Future}

case class MaximumMetric(metric: GetMetricStatisticsResult) {
Expand Down
2 changes: 1 addition & 1 deletion admin/app/tools/LoadBalancer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package tools
import common.{Box, GuLogging}
import com.amazonaws.services.elasticloadbalancing.AmazonElasticLoadBalancingClient

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

case class LoadBalancer(
id: String,
Expand Down
15 changes: 9 additions & 6 deletions admin/app/tools/charts/charts.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import common.editions.Uk
import org.joda.time.{DateTime, DateTimeZone}
import play.api.libs.json._

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.collection.mutable.{Map => MutableMap}

case class ChartRow[K](rowKey: K, values: Seq[Double])
Expand Down Expand Up @@ -118,9 +118,11 @@ class AwsLineChart(
val dataColumns = labels.tail
val table = new ChartTable(dataColumns)

(dataColumns, charts.toList).zipped.map((column, chart) => {
table.addColumn(column, ChartColumn(chart.getDatapoints.asScala))
})
dataColumns
.lazyZip(charts.toList)
.map((column, chart) => {
table.addColumn(column, ChartColumn(chart.getDatapoints.asScala.toSeq))
})

table.asChartRow(toLabel, toValue)
}
Expand Down Expand Up @@ -158,8 +160,9 @@ class ABDataChart(name: String, ablabels: Seq[String], format: ChartFormat, char
private val dataColumns: Seq[(String, ChartColumn)] = {

// Do not consider any metrics that have less than three data points.
(ablabels.tail, charts.toList).zipped
.map((column, chart) => (column, ChartColumn(chart.getDatapoints.asScala)))
ablabels.tail
.lazyZip(charts.toList)
.map((column, chart) => (column, ChartColumn(chart.getDatapoints.asScala.toSeq)))
.filter { case (label, column) => column.values.length > 3 }
}

Expand Down
2 changes: 1 addition & 1 deletion applications/test/GalleryTemplateTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.DoNotDiscover
import org.scalatest.matchers.should.Matchers

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

@DoNotDiscover class GalleryTemplateTest extends AnyFlatSpec with Matchers with ConfiguredTestSuite {

Expand Down
2 changes: 1 addition & 1 deletion applications/test/IndexFeatureTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.scalatest._
import org.scalatest.featurespec.AnyFeatureSpec
import org.scalatest.matchers.should.Matchers

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

@DoNotDiscover class IndexFeatureTest extends AnyFeatureSpec with GivenWhenThen with Matchers with ConfiguredTestSuite {

Expand Down
2 changes: 1 addition & 1 deletion applications/test/InteractiveTemplateTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.DoNotDiscover
import org.scalatest.matchers.should.Matchers

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

@DoNotDiscover class InteractiveTemplateTest extends AnyFlatSpec with Matchers with ConfiguredTestSuite {

Expand Down
2 changes: 1 addition & 1 deletion applications/test/SectionTemplateTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import org.scalatest.matchers.should.Matchers
import org.scalatest.DoNotDiscover
import play.api.test.TestBrowser

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

@DoNotDiscover class SectionTemplateTest extends AnyFlatSpec with Matchers with ConfiguredTestSuite {

Expand Down
2 changes: 1 addition & 1 deletion applications/test/TagFeatureTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package test
import org.scalatest.{DoNotDiscover, GivenWhenThen}
import services.IndexPagePagination

import collection.JavaConverters._
import scala.jdk.CollectionConverters._
import conf.switches.Switches
import org.fluentlenium.core.domain.{FluentList, FluentWebElement}
import org.scalatest.featurespec.AnyFeatureSpec
Expand Down
2 changes: 1 addition & 1 deletion applications/test/common/CombinerFeatureTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import org.scalatest.matchers.should.Matchers
import org.scalatest.{DoNotDiscover, GivenWhenThen}
import test.ConfiguredTestSuite

import collection.JavaConverters._
import scala.jdk.CollectionConverters._

@DoNotDiscover class CombinerFeatureTest
extends AnyFeatureSpec
Expand Down
2 changes: 1 addition & 1 deletion applications/test/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import java.util.{List => JList}
import org.scalatest.Suites
import services.{FacebookGraphApiTest, IndexPageTest, InteractivePickerTest, NewspaperControllerTest}

import collection.JavaConverters._
import scala.jdk.CollectionConverters._

object `package` {

Expand Down
2 changes: 1 addition & 1 deletion archive/test/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package test
import java.util.{List => JList}
import org.scalatest.Suites

import collection.JavaConverters._
import scala.jdk.CollectionConverters._

object `package` {

Expand Down
5 changes: 3 additions & 2 deletions article/app/services/dotcomponents/ArticlePicker.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package services.dotcomponents

import com.madgag.scala.collection.decorators.MapDecorator
import implicits.Requests._
import model.{ArticlePage, PageWithStoryPackage}
import play.api.mvc.RequestHeader
Expand Down Expand Up @@ -37,7 +38,7 @@ object ArticlePicker {

private[this] def dcrArticle100PercentPage(page: PageWithStoryPackage, request: RequestHeader): Boolean = {
val allowListFeatures = dcrChecks(page, request)
val article100PercentPageFeatures = allowListFeatures.filterKeys(
val article100PercentPageFeatures = allowListFeatures.view.filterKeys(
Set(
"isSupportedType",
"isNotAGallery",
Expand All @@ -63,7 +64,7 @@ object ArticlePicker {
val pageTones = page.article.tags.tones.map(_.id).mkString(", ")

// include features that we wish to log but not allow-list against
val features = checks.mapValues(_.toString) +
val features = checks.mapV(_.toString) +
("isArticle100PercentPage" -> isArticle100PercentPage.toString) +
("dcrCouldRender" -> dcrCanRender.toString) +
("pageTones" -> pageTones)
Expand Down
2 changes: 1 addition & 1 deletion article/app/topics/TopicS3Client.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import services.S3
import topics.S3ObjectImplicits.RichS3Object
import model.TopicsApiResponse._

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.Future
import scala.util.{Failure, Success, Try}

Expand Down
2 changes: 1 addition & 1 deletion article/test/AnalyticsFeatureTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package test

import org.scalatest.{DoNotDiscover, GivenWhenThen}

import collection.JavaConverters._
import scala.jdk.CollectionConverters._
import org.fluentlenium.core.domain.FluentWebElement
import conf.Configuration
import org.scalatest.featurespec.AnyFeatureSpec
Expand Down
1 change: 1 addition & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ val common = library("common")
rome,
romeModules,
scalaCheck,
scalaCollectionPlus,
nScalaTime,
ws,
faciaFapiScalaClient,
Expand Down
1 change: 0 additions & 1 deletion commercial/app/controllers/BookOffersController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class BookOffersController(
) extends BaseController
with ImplicitControllerExecutionContext
with GuLogging
with implicits.Collections
with implicits.Requests {

private def booksSample(isbns: Seq[String], segment: Segment): Seq[Book] =
Expand Down
2 changes: 1 addition & 1 deletion commercial/app/model/hosted/HostedAmp.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package model.hosted
import org.jsoup.Jsoup
import org.jsoup.nodes.Element

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

object HostedAmp {

Expand Down
3 changes: 2 additions & 1 deletion common/app/common/Assets/DiscussionAssets.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package common.Assets

import app.LifecycleComponent
import com.madgag.scala.collection.decorators.MapDecorator
import common.{Box, GuLogging, GuardianConfiguration, JobScheduler}
import conf.switches.Switches
import play.api.libs.ws.{WSClient, WSResponse}
Expand Down Expand Up @@ -106,7 +107,7 @@ object DiscussionAssetsMap {
private lazy val agent = Box[Map[String, String]](Map.empty)

def alter(map: Map[String, String], baseURI: URI): Future[Map[String, String]] = {
agent.alter(map.mapValues(value => baseURI.resolve(value).toString))
agent.alter(map.mapV(value => baseURI.resolve(value).toString))
}

def getURL(assetName: String): String = {
Expand Down
2 changes: 1 addition & 1 deletion common/app/common/GuLogging.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import play.api.Logger
import org.apache.commons.lang.exception.ExceptionUtils
import net.logstash.logback.marker.LogstashMarker
import net.logstash.logback.marker.Markers._
import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.concurrent.{ExecutionContext, Future}
import scala.language.implicitConversions
import scala.util.{Failure, Success, Try}
Expand Down
2 changes: 1 addition & 1 deletion common/app/common/InlineStyles.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import org.w3c.css.sac.InputSource
import org.w3c.dom.css.{CSSRuleList, CSSRule => W3CSSRule}
import play.twirl.api.Html

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.collection.immutable.ListMap
import scala.util.{Failure, Success}

Expand Down
2 changes: 1 addition & 1 deletion common/app/common/LinkTo.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import model.Trail
import org.jsoup.Jsoup
import play.api.mvc.{AnyContent, Request, RequestHeader, Result}
import play.twirl.api.Html
import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

/*
* Builds absolute links to the core site (www.theguardian.com)
Expand Down
2 changes: 1 addition & 1 deletion common/app/common/Properties.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package common

import java.io.{File, FileInputStream, InputStream}

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import java.net.URL
import java.nio.charset.Charset

Expand Down
4 changes: 2 additions & 2 deletions common/app/common/RequestLogger.scala
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ case class RequestLoggerFields(request: Option[RequestHeader], response: Option[
}
.getOrElse(Map.empty[String, String])

val allowListedHeaders = allHeadersFields.filterKeys(allowListedHeaderNames.contains)
val guardianSpecificHeaders = allHeadersFields.filterKeys(_.toUpperCase.startsWith("X-GU-"))
val allowListedHeaders = allHeadersFields.view.filterKeys(allowListedHeaderNames.contains).toMap
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

val guardianSpecificHeaders = allHeadersFields.view.filterKeys(_.toUpperCase.startsWith("X-GU-")).toMap

(allowListedHeaders ++ guardianSpecificHeaders).toList.map {
case (headerName, headerValue) =>
Expand Down
2 changes: 1 addition & 1 deletion common/app/common/SQSQueues.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import com.amazonaws.services.sqs.AmazonSQSAsync
import com.amazonaws.services.sqs.model.{Message => AWSMessage, _}
import play.api.libs.json.{Json, Reads, Writes}

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._
import scala.collection.mutable
import scala.concurrent.{ExecutionContext, Future, Promise}
import scala.util.{Failure, Success}
Expand Down
4 changes: 3 additions & 1 deletion common/app/common/Seqs.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package common

import com.madgag.scala.collection.decorators.MapDecorator

object Seqs {
implicit class RichSeq[A](as: Seq[A]) {
def frequencies: Map[A, Int] = as.groupBy(identity).mapValues(_.length)
def frequencies: Map[A, Int] = as.groupBy(identity).mapV(_.length)

def isDescending(implicit ordering: Ordering[A]): Boolean = as == reverseSorted

Expand Down
2 changes: 1 addition & 1 deletion common/app/common/ShowcaseRSSModules.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import org.joda.time.DateTime
import org.joda.time.format.ISODateTimeFormat

import java.util
import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

class RssAtomModule extends com.sun.syndication.feed.module.Module with Serializable {
override def getUri: String = RssAtomModule.URI
Expand Down
Loading