Skip to content

Commit 4efe129

Browse files
authored
Merge pull request #5 from pjfanning/scala3
scala 3 support
2 parents 3e7aef8 + a703bc4 commit 4efe129

File tree

14 files changed

+1853
-287
lines changed

14 files changed

+1853
-287
lines changed

.github/workflows/ci.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ jobs:
2626
build:
2727
strategy:
2828
matrix:
29-
java: [ '8', '11', '17' ]
30-
os: [ 'ubuntu-latest' ]
29+
os: [ubuntu-latest]
30+
scala: [2.10.7, 2.11.12, 2.12.15, 2.13.7, 3.0.2]
31+
java: ['8', '11', '17']
3132
runs-on: ${{ matrix.os }}
3233
steps:
3334
- uses: actions/checkout@v2
@@ -36,5 +37,16 @@ jobs:
3637
with:
3738
java-version: ${{ matrix.java }}
3839
distribution: 'zulu'
40+
- name: Cache sbt
41+
uses: actions/cache@v2
42+
with:
43+
path: |
44+
~/.sbt
45+
~/.ivy2/cache
46+
~/.coursier/cache/v1
47+
~/.cache/coursier/v1
48+
~/AppData/Local/Coursier/Cache/v1
49+
~/Library/Caches/Coursier/v1
50+
key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }}
3951
- name: Build
40-
run: sbt -batch "+ test"
52+
run: sbt ++${{ matrix.scala }} test

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ target/
1010
velocity.log
1111
felix-cache/
1212
bin/
13+
.bsp/sbt.json

BUILDING.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
Moved to [site docs](./src/asciidoctor/build.adoc).
2020

21+
Install [sbt](https://www.scala-sbt.org/) if you do not have it installed.
22+
2123
Summary:
2224

23-
./sbt "+ publishM2"
25+
sbt "+ publishM2"

build.sbt

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ lazy val metadataSettings = Seq(
5151
lazy val compileSettings = Seq(
5252
scalacOptions := Seq("-feature", "-unchecked", "-deprecation"),
5353
scalaVersion := scala213,
54-
crossScalaVersions := Seq(scala210, scala211, scala212, scala213)
54+
crossScalaVersions := Seq(scala210, scala211, scala212, scala213, scala3)
5555
)
5656

5757
lazy val publishSettings = Seq(
5858
publishMavenStyle := true,
59-
publishArtifact in Test := false,
59+
Test / publishArtifact := false,
6060
publishTo := {
6161
if (isSnapshot.value) {
6262
Some("Apache Snapshots" at "https://repository.apache.org/content/repositories/snapshots")
@@ -82,23 +82,45 @@ lazy val licensePackagingSettings =
8282
)
8383

8484
lazy val sourceSettings = Seq(
85-
unmanagedSourceDirectories in Compile ++= {
86-
(unmanagedSourceDirectories in Compile).value.map { dir =>
85+
Compile / unmanagedSourceDirectories ++= {
86+
(Compile / unmanagedSourceDirectories).value.flatMap { dir =>
8787
CrossVersion.partialVersion(scalaVersion.value) match {
88-
case Some((2, n11)) if n11 >= 11 => file(dir.getPath ++ "-2.11+")
89-
case Some((2, n10)) if n10 <= 10 => file(dir.getPath ++ "-2.10")
88+
case Some((3, _)) => Seq(file(dir.getPath ++ "-3"))
89+
case Some((2, n11)) if n11 >= 11 => Seq(file(dir.getPath ++ "-2"), file(dir.getPath ++ "-2.11+"))
90+
case Some((2, n10)) if n10 <= 10 => Seq(file(dir.getPath ++ "-2"), file(dir.getPath ++ "-2.10"))
9091
}
9192
}
9293
},
93-
unmanagedSourceDirectories in Compile ++= {
94-
(unmanagedSourceDirectories in Compile).value.map { dir =>
94+
Compile / unmanagedSourceDirectories ++= {
95+
(Compile / unmanagedSourceDirectories).value.map { dir =>
96+
CrossVersion.partialVersion(scalaVersion.value) match {
97+
case Some((3, _)) => file(dir.getPath ++ "-2.13+")
98+
case Some((2, n13)) if n13 >= 13 => file(dir.getPath ++ "-2.13+")
99+
case Some((2, n12)) if n12 <= 12 => file(dir.getPath ++ "-2.12-")
100+
}
101+
}
102+
}
103+
)
104+
105+
lazy val testSourceSettings = Seq(
106+
Test / unmanagedSourceDirectories ++= {
107+
(Test / unmanagedSourceDirectories).value.map { dir =>
95108
CrossVersion.partialVersion(scalaVersion.value) match {
109+
case Some((3, _)) => file(dir.getPath ++ "-3")
110+
case Some((2, _)) => file(dir.getPath ++ "-2")
111+
}
112+
}
113+
},
114+
Compile / unmanagedSourceDirectories ++= {
115+
(Compile / unmanagedSourceDirectories).value.map { dir =>
116+
CrossVersion.partialVersion(scalaVersion.value) match {
117+
case Some((3, _)) => file(dir.getPath ++ "-2.13+")
96118
case Some((2, n13)) if n13 >= 13 => file(dir.getPath ++ "-2.13+")
97119
case Some((2, n12)) if n12 <= 12 => file(dir.getPath ++ "-2.12-")
98120
}
99121
}
100122
}
101-
)
123+
)
102124

103125
lazy val releaseSettings = Seq(
104126
releaseCrossBuild := true,
@@ -109,7 +131,7 @@ lazy val releaseSettings = Seq(
109131
checkSnapshotDependencies,
110132
inquireVersions,
111133
runClean,
112-
releaseStepTask(auditCheck in Compile),
134+
releaseStepTask(Compile / auditCheck),
113135
runTest,
114136
setReleaseVersion,
115137
commitReleaseVersion,
@@ -125,20 +147,19 @@ lazy val releaseSettings = Seq(
125147

126148
lazy val siteSettings = Seq(
127149
apiURL := Some(url(s"https://logging.apache.org/log4j/log4j-scala-${version.value}/")),
128-
siteSubdirName in SiteScaladoc := s"api/${scalaBinaryVersion.value}",
129-
managedSources in Asciidoc += {
130-
(auditReport in Compile).value
131-
(target in Compile).value / "rat.adoc"
150+
SiteScaladoc / siteSubdirName := s"api/${scalaBinaryVersion.value}",
151+
Asciidoc / managedSources += {
152+
(Compile / auditReport).value
153+
(Compile / target).value / "rat.adoc"
132154
},
133-
mappings in makeSite ++= Seq(
155+
makeSite / mappings ++= Seq(
134156
(baseDirectory.value / "LICENSE.txt", "LICENSE"),
135157
(baseDirectory.value / "NOTICE.txt", "NOTICE")
136158
)
137159
)
138160

139161
lazy val apiDependencies = Seq(
140-
libraryDependencies ++= Seq(
141-
scalaReflect(scalaVersion.value),
162+
libraryDependencies ++= scalaReflect(scalaVersion.value).toSeq ++ Seq(
142163
osgiCoreApi,
143164
log4jApi,
144165
log4jApiTests,
@@ -165,6 +186,7 @@ lazy val root = (project in file("."))
165186
.settings(publishSettings: _*)
166187
.settings(licensePackagingSettings: _*)
167188
.settings(sourceSettings: _*)
189+
.settings(testSourceSettings: _*)
168190
.settings(releaseSettings: _*)
169191
.settings(siteSettings: _*)
170192
.settings(apiDependencies: _*)
@@ -174,7 +196,7 @@ lazy val nopublish = Seq(
174196
publish := {},
175197
publishLocal := {},
176198
publishM2 := {},
177-
skip in publish := true
199+
publish / skip := true
178200
)
179201

180202
lazy val sample = (project in file("sample"))

project/Dependencies.scala

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@ import sbt._
1919
object Dependencies {
2020
val scala210 = "2.10.7"
2121
val scala211 = "2.11.12"
22-
val scala212 = "2.12.10"
23-
val scala213 = "2.13.1"
22+
val scala212 = "2.12.15"
23+
val scala213 = "2.13.7"
24+
val scala3 = "3.0.2"
2425

25-
def scalaReflect(version: String): ModuleID =
26-
"org.scala-lang" % "scala-reflect" % version
26+
def scalaReflect(version: String) =
27+
if (version.startsWith("3")) None else Some("org.scala-lang" % "scala-reflect" % version)
2728

2829
private val log4jV = "2.17.0"
2930
val osgiCoreApi = "org.osgi" % "org.osgi.core" % "6.0.0" % Provided
3031
val log4jApi = "org.apache.logging.log4j" % "log4j-api" % log4jV
3132
val log4jApiTests = "org.apache.logging.log4j" % "log4j-api" % log4jV % Test classifier "tests"
3233
val log4jCore = "org.apache.logging.log4j" % "log4j-core" % log4jV % Runtime
3334
val junit = "junit" % "junit" % "4.12" % Test
34-
val scalactic = "org.scalactic" %% "scalactic" % "3.2.0-M1" % Compile
35-
val scalatest = "org.scalatest" %% "scalatest" % "3.2.0-M1" % Test
36-
val scalatestFunsuit = "org.scalatest" %% "scalatest-funsuite" % "3.2.0-M1" % Test
37-
val scalatestMatcher = "org.scalatest" %% "scalatest-matchers-core" % "3.2.0-M1" % Test
38-
val scalatestJunit = "org.scalatestplus" %% "scalatestplus-junit" % "1.0.0-M2" % Test
39-
val scalatestMockito = "org.scalatestplus" %% "scalatestplus-mockito" % "1.0.0-M2" % Test
40-
val mockito = "org.mockito" % "mockito-core" % "3.1.0" % Test
35+
val scalactic = "org.scalactic" %% "scalactic" % "3.2.10" % Compile
36+
val scalatest = "org.scalatest" %% "scalatest" % "3.2.10" % Test
37+
val scalatestFunsuit = "org.scalatest" %% "scalatest-funsuite" % "3.2.10" % Test
38+
val scalatestMatcher = "org.scalatest" %% "scalatest-matchers-core" % "3.2.10" % Test
39+
val scalatestJunit = "org.scalatestplus" %% "junit-4-13" % "3.2.10.0" % Test
40+
val scalatestMockito = "org.scalatestplus" %% "mockito-3-12" % "3.2.10.0" % Test
41+
val mockito = "org.mockito" % "mockito-core" % "4.2.0" % Test
4142
}

project/plugins.sbt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.1")
1818
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.8")
1919
addSbtPlugin("com.typesafe.sbt" % "sbt-license-report" % "1.2.0")
2020
addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "1.3.2")
21-
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.0")
2221
addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.9.3")
2322
// for quicker resolutions from Maven Central of new releases, uncomment:
2423
//resolvers += Resolver.sonatypeRepo("public")

src/main/scala-2.10/org/apache/logging/log4j/scala/LoggerMacro.scala

Lines changed: 1 addition & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
*/
1717
package org.apache.logging.log4j.scala
1818

19-
import org.apache.logging.log4j.message.{EntryMessage, Message}
20-
import org.apache.logging.log4j.spi.AbstractLogger
19+
import org.apache.logging.log4j.message.Message
2120
import org.apache.logging.log4j.{Level, Marker}
2221

2322
import scala.language.experimental.macros
@@ -337,89 +336,4 @@ private object LoggerMacro {
337336
}
338337
)
339338

340-
341-
def traceEntry(c: LoggerContext)(): c.Expr[EntryMessage] =
342-
c.universe.reify(
343-
c.prefix.splice.delegate.traceEntry()
344-
)
345-
346-
def traceEntryParams(c: LoggerContext)(params: c.Expr[AnyRef]*): c.Expr[EntryMessage] = {
347-
import c.universe._
348-
val isEnabled = Apply(
349-
Select(Select(c.prefix.tree, newTermName("delegate")), newTermName("isEnabled")),
350-
List(
351-
reify(Level.TRACE).tree,
352-
reify(AbstractLogger.ENTRY_MARKER).tree,
353-
reify(null: AnyRef).tree,
354-
reify(null).tree
355-
)
356-
)
357-
358-
val log = Apply(
359-
Select(Select(c.prefix.tree, newTermName("delegate")), newTermName("traceEntry")),
360-
reify(null: String).tree :: (params map (_.tree)).toList
361-
)
362-
c.Expr[EntryMessage](If(isEnabled, log, reify(null).tree))
363-
}
364-
365-
366-
def traceEntryMessage(c: LoggerContext)(message: c.Expr[Message]): c.Expr[EntryMessage] =
367-
c.universe.reify(
368-
if (c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.ENTRY_MARKER, null: AnyRef, null)) {
369-
c.prefix.splice.delegate.traceEntry(message.splice) // TODO should not do ifEnabled check
370-
} else {
371-
null
372-
}
373-
)
374-
375-
def traceExit(c: LoggerContext)(): c.Expr[Unit] =
376-
c.universe.reify(
377-
c.prefix.splice.delegate.traceExit()
378-
)
379-
380-
def traceExitResult[R: c.WeakTypeTag](c: LoggerContext)(result: c.Expr[R]): c.Expr[R] =
381-
c.universe.reify(
382-
c.prefix.splice.delegate.traceExit(result.splice)
383-
)
384-
385-
def traceExitEntryMessage(c: LoggerContext)(entryMessage: c.Expr[EntryMessage]): c.Expr[Unit] =
386-
c.universe.reify(
387-
c.prefix.splice.delegate.traceExit(entryMessage.splice)
388-
)
389-
390-
def traceExitEntryMessageResult[R: c.WeakTypeTag](c: LoggerContext)(entryMessage: c.Expr[EntryMessage], result: c.Expr[R]): c.Expr[R] =
391-
c.universe.reify(
392-
c.prefix.splice.delegate.traceExit(entryMessage.splice, result.splice)
393-
)
394-
395-
def traceExitMessageResult[R: c.WeakTypeTag](c: LoggerContext)(message: c.Expr[Message], result: c.Expr[R]): c.Expr[R] =
396-
c.universe.reify(
397-
{
398-
if (message.splice != null && c.prefix.splice.delegate.isEnabled(Level.TRACE, AbstractLogger.EXIT_MARKER, message.splice, null)) {
399-
c.prefix.splice.delegate.traceExit(message.splice, result.splice) // TODO should not do ifEnabled check
400-
}
401-
result.splice
402-
}
403-
)
404-
405-
def throwing[T <: Throwable: c.WeakTypeTag](c: LoggerContext)(t: c.Expr[T]): c.Expr[T] =
406-
c.universe.reify(
407-
c.prefix.splice.delegate.throwing(t.splice)
408-
)
409-
410-
def throwingLevel[T <: Throwable: c.WeakTypeTag](c: LoggerContext)(level: c.Expr[Level], t: c.Expr[T]): c.Expr[T] =
411-
c.universe.reify(
412-
c.prefix.splice.delegate.throwing(level.splice, t.splice)
413-
)
414-
415-
def catching(c: LoggerContext)(t: c.Expr[Throwable]): c.Expr[Unit] =
416-
c.universe.reify(
417-
c.prefix.splice.delegate.catching(t.splice)
418-
)
419-
420-
def catchingLevel(c: LoggerContext)(level: c.Expr[Level], t: c.Expr[Throwable]): c.Expr[Unit] =
421-
c.universe.reify(
422-
c.prefix.splice.delegate.catching(level.splice, t.splice)
423-
)
424-
425339
}

0 commit comments

Comments
 (0)