Adopt Spring Framework 6 and Jakarta EE 9

To avoid any complications with functional changes between Hibernate 5
and Hibernate 6, this uses the hibernate-core-jakarta v5 module rather
than hibernate-core v6. This requires a specific dependency exclusion
in spring-webflow.gradle to make sure that hibernate-entitymanager
never causes both versions to be loaded. This can be simplified after
eventual adoption of Hibernate 6.

The Spring snapshot repository needs to be referenced in build.gradle
for this early stage work on SWF 3.
This commit is contained in:
Ian Young
2022-05-09 18:28:04 +01:00
committed by rstoyanchev
parent 7cb8c3d9ae
commit d5029790fd
64 changed files with 180 additions and 164 deletions

View File

@@ -30,26 +30,26 @@ allprojects {
dependencyManagement {
imports {
mavenBom "org.springframework:spring-framework-bom:5.3.3"
mavenBom "org.springframework.security:spring-security-bom:5.4.4"
mavenBom "org.springframework:spring-framework-bom:6.0.0-M3"
mavenBom "org.springframework.security:spring-security-bom:5.5.6"
mavenBom "org.junit:junit-bom:5.7.1"
}
dependencies {
dependency "javax.servlet:javax.servlet-api:4.0.1"
dependency "jakarta.servlet:jakarta.servlet-api:5.0.0"
dependency "javax.servlet:jstl:1.2"
dependency "javax.servlet.jsp:javax.servlet.jsp-api:2.3.2-b02"
dependency "javax.el:javax.el-api:3.0.1-b06"
dependency "javax.validation:validation-api:2.0.1.Final"
dependencySet(group: 'org.hibernate', version: '5.4.27.Final') {
entry 'hibernate-core'
dependency "jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.0.0"
dependency "jakarta.el:jakarta.el-api:4.0.0"
dependency "jakarta.validation:jakarta.validation-api:3.0.0"
dependencySet(group: 'org.hibernate', version: '5.6.6.Final') {
entry 'hibernate-core-jakarta'
entry 'hibernate-entitymanager'
}
dependency "org.hibernate:hibernate-validator:6.2.0.Final"
dependency "org.hibernate:hibernate-validator:7.0.4.Final"
dependencySet(group: 'com.sun.faces', version: '2.2.20') {
entry 'jsf-api'
entry 'jsf-impl'
}
dependency "org.apache.myfaces.core:myfaces-impl:2.2.14"
dependency "org.apache.myfaces.core:myfaces-impl:3.0.1"
dependency "com.sun.facelets:jsf-facelets:1.1.14"
dependency "org.hsqldb:hsqldb:2.5.0"
@@ -64,7 +64,7 @@ allprojects {
dependency("junit:junit:4.13.2")
dependency "org.easymock:easymock:4.2"
dependency "org.hamcrest:hamcrest:2.1"
dependency "org.apache.tomcat:tomcat-jasper-el:9.0.34"
dependency "org.apache.tomcat:tomcat-jasper-el:10.0.20"
dependency "org.apache.myfaces.test:myfaces-test22:1.0.8"
}
generatedPomCustomization {
@@ -79,6 +79,8 @@ allprojects {
if (version.endsWith('SNAPSHOT')) {
maven { url "https://repo.spring.io/snapshot" }
}
// For Spring Framework 6 milestones
maven { url "https://repo.spring.io/milestone" }
}
configurations.all {
resolutionStrategy {

View File

@@ -3,7 +3,7 @@ description = "Spring Binding"
dependencies {
implementation("org.springframework:spring-context")
compileOnly("javax.el:javax.el-api")
compileOnly("jakarta.el:jakarta.el-api")
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("org.hamcrest:hamcrest")

View File

@@ -1,9 +1,9 @@
package org.springframework.binding.expression.el;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import jakarta.el.ELContext;
import jakarta.el.ELException;
import jakarta.el.ExpressionFactory;
import jakarta.el.ValueExpression;
import org.springframework.binding.convert.ConversionException;
import org.springframework.binding.convert.ConversionService;

View File

@@ -15,10 +15,10 @@
*/
package org.springframework.binding.expression.el;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.FunctionMapper;
import javax.el.VariableMapper;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.FunctionMapper;
import jakarta.el.VariableMapper;
/**
* A generic ELContext implementation.

View File

@@ -17,14 +17,14 @@ package org.springframework.binding.expression.el;
import java.util.List;
import javax.el.ArrayELResolver;
import javax.el.BeanELResolver;
import javax.el.CompositeELResolver;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.ListELResolver;
import javax.el.MapELResolver;
import javax.el.ResourceBundleELResolver;
import jakarta.el.ArrayELResolver;
import jakarta.el.BeanELResolver;
import jakarta.el.CompositeELResolver;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.ListELResolver;
import jakarta.el.MapELResolver;
import jakarta.el.ResourceBundleELResolver;
/**
* A generic ELResolver to be used as a default when no other ELResolvers have been configured by the client

View File

@@ -15,7 +15,7 @@
*/
package org.springframework.binding.expression.el;
import javax.el.ELContext;
import jakarta.el.ELContext;
/**
* A factory for a DefaultELContext.

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.binding.expression.el;
import javax.el.ELContext;
import javax.el.ELResolver;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
/**
* A factory for creating a EL context object that will be used to evaluate a target object of an EL expression.

View File

@@ -15,9 +15,9 @@
*/
package org.springframework.binding.expression.el;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ValueExpression;
import jakarta.el.ELContext;
import jakarta.el.ELException;
import jakarta.el.ValueExpression;
import org.springframework.binding.expression.EvaluationException;
import org.springframework.binding.expression.Expression;
@@ -63,7 +63,7 @@ public class ELExpression implements Expression {
}
}
return result;
} catch (javax.el.PropertyNotFoundException e) {
} catch (jakarta.el.PropertyNotFoundException e) {
throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e);
} catch (ELException e) {
throw new EvaluationException(context.getClass(), getExpressionString(),
@@ -81,7 +81,7 @@ public class ELExpression implements Expression {
+ getExpressionString() + "' did not resolve... is the base variable ''" + getBaseVariable()
+ "' spelled correctly?");
}
} catch (javax.el.PropertyNotFoundException e) {
} catch (jakarta.el.PropertyNotFoundException e) {
throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e);
} catch (ELException e) {
throw new EvaluationException(context.getClass(), getExpressionString(),
@@ -94,7 +94,7 @@ public class ELExpression implements Expression {
ELContext ctx = elContextFactory.getELContext(context);
try {
return valueExpression.getType(ctx);
} catch (javax.el.PropertyNotFoundException e) {
} catch (jakarta.el.PropertyNotFoundException e) {
throw new PropertyNotFoundException(context.getClass(), getExpressionString(), e);
} catch (ELException e) {
throw new EvaluationException(context.getClass(), getExpressionString(),

View File

@@ -18,13 +18,13 @@ package org.springframework.binding.expression.el;
import java.util.HashMap;
import java.util.Map;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ELResolver;
import javax.el.ExpressionFactory;
import javax.el.FunctionMapper;
import javax.el.ValueExpression;
import javax.el.VariableMapper;
import jakarta.el.ELContext;
import jakarta.el.ELException;
import jakarta.el.ELResolver;
import jakarta.el.ExpressionFactory;
import jakarta.el.FunctionMapper;
import jakarta.el.ValueExpression;
import jakarta.el.VariableMapper;
import org.springframework.binding.convert.ConversionService;
import org.springframework.binding.convert.service.DefaultConversionService;

View File

@@ -18,10 +18,10 @@ package org.springframework.binding.expression.el;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import java.util.Map;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELContext;
import jakarta.el.ELException;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.springframework.binding.collection.MapAdaptable;

View File

@@ -6,10 +6,10 @@ import static org.junit.jupiter.api.Assertions.fail;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.FunctionMapper;
import javax.el.VariableMapper;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.FunctionMapper;
import jakarta.el.VariableMapper;
import org.apache.el.ExpressionFactoryImpl;
import org.junit.jupiter.api.BeforeEach;

View File

@@ -6,7 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.HashMap;
import java.util.Map;
import javax.el.ELContext;
import jakarta.el.ELContext;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

View File

@@ -5,11 +5,11 @@ dependencies {
implementation("org.springframework:spring-web")
implementation("org.springframework:spring-webmvc")
compileOnly("javax.el:javax.el-api")
compileOnly("javax.servlet:javax.servlet-api")
compileOnly("jakarta.el:jakarta.el-api")
compileOnly("jakarta.servlet:jakarta.servlet-api")
compileOnly("junit:junit")
optional("org.hibernate:hibernate-core")
optional("org.hibernate:hibernate-core-jakarta")
optional("org.springframework.security:spring-security-core")
optional("org.springframework:spring-orm")
optional("org.springframework:spring-tx")
@@ -24,11 +24,25 @@ dependencies {
testImplementation("org.hibernate:hibernate-entitymanager")
testImplementation("org.hibernate:hibernate-validator")
testImplementation("org.hsqldb:hsqldb")
testImplementation("javax.servlet.jsp:javax.servlet.jsp-api")
testImplementation("jakarta.servlet.jsp:jakarta.servlet.jsp-api")
testImplementation("javax.servlet:jstl")
testImplementation("javax.servlet:javax.servlet-api")
testImplementation("javax.validation:validation-api")
testImplementation("jakarta.servlet:jakarta.servlet-api")
testImplementation("jakarta.validation:jakarta.validation-api")
testRuntimeOnly("org.apache.logging.log4j:log4j-core")
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl")
testRuntimeOnly("org.apache.logging.log4j:log4j-jul")
//
// To use Hibernate 5 in the context of the Jakarta EE 9 namespace,
// we need to use hibernate-core-jakarta instead of hibernate-core.
// Unfortunately the hibernate-entitymanager module directly
// references hibernate-core and we don't want both versions
// in the classpath. To avoid this, explicitly exclude the
// plain hibernate-core module in all configurations.
//
// This wrinkle will probably go away again in Hibernate 6.
//
configurations.all {
exclude group: 'org.hibernate', module: 'hibernate-core'
}
}

View File

@@ -2,8 +2,8 @@ package org.springframework.webflow.context.servlet;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.context.support.WebApplicationObjectSupport;

View File

@@ -17,8 +17,8 @@ package org.springframework.webflow.context.servlet;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* Strategy interface that encapsulates knowledge about a client-side ajax system and how to communicate with that

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.webflow.context.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpHeaders;
import org.springframework.util.StringUtils;

View File

@@ -20,7 +20,7 @@ import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.util.StringUtils;
import org.springframework.web.util.WebUtils;

View File

@@ -15,7 +15,7 @@
*/
package org.springframework.webflow.context.servlet;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.util.StringUtils;
import org.springframework.web.util.UrlPathHelper;

View File

@@ -15,7 +15,7 @@
*/
package org.springframework.webflow.context.servlet;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.webflow.core.collection.AttributeMap;

View File

@@ -17,7 +17,7 @@ package org.springframework.webflow.context.servlet;
import java.util.Iterator;
import javax.servlet.ServletContext;
import jakarta.servlet.ServletContext;
import org.springframework.binding.collection.SharedMap;
import org.springframework.binding.collection.StringKeyedMapAdapter;

View File

@@ -17,7 +17,7 @@ package org.springframework.webflow.context.servlet;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.binding.collection.StringKeyedMapAdapter;
import org.springframework.webflow.core.collection.CollectionUtils;

View File

@@ -18,7 +18,7 @@ package org.springframework.webflow.context.servlet;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.binding.collection.StringKeyedMapAdapter;
import org.springframework.util.Assert;

View File

@@ -17,8 +17,8 @@ package org.springframework.webflow.context.servlet;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.binding.collection.SharedMap;
import org.springframework.binding.collection.StringKeyedMapAdapter;

View File

@@ -20,9 +20,9 @@ import java.io.Writer;
import java.security.Principal;
import java.util.Locale;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.webflow.context.ExternalContext;
import org.springframework.webflow.core.collection.LocalAttributeMap;

View File

@@ -20,7 +20,7 @@ import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.webflow.core.collection.AttributeMap;

View File

@@ -17,8 +17,8 @@ package org.springframework.webflow.context.web;
import java.util.Map;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import jakarta.servlet.http.HttpSessionBindingEvent;
import jakarta.servlet.http.HttpSessionBindingListener;
import org.springframework.webflow.core.collection.AttributeMapBindingEvent;
import org.springframework.webflow.core.collection.AttributeMapBindingListener;

View File

@@ -18,9 +18,9 @@ package org.springframework.webflow.expression.el;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.springframework.webflow.execution.Action;
import org.springframework.webflow.execution.AnnotatedAction;

View File

@@ -4,9 +4,9 @@ import java.beans.FeatureDescriptor;
import java.util.Iterator;
import java.util.Locale;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.springframework.context.MessageSource;
import org.springframework.util.StringUtils;

View File

@@ -20,10 +20,10 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.el.BeanELResolver;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.BeanELResolver;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.springframework.binding.expression.el.DefaultELContext;
import org.springframework.webflow.execution.RequestContext;

View File

@@ -18,9 +18,9 @@ package org.springframework.webflow.expression.el;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.springframework.webflow.execution.RequestContext;
import org.springframework.webflow.execution.RequestContextHolder;

View File

@@ -18,8 +18,8 @@ package org.springframework.webflow.expression.el;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELResolver;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import org.springframework.webflow.execution.RequestContext;
import org.springframework.webflow.execution.RequestContextHolder;

View File

@@ -17,10 +17,10 @@ package org.springframework.webflow.expression.el;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELException;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELContext;
import jakarta.el.ELException;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

View File

@@ -18,11 +18,11 @@ package org.springframework.webflow.expression.el;
import java.util.ArrayList;
import java.util.List;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.ExpressionFactory;
import javax.el.FunctionMapper;
import javax.el.VariableMapper;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import jakarta.el.ExpressionFactory;
import jakarta.el.FunctionMapper;
import jakarta.el.VariableMapper;
import org.springframework.binding.expression.el.DefaultELResolver;
import org.springframework.binding.expression.el.ELContextFactory;

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.webflow.mvc.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.style.ToStringCreator;
import org.springframework.webflow.core.FlowException;

View File

@@ -18,8 +18,8 @@ package org.springframework.webflow.mvc.servlet;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
@@ -115,7 +115,7 @@ public class FlowController implements Controller, ApplicationContextAware, Init
* <p>
* Many HTTP 1.1 clients treat 302 just like 303, not making any difference. However, some clients depend on 303
* when redirecting after a POST request; turn this flag off in such a scenario.
* @see javax.servlet.http.HttpServletResponse#sendRedirect
* @see jakarta.servlet.http.HttpServletResponse#sendRedirect
*/
public void setRedirectHttp10Compatible(boolean redirectHttp10Compatible) {
flowHandlerAdapter.setRedirectHttp10Compatible(redirectHttp10Compatible);

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.webflow.mvc.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.webflow.core.FlowException;
import org.springframework.webflow.core.collection.MutableAttributeMap;

View File

@@ -18,8 +18,8 @@ package org.springframework.webflow.mvc.servlet;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -167,7 +167,7 @@ public class FlowHandlerAdapter extends WebContentGenerator implements HandlerAd
* <p>
* Many HTTP 1.1 clients treat 302 just like 303, not making any difference. However, some clients depend on 303
* when redirecting after a POST request; turn this flag off in such a scenario.
* @see javax.servlet.http.HttpServletResponse#sendRedirect
* @see jakarta.servlet.http.HttpServletResponse#sendRedirect
*/
public void setRedirectHttp10Compatible(boolean redirectHttp10Compatible) {
this.redirectHttp10Compatible = redirectHttp10Compatible;

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.webflow.mvc.servlet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

View File

@@ -2,9 +2,9 @@ package org.springframework.webflow.mvc.servlet;
import java.util.Locale;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.ServletContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.support.RequestContextUtils;
import org.springframework.webflow.context.servlet.FlowUrlHandler;

View File

@@ -17,8 +17,8 @@ package org.springframework.webflow.mvc.servlet;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.convert.ConversionService;
import org.springframework.webflow.context.ExternalContext;

View File

@@ -18,8 +18,8 @@ package org.springframework.webflow.mvc.view;
import java.io.IOException;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.RedirectView;

View File

@@ -15,8 +15,8 @@
*/
package org.springframework.webflow.persistence;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import org.springframework.orm.jpa.EntityManagerHolder;
import org.springframework.transaction.PlatformTransactionManager;

View File

@@ -55,7 +55,7 @@ public class BeanValidationHintResolver implements ValidationHintResolver {
List<Class<?>> result = new ArrayList<>();
for (String hint : hints) {
if (hint.equalsIgnoreCase("Default")) {
hint = "javax.validation.groups.Default";
hint = "jakarta.validation.groups.Default";
}
Class<?> resolvedHint = toClass(hint);
if ((resolvedHint == null) && (model != null)) {

View File

@@ -533,7 +533,7 @@ The model object this view is bound to. Typically used as the source of form fi
A comma-separated list of validation hints such as validation groups against a JSR-303 provider.
Each hint is used to find an inner Class either in the Class of the model or its parent classes.
For example, given org.example.MyModel with inner type MyGroup, the hint "MyGroup" can be used.
The hint "default" is reserved as the default validation group, i.e. "javax.validation.groups.Default".
The hint "default" is reserved as the default validation group, i.e. "jakarta.validation.groups.Default".
A hint can also be a fully qualified class name.
The validation hints string is evaluated as an expression before hints are resolved.
The result of the expression can be a String or an Object[] with Class instances.
@@ -1491,7 +1491,7 @@ Indicates whether model validation should occur before this transition executes.
A comma-separated list of validation hints such as validation groups against a JSR-303 provider.
Each hint is used to find an inner Class either in the Class of the model or its parent classes.
For example, given org.example.MyModel with inner type MyGroup, the hint "MyGroup" can be used.
The hint "default" is reserved as the default validation group, i.e. "javax.validation.groups.Default".
The hint "default" is reserved as the default validation group, i.e. "jakarta.validation.groups.Default".
A hint can also be a fully qualified class name.
The validation hints string is evaluated as an expression before hints are resolved.
The result of the expression can be a String or an Object[] with Class instances.
@@ -1610,4 +1610,4 @@ Matching all of the attributes grants access.
</xsd:attribute>
</xsd:complexType>
</xsd:schema>
</xsd:schema>

View File

@@ -3,8 +3,8 @@ package org.springframework.webflow.context.servlet;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

View File

@@ -44,7 +44,7 @@ public class HttpServletContextMapTests {
context = new MockServletContext();
// a fresh MockServletContext seems to already contain an element;
// that's confusing, so we remove it
context.removeAttribute("javax.servlet.context.tempdir");
context.removeAttribute("jakarta.servlet.context.tempdir");
tested = new HttpServletContextMap(context);
tested.put("SomeKey", "SomeValue");
}

View File

@@ -76,7 +76,7 @@ public class HttpServletRequestMapTests {
@Test
public void testGetAttributeNames() {
request.setAttribute("Some key", "Some value");
request.removeAttribute("javax.servlet.context.tempdir");
request.removeAttribute("jakarta.servlet.context.tempdir");
// perform test
Iterator<String> names = tested.getAttributeNames();
assertNotNull(names, "Null result unexpected");

View File

@@ -20,8 +20,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

View File

@@ -2,8 +2,8 @@ package org.springframework.webflow.expression.el;
import java.util.List;
import javax.el.ELContext;
import javax.el.ELResolver;
import jakarta.el.ELContext;
import jakarta.el.ELResolver;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;

View File

@@ -8,9 +8,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.el.ELResolver;
import javax.el.PropertyNotFoundException;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotFoundException;
import jakarta.el.PropertyNotWritableException;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;

View File

@@ -4,8 +4,8 @@ import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import javax.el.ELResolver;
import javax.el.PropertyNotWritableException;
import jakarta.el.ELResolver;
import jakarta.el.PropertyNotWritableException;
import org.junit.jupiter.api.Test;

View File

@@ -9,7 +9,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.List;
import javax.el.ELResolver;
import jakarta.el.ELResolver;
import org.junit.jupiter.api.Test;
import org.springframework.webflow.execution.RequestContextHolder;

View File

@@ -7,8 +7,8 @@ import static org.junit.jupiter.api.Assertions.fail;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.easymock.EasyMock;
import org.junit.jupiter.api.BeforeEach;

View File

@@ -9,8 +9,8 @@ import static org.junit.jupiter.api.Assertions.fail;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.easymock.EasyMock;
import org.junit.jupiter.api.BeforeEach;

View File

@@ -5,8 +5,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

View File

@@ -9,8 +9,8 @@ import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.junit.jupiter.api.Test;
import org.springframework.mock.web.MockHttpServletRequest;

View File

@@ -18,8 +18,8 @@ import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.junit.jupiter.api.Test;
import org.springframework.binding.convert.converters.StringToDate;

View File

@@ -4,8 +4,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.junit.jupiter.api.BeforeEach;

View File

@@ -3,8 +3,8 @@ package org.springframework.webflow.persistence;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.orm.jpa.JpaTransactionManager;

View File

@@ -4,8 +4,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.orm.jpa.EntityManagerFactoryUtils;

View File

@@ -19,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.fail;
import javax.validation.groups.Default;
import jakarta.validation.groups.Default;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

View File

@@ -46,7 +46,7 @@ The following listing shows the configuration details:
<!-- Just here so the JSF implementation can initialize. *Not* used at runtime. -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
@@ -65,7 +65,7 @@ The use of Facelets instead of JSP typically requires the following element in `
----
!-- Use JSF view templates saved as *.xhtml, for use with Facelets -->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-name>jakarta.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
----
@@ -617,7 +617,7 @@ Next, you need to register the taglib file (in the preceding listing) in `web.xm
[source,xml]
----
<context-param>
<param-name>javax.faces.FACELETS_LIBRARIES</param-name>
<param-name>jakarta.faces.FACELETS_LIBRARIES</param-name>
<param-value>/WEB-INF/springsecurity.taglib.xml</param-value>
</context-param>
----

View File

@@ -524,7 +524,7 @@ To do that, it looks for matching inner types in the model or its parent.
For example, given `org.example.MyModel` with inner types `Group1` and `Group2`, it is sufficient to supply the simple type names -- that is, `group1` and `group2`.
You can also provide fully qualified type names.
A hint with a value of `default` has a special meaning and is translated to the default validation group in Bean Validation: `javax.validation.groups.Default`.
A hint with a value of `default` has a special meaning and is translated to the default validation group in Bean Validation: `jakarta.validation.groups.Default`.
You can configure a custom `ValidationHintResolver`, if necessary, through the `validationHintResolver` property of the `flow-builder-services` element, as follows:

View File

@@ -202,7 +202,7 @@ Note that partial state saving is only supported with Sun Mojarra 2.0.3 or later
It is not yet supported with Apache MyFaces.
This is due to the fact MyFaces was not as easy to customize with regards to how component state is stored.
We will work with Apache MyFaces to provide this support.
In the meantime, you need to use the `javax.faces.PARTIAL_STATE_SAVING` context parameter in `web.xml` to disable partial state saving with Apache MyFaces.
In the meantime, you need to use the `jakarta.faces.PARTIAL_STATE_SAVING` context parameter in `web.xml` to disable partial state saving with Apache MyFaces.
===== Travel Sample With the PrimeFaces Components