This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.3 by this push:
new 9600dc9ce6 Remove triple parameter in metadata (#14518)
9600dc9ce6 is described below
commit 9600dc9ce67121579bb4680a5121e674791c2858
Author: TomlongTK <[email protected]>
AuthorDate: Mon Aug 26 09:54:32 2024 +0800
Remove triple parameter in metadata (#14518)
* Remove triple parameter in metadata
* Refine default value get
* Remove triple default value test
* Remove unused import
---------
Co-authored-by: Sean Yang <[email protected]>
---
.../dubbo/common/constants/CommonConstants.java | 2 +
.../org/apache/dubbo/config/ProtocolConfig.java | 15 +--
.../apache/dubbo/config/context/ConfigManager.java | 27 ++++-
.../apache/dubbo/config/nested/Http3Config.java | 64 ++++++----
.../org/apache/dubbo/config/nested/RestConfig.java | 34 ++++++
.../apache/dubbo/config/nested/TripleConfig.java | 129 ++++++++++++++-------
.../apache/dubbo/config/ProtocolConfigTest.java | 26 -----
.../dubbo/config/bootstrap/DubboBootstrapTest.java | 24 ++--
.../integration/DefaultServiceURLCustomizer.java | 12 +-
.../http12/netty4/h1/NettyHttp1Channel.java | 4 +-
.../http12/netty4/h2/NettyH2StreamChannel.java | 2 +-
.../dubbo/remoting/transport/netty4/Helper.java | 21 ++--
.../protocol/tri/TriHttp2RemoteFlowController.java | 2 +-
.../rpc/protocol/tri/TripleHttp2Protocol.java | 38 +++---
.../rpc/protocol/tri/rest/cors/CorsUtils.java | 24 ++--
.../tri/rest/mapping/ContentNegotiator.java | 4 +-
.../mapping/DefaultRequestMappingRegistry.java | 30 +++--
17 files changed, 282 insertions(+), 176 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
index 61537707e3..b13782dfc6 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java
@@ -635,6 +635,8 @@ public interface CommonConstants {
String DUBBO_VERSIONS_KEY = "META-INF/dubbo-versions";
+ String TRIPLE_PREFIX = "triple.";
+
/**
* System-related VM properties
*/
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
index 08ca552351..0d04ef328e 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ProtocolConfig.java
@@ -36,8 +36,6 @@ import static
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_UNEXP
/**
* Configuration for the protocol.
- *
- * @export
*/
public class ProtocolConfig extends AbstractConfig {
@@ -282,11 +280,6 @@ public class ProtocolConfig extends AbstractConfig {
.getBean(PreferSerializationProvider.class)
.getPreferSerialization();
}
-
- if (triple == null) {
- triple = new TripleConfig();
- }
- triple.checkDefault();
}
@Parameter(excluded = true)
@@ -635,6 +628,14 @@ public class ProtocolConfig extends AbstractConfig {
return triple;
}
+ @Parameter(excluded = true)
+ public TripleConfig getTripleOrDefault() {
+ if (triple == null) {
+ triple = new TripleConfig();
+ }
+ return triple;
+ }
+
public void setTriple(TripleConfig triple) {
this.triple = triple;
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
index 296f846668..7113d67d5e 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/config/context/ConfigManager.java
@@ -73,8 +73,16 @@ public class ConfigManager extends AbstractConfigManager
implements ApplicationE
TracingConfig.class));
}
- public static ProtocolConfig getProtocol(URL url) {
- return
url.getOrDefaultApplicationModel().getApplicationConfigManager().getOrAddProtocol(url.getProtocol());
+ public static ProtocolConfig getProtocolOrDefault(URL url) {
+ return getProtocolOrDefault(url.getOrDefaultApplicationModel(),
url.getProtocol());
+ }
+
+ public static ProtocolConfig getProtocolOrDefault(String idOrName) {
+ return getProtocolOrDefault(ApplicationModel.defaultModel(), idOrName);
+ }
+
+ private static ProtocolConfig getProtocolOrDefault(ApplicationModel
applicationModel, String idOrName) {
+ return
applicationModel.getApplicationConfigManager().getOrAddProtocol(idOrName);
}
// ApplicationConfig correlative methods
@@ -204,10 +212,19 @@ public class ConfigManager extends AbstractConfigManager
implements ApplicationE
if (protocol.isPresent()) {
return protocol.get();
}
- ProtocolConfig protocolConfig = new ProtocolConfig(idOrName);
- addProtocol(protocolConfig);
+
+ // Avoiding default protocol configuration overriding custom protocol
configuration
+ // due to `getOrAddProtocol` being called when they are not loaded
+ idOrName = idOrName + ".default";
+ protocol = getProtocol(idOrName);
+ if (protocol.isPresent()) {
+ return protocol.get();
+ }
+
+ ProtocolConfig protocolConfig = addConfig(new
ProtocolConfig(idOrName));
+
// addProtocol triggers refresh when other protocols exist in the
ConfigManager.
- // So refresh is only done when ProtocolConfig is not refreshed.
+ // so refresh is only done when ProtocolConfig is not refreshed.
if (!protocolConfig.isRefreshed()) {
protocolConfig.refresh();
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/nested/Http3Config.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/nested/Http3Config.java
index 03a05012d1..72871e0924 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/nested/Http3Config.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/nested/Http3Config.java
@@ -16,12 +16,21 @@
*/
package org.apache.dubbo.config.nested;
+import org.apache.dubbo.config.support.Parameter;
+
import java.io.Serializable;
public class Http3Config implements Serializable {
private static final long serialVersionUID = -4443828713331129834L;
+ public static final int DEFAULT_INITIAL_MAX_DATA = 8_388_608;
+ public static final int DEFAULT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL =
1_048_576;
+ public static final int DEFAULT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE =
1_048_576;
+ public static final int DEFAULT_INITIAL_MAX_STREAM_DATA_UNI = 1_048_576;
+ public static final long DEFAULT_INITIAL_MAX_STREAMS_BIDI = 1_073_741_824;
+ public static final long DEFAULT_INITIAL_MAX_STREAMS_UNI = 1_073_741_824;
+
/**
* Whether to enable HTTP/3 support
* <p>The default value is false.
@@ -142,6 +151,11 @@ public class Http3Config implements Serializable {
return initialMaxData;
}
+ @Parameter(excluded = true)
+ public int getInitialMaxDataOrDefault() {
+ return initialMaxData == null ? DEFAULT_INITIAL_MAX_DATA :
initialMaxData;
+ }
+
public void setInitialMaxData(Integer initialMaxData) {
this.initialMaxData = initialMaxData;
}
@@ -166,6 +180,13 @@ public class Http3Config implements Serializable {
return initialMaxStreamDataBidiLocal;
}
+ @Parameter(excluded = true)
+ public int getInitialMaxStreamDataBidiLocalOrDefault() {
+ return initialMaxStreamDataBidiLocal == null
+ ? DEFAULT_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL
+ : initialMaxStreamDataBidiLocal;
+ }
+
public void setInitialMaxStreamDataBidiLocal(Integer
initialMaxStreamDataBidiLocal) {
this.initialMaxStreamDataBidiLocal = initialMaxStreamDataBidiLocal;
}
@@ -174,6 +195,13 @@ public class Http3Config implements Serializable {
return initialMaxStreamDataBidiRemote;
}
+ @Parameter(excluded = true)
+ public int getInitialMaxStreamDataBidiRemoteOrDefault() {
+ return initialMaxStreamDataBidiRemote == null
+ ? DEFAULT_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE
+ : initialMaxStreamDataBidiRemote;
+ }
+
public void setInitialMaxStreamDataBidiRemote(Integer
initialMaxStreamDataBidiRemote) {
this.initialMaxStreamDataBidiRemote = initialMaxStreamDataBidiRemote;
}
@@ -182,6 +210,11 @@ public class Http3Config implements Serializable {
return initialMaxStreamDataUni;
}
+ @Parameter(excluded = true)
+ public int getInitialMaxStreamDataUniOrDefault() {
+ return initialMaxStreamDataUni == null ?
DEFAULT_INITIAL_MAX_STREAM_DATA_UNI : initialMaxStreamDataUni;
+ }
+
public void setInitialMaxStreamDataUni(Integer initialMaxStreamDataUni) {
this.initialMaxStreamDataUni = initialMaxStreamDataUni;
}
@@ -190,6 +223,11 @@ public class Http3Config implements Serializable {
return initialMaxStreamsBidi;
}
+ @Parameter(excluded = true)
+ public long getInitialMaxStreamsBidiOrDefault() {
+ return initialMaxStreamsBidi == null ?
DEFAULT_INITIAL_MAX_STREAMS_BIDI : initialMaxStreamsBidi;
+ }
+
public void setInitialMaxStreamsBidi(Long initialMaxStreamsBidi) {
this.initialMaxStreamsBidi = initialMaxStreamsBidi;
}
@@ -198,6 +236,11 @@ public class Http3Config implements Serializable {
return initialMaxStreamsUni;
}
+ @Parameter(excluded = true)
+ public long getInitialMaxStreamsUniOrDefault() {
+ return initialMaxStreamsUni == null ? DEFAULT_INITIAL_MAX_STREAMS_UNI
: initialMaxStreamsUni;
+ }
+
public void setInitialMaxStreamsUni(Long initialMaxStreamsUni) {
this.initialMaxStreamsUni = initialMaxStreamsUni;
}
@@ -241,25 +284,4 @@ public class Http3Config implements Serializable {
public void setCcAlgorithm(String ccAlgorithm) {
this.ccAlgorithm = ccAlgorithm;
}
-
- public void checkDefault() {
- if (initialMaxData == null) {
- initialMaxData = 1 << 23;
- }
- if (initialMaxStreamDataBidiLocal == null) {
- initialMaxStreamDataBidiLocal = 1 << 20;
- }
- if (initialMaxStreamDataBidiRemote == null) {
- initialMaxStreamDataBidiRemote = 1 << 20;
- }
- if (initialMaxStreamDataUni == null) {
- initialMaxStreamDataUni = 1 << 20;
- }
- if (initialMaxStreamsBidi == null) {
- initialMaxStreamsBidi = (long) 1 << 30;
- }
- if (initialMaxStreamsUni == null) {
- initialMaxStreamsUni = (long) 1 << 30;
- }
- }
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/nested/RestConfig.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/nested/RestConfig.java
index 51d0a236f5..88011e19bb 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/nested/RestConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/nested/RestConfig.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.nested;
import org.apache.dubbo.config.support.Nested;
+import org.apache.dubbo.config.support.Parameter;
import java.io.Serializable;
@@ -27,6 +28,11 @@ public class RestConfig implements Serializable {
private static final long serialVersionUID = -8068568976367034755L;
+ public static final boolean DEFAULT_TRAILING_SLASH_MATCH = true;
+ public static final boolean DEFAULT_SUFFIX_PATTERN_MATCH = true;
+ public static final boolean DEFAULT_CASE_SENSITIVE_MATCH = true;
+ public static final String DEFAULT_FORMAT_PARAMETER_NAME = "format";
+
/**
* Whether path matching should be match paths with a trailing slash.
* If enabled, a method mapped to "/users" also matches to "/users/".
@@ -66,6 +72,11 @@ public class RestConfig implements Serializable {
return trailingSlashMatch;
}
+ @Parameter(excluded = true)
+ public boolean getTrailingSlashMatchOrDefault() {
+ return trailingSlashMatch == null ? DEFAULT_TRAILING_SLASH_MATCH :
trailingSlashMatch;
+ }
+
public void setTrailingSlashMatch(Boolean trailingSlashMatch) {
this.trailingSlashMatch = trailingSlashMatch;
}
@@ -74,6 +85,11 @@ public class RestConfig implements Serializable {
return suffixPatternMatch;
}
+ @Parameter(excluded = true)
+ public boolean getSuffixPatternMatchOrDefault() {
+ return suffixPatternMatch == null ? DEFAULT_SUFFIX_PATTERN_MATCH :
suffixPatternMatch;
+ }
+
public void setSuffixPatternMatch(Boolean suffixPatternMatch) {
this.suffixPatternMatch = suffixPatternMatch;
}
@@ -82,6 +98,11 @@ public class RestConfig implements Serializable {
return caseSensitiveMatch;
}
+ @Parameter(excluded = true)
+ public boolean getCaseSensitiveMatchOrDefault() {
+ return caseSensitiveMatch == null ? DEFAULT_CASE_SENSITIVE_MATCH :
caseSensitiveMatch;
+ }
+
public void setCaseSensitiveMatch(Boolean caseSensitiveMatch) {
this.caseSensitiveMatch = caseSensitiveMatch;
}
@@ -90,6 +111,11 @@ public class RestConfig implements Serializable {
return formatParameterName;
}
+ @Parameter(excluded = true)
+ public String getFormatParameterNameOrDefault() {
+ return formatParameterName == null ? DEFAULT_FORMAT_PARAMETER_NAME :
formatParameterName;
+ }
+
public void setFormatParameterName(String formatParameterName) {
this.formatParameterName = formatParameterName;
}
@@ -98,6 +124,14 @@ public class RestConfig implements Serializable {
return cors;
}
+ @Parameter(excluded = true)
+ public CorsConfig getCorsOrDefault() {
+ if (cors == null) {
+ cors = new CorsConfig();
+ }
+ return cors;
+ }
+
public void setCors(CorsConfig cors) {
this.cors = cors;
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/nested/TripleConfig.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/nested/TripleConfig.java
index 745e528639..2cf3d79543 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/config/nested/TripleConfig.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/config/nested/TripleConfig.java
@@ -17,6 +17,7 @@
package org.apache.dubbo.config.nested;
import org.apache.dubbo.config.support.Nested;
+import org.apache.dubbo.config.support.Parameter;
import java.io.Serializable;
@@ -27,6 +28,19 @@ public class TripleConfig implements Serializable {
private static final long serialVersionUID = -3682252713701362155L;
+ public static final int DEFAULT_MAX_BODY_SIZE = 8_388_608;
+ public static final int DEFAULT_MAX_RESPONSE_BODY_SIZE = 8_388_608;
+ public static final int DEFAULT_MAX_CHUNK_SIZE = 8_388_608;
+ public static final int DEFAULT_MAX_HEADER_SIZE = 8_192;
+ public static final int DEFAULT_MAX_INITIAL_LINE_LENGTH = 4_096;
+ public static final int DEFAULT_INITIAL_BUFFER_SIZE = 16_384;
+ public static final int DEFAULT_HEADER_TABLE_SIZE = 4_096;
+ public static final boolean DEFAULT_ENABLE_PUSH = false;
+ public static final int DEFAULT_MAX_CONCURRENT_STREAMS = Integer.MAX_VALUE;
+ public static final int DEFAULT_INITIAL_WINDOW_SIZE = 8_388_608;
+ public static final int DEFAULT_MAX_FRAME_SIZE = 8_388_608;
+ public static final int DEFAULT_MAX_HEADER_LIST_SIZE = 32_768;
+
/**
* Whether enable verbose mode.
* When true, the application will produce detailed logging output
@@ -143,6 +157,11 @@ public class TripleConfig implements Serializable {
return maxBodySize;
}
+ @Parameter(excluded = true)
+ public int getMaxBodySizeOrDefault() {
+ return maxBodySize == null ? DEFAULT_MAX_BODY_SIZE : maxBodySize;
+ }
+
public void setMaxBodySize(Integer maxBodySize) {
this.maxBodySize = maxBodySize;
}
@@ -151,6 +170,11 @@ public class TripleConfig implements Serializable {
return maxResponseBodySize;
}
+ @Parameter(excluded = true)
+ public int getMaxResponseBodySizeOrDefault() {
+ return maxResponseBodySize == null ? DEFAULT_MAX_RESPONSE_BODY_SIZE :
maxResponseBodySize;
+ }
+
public void setMaxResponseBodySize(Integer maxResponseBodySize) {
this.maxResponseBodySize = maxResponseBodySize;
}
@@ -159,6 +183,11 @@ public class TripleConfig implements Serializable {
return maxChunkSize;
}
+ @Parameter(excluded = true)
+ public int getMaxChunkSizeOrDefault() {
+ return maxChunkSize == null ? DEFAULT_MAX_CHUNK_SIZE : maxChunkSize;
+ }
+
public void setMaxChunkSize(Integer maxChunkSize) {
this.maxChunkSize = maxChunkSize;
}
@@ -167,6 +196,11 @@ public class TripleConfig implements Serializable {
return maxHeaderSize;
}
+ @Parameter(excluded = true)
+ public int getMaxHeaderSizeOrDefault() {
+ return maxHeaderSize == null ? DEFAULT_MAX_HEADER_SIZE : maxHeaderSize;
+ }
+
public void setMaxHeaderSize(Integer maxHeaderSize) {
this.maxHeaderSize = maxHeaderSize;
}
@@ -175,6 +209,11 @@ public class TripleConfig implements Serializable {
return maxInitialLineLength;
}
+ @Parameter(excluded = true)
+ public int getMaxInitialLineLengthOrDefault() {
+ return maxInitialLineLength == null ? DEFAULT_MAX_INITIAL_LINE_LENGTH
: maxInitialLineLength;
+ }
+
public void setMaxInitialLineLength(Integer maxInitialLineLength) {
this.maxInitialLineLength = maxInitialLineLength;
}
@@ -183,6 +222,11 @@ public class TripleConfig implements Serializable {
return initialBufferSize;
}
+ @Parameter(excluded = true)
+ public int getInitialBufferSizeOrDefault() {
+ return initialBufferSize == null ? DEFAULT_INITIAL_BUFFER_SIZE :
initialBufferSize;
+ }
+
public void setInitialBufferSize(Integer initialBufferSize) {
this.initialBufferSize = initialBufferSize;
}
@@ -191,6 +235,11 @@ public class TripleConfig implements Serializable {
return headerTableSize;
}
+ @Parameter(excluded = true)
+ public int getHeaderTableSizeOrDefault() {
+ return headerTableSize == null ? DEFAULT_HEADER_TABLE_SIZE :
headerTableSize;
+ }
+
public void setHeaderTableSize(Integer headerTableSize) {
this.headerTableSize = headerTableSize;
}
@@ -199,6 +248,11 @@ public class TripleConfig implements Serializable {
return enablePush;
}
+ @Parameter(excluded = true)
+ public boolean getEnablePushOrDefault() {
+ return enablePush == null ? DEFAULT_ENABLE_PUSH : enablePush;
+ }
+
public void setEnablePush(Boolean enablePush) {
this.enablePush = enablePush;
}
@@ -207,6 +261,11 @@ public class TripleConfig implements Serializable {
return maxConcurrentStreams;
}
+ @Parameter(excluded = true)
+ public int getMaxConcurrentStreamsOrDefault() {
+ return maxConcurrentStreams == null ? DEFAULT_MAX_CONCURRENT_STREAMS :
maxConcurrentStreams;
+ }
+
public void setMaxConcurrentStreams(Integer maxConcurrentStreams) {
this.maxConcurrentStreams = maxConcurrentStreams;
}
@@ -215,6 +274,11 @@ public class TripleConfig implements Serializable {
return initialWindowSize;
}
+ @Parameter(excluded = true)
+ public int getInitialWindowSizeOrDefault() {
+ return initialWindowSize == null ? DEFAULT_INITIAL_WINDOW_SIZE :
initialWindowSize;
+ }
+
public void setInitialWindowSize(Integer initialWindowSize) {
this.initialWindowSize = initialWindowSize;
}
@@ -223,6 +287,11 @@ public class TripleConfig implements Serializable {
return maxFrameSize;
}
+ @Parameter(excluded = true)
+ public int getMaxFrameSizeOrDefault() {
+ return maxFrameSize == null ? DEFAULT_MAX_FRAME_SIZE : maxFrameSize;
+ }
+
public void setMaxFrameSize(Integer maxFrameSize) {
this.maxFrameSize = maxFrameSize;
}
@@ -231,6 +300,11 @@ public class TripleConfig implements Serializable {
return maxHeaderListSize;
}
+ @Parameter(excluded = true)
+ public int getMaxHeaderListSizeOrDefault() {
+ return maxHeaderListSize == null ? DEFAULT_MAX_HEADER_LIST_SIZE :
maxHeaderListSize;
+ }
+
public void setMaxHeaderListSize(Integer maxHeaderListSize) {
this.maxHeaderListSize = maxHeaderListSize;
}
@@ -239,6 +313,14 @@ public class TripleConfig implements Serializable {
return rest;
}
+ @Parameter(excluded = true)
+ public RestConfig getRestOrDefault() {
+ if (rest == null) {
+ rest = new RestConfig();
+ }
+ return rest;
+ }
+
public void setRest(RestConfig rest) {
this.rest = rest;
}
@@ -247,6 +329,14 @@ public class TripleConfig implements Serializable {
return http3;
}
+ @Parameter(excluded = true)
+ public Http3Config getHttp3OrDefault() {
+ if (http3 == null) {
+ http3 = new Http3Config();
+ }
+ return http3;
+ }
+
public void setHttp3(Http3Config http3) {
this.http3 = http3;
}
@@ -258,43 +348,4 @@ public class TripleConfig implements Serializable {
public void setServlet(ServletConfig servlet) {
this.servlet = servlet;
}
-
- public void checkDefault() {
- if (maxBodySize == null) {
- maxBodySize = 1 << 23;
- }
- if (maxResponseBodySize == null) {
- maxResponseBodySize = 1 << 23;
- }
- if (maxChunkSize == null) {
- maxChunkSize = 1 << 23;
- }
- if (maxHeaderSize == null) {
- maxHeaderSize = 8192;
- }
- if (maxInitialLineLength == null) {
- maxInitialLineLength = 4096;
- }
- if (initialBufferSize == null) {
- initialBufferSize = 16384;
- }
- if (headerTableSize == null) {
- headerTableSize = 4096;
- }
- if (enablePush == null) {
- enablePush = false;
- }
- if (maxConcurrentStreams == null) {
- maxConcurrentStreams = Integer.MAX_VALUE;
- }
- if (initialWindowSize == null) {
- initialWindowSize = 1 << 23;
- }
- if (maxFrameSize == null) {
- maxFrameSize = 1 << 23;
- }
- if (maxHeaderListSize == null) {
- maxHeaderListSize = 1 << 15;
- }
- }
}
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
index ef198ebf6c..31e3679c27 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ProtocolConfigTest.java
@@ -35,8 +35,6 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasEntry;
import static org.hamcrest.Matchers.is;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
class ProtocolConfigTest {
@@ -57,30 +55,6 @@ class ProtocolConfigTest {
DubboBootstrap.reset();
}
- @Test
- void testDefaultTripleConfig() {
- ProtocolConfig protocol = new ProtocolConfig();
- protocol.refresh();
- Map<String, String> parameters = new HashMap<>();
- ProtocolConfig.appendParameters(parameters, protocol);
- assertThat(parameters.isEmpty(), is(false));
- // http2 default config
- assertEquals(4096,
Integer.parseInt(parameters.get("triple.header.table.size")));
-
assertFalse(Boolean.parseBoolean(parameters.get("triple.enable.push")));
- assertEquals(Integer.MAX_VALUE,
Integer.parseInt(parameters.get("triple.max.concurrent.streams")));
- assertEquals(1 << 23,
Integer.parseInt(parameters.get("triple.initial.window.size")));
- assertEquals(1 << 23,
Integer.parseInt(parameters.get("triple.max.frame.size")));
- assertEquals(1 << 15,
Integer.parseInt(parameters.get("triple.max.header.list.size")));
-
- // http1 default config
- assertEquals(1 << 23,
Integer.parseInt(parameters.get("triple.max.body.size")));
- assertEquals(1 << 23,
Integer.parseInt(parameters.get("triple.max.response.body.size")));
- assertEquals(1 << 23,
Integer.parseInt(parameters.get("triple.max.chunk.size")));
- assertEquals(8192,
Integer.parseInt(parameters.get("triple.max.header.size")));
- assertEquals(4096,
Integer.parseInt(parameters.get("triple.max.initial.line.length")));
- assertEquals(16384,
Integer.parseInt(parameters.get("triple.initial.buffer.size")));
- }
-
@Test
void testName() {
ProtocolConfig protocol = new ProtocolConfig();
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
index d46740eb95..05ea205238 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java
@@ -502,20 +502,20 @@ class DubboBootstrapTest {
.orElse(null);
// check custom value
- Assertions.assertEquals(50, tripleConfig.getMaxBodySize());
- Assertions.assertEquals(100, tripleConfig.getMaxResponseBodySize());
+ Assertions.assertEquals(50, tripleConfig.getMaxBodySizeOrDefault());
+ Assertions.assertEquals(100,
tripleConfig.getMaxResponseBodySizeOrDefault());
// check default value
- Assertions.assertEquals(1 << 23, tripleConfig.getMaxChunkSize());
- Assertions.assertEquals(8192, tripleConfig.getMaxHeaderSize());
- Assertions.assertEquals(4096, tripleConfig.getMaxInitialLineLength());
- Assertions.assertEquals(16384, tripleConfig.getInitialBufferSize());
- Assertions.assertEquals(4096, tripleConfig.getHeaderTableSize());
- Assertions.assertFalse(tripleConfig.getEnablePush());
- Assertions.assertEquals(Integer.MAX_VALUE,
tripleConfig.getMaxConcurrentStreams());
- Assertions.assertEquals(1 << 23, tripleConfig.getInitialWindowSize());
- Assertions.assertEquals(1 << 23, tripleConfig.getMaxFrameSize());
- Assertions.assertEquals(1 << 15, tripleConfig.getMaxHeaderListSize());
+ Assertions.assertEquals(1 << 23,
tripleConfig.getMaxChunkSizeOrDefault());
+ Assertions.assertEquals(8192,
tripleConfig.getMaxHeaderSizeOrDefault());
+ Assertions.assertEquals(4096,
tripleConfig.getMaxInitialLineLengthOrDefault());
+ Assertions.assertEquals(16384,
tripleConfig.getInitialBufferSizeOrDefault());
+ Assertions.assertEquals(4096,
tripleConfig.getHeaderTableSizeOrDefault());
+ Assertions.assertFalse(tripleConfig.getEnablePushOrDefault());
+ Assertions.assertEquals(Integer.MAX_VALUE,
tripleConfig.getMaxConcurrentStreamsOrDefault());
+ Assertions.assertEquals(1 << 23,
tripleConfig.getInitialWindowSizeOrDefault());
+ Assertions.assertEquals(1 << 23,
tripleConfig.getMaxFrameSizeOrDefault());
+ Assertions.assertEquals(1 << 15,
tripleConfig.getMaxHeaderListSizeOrDefault());
}
private ExporterDeployListener getListener(ApplicationModel model) {
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DefaultServiceURLCustomizer.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DefaultServiceURLCustomizer.java
index 2473df54b7..f900abe245 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DefaultServiceURLCustomizer.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/DefaultServiceURLCustomizer.java
@@ -42,6 +42,7 @@ import static
org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_F
import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;
import static
org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.TRIPLE_PREFIX;
import static org.apache.dubbo.common.constants.FilterConstants.VALIDATION_KEY;
import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;
import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;
@@ -80,6 +81,8 @@ public class DefaultServiceURLCustomizer implements
ServiceURLCustomizer {
THREADS_KEY
};
+ private static final String[] excludedPrefixes = new String[]
{HIDE_KEY_PREFIX, TRIPLE_PREFIX};
+
@Override
public URL customize(URL serviceURL, ApplicationModel applicationModel) {
boolean simplified = (boolean) serviceURL.getAttribute(SIMPLIFIED_KEY,
false);
@@ -112,7 +115,14 @@ public class DefaultServiceURLCustomizer implements
ServiceURLCustomizer {
Map<String, String> params = url.getParameters();
if (CollectionUtils.isNotEmptyMap(params)) {
return params.keySet().stream()
- .filter(k -> k.startsWith(HIDE_KEY_PREFIX))
+ .filter(k -> {
+ for (String excludedPrefix : excludedPrefixes) {
+ if (k.startsWith(excludedPrefix)) {
+ return true;
+ }
+ }
+ return false;
+ })
.toArray(String[]::new);
}
return new String[0];
diff --git
a/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h1/NettyHttp1Channel.java
b/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h1/NettyHttp1Channel.java
index 086dde1afd..19d0c807d0 100644
---
a/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h1/NettyHttp1Channel.java
+++
b/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h1/NettyHttp1Channel.java
@@ -56,8 +56,8 @@ public class NettyHttp1Channel implements HttpChannel {
@Override
public HttpOutputMessage newOutputMessage() {
- return new Http1OutputMessage(
- new LimitedByteBufOutputStream(channel.alloc().buffer(),
tripleConfig.getMaxResponseBodySize()));
+ return new Http1OutputMessage(new LimitedByteBufOutputStream(
+ channel.alloc().buffer(),
tripleConfig.getMaxResponseBodySizeOrDefault()));
}
@Override
diff --git
a/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h2/NettyH2StreamChannel.java
b/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h2/NettyH2StreamChannel.java
index edebd985cc..c28449d28b 100644
---
a/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h2/NettyH2StreamChannel.java
+++
b/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/netty4/h2/NettyH2StreamChannel.java
@@ -63,7 +63,7 @@ public class NettyH2StreamChannel implements H2StreamChannel {
public Http2OutputMessage newOutputMessage(boolean endStream) {
ByteBuf buffer = http2StreamChannel.alloc().buffer();
ByteBufOutputStream outputStream =
- new LimitedByteBufOutputStream(buffer,
tripleConfig.getMaxResponseBodySize());
+ new LimitedByteBufOutputStream(buffer,
tripleConfig.getMaxResponseBodySizeOrDefault());
return new Http2OutputMessageFrame(outputStream, endStream);
}
diff --git
a/dubbo-remoting/dubbo-remoting-http3/src/main/java/org/apache/dubbo/remoting/transport/netty4/Helper.java
b/dubbo-remoting/dubbo-remoting-http3/src/main/java/org/apache/dubbo/remoting/transport/netty4/Helper.java
index 6df29c4f06..654831fa14 100644
---
a/dubbo-remoting/dubbo-remoting-http3/src/main/java/org/apache/dubbo/remoting/transport/netty4/Helper.java
+++
b/dubbo-remoting/dubbo-remoting-http3/src/main/java/org/apache/dubbo/remoting/transport/netty4/Helper.java
@@ -19,7 +19,6 @@ package org.apache.dubbo.remoting.transport.netty4;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.nested.Http3Config;
-import org.apache.dubbo.config.nested.TripleConfig;
import io.netty.incubator.codec.quic.QuicCodecBuilder;
import io.netty.incubator.codec.quic.QuicCongestionControlAlgorithm;
@@ -30,18 +29,14 @@ final class Helper {
@SuppressWarnings("unchecked")
static <T extends QuicCodecBuilder<T>> T configCodec(QuicCodecBuilder<T>
builder, URL url) {
- TripleConfig tripleConfig = ConfigManager.getProtocol(url).getTriple();
- Http3Config config = tripleConfig.getHttp3();
- if (config == null) {
- config = new Http3Config();
- }
- config.checkDefault();
- builder.initialMaxData(config.getInitialMaxData())
-
.initialMaxStreamDataBidirectionalLocal(config.getInitialMaxStreamDataBidiLocal())
-
.initialMaxStreamDataBidirectionalRemote(config.getInitialMaxStreamDataBidiRemote())
-
.initialMaxStreamDataUnidirectional(config.getInitialMaxStreamDataUni())
-
.initialMaxStreamsBidirectional(config.getInitialMaxStreamsBidi())
-
.initialMaxStreamsUnidirectional(config.getInitialMaxStreamsUni());
+ Http3Config config =
+
ConfigManager.getProtocolOrDefault(url).getTripleOrDefault().getHttp3OrDefault();
+ builder.initialMaxData(config.getInitialMaxDataOrDefault())
+
.initialMaxStreamDataBidirectionalLocal(config.getInitialMaxStreamDataBidiLocalOrDefault())
+
.initialMaxStreamDataBidirectionalRemote(config.getInitialMaxStreamDataBidiRemoteOrDefault())
+
.initialMaxStreamDataUnidirectional(config.getInitialMaxStreamDataUniOrDefault())
+
.initialMaxStreamsBidirectional(config.getInitialMaxStreamsBidiOrDefault())
+
.initialMaxStreamsUnidirectional(config.getInitialMaxStreamsUniOrDefault());
if (config.getRecvQueueLen() != null && config.getSendQueueLen() !=
null) {
builder.datagram(config.getRecvQueueLen(),
config.getSendQueueLen());
diff --git
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriHttp2RemoteFlowController.java
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriHttp2RemoteFlowController.java
index e2eb02f6f0..fc08bc94cc 100644
---
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriHttp2RemoteFlowController.java
+++
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriHttp2RemoteFlowController.java
@@ -82,7 +82,7 @@ public class TriHttp2RemoteFlowController implements
Http2RemoteFlowController {
TripleConfig config) {
this.connection = checkNotNull(connection, "connection");
this.streamByteDistributor = checkNotNull(streamByteDistributor,
"streamWriteDistributor");
- this.initialWindowSize = config.getInitialWindowSize();
+ this.initialWindowSize = config.getInitialWindowSizeOrDefault();
// Add a flow state for the connection.
stateKey = connection.newKey();
diff --git
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
index aeb3e7f3be..a04f4a9d21 100644
---
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
+++
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleHttp2Protocol.java
@@ -87,16 +87,16 @@ public class TripleHttp2Protocol extends
AbstractWireProtocol implements ScopeMo
@Override
public void configClientPipeline(URL url, ChannelOperator operator,
ContextOperator contextOperator) {
- TripleConfig tripleConfig = ConfigManager.getProtocol(url).getTriple();
+ TripleConfig tripleConfig =
ConfigManager.getProtocolOrDefault(url).getTripleOrDefault();
Http2FrameCodec codec = Http2FrameCodecBuilder.forClient()
.gracefulShutdownTimeoutMillis(10000)
.initialSettings(new Http2Settings()
- .headerTableSize(tripleConfig.getHeaderTableSize())
- .pushEnabled(tripleConfig.getEnablePush())
-
.maxConcurrentStreams(tripleConfig.getMaxConcurrentStreams())
- .initialWindowSize(tripleConfig.getInitialWindowSize())
- .maxFrameSize(tripleConfig.getMaxFrameSize())
-
.maxHeaderListSize(tripleConfig.getMaxHeaderListSize()))
+
.headerTableSize(tripleConfig.getHeaderTableSizeOrDefault())
+ .pushEnabled(tripleConfig.getEnablePushOrDefault())
+
.maxConcurrentStreams(tripleConfig.getMaxConcurrentStreamsOrDefault())
+
.initialWindowSize(tripleConfig.getInitialWindowSizeOrDefault())
+ .maxFrameSize(tripleConfig.getMaxFrameSizeOrDefault())
+
.maxHeaderListSize(tripleConfig.getMaxHeaderListSizeOrDefault()))
.frameLogger(CLIENT_LOGGER)
.validateHeaders(false)
.build();
@@ -132,13 +132,13 @@ public class TripleHttp2Protocol extends
AbstractWireProtocol implements ScopeMo
@SuppressWarnings("deprecation")
private void configurerHttp1Handlers(URL url, List<ChannelHandler>
handlers) {
- TripleConfig tripleConfig = ConfigManager.getProtocol(url).getTriple();
+ TripleConfig tripleConfig =
ConfigManager.getProtocolOrDefault(url).getTripleOrDefault();
HttpServerCodec sourceCodec = new HttpServerCodec(
- tripleConfig.getMaxInitialLineLength(),
- tripleConfig.getMaxHeaderSize(),
- tripleConfig.getMaxChunkSize(),
+ tripleConfig.getMaxInitialLineLengthOrDefault(),
+ tripleConfig.getMaxHeaderSizeOrDefault(),
+ tripleConfig.getMaxChunkSizeOrDefault(),
false,
- tripleConfig.getInitialBufferSize());
+ tripleConfig.getInitialBufferSizeOrDefault());
handlers.add(new ChannelHandlerPretender(sourceCodec));
// Triple protocol http1 upgrade support
handlers.add(new ChannelHandlerPretender(new HttpServerUpgradeHandler(
@@ -160,7 +160,7 @@ public class TripleHttp2Protocol extends
AbstractWireProtocol implements ScopeMo
// If the upgrade was successful, remove the message from the output
list
// so that it's not propagated to the next handler. This request will
// be propagated as a user event instead.
- handlers.add(new ChannelHandlerPretender(new
HttpObjectAggregator(tripleConfig.getMaxBodySize())));
+ handlers.add(new ChannelHandlerPretender(new
HttpObjectAggregator(tripleConfig.getMaxBodySizeOrDefault())));
handlers.add(new ChannelHandlerPretender(new NettyHttp1Codec()));
handlers.add(new ChannelHandlerPretender(new
NettyHttp1ConnectionHandler(
url, frameworkModel, tripleConfig,
DefaultHttp11ServerTransportListenerFactory.INSTANCE)));
@@ -179,7 +179,7 @@ public class TripleHttp2Protocol extends
AbstractWireProtocol implements ScopeMo
}
private void configurerHttp2Handlers(URL url, List<ChannelHandler>
handlers) {
- TripleConfig tripleConfig = ConfigManager.getProtocol(url).getTriple();
+ TripleConfig tripleConfig =
ConfigManager.getProtocolOrDefault(url).getTripleOrDefault();
Http2FrameCodec codec = buildHttp2FrameCodec(tripleConfig);
Http2MultiplexHandler handler = buildHttp2MultiplexHandler(url,
tripleConfig);
handlers.add(new ChannelHandlerPretender(new HttpWriteQueueHandler()));
@@ -196,11 +196,11 @@ public class TripleHttp2Protocol extends
AbstractWireProtocol implements ScopeMo
connection.remote().flowController(new
TriHttp2RemoteFlowController(connection, tripleConfig)))
.gracefulShutdownTimeoutMillis(10000)
.initialSettings(new Http2Settings()
- .headerTableSize(tripleConfig.getHeaderTableSize())
-
.maxConcurrentStreams(tripleConfig.getMaxConcurrentStreams())
- .initialWindowSize(tripleConfig.getInitialWindowSize())
- .maxFrameSize(tripleConfig.getMaxFrameSize())
-
.maxHeaderListSize(tripleConfig.getMaxHeaderListSize()))
+
.headerTableSize(tripleConfig.getHeaderTableSizeOrDefault())
+
.maxConcurrentStreams(tripleConfig.getMaxConcurrentStreamsOrDefault())
+
.initialWindowSize(tripleConfig.getInitialWindowSizeOrDefault())
+ .maxFrameSize(tripleConfig.getMaxFrameSizeOrDefault())
+
.maxHeaderListSize(tripleConfig.getMaxHeaderListSizeOrDefault()))
.frameLogger(SERVER_LOGGER)
.validateHeaders(false)
.build();
diff --git
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/cors/CorsUtils.java
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/cors/CorsUtils.java
index a9aab0bd91..a71cf9ec00 100644
---
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/cors/CorsUtils.java
+++
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/cors/CorsUtils.java
@@ -17,10 +17,11 @@
package org.apache.dubbo.rpc.protocol.tri.rest.cors;
import org.apache.dubbo.common.config.Configuration;
-import org.apache.dubbo.common.config.ConfigurationUtils;
+import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.config.context.ConfigManager;
+import org.apache.dubbo.config.nested.CorsConfig;
import org.apache.dubbo.rpc.model.FrameworkModel;
-import org.apache.dubbo.rpc.protocol.tri.rest.RestConstants;
import org.apache.dubbo.rpc.protocol.tri.rest.mapping.meta.CorsMeta;
public class CorsUtils {
@@ -28,16 +29,17 @@ public class CorsUtils {
private CorsUtils() {}
public static CorsMeta getGlobalCorsMeta(FrameworkModel frameworkModel) {
- Configuration config =
ConfigurationUtils.getGlobalConfiguration(frameworkModel.defaultApplication());
-
- String maxAge = config.getString(RestConstants.MAX_AGE);
+ CorsConfig config =
ConfigManager.getProtocolOrDefault(CommonConstants.TRIPLE)
+ .getTripleOrDefault()
+ .getRestOrDefault()
+ .getCorsOrDefault();
return CorsMeta.builder()
- .allowedOrigins(getValues(config,
RestConstants.ALLOWED_ORIGINS))
- .allowedMethods(getValues(config,
RestConstants.ALLOWED_METHODS))
- .allowedHeaders(getValues(config,
RestConstants.ALLOWED_HEADERS))
-
.allowCredentials(config.getString(RestConstants.ALLOW_CREDENTIALS))
- .exposedHeaders(getValues(config,
RestConstants.EXPOSED_HEADERS))
- .maxAge(maxAge == null ? null : Long.valueOf(maxAge))
+ .allowedOrigins(config.getAllowedOrigins())
+ .allowedMethods(config.getAllowedMethods())
+ .allowedHeaders(config.getAllowedHeaders())
+ .allowCredentials(config.getAllowCredentials())
+ .exposedHeaders(config.getExposedHeaders())
+ .maxAge(config.getMaxAge())
.build();
}
diff --git
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/ContentNegotiator.java
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/ContentNegotiator.java
index e92b0bd564..acc27fafee 100644
---
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/ContentNegotiator.java
+++
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/ContentNegotiator.java
@@ -30,6 +30,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import static
org.apache.dubbo.config.nested.RestConfig.DEFAULT_FORMAT_PARAMETER_NAME;
+
public class ContentNegotiator {
private final FrameworkModel frameworkModel;
@@ -119,7 +121,7 @@ public class ContentNegotiator {
String parameterName = this.parameterName;
if (parameterName == null) {
Configuration conf =
ConfigurationUtils.getGlobalConfiguration(frameworkModel.defaultApplication());
- parameterName =
conf.getString(RestConstants.FORMAT_PARAMETER_NAME_KEY, "format");
+ parameterName =
conf.getString(RestConstants.FORMAT_PARAMETER_NAME_KEY,
DEFAULT_FORMAT_PARAMETER_NAME);
this.parameterName = parameterName;
}
return parameterName;
diff --git
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
index eb7eb2e49c..44b034d17c 100644
---
a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
+++
b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/rest/mapping/DefaultRequestMappingRegistry.java
@@ -17,10 +17,9 @@
package org.apache.dubbo.rpc.protocol.tri.rest.mapping;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.config.Configuration;
-import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.logger.FluentLogger;
import org.apache.dubbo.common.utils.ClassUtils;
+import org.apache.dubbo.config.context.ConfigManager;
import org.apache.dubbo.config.nested.RestConfig;
import org.apache.dubbo.remoting.http12.HttpRequest;
import org.apache.dubbo.remoting.http12.message.MethodMetadata;
@@ -71,15 +70,12 @@ public final class DefaultRequestMappingRegistry implements
RequestMappingRegist
contentNegotiator =
frameworkModel.getBeanFactory().getOrRegisterBean(ContentNegotiator.class);
}
- private void init() {
- Configuration conf =
ConfigurationUtils.getGlobalConfiguration(frameworkModel.defaultApplication());
- restConfig = new RestConfig();
-
restConfig.setSuffixPatternMatch(conf.getBoolean(RestConstants.SUFFIX_PATTERN_MATCH_KEY,
true));
-
restConfig.setTrailingSlashMatch(conf.getBoolean(RestConstants.TRAILING_SLASH_MATCH_KEY,
true));
-
restConfig.setCaseSensitiveMatch(conf.getBoolean(RestConstants.CASE_SENSITIVE_MATCH_KEY,
true));
-
+ private void init(Invoker<?> invoker) {
+ restConfig = ConfigManager.getProtocolOrDefault(invoker.getUrl())
+ .getTripleOrDefault()
+ .getRestOrDefault();
resolvers =
frameworkModel.getActivateExtensions(RequestMappingResolver.class);
- tree = new RadixTree<>(restConfig.getCaseSensitiveMatch());
+ tree = new RadixTree<>(restConfig.getCaseSensitiveMatchOrDefault());
}
@Override
@@ -88,7 +84,7 @@ public final class DefaultRequestMappingRegistry implements
RequestMappingRegist
lock.writeLock().lock();
try {
if (initialized.compareAndSet(false, true)) {
- init();
+ init(invoker);
}
} finally {
lock.writeLock().unlock();
@@ -208,13 +204,13 @@ public final class DefaultRequestMappingRegistry
implements RequestMappingRegist
request.setAttribute(RestConstants.PATH_ATTRIBUTE, path);
List<Candidate> candidates = new ArrayList<>();
- boolean cs = restConfig.getCaseSensitiveMatch();
+ boolean cs = restConfig.getCaseSensitiveMatchOrDefault();
tryMatch(request, new KeyString(path, cs), candidates);
if (candidates.isEmpty()) {
int end = path.length();
- if (restConfig.getTrailingSlashMatch()) {
+ if (restConfig.getTrailingSlashMatchOrDefault()) {
if (path.charAt(end - 1) == '/') {
end--;
tryMatch(request, new KeyString(path, end, cs),
candidates);
@@ -227,7 +223,7 @@ public final class DefaultRequestMappingRegistry implements
RequestMappingRegist
if (ch == '/') {
break;
}
- if (ch == '.' && restConfig.getSuffixPatternMatch()) {
+ if (ch == '.' &&
restConfig.getSuffixPatternMatchOrDefault()) {
if
(contentNegotiator.supportExtension(path.substring(i + 1, end))) {
tryMatch(request, new KeyString(path, i, cs),
candidates);
if (!candidates.isEmpty()) {
@@ -323,13 +319,13 @@ public final class DefaultRequestMappingRegistry
implements RequestMappingRegist
@Override
public boolean exists(String path, String method) {
- boolean cs = restConfig.getCaseSensitiveMatch();
+ boolean cs = restConfig.getCaseSensitiveMatchOrDefault();
if (tryExists(new KeyString(path, cs), method)) {
return true;
}
int end = path.length();
- if (restConfig.getTrailingSlashMatch()) {
+ if (restConfig.getTrailingSlashMatchOrDefault()) {
if (path.charAt(end - 1) == '/') {
end--;
if (tryExists(new KeyString(path, end, cs), method)) {
@@ -343,7 +339,7 @@ public final class DefaultRequestMappingRegistry implements
RequestMappingRegist
if (ch == '/') {
break;
}
- if (ch == '.' && restConfig.getSuffixPatternMatch()) {
+ if (ch == '.' && restConfig.getSuffixPatternMatchOrDefault()) {
if (contentNegotiator.supportExtension(path.substring(i + 1,
end))) {
if (tryExists(new KeyString(path, i, cs), method)) {
return true;