Skip to content

Commit

Permalink
Update jetty 11. drop Java 8
Browse files Browse the repository at this point in the history
  • Loading branch information
xuwei-k committed Dec 7, 2020
1 parent 0836ce0 commit 059aef6
Show file tree
Hide file tree
Showing 15 changed files with 30 additions and 192 deletions.
6 changes: 1 addition & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,18 @@ jobs:
matrix:
include:
- name: scala_2
java: 8
os: ubuntu-latest
- name: scala_3
java: 8
os: ubuntu-latest
- name: scala_2
java: 8
os: windows-latest
- name: scala_2
java: 11
os: ubuntu-latest
runs-on: ${{ matrix.os }}
steps:
- uses: olafurpg/setup-scala@v10
with:
java-version: "adopt@1.${{matrix.java}}"
java-version: "adopt@1.11" # Jetty 11 require Java 11
- uses: actions/checkout@v2.3.4
- uses: coursier/cache-action@v5
- shell: bash
Expand Down
2 changes: 1 addition & 1 deletion directives/README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Directives are composable and simple to reuse. This example demonstrates how you


import directives._, Directives._
import javax.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequest

case class User(name:String)

Expand Down
4 changes: 2 additions & 2 deletions filter-async/src/main/scala/async/plans.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package unfiltered.filter.async
import unfiltered.filter.{AsyncBinding,RequestBinding,ResponseBinding}
import unfiltered.response.Pass
import unfiltered.request.HttpRequest
import javax.servlet.{FilterChain, ServletRequest, ServletResponse}
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import jakarta.servlet.{FilterChain, ServletRequest, ServletResponse}
import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import unfiltered.Async
import Planify._

Expand Down
6 changes: 3 additions & 3 deletions filter-async/src/main/scala/bindings.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ package unfiltered.filter

import unfiltered.response._
import unfiltered.Async
import javax.servlet.http.HttpServletResponse
import jakarta.servlet.http.HttpServletResponse

trait AsyncBinding extends Async.Responder[HttpServletResponse] {
self: RequestBinding =>

private[filter] val async: javax.servlet.AsyncContext
private[filter] val filterChain: javax.servlet.FilterChain
private[filter] val async: jakarta.servlet.AsyncContext
private[filter] val filterChain: jakarta.servlet.FilterChain

def respond(rf: ResponseFunction[HttpServletResponse]): Unit = {
rf match {
Expand Down
41 changes: 8 additions & 33 deletions filter-uploads/src/main/scala/request/uploads.scala
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
package unfiltered.filter.request

import unfiltered.request.{AbstractDiskExtractor, AbstractDiskFile, AbstractStreamedFile, DiskExtractor, HttpRequest, MultiPartMatcher, MultipartData, StreamedExtractor, TupleGenerator}
import unfiltered.request.{AbstractDiskExtractor, AbstractDiskFile, AbstractStreamedFile, DiskExtractor, HttpRequest, MultiPartMatcher, StreamedExtractor, TupleGenerator}
import scala.util.control.NonFatal

import org.apache.commons.fileupload.{FileItem, FileItemFactory, FileItemHeaders, FileItemStream}
import org.apache.commons.fileupload.disk.DiskFileItemFactory
import org.apache.commons.fileupload.servlet.ServletFileUpload
import org.apache.commons.fileupload.util.{FileItemHeadersImpl, Streams}

import java.io.{ByteArrayInputStream, ByteArrayOutputStream, File => JFile, InputStream}
import javax.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequest

import scala.util.control.Exception.allCatch

/** Matches requests that have multipart content */
object MultiPart extends MultiPartMatcher[HttpRequest[HttpServletRequest]] {
def unapply(req: HttpRequest[HttpServletRequest]) =
if (ServletFileUpload.isMultipartContent(req.underlying))
Some(req)
else None
def unapply(req: HttpRequest[HttpServletRequest]): Option[HttpRequest[HttpServletRequest]] =
??? // TODO
}

/** Represents an uploaded file loaded into memory (and possibly written to disk) */
Expand Down Expand Up @@ -61,25 +58,10 @@ class StreamedFileWrapper(fstm: FileItemStream) extends AbstractStreamedFile
object MultiPartParams extends TupleGenerator {

object Streamed extends StreamedExtractor[HttpRequest[HttpServletRequest]] {
import unfiltered.filter.util.IteratorConversions._

def apply(req: HttpRequest[HttpServletRequest]) = {
def items = new ServletFileUpload().getItemIterator(req.underlying)
/** attempt to extract the first named param from the stream */
def extractParam(name: String): Seq[String] = {
items.find(f => f.getFieldName == name && f.isFormField) match {
case Some(p) => Seq(extractStr(p))
case _ => Nil
}
}
/** attempt to extract the first named file from the stream */
def extractFile(name: String): Seq[StreamedFileWrapper] = {
items.find(f => f.getFieldName == name && !f.isFormField) match {
case Some(f) => Seq(new StreamedFileWrapper(f))
case _ => Nil
}
}
MultipartData(extractParam _,extractFile _)
// TODO
???
}

def withStreamedFile[T](fstm: FileItemStream)(f: java.io.InputStream => T): T = {
Expand Down Expand Up @@ -148,21 +130,14 @@ object MultiPartParams extends TupleGenerator {
}

trait AbstractDisk extends AbstractDiskExtractor[HttpRequest[HttpServletRequest]] {
import unfiltered.filter.util.IteratorConversions._

/** @return a configured FileItemFactory to parse a request */
def factory(writeAfter: Int, writeDir: JFile): FileItemFactory =
new DiskFileItemFactory(writeAfter, writeDir)

def apply(req: HttpRequest[HttpServletRequest]) = {
val items = new ServletFileUpload(factory(memLimit, tempDir))
.parseRequest(req.underlying).iterator

val (params, files) = genTuple[String, DiskFileWrapper, FileItem](items) ((maps, item) =>
if(item.isFormField) (maps._1 + (item.getFieldName -> (item.getString :: maps._1(item.getFieldName))), maps._2)
else (maps._1, maps._2 + (item.getFieldName -> (new DiskFileWrapper(item) :: maps._2(item.getFieldName))))
)
MultipartData(params, files)
// TODO
???
}
}
}
119 changes: 0 additions & 119 deletions filter-uploads/src/test/scala/UploadsSpec.scala

This file was deleted.

2 changes: 1 addition & 1 deletion filter/src/main/scala/WritableServletResponse.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package unfiltered.filter

import java.io.PrintWriter
import javax.servlet.http.{HttpServletResponse, HttpServletResponseWrapper}
import jakarta.servlet.http.{HttpServletResponse, HttpServletResponseWrapper}
import unfiltered.response.HttpResponse
/**
* The servlet API states that, for a given response, either the
Expand Down
4 changes: 2 additions & 2 deletions filter/src/main/scala/bindings.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package unfiltered.filter

import unfiltered.response.HttpResponse
import unfiltered.request.HttpRequest
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import unfiltered.Cookie
import scala.collection.JavaConverters._

Expand Down Expand Up @@ -37,7 +37,7 @@ class ResponseBinding(res: HttpServletResponse) extends HttpResponse(res) {
def redirect(url: String) = res.sendRedirect(url)
def header(name: String, value: String) = res.addHeader(name, value)
def cookies(resCookies: Seq[Cookie]) = {
import javax.servlet.http.{Cookie => JCookie}
import jakarta.servlet.http.{Cookie => JCookie}
resCookies.foreach { c =>
val jc = new JCookie(c.name, c.value)
if(c.domain.isDefined) jc.setDomain(c.domain.get)
Expand Down
8 changes: 3 additions & 5 deletions filter/src/main/scala/plans.scala
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
package unfiltered.filter

import javax.servlet.{Filter, FilterConfig, FilterChain, ServletRequest, ServletResponse}
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import jakarta.servlet.{Filter, FilterConfig, FilterChain, ServletRequest, ServletResponse}
import jakarta.servlet.http.{HttpServletRequest, HttpServletResponse}
import unfiltered.request._
import unfiltered.response._
import unfiltered.Cycle

trait InittedFilter extends Filter {
private var configVar: FilterConfig = _
def init(config: FilterConfig): Unit = { configVar = config; }
override def init(config: FilterConfig): Unit = { configVar = config; }
def config = configVar

def destroy: Unit = { }
}

object Plan {
Expand Down
2 changes: 1 addition & 1 deletion filter/src/main/scala/request/paths.scala
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package unfiltered.filter.request

import unfiltered.request.HttpRequest
import javax.servlet.http.HttpServletRequest
import jakarta.servlet.http.HttpServletRequest

object ContextPath {
def unapply[T <: HttpServletRequest](req: HttpRequest[T]): Some[(String, String)] =
Expand Down
2 changes: 1 addition & 1 deletion filter/src/test/scala/WriterSafetySpec.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package unfiltered.server

import javax.servlet.http.HttpServletResponse
import jakarta.servlet.http.HttpServletResponse

import org.specs2.mutable._
import unfiltered.response._
Expand Down
18 changes: 3 additions & 15 deletions jetty/src/main/scala/Server.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package unfiltered.jetty

import org.eclipse.jetty.server.{NCSARequestLog, Handler}
import unfiltered.util.{ PlanServer, RunnableServer }
import javax.servlet.Filter
import jakarta.servlet.Filter

import org.eclipse.jetty.server.handler.{ContextHandlerCollection, RequestLogHandler, HandlerCollection}

Expand Down Expand Up @@ -44,19 +43,8 @@ case class Server(

private def withLogging(contextHandlers: ContextHandlerCollection,
requestLogging: Option[RequestLogging]) = {
requestLogging.fold[Handler](
contextHandlers)(rl => {
val handlers = new HandlerCollection()
val requestLogHandler = new RequestLogHandler()
val requestLog = new NCSARequestLog(rl.filename)
requestLog.setRetainDays(rl.retainDays)
requestLog.setExtended(rl.extended)
requestLog.setLogTimeZone(rl.timezone)
requestLog.setLogDateFormat(rl.dateFormat)
requestLogHandler.setRequestLog(requestLog)
handlers.setHandlers(Array(contextHandlers, requestLogHandler))
handlers
})
// TODO
contextHandlers
}

/** Add a servlet context with the given path */
Expand Down
2 changes: 1 addition & 1 deletion jetty/src/main/scala/contexts.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package unfiltered.jetty

import javax.servlet.Filter
import jakarta.servlet.Filter

import org.eclipse.jetty.server.handler.{ContextHandler, ContextHandlerCollection}
import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}
Expand Down
2 changes: 1 addition & 1 deletion jetty/src/main/scala/filters.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package unfiltered.jetty

import java.util.EnumSet
import java.util.concurrent.atomic.AtomicInteger
import javax.servlet.{ Filter, DispatcherType }
import jakarta.servlet.{ Filter, DispatcherType }

import org.eclipse.jetty.servlet.{ FilterHolder, ServletContextHandler }

Expand Down
4 changes: 2 additions & 2 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import sbt._, Keys._
import dotty.tools.sbtplugin.DottyPlugin.autoImport._

object Dependencies {
val servletApiDep = "javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided"
val servletApiDep = "jakarta.servlet" % "jakarta.servlet-api" % "5.0.0"

val specs2Dep = Def.setting {
"org.specs2" %% "specs2-core" % "4.10.5" withDottyCompat scalaVersion.value
Expand All @@ -16,7 +16,7 @@ object Dependencies {
val scalaXmlVersion = "1.3.0"
val commonsIoVersion = "2.8.0"
val commonsFileUploadVersion = "1.4"
val jettyVersion = "9.4.35.v20201120"
val jettyVersion = "11.0.0"
val nettyVersion = "4.1.54.Final"
val scalatestVersion = "3.2.3"
val scalatestScalacheckVersion = "3.2.3.0"
Expand Down

0 comments on commit 059aef6

Please sign in to comment.