Skip to content

Commit dbb0d5d

Browse files
authored
Merge pull request #399 from kevin-lee/servlet-5-and-6-for-0.22
2 parents 80862e0 + bbdb172 commit dbb0d5d

File tree

68 files changed

+3926
-186
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+3926
-186
lines changed

.github/workflows/ci.yml

Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ jobs:
2929
fail-fast: false
3030
matrix:
3131
os: [ubuntu-22.04]
32-
scala: [2.13, 3]
33-
java: [temurin@8, temurin@11, temurin@17]
32+
scala: [2.12, 2.13, 3]
33+
java: [temurin@11, temurin@17]
3434
project: [rootJVM]
3535
exclude:
36-
- scala: 3
37-
java: temurin@11
36+
- scala: 2.12
37+
java: temurin@17
3838
- scala: 3
3939
java: temurin@17
4040
runs-on: ${{ matrix.os }}
@@ -48,19 +48,6 @@ jobs:
4848
- name: Setup sbt
4949
uses: sbt/setup-sbt@v1
5050

51-
- name: Setup Java (temurin@8)
52-
id: setup-java-temurin-8
53-
if: matrix.java == 'temurin@8'
54-
uses: actions/setup-java@v4
55-
with:
56-
distribution: temurin
57-
java-version: 8
58-
cache: sbt
59-
60-
- name: sbt update
61-
if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
62-
run: sbt +update
63-
6451
- name: Setup Java (temurin@11)
6552
id: setup-java-temurin-11
6653
if: matrix.java == 'temurin@11'
@@ -91,35 +78,35 @@ jobs:
9178
run: sbt githubWorkflowCheck
9279

9380
- name: Check headers and formatting
94-
if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
81+
if: matrix.java == 'temurin@11' && matrix.os == 'ubuntu-22.04'
9582
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' headerCheckAll scalafmtCheckAll 'project /' scalafmtSbtCheck
9683

9784
- name: Test
9885
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' test
9986

10087
- name: Check binary compatibility
101-
if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
88+
if: matrix.java == 'temurin@11' && matrix.os == 'ubuntu-22.04'
10289
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' mimaReportBinaryIssues
10390

10491
- name: Generate API documentation
105-
if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
92+
if: matrix.java == 'temurin@11' && matrix.os == 'ubuntu-22.04'
10693
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' doc
10794

10895
- name: Check scalafix lints
109-
if: matrix.java == 'temurin@8' && !startsWith(matrix.scala, '3')
96+
if: matrix.java == 'temurin@11' && !startsWith(matrix.scala, '3')
11097
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' 'scalafixAll --check'
11198

11299
- name: Check unused compile dependencies
113-
if: matrix.java == 'temurin@8'
100+
if: matrix.java == 'temurin@11'
114101
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' unusedCompileDependenciesTest
115102

116103
- name: Make target directories
117104
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
118-
run: mkdir -p servlet/target project/target
105+
run: mkdir -p servlet4/target servlet6/target servlet5/target project/target
119106

120107
- name: Compress target directories
121108
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
122-
run: tar cf targets.tar servlet/target project/target
109+
run: tar cf targets.tar servlet4/target servlet6/target servlet5/target project/target
123110

124111
- name: Upload target directories
125112
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
@@ -135,7 +122,7 @@ jobs:
135122
strategy:
136123
matrix:
137124
os: [ubuntu-22.04]
138-
java: [temurin@8]
125+
java: [temurin@11]
139126
runs-on: ${{ matrix.os }}
140127
steps:
141128
- name: Checkout current branch (full)
@@ -146,19 +133,6 @@ jobs:
146133
- name: Setup sbt
147134
uses: sbt/setup-sbt@v1
148135

149-
- name: Setup Java (temurin@8)
150-
id: setup-java-temurin-8
151-
if: matrix.java == 'temurin@8'
152-
uses: actions/setup-java@v4
153-
with:
154-
distribution: temurin
155-
java-version: 8
156-
cache: sbt
157-
158-
- name: sbt update
159-
if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
160-
run: sbt +update
161-
162136
- name: Setup Java (temurin@11)
163137
id: setup-java-temurin-11
164138
if: matrix.java == 'temurin@11'
@@ -185,6 +159,16 @@ jobs:
185159
if: matrix.java == 'temurin@17' && steps.setup-java-temurin-17.outputs.cache-hit == 'false'
186160
run: sbt +update
187161

162+
- name: Download target directories (2.12, rootJVM)
163+
uses: actions/download-artifact@v4
164+
with:
165+
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12-rootJVM
166+
167+
- name: Inflate target directories (2.12, rootJVM)
168+
run: |
169+
tar xf targets.tar
170+
rm targets.tar
171+
188172
- name: Download target directories (2.13, rootJVM)
189173
uses: actions/download-artifact@v4
190174
with:
@@ -235,7 +219,7 @@ jobs:
235219
strategy:
236220
matrix:
237221
os: [ubuntu-22.04]
238-
java: [temurin@8]
222+
java: [temurin@11]
239223
runs-on: ${{ matrix.os }}
240224
steps:
241225
- name: Checkout current branch (full)
@@ -246,19 +230,6 @@ jobs:
246230
- name: Setup sbt
247231
uses: sbt/setup-sbt@v1
248232

249-
- name: Setup Java (temurin@8)
250-
id: setup-java-temurin-8
251-
if: matrix.java == 'temurin@8'
252-
uses: actions/setup-java@v4
253-
with:
254-
distribution: temurin
255-
java-version: 8
256-
cache: sbt
257-
258-
- name: sbt update
259-
if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
260-
run: sbt +update
261-
262233
- name: Setup Java (temurin@11)
263234
id: setup-java-temurin-11
264235
if: matrix.java == 'temurin@11'
@@ -288,5 +259,5 @@ jobs:
288259
- name: Submit Dependencies
289260
uses: scalacenter/sbt-dependency-submission@v2
290261
with:
291-
modules-ignore: rootjs_2.13 rootjs_3 testing_2.13 testing_3 rootjvm_2.13 rootjvm_3 rootnative_2.13 rootnative_3 sbt-http4s-org-scalafix-internal_2.13 sbt-http4s-org-scalafix-internal_3
262+
modules-ignore: http4s-servlet-examples-servlet5_2.12 http4s-servlet-examples-servlet5_2.13 http4s-servlet-examples-servlet5_3 rootjs_2.12 rootjs_2.13 rootjs_3 http4s-servlet-examples-servlet6_2.12 http4s-servlet-examples-servlet6_2.13 http4s-servlet-examples-servlet6_3 http4s-testing_2.12 http4s-testing_2.13 http4s-testing_3 rootjvm_2.12 rootjvm_2.13 rootjvm_3 rootnative_2.12 rootnative_2.13 rootnative_3 sbt-http4s-org-scalafix-internal_2.12 sbt-http4s-org-scalafix-internal_2.13 sbt-http4s-org-scalafix-internal_3 http4s-servlet-examples-servlet4_2.12 http4s-servlet-examples-servlet4_2.13 http4s-servlet-examples-servlet4_3
292263
configs-ignore: test scala-tool scala-doc-tool test-internal

.scalafix.conf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
rules = [
2+
Http4sGeneralLinters
3+
Http4sUseLiteralsSyntax
4+
LeakingImplicitClassVal
5+
ExplicitResultTypes
6+
OrganizeImports
7+
]
8+
9+
triggered.rules = [
10+
Http4sGeneralLinters
11+
Http4sUseLiteralsSyntax
12+
LeakingImplicitClassVal
13+
]
14+

build.sbt

Lines changed: 129 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ThisBuild / tlBaseVersion := "0.23" // your current series x.y
1+
ThisBuild / tlBaseVersion := "0.22" // your current series x.y
22

33
ThisBuild / licenses := Seq(License.Apache2)
44
ThisBuild / developers := List(
@@ -7,37 +7,155 @@ ThisBuild / developers := List(
77
)
88

99
val Scala213 = "2.13.16"
10-
ThisBuild / crossScalaVersions := Seq(Scala213, "3.3.6")
10+
ThisBuild / crossScalaVersions := Seq("2.12.20", Scala213, "3.3.6")
1111
ThisBuild / scalaVersion := Scala213 // the default Scala
12+
13+
ThisBuild / githubWorkflowJavaVersions --= List(JavaSpec.temurin("8"))
1214
ThisBuild / startYear := Some(2013)
1315

14-
lazy val root = tlCrossRootProject.aggregate(servlet)
16+
lazy val root = tlCrossRootProject.aggregate(
17+
servlet4,
18+
servlet5,
19+
servlet6,
20+
examplesServlet4,
21+
examplesServlet5,
22+
examplesServlet6,
23+
)
1524

1625
val asyncHttpClientVersion = "2.12.3"
26+
val jettyVersion = "12.0.22"
1727
val http4sVersion = "0.22.15"
18-
val jettyVersion = "9.4.46.v20220331"
19-
val servletVersion = "3.1.0"
28+
val munitCatsEffectVersion = "1.0.7"
29+
val servletApi6Version = "6.0.0"
30+
val servletApi5Version = "5.0.0"
31+
val servletApi4Version = "4.0.4"
32+
33+
val catsEffectVersion = "2.5.5"
34+
val scalacheckVersion = "1.15.4"
35+
36+
val scalacheckEffectVersion = "1.0.3"
37+
38+
val Tomcat9Version = "9.0.106"
39+
val Tomcat10Version = "10.0.27"
40+
val Tomcat10_1Version = "10.1.42"
41+
42+
lazy val servlet4 = project
43+
.in(file("servlet4"))
44+
.settings(
45+
name := "http4s-servlet4",
46+
description := "Portable servlet implementation for http4s servers",
47+
tlJdkRelease := Some(11),
48+
Test / fork := true,
49+
libraryDependencies ++= Seq(
50+
"jakarta.servlet" % "jakarta.servlet-api" % servletApi4Version % Provided,
51+
"org.apache.tomcat.embed" % "tomcat-embed-core" % Tomcat9Version % Test,
52+
"org.apache.tomcat.embed" % "tomcat-embed-websocket" % Tomcat9Version % Test,
53+
"org.apache.tomcat" % "tomcat-catalina" % Tomcat9Version % Test,
54+
"org.http4s" %% "http4s-dsl" % http4sVersion % Test,
55+
"org.http4s" %% "http4s-server" % http4sVersion,
56+
"org.typelevel" %% "munit-cats-effect-2" % munitCatsEffectVersion % Test,
57+
"org.asynchttpclient" % "async-http-client" % asyncHttpClientVersion % Test,
58+
),
59+
)
60+
.dependsOn(testing % "test->test")
2061

21-
lazy val servlet = project
22-
.in(file("servlet"))
62+
lazy val servlet5 = project
63+
.in(file("servlet5"))
2364
.settings(
65+
name := "http4s-servlet5",
2466
description := "Portable servlet implementation for http4s servers",
67+
tlJdkRelease := Some(11),
68+
Test / fork := true,
2569
libraryDependencies ++= Seq(
70+
"jakarta.servlet" % "jakarta.servlet-api" % servletApi6Version % Provided,
71+
"org.apache.tomcat.embed" % "tomcat-embed-core" % Tomcat10Version % Test,
72+
"org.apache.tomcat.embed" % "tomcat-embed-websocket" % Tomcat10Version % Test,
73+
"org.apache.tomcat" % "tomcat-catalina" % Tomcat10Version % Test,
74+
"org.http4s" %% "http4s-dsl" % http4sVersion % Test,
2675
"org.http4s" %% "http4s-server" % http4sVersion,
27-
"javax.servlet" % "javax.servlet-api" % servletVersion % Provided,
76+
"org.typelevel" %% "munit-cats-effect-2" % munitCatsEffectVersion % Test,
2877
"org.asynchttpclient" % "async-http-client" % asyncHttpClientVersion % Test,
29-
"org.eclipse.jetty" % "jetty-server" % jettyVersion % Test,
30-
"org.eclipse.jetty" % "jetty-servlet" % jettyVersion % Test,
78+
),
79+
)
80+
.dependsOn(testing % "test->test")
81+
82+
lazy val servlet6 = project
83+
.in(file("servlet6"))
84+
.settings(
85+
name := "http4s-servlet6",
86+
description := "Portable servlet implementation for http4s servers",
87+
tlJdkRelease := Some(11),
88+
Test / fork := true,
89+
libraryDependencies ++= Seq(
90+
"jakarta.servlet" % "jakarta.servlet-api" % servletApi6Version % Provided,
91+
"org.apache.tomcat.embed" % "tomcat-embed-core" % Tomcat10_1Version % Test,
92+
"org.apache.tomcat.embed" % "tomcat-embed-websocket" % Tomcat10_1Version % Test,
93+
"org.apache.tomcat" % "tomcat-catalina" % Tomcat10_1Version % Test,
3194
"org.http4s" %% "http4s-dsl" % http4sVersion % Test,
95+
"org.http4s" %% "http4s-server" % http4sVersion,
96+
"org.typelevel" %% "munit-cats-effect-2" % munitCatsEffectVersion % Test,
97+
"org.asynchttpclient" % "async-http-client" % asyncHttpClientVersion % Test,
3298
),
3399
)
34100
.dependsOn(testing % "test->test")
35101

102+
lazy val examplesServlet4 = project
103+
.in(file("examples-servlet4"))
104+
.enablePlugins(NoPublishPlugin)
105+
.enablePlugins(JettyPlugin)
106+
.settings(
107+
name := "http4s-servlet-examples-servlet4",
108+
description := "Examples for http4s-servlet4",
109+
startYear := Some(2013),
110+
fork := true,
111+
Jetty / containerLibs := List("org.eclipse.jetty.ee8" % "jetty-ee8-runner" % jettyVersion),
112+
libraryDependencies ++= Seq(
113+
"jakarta.servlet" % "jakarta.servlet-api" % servletApi4Version % Provided
114+
),
115+
)
116+
.dependsOn(servlet4)
117+
118+
lazy val examplesServlet5 = project
119+
.in(file("examples-servlet5"))
120+
.enablePlugins(NoPublishPlugin)
121+
.enablePlugins(JettyPlugin)
122+
.settings(
123+
name := "http4s-servlet-examples-servlet5",
124+
description := "Examples for http4s-servlet5",
125+
startYear := Some(2013),
126+
fork := true,
127+
Jetty / containerLibs := List("org.eclipse.jetty.ee9" % "jetty-ee9-runner" % jettyVersion),
128+
libraryDependencies ++= Seq(
129+
"jakarta.servlet" % "jakarta.servlet-api" % servletApi5Version % Provided
130+
),
131+
)
132+
.dependsOn(servlet5)
133+
134+
lazy val examplesServlet6 = project
135+
.in(file("examples-servlet6"))
136+
.enablePlugins(NoPublishPlugin)
137+
.enablePlugins(JettyPlugin)
138+
.settings(
139+
githubWorkflowJavaVersions --= List(JavaSpec.temurin("8")),
140+
name := "http4s-servlet-examples-servlet6",
141+
description := "Examples for http4s-servlet6",
142+
startYear := Some(2013),
143+
fork := true,
144+
Jetty / containerLibs := List("org.eclipse.jetty.ee10" % "jetty-ee10-runner" % jettyVersion),
145+
libraryDependencies ++= Seq(
146+
"jakarta.servlet" % "jakarta.servlet-api" % servletApi6Version % Provided
147+
),
148+
)
149+
.dependsOn(servlet6)
150+
36151
lazy val testing = project
37152
.in(file("testing"))
38153
.enablePlugins(NoPublishPlugin)
39154
.settings(
155+
name := "http4s-testing",
156+
description := "Internal utilities for http4s tests",
157+
startYear := Some(2016),
40158
libraryDependencies ++= Seq(
41159
"org.http4s" %% "http4s-laws" % http4sVersion % Test
42-
)
160+
),
43161
)

0 commit comments

Comments
 (0)