diff --git a/spring-cloud-function-adapters/pom.xml b/spring-cloud-function-adapters/pom.xml index 5c4630a6d..7fc48f70a 100644 --- a/spring-cloud-function-adapters/pom.xml +++ b/spring-cloud-function-adapters/pom.xml @@ -17,7 +17,7 @@ spring-cloud-function-adapter-aws - spring-cloud-function-adapter-azure-web/sample/pet-store + spring-cloud-function-adapter-azure spring-cloud-function-adapter-gcp spring-cloud-function-grpc diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/pom.xml index 46517981e..59374bdbe 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/pom.xml @@ -9,8 +9,8 @@ AWS Lambda Adapter for Spring Cloud Function org.springframework.cloud - spring-cloud-function-adapter-parent - 3.2.10-SNAPSHOT + spring-cloud-function-parent + 4.0.3-SNAPSHOT UTF-8 @@ -25,15 +25,17 @@ org.springframework.cloud spring-cloud-function-serverless-web + 4.0.3-SNAPSHOT + + + jakarta.servlet + jakarta.servlet-api + provided org.springframework spring-webmvc - - javax.servlet - javax.servlet-api - org.springframework.boot spring-boot-starter-test diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/.aws-sam/build.toml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/.aws-sam/build.toml index 05c08b5fa..85a4a82df 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/.aws-sam/build.toml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/.aws-sam/build.toml @@ -1,9 +1,8 @@ # This file is auto generated by SAM CLI build command -[function_build_definitions] -[function_build_definitions.9341c1d5-9265-48ef-836e-25df000b0c59] +[function_build_definitions.4c7d6b2d-fe8c-493a-945e-f0eaf34aaf65] codeuri = "/Users/ozhurakousky/Documents/dev/repo/spring-cloud-function/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store" -runtime = "java11" +runtime = "java17" architecture = "x86_64" handler = "org.springframework.cloud.function.adapter.aws.web.WebProxyInvoker::handleRequest" manifest_hash = "" diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/README.md b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/README.md index bbe5db289..ed9b3b3d4 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/README.md +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/README.md @@ -1,7 +1,7 @@ -Copied from https://github.com/awslabs/aws-serverless-java-container/tree/main/samples/spring/pet-store +Modeled after https://github.com/awslabs/aws-serverless-java-container/tree/main/samples/spring/pet-store # Serverless Spring example -A basic pet store written with the [Spring framework](https://projects.spring.io/spring-framework/). The `StreamLambdaHandler` object is the main entry point for Lambda. +A basic pet store written with the [Spring framework](https://projects.spring.io/spring-framework/). The application can be deployed in an AWS account using the [Serverless Application Model](https://github.com/awslabs/serverless-application-model). The `template.yml` file in the root folder contains the application definition. @@ -12,6 +12,7 @@ The application can be deployed in an AWS account using the [Serverless Applicat ## Deployment In a shell, navigate to the sample's folder and use the SAM CLI to build a deployable package + ``` $ sam build ``` diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/pom.xml index 59aa050ae..5654a15e7 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/pom.xml @@ -24,9 +24,9 @@ - 1.8 - 1.8 - 5.3.25 + 17 + 17 + 6.0.8 4.13.2 2.19.0 diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/template.yml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/template.yml index 7c5cea2e3..0bf39c644 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/template.yml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/sample/pet-store/template.yml @@ -12,7 +12,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: org.springframework.cloud.function.adapter.aws.web.WebProxyInvoker::handleRequest - Runtime: java11 + Runtime: java17 CodeUri: . MemorySize: 512 Policies: AWSLambdaBasicExecutionRole diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/main/java/org/springframework/cloud/function/adapter/aws/web/WebProxyInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/main/java/org/springframework/cloud/function/adapter/aws/web/WebProxyInvoker.java index 109d9008d..39bb2f7b4 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/main/java/org/springframework/cloud/function/adapter/aws/web/WebProxyInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/main/java/org/springframework/cloud/function/adapter/aws/web/WebProxyInvoker.java @@ -24,10 +24,9 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; - import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/test/java/org/springframework/cloud/function/adapter/aws/web/PetStoreSpringAppConfig.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/test/java/org/springframework/cloud/function/adapter/aws/web/PetStoreSpringAppConfig.java index 93888ccdd..11c80130d 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/test/java/org/springframework/cloud/function/adapter/aws/web/PetStoreSpringAppConfig.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws-web/src/test/java/org/springframework/cloud/function/adapter/aws/web/PetStoreSpringAppConfig.java @@ -18,11 +18,11 @@ package org.springframework.cloud.function.adapter.aws.web; import java.io.IOException; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml index 7ee47ef84..b66d01200 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml @@ -85,36 +85,18 @@ provided + + + + -<<<<<<< HEAD -======= - - org.springframework - spring-web - - - - ->>>>>>> 24687a3ab (working on AWS) org.springframework spring-webmvc - -<<<<<<< HEAD -======= - javax.servlet - javax.servlet-api - - - - ->>>>>>> 24687a3ab (working on AWS) org.springframework.cloud spring-cloud-function-web true - org.springframework.boot diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/pom.xml index b2889d4c7..029eaa7d6 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/pom.xml @@ -8,8 +8,8 @@ Azure Function Adapter for Spring Cloud Function org.springframework.cloud - spring-cloud-function-adapter-parent - 3.2.10-SNAPSHOT + spring-cloud-function-parent + 4.0.3-SNAPSHOT UTF-8 @@ -27,6 +27,7 @@ org.springframework.cloud spring-cloud-function-serverless-web + 4.0.3-SNAPSHOT com.microsoft.azure.functions @@ -39,6 +40,11 @@ azure-functions-java-spi ${azure.functions.java.spi.version} + + jakarta.servlet + jakarta.servlet-api + provided + com.fasterxml.jackson.core @@ -48,10 +54,6 @@ org.springframework spring-webmvc - - javax.servlet - javax.servlet-api - org.springframework.boot spring-boot-starter-test diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/README.md b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/README.md deleted file mode 100644 index bbe5db289..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/README.md +++ /dev/null @@ -1,38 +0,0 @@ -Copied from https://github.com/awslabs/aws-serverless-java-container/tree/main/samples/spring/pet-store - -# Serverless Spring example -A basic pet store written with the [Spring framework](https://projects.spring.io/spring-framework/). The `StreamLambdaHandler` object is the main entry point for Lambda. - -The application can be deployed in an AWS account using the [Serverless Application Model](https://github.com/awslabs/serverless-application-model). The `template.yml` file in the root folder contains the application definition. - -## Pre-requisites -* [AWS CLI](https://aws.amazon.com/cli/) -* [SAM CLI](https://github.com/awslabs/aws-sam-cli) -* [Gradle](https://gradle.org/) or [Maven](https://maven.apache.org/) - -## Deployment -In a shell, navigate to the sample's folder and use the SAM CLI to build a deployable package -``` -$ sam build -``` - -This command compiles the application and prepares a deployment package in the `.aws-sam` sub-directory. - -To deploy the application in your AWS account, you can use the SAM CLI's guided deployment process and follow the instructions on the screen - -``` -$ sam deploy --guided -``` - -Once the deployment is completed, the SAM CLI will print out the stack's outputs, including the new application URL. You can use `curl` or a web browser to make a call to the URL - -``` -... ---------------------------------------------------------------------------------------------------------- -OutputKey-Description OutputValue ---------------------------------------------------------------------------------------------------------- -PetStoreApi - URL for application https://xxxxxxxxxx.execute-api.us-west-2.amazonaws.com/pets ---------------------------------------------------------------------------------------------------------- - -$ curl https://xxxxxxxxxx.execute-api.us-west-2.amazonaws.com/pets -``` \ No newline at end of file diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/pom.xml deleted file mode 100644 index d19643feb..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/pom.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - 4.0.0 - - oz.spring.petstore - pet-store - 1.0-SNAPSHOT - pet-store - Simple pet store written with the Spring framework - - - https://github.com/awslabs/aws-serverless-java-container.git - - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - 8 - 1.0.28.RELEASE - - - oz.spring.petstore.PetStoreSpringAppConfig - - - 1.23.0 - spring-cloud-function-samples - westus - java-functions-group - java-functions-app-service-plan - EP1 - - 8 - 8 - - 5.3.25 - 4.13.2 - 2.19.0 - - - - - org.springframework.cloud - spring-cloud-function-adapter-azure-web - 3.2.10-SNAPSHOT - - - - - - - - - - junit - junit - ${junit.version} - test - - - - - - - com.microsoft.azure - azure-functions-maven-plugin - ${azure.functions.maven.plugin.version} - - - transport=dt_socket,server=y,suspend=y,address=5005 - ${functionAppName} - ${functionResourceGroup} - ${functionAppRegion} - ${functionAppServicePlanName} - ${functionPricingTier} - - ${project.basedir}/src/main/resources/host.json - - - linux - 11 - - - 7072 - - - - FUNCTIONS_EXTENSION_VERSION - ~4 - - - - - - package-functions - - package - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.springframework.boot.experimental - spring-boot-thin-layout - ${spring-boot-thin-layout.version} - - - - - - - diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/PetStoreSpringAppConfig.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/PetStoreSpringAppConfig.java deleted file mode 100644 index 1ac2164ae..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/PetStoreSpringAppConfig.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2023-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package oz.spring.petstore; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.web.servlet.HandlerAdapter; -import org.springframework.web.servlet.HandlerExceptionResolver; -import org.springframework.web.servlet.HandlerMapping; -import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; - -@Configuration -@Import({ PetsController.class}) -public class PetStoreSpringAppConfig { - /* - * Create required HandlerMapping, to avoid several default HandlerMapping instances being created - */ - @Bean - public HandlerMapping handlerMapping() { - return new RequestMappingHandlerMapping(); - } - - /* - * Create required HandlerAdapter, to avoid several default HandlerAdapter instances being created - */ - @Bean - public HandlerAdapter handlerAdapter() { - return new RequestMappingHandlerAdapter(); - } - - /* - * optimization - avoids creating default exception resolvers; not required as the serverless container handles all - * exceptions - * - * By default, an ExceptionHandlerExceptionResolver is created which creates many dependent object, including an - * expensive ObjectMapper instance. - * - * To enable custom @ControllerAdvice classes remove this bean. - */ - @Bean - public HandlerExceptionResolver handlerExceptionResolver() { - return new HandlerExceptionResolver() { - - @Override - public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, - Object handler, Exception ex) { - return null; - } - }; - } -} diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/PetsController.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/PetsController.java deleted file mode 100644 index b04a26d92..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/PetsController.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2023-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -package oz.spring.petstore; - -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; - -import oz.spring.petstore.model.Pet; -import oz.spring.petstore.model.PetData; - -import java.security.Principal; -import java.util.Optional; -import java.util.UUID; - -@RestController -@EnableWebMvc -public class PetsController { - @RequestMapping(path = "/pets", method = RequestMethod.POST) - public Pet createPet(@RequestBody Pet newPet) { - if (newPet.getName() == null || newPet.getBreed() == null) { - return null; - } - - Pet dbPet = newPet; - dbPet.setId(UUID.randomUUID().toString()); - return dbPet; - } - - @RequestMapping(path = "/pets", method = RequestMethod.GET) - public Pet[] listPets(@RequestParam("limit") Optional limit, Principal principal) { - int queryLimit = 10; - if (limit.isPresent()) { - queryLimit = limit.get(); - } - - Pet[] outputPets = new Pet[queryLimit]; - - for (int i = 0; i < queryLimit; i++) { - Pet newPet = new Pet(); - newPet.setId(UUID.randomUUID().toString()); - newPet.setName(PetData.getRandomName()); - newPet.setBreed(PetData.getRandomBreed()); - newPet.setDateOfBirth(PetData.getRandomDoB()); - outputPets[i] = newPet; - } - - return outputPets; - } - - @GetMapping("favicon.ico") - @ResponseBody - void returnNoFavicon() { - } - - @RequestMapping(path = "/pets/{petId}", method = RequestMethod.GET) - public Pet listPets() { - Pet newPet = new Pet(); - newPet.setId(UUID.randomUUID().toString()); - newPet.setBreed(PetData.getRandomBreed()); - newPet.setDateOfBirth(PetData.getRandomDoB()); - newPet.setName(PetData.getRandomName()); - return newPet; - } - -} diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/Error.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/Error.java deleted file mode 100644 index bb19a9027..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/Error.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2023-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package oz.spring.petstore.model; - -public class Error { - private String message; - - public Error(String errorMessage) { - message = errorMessage; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/Pet.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/Pet.java deleted file mode 100644 index 20f170a99..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/Pet.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2023-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package oz.spring.petstore.model; - -import java.util.Date; - -public class Pet { - private String id; - private String breed; - private String name; - private Date dateOfBirth; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getBreed() { - return breed; - } - - public void setBreed(String breed) { - this.breed = breed; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Date getDateOfBirth() { - return dateOfBirth; - } - - public void setDateOfBirth(Date dateOfBirth) { - this.dateOfBirth = dateOfBirth; - } -} diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/PetData.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/PetData.java deleted file mode 100644 index 1df3632cc..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/java/oz/spring/petstore/model/PetData.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2023-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package oz.spring.petstore.model; - -import java.util.*; -import java.util.concurrent.ThreadLocalRandom; - -public class PetData { - private static List breeds = new ArrayList<>(); - static { - breeds.add("Afghan Hound"); - breeds.add("Beagle"); - breeds.add("Bernese Mountain Dog"); - breeds.add("Bloodhound"); - breeds.add("Dalmatian"); - breeds.add("Jack Russell Terrier"); - breeds.add("Norwegian Elkhound"); - } - - private static List names = new ArrayList<>(); - static { - names.add("Bailey"); - names.add("Bella"); - names.add("Max"); - names.add("Lucy"); - names.add("Charlie"); - names.add("Molly"); - names.add("Buddy"); - names.add("Daisy"); - names.add("Rocky"); - names.add("Maggie"); - names.add("Jake"); - names.add("Sophie"); - names.add("Jack"); - names.add("Sadie"); - names.add("Toby"); - names.add("Chloe"); - names.add("Cody"); - names.add("Bailey"); - names.add("Buster"); - names.add("Lola"); - names.add("Duke"); - names.add("Zoe"); - names.add("Cooper"); - names.add("Abby"); - names.add("Riley"); - names.add("Ginger"); - names.add("Harley"); - names.add("Roxy"); - names.add("Bear"); - names.add("Gracie"); - names.add("Tucker"); - names.add("Coco"); - names.add("Murphy"); - names.add("Sasha"); - names.add("Lucky"); - names.add("Lily"); - names.add("Oliver"); - names.add("Angel"); - names.add("Sam"); - names.add("Princess"); - names.add("Oscar"); - names.add("Emma"); - names.add("Teddy"); - names.add("Annie"); - names.add("Winston"); - names.add("Rosie"); - } - - public static List getBreeds() { - return breeds; - } - - public static List getNames() { - return names; - } - - public static String getRandomBreed() { - return breeds.get(ThreadLocalRandom.current().nextInt(0, breeds.size() - 1)); - } - - public static String getRandomName() { - return names.get(ThreadLocalRandom.current().nextInt(0, names.size() - 1)); - } - - public static Date getRandomDoB() { - GregorianCalendar gc = new GregorianCalendar(); - - int year = ThreadLocalRandom.current().nextInt( - Calendar.getInstance().get(Calendar.YEAR) - 15, - Calendar.getInstance().get(Calendar.YEAR) - ); - - gc.set(Calendar.YEAR, year); - - int dayOfYear = ThreadLocalRandom.current().nextInt(1, gc.getActualMaximum(Calendar.DAY_OF_YEAR)); - - gc.set(Calendar.DAY_OF_YEAR, dayOfYear); - return gc.getTime(); - } -} diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/resources/host.json b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/resources/host.json deleted file mode 100644 index 10d0c0748..000000000 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/sample/pet-store/src/main/resources/host.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": "2.0", - "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle", - "version": "[3.*, 4.0.0)" - } -} \ No newline at end of file diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/main/java/org/springframework/cloud/function/adapter/azure/web/AzureWebProxyInvoker.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/main/java/org/springframework/cloud/function/adapter/azure/web/AzureWebProxyInvoker.java index 09c7d5ffd..ecbaf0118 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/main/java/org/springframework/cloud/function/adapter/azure/web/AzureWebProxyInvoker.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/main/java/org/springframework/cloud/function/adapter/azure/web/AzureWebProxyInvoker.java @@ -19,10 +19,6 @@ package org.springframework.cloud.function.adapter.azure.web; import java.util.Map.Entry; import java.util.Optional; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; - import com.microsoft.azure.functions.ExecutionContext; import com.microsoft.azure.functions.HttpMethod; import com.microsoft.azure.functions.HttpRequestMessage; @@ -33,6 +29,9 @@ import com.microsoft.azure.functions.annotation.AuthorizationLevel; import com.microsoft.azure.functions.annotation.FunctionName; import com.microsoft.azure.functions.annotation.HttpTrigger; import com.microsoft.azure.functions.spi.inject.FunctionInstanceInjector; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/test/java/org/springframework/cloud/function/adapter/azure/web/PetStoreSpringAppConfig.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/test/java/org/springframework/cloud/function/adapter/azure/web/PetStoreSpringAppConfig.java index 508be07a3..7e8471ca9 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/test/java/org/springframework/cloud/function/adapter/azure/web/PetStoreSpringAppConfig.java +++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-azure-web/src/test/java/org/springframework/cloud/function/adapter/azure/web/PetStoreSpringAppConfig.java @@ -18,11 +18,11 @@ package org.springframework.cloud.function.adapter.azure.web; import java.io.IOException; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -32,7 +32,6 @@ import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; - @Configuration @Import({ PetsController.class }) public class PetStoreSpringAppConfig { diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/pom.xml index 1b1c85370..49efdb8a9 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/pom.xml +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/pom.xml @@ -9,13 +9,12 @@ Base serverless web adapter org.springframework.cloud - spring-cloud-function-adapter-parent - 3.2.10-SNAPSHOT + spring-cloud-function-parent + 4.0.3-SNAPSHOT UTF-8 UTF-8 - 1.8 @@ -25,12 +24,12 @@ org.springframework spring-webmvc + jakarta.servlet jakarta.servlet-api - - + provided org.springframework.boot diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyErrorController.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyErrorController.java index 9a4df17e9..a3de30931 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyErrorController.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyErrorController.java @@ -21,9 +21,9 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; -import javax.servlet.RequestDispatcher; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyFilterRegistration.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyFilterRegistration.java index 4def16599..43e20212f 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyFilterRegistration.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyFilterRegistration.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package org.springframework.cloud.function.serverless.web; import java.util.Collection; @@ -5,10 +21,16 @@ import java.util.EnumSet; import java.util.Map; import java.util.Set; -import javax.servlet.DispatcherType; -import javax.servlet.Filter; -import javax.servlet.FilterRegistration; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +/** + * + * @author Oleg Zhurakousky + * @since 4.x + * + */ public class ProxyFilterRegistration implements FilterRegistration, FilterRegistration.Dynamic { public Filter getFilter() { diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletRequest.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletRequest.java index 5d793a3ce..5108931c9 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletRequest.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletRequest.java @@ -42,21 +42,22 @@ import java.util.Map; import java.util.Set; import java.util.TimeZone; -import javax.servlet.AsyncContext; -import javax.servlet.DispatcherType; -import javax.servlet.ReadListener; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpUpgradeHandler; -import javax.servlet.http.Part; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.ReadListener; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletConnection; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpUpgradeHandler; +import jakarta.servlet.http.Part; import org.springframework.http.HttpHeaders; import org.springframework.lang.Nullable; @@ -589,12 +590,6 @@ public class ProxyHttpServletRequest implements HttpServletRequest { throw new UnsupportedOperationException(); } - @Override - @Deprecated - public String getRealPath(String path) { - return this.servletContext.getRealPath(path); - } - public void setRemotePort(int remotePort) { throw new UnsupportedOperationException(); } @@ -674,7 +669,7 @@ public class ProxyHttpServletRequest implements HttpServletRequest { } @Override - public javax.servlet.DispatcherType getDispatcherType() { + public DispatcherType getDispatcherType() { return this.dispatcherType; } @@ -814,7 +809,8 @@ public class ProxyHttpServletRequest implements HttpServletRequest { @Override @Nullable public String getPathTranslated() { - return (this.pathInfo != null ? getRealPath(this.pathInfo) : null); + //return (this.pathInfo != null ? getRealPath(this.pathInfo) : null); + return this.pathInfo; } public void setContextPath(String contextPath) { @@ -947,12 +943,6 @@ public class ProxyHttpServletRequest implements HttpServletRequest { return this.requestedSessionIdFromURL; } - @Override - @Deprecated - public boolean isRequestedSessionIdFromUrl() { - return isRequestedSessionIdFromURL(); - } - @Override public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { throw new UnsupportedOperationException(); @@ -981,7 +971,7 @@ public class ProxyHttpServletRequest implements HttpServletRequest { } @Override - public Collection getParts() throws IOException, ServletException { + public Collection getParts() throws IOException, ServletException { List result = new LinkedList<>(); for (List list : this.parts.values()) { result.addAll(list); @@ -993,4 +983,22 @@ public class ProxyHttpServletRequest implements HttpServletRequest { public T upgrade(Class handlerClass) throws IOException, ServletException { throw new UnsupportedOperationException(); } + + @Override + public String getRequestId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getProtocolRequestId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public ServletConnection getServletConnection() { + // TODO Auto-generated method stub + return null; + } } diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletResponse.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletResponse.java index 93cd072ea..fdf799e32 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletResponse.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyHttpServletResponse.java @@ -29,10 +29,10 @@ import java.util.Date; import java.util.List; import java.util.Locale; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.HttpHeaders; import org.springframework.lang.Nullable; @@ -42,6 +42,7 @@ import org.springframework.web.util.WebUtils; /** * * @author Oleg Zhurakousky + * @since 4.x * */ public class ProxyHttpServletResponse implements HttpServletResponse { @@ -295,18 +296,6 @@ public class ProxyHttpServletResponse implements HttpServletResponse { return encodeURL(url); } - @Override - @Deprecated - public String encodeUrl(String url) { - return encodeURL(url); - } - - @Override - @Deprecated - public String encodeRedirectUrl(String url) { - return encodeRedirectURL(url); - } - @Override public void sendError(int status, String errorMessage) throws IOException { Assert.state(!isCommitted(), "Cannot set error status - response is already committed"); @@ -379,11 +368,6 @@ public class ProxyHttpServletResponse implements HttpServletResponse { } } - @Override - @Deprecated - public void setStatus(int status, String errorMessage) { - throw new UnsupportedOperationException(); - } @Override public int getStatus() { diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyMvc.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyMvc.java index 46422927b..61724b7da 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyMvc.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyMvc.java @@ -25,22 +25,22 @@ import java.util.Iterator; import java.util.List; import java.util.concurrent.CountDownLatch; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + import org.springframework.context.annotation.AnnotatedBeanDefinitionReader; import org.springframework.http.HttpStatus; import org.springframework.lang.Nullable; @@ -169,7 +169,7 @@ public class ProxyMvc { */ ProxyFilterChain(DispatcherServlet servlet) { List filters = new ArrayList<>(); - servlet.getServletContext().getFilterRegistrations().values().forEach(fr -> filters.add(((ProxyFilterRegistration)fr).getFilter())); + servlet.getServletContext().getFilterRegistrations().values().forEach(fr -> filters.add(((ProxyFilterRegistration) fr).getFilter())); Assert.notNull(filters, "filters cannot be null"); Assert.noNullElements(filters, "filters cannot contain null values"); this.filters = initFilterList(servlet, filters.toArray(new Filter[] {})); diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletContext.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletContext.java index d8e694862..9adab9664 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletContext.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletContext.java @@ -20,29 +20,25 @@ import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; -import java.util.EnumSet; import java.util.Enumeration; import java.util.EventListener; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Set; -import javax.servlet.DispatcherType; -import javax.servlet.Filter; -import javax.servlet.FilterRegistration; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; -import javax.servlet.ServletRegistration.Dynamic; -import javax.servlet.SessionCookieConfig; -import javax.servlet.SessionTrackingMode; -import javax.servlet.descriptor.JspConfigDescriptor; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.ServletRegistration.Dynamic; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.SessionTrackingMode; +import jakarta.servlet.descriptor.JspConfigDescriptor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -130,31 +126,11 @@ public class ProxyServletContext implements ServletContext { throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); } - @Override - public Servlet getServlet(String name) throws ServletException { - throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); - } - - @Override - public Enumeration getServlets() { - throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); - } - - @Override - public Enumeration getServletNames() { - throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); - } - @Override public void log(String msg) { this.logger.info(msg); } - @Override - public void log(Exception exception, String msg) { - this.logger.error(msg, exception); - } - @Override public void log(String message, Throwable throwable) { this.logger.error(message, throwable); @@ -241,25 +217,26 @@ public class ProxyServletContext implements ServletContext { } @Override - public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className) { + public FilterRegistration.Dynamic addFilter(String filterName, String className) { throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); } @Override - public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Filter filter) { + public FilterRegistration.Dynamic addFilter(String filterName, Filter filter) { throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); } Map filterRegistrations = new HashMap<>(); @Override - public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class filterClass) { + public FilterRegistration.Dynamic addFilter(String filterName, Class filterClass) { try { Filter filter = filterClass.getDeclaredConstructor().newInstance(); ProxyFilterRegistration registration = new ProxyFilterRegistration(filterName, filter); filterRegistrations.put(filterName, registration); return registration; - } catch (Exception e) { + } + catch (Exception e) { throw new IllegalStateException(e); } } @@ -290,12 +267,12 @@ public class ProxyServletContext implements ServletContext { } @Override - public Set getDefaultSessionTrackingModes() { + public Set getDefaultSessionTrackingModes() { throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); } @Override - public Set getEffectiveSessionTrackingModes() { + public Set getEffectiveSessionTrackingModes() { throw new UnsupportedOperationException("This ServletContext does not represent a running web container"); } diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletRegistration.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletRegistration.java index a7e52669a..07474338e 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletRegistration.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/main/java/org/springframework/cloud/function/serverless/web/ProxyServletRegistration.java @@ -1,15 +1,38 @@ +/* + * Copyright 2023-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + package org.springframework.cloud.function.serverless.web; import java.util.Collection; import java.util.Map; import java.util.Set; -import javax.servlet.MultipartConfigElement; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletRegistration; -import javax.servlet.ServletSecurityElement; +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.ServletSecurityElement; +/** + * + * @author Oleg Zhurakousky + * @since 4.x + * + */ public class ProxyServletRegistration implements ServletRegistration, ServletRegistration.Dynamic, Comparable { private final String servletName; diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/serverless/web/RequestResponseTests.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/serverless/web/RequestResponseTests.java index 3af280e3a..285867bd9 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/serverless/web/RequestResponseTests.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/serverless/web/RequestResponseTests.java @@ -18,10 +18,9 @@ package org.springframework.cloud.function.serverless.web; import java.util.List; -import javax.servlet.http.HttpServletRequest; - import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.http.HttpServletRequest; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetStoreSpringAppConfig.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetStoreSpringAppConfig.java index 22bf2fe9e..5943efdf2 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetStoreSpringAppConfig.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetStoreSpringAppConfig.java @@ -18,11 +18,11 @@ package org.springframework.cloud.function.test.app; import java.io.IOException; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -32,7 +32,6 @@ import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; -//@SpringBootApplication @Configuration @Import({ PetsController.class }) public class PetStoreSpringAppConfig { diff --git a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetsController.java b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetsController.java index a470d8135..664ddee26 100644 --- a/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetsController.java +++ b/spring-cloud-function-adapters/spring-cloud-function-serverless-web/src/test/java/org/springframework/cloud/function/test/app/PetsController.java @@ -33,7 +33,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc; @RestController @EnableWebMvc public class PetsController { - @RequestMapping(path = "/pets", method = RequestMethod.POST) + @RequestMapping(path = "/pets/", method = RequestMethod.POST) public Pet createPet(@RequestBody Pet newPet) { if (newPet.getName() == null || newPet.getBreed() == null) { return null;