From 8ae8c5498da43d15e8fc511c7534fc9ff4a9c750 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 14 一月 2023 00:58:30 +0800
Subject: [PATCH] fix 修复 多数据源适配 jakarta 异常 bug (临时)

---
 ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaHeaderProcessor.java  |   45 ++++++++++++++++++++++
 ruoyi-common/src/main/java/com/baomidou/dynamic/datasource/processor/jakarta/DsJakartaSessionProcessor.java |   46 +++++++++++++++++++++++
 2 files changed, 91 insertions(+), 0 deletions(-)

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 0000000..f0a50a2
--- /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 0000000..0ea8a13
--- /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();
+    }
+}

--
Gitblit v1.9.3