From 8ae8c5498da43d15e8fc511c7534fc9ff4a9c750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 14 Jan 2023 00:58:30 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E5=A4=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E9=80=82=E9=85=8D=20jakarta=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=20bug=20(=E4=B8=B4=E6=97=B6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jakarta/DsJakartaHeaderProcessor.java | 45 ++++++++++++++++++ .../jakarta/DsJakartaSessionProcessor.java | 46 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java create mode 100644 ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java diff --git a/ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java b/ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java new file mode 100644 index 000000000..f0a50a2d9 --- /dev/null +++ b/ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java @@ -0,0 +1,45 @@ +/* + * Copyright © 2018 organization baomidou + * + * 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 + * + * http://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 com.baomidou.dynamic.datasource.processor.jakarta; + +import com.baomidou.dynamic.datasource.processor.DsProcessor; +import jakarta.servlet.http.HttpServletRequest; +import org.aopalliance.intercept.MethodInvocation; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +/** + * @author TaoYu + * @since 3.6.0 + */ +public class DsJakartaHeaderProcessor extends DsProcessor { + + /** + * header prefix + */ + private static final String HEADER_PREFIX = "#header"; + + @Override + public boolean matches(String key) { + return key.startsWith(HEADER_PREFIX); + } + + @Override + public String doDetermineDatasource(MethodInvocation invocation, String key) { + HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + return request.getHeader(key.substring(8)); + } +} diff --git a/ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java b/ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java new file mode 100644 index 000000000..0ea8a1309 --- /dev/null +++ b/ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java @@ -0,0 +1,46 @@ +/* + * Copyright © 2018 organization baomidou + * + * 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 + * + * http://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 com.baomidou.dynamic.datasource.processor.jakarta; + +import com.baomidou.dynamic.datasource.processor.DsProcessor; +import jakarta.servlet.http.HttpServletRequest; +import org.aopalliance.intercept.MethodInvocation; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + + +/** + * @author TaoYu + * @since 3.6.0 + */ +public class DsJakartaSessionProcessor extends DsProcessor { + + /** + * session开头 + */ + private static final String SESSION_PREFIX = "#session"; + + @Override + public boolean matches(String key) { + return key.startsWith(SESSION_PREFIX); + } + + @Override + public String doDetermineDatasource(MethodInvocation invocation, String key) { + HttpServletRequest request = (HttpServletRequest) ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + return request.getSession().getAttribute(key.substring(9)).toString(); + } +}