Skip to content

Commit 6fd8920

Browse files
committed
refactor(server): Some minor improvements
1 parent 19fa027 commit 6fd8920

File tree

8 files changed

+28
-25
lines changed

8 files changed

+28
-25
lines changed

src/main/java/com/github/codeboyzhou/mcp/declarative/server/McpHttpServer.java renamed to src/main/java/com/github/codeboyzhou/mcp/declarative/server/EmbeddedJettyServer.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
import org.slf4j.Logger;
1212
import org.slf4j.LoggerFactory;
1313

14-
public class McpHttpServer {
14+
public class EmbeddedJettyServer {
1515

16-
private static final Logger log = LoggerFactory.getLogger(McpHttpServer.class);
16+
private static final Logger log = LoggerFactory.getLogger(EmbeddedJettyServer.class);
1717

1818
private static final String DEFAULT_SERVLET_CONTEXT_PATH = "/";
1919

@@ -25,16 +25,16 @@ public class McpHttpServer {
2525

2626
private int port;
2727

28-
public McpHttpServer() {
28+
public EmbeddedJettyServer() {
2929
this.threadPool = Executors.newSingleThreadExecutor(new NamedThreadFactory("mcp-http-server"));
3030
}
3131

32-
public McpHttpServer use(HttpServlet servlet) {
32+
public EmbeddedJettyServer use(HttpServlet servlet) {
3333
this.servlet = servlet;
3434
return this;
3535
}
3636

37-
public McpHttpServer bind(int port) {
37+
public EmbeddedJettyServer bind(int port) {
3838
this.port = port;
3939
return this;
4040
}
@@ -54,9 +54,9 @@ public void start() {
5454
try {
5555
httpserver.start();
5656
addShutdownHook(httpserver);
57-
log.info("Jetty-based HTTP server started on http://127.0.0.1:{}", port);
57+
log.info("Embedded Jetty server started on http://127.0.0.1:{}", port);
5858
} catch (Exception e) {
59-
log.error("Error starting HTTP server on http://127.0.0.1:{}", port, e);
59+
log.error("Error starting embedded Jetty server on http://127.0.0.1:{}", port, e);
6060
}
6161

6262
threadPool.submit(() -> await(httpserver));
@@ -66,7 +66,7 @@ private void await(Server httpserver) {
6666
try {
6767
httpserver.join();
6868
} catch (InterruptedException e) {
69-
log.error("Error joining HTTP server", e);
69+
log.error("Error joining embedded Jetty server", e);
7070
}
7171
}
7272

@@ -78,11 +78,12 @@ private void addShutdownHook(Server httpserver) {
7878

7979
private void shutdown(Server httpserver) {
8080
try {
81-
log.info("Shutting down HTTP server and MCP server");
81+
log.info("Shutting down embedded Jetty server");
8282
httpserver.stop();
83+
servlet.destroy();
8384
threadPool.shutdown();
8485
} catch (Exception e) {
85-
log.error("Error stopping HTTP server and MCP server", e);
86+
log.error("Error stopping Jetty server", e);
8687
}
8788
}
8889
}

src/main/java/com/github/codeboyzhou/mcp/declarative/server/component/AbstractMcpServerComponentFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ public abstract class AbstractMcpServerComponentFactory<T> implements McpServerC
2222

2323
private final ResourceBundle bundle;
2424

25+
private final boolean i18nEnabled;
26+
2527
protected AbstractMcpServerComponentFactory() {
2628
this.bundle = loadResourceBundle();
29+
Key<Boolean> key = Key.get(Boolean.class, Names.named(INJECTED_VARIABLE_NAME_I18N_ENABLED));
30+
this.i18nEnabled = InjectorProvider.getInstance().getInjector().getInstance(key);
2731
}
2832

2933
protected String resolveComponentAttributeValue(String attributeLiteralValue) {
30-
Key<Boolean> key = Key.get(Boolean.class, Names.named(INJECTED_VARIABLE_NAME_I18N_ENABLED));
31-
final Boolean i18nEnabled = InjectorProvider.getInstance().getInjector().getInstance(key);
3234
if (i18nEnabled && bundle != null && bundle.containsKey(attributeLiteralValue)) {
3335
return bundle.getString(attributeLiteralValue);
3436
}

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/McpSseServerFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.codeboyzhou.mcp.declarative.server.factory;
22

3-
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
3+
import com.github.codeboyzhou.mcp.declarative.server.EmbeddedJettyServer;
44
import io.modelcontextprotocol.server.McpServer;
55
import io.modelcontextprotocol.server.transport.HttpServletSseServerTransportProvider;
66
import org.slf4j.Logger;
@@ -19,7 +19,7 @@ public McpServer.SyncSpecification<?> sync(McpSseServerInfo info) {
1919
.sseEndpoint(info.sseEndpoint())
2020
.messageEndpoint(info.messageEndpoint())
2121
.build();
22-
McpHttpServer httpserver = new McpHttpServer();
22+
EmbeddedJettyServer httpserver = new EmbeddedJettyServer();
2323
httpserver.use(transportProvider).bind(info.port()).start();
2424
return McpServer.sync(transportProvider);
2525
}

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/McpStreamableServerFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.codeboyzhou.mcp.declarative.server.factory;
22

3-
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
3+
import com.github.codeboyzhou.mcp.declarative.server.EmbeddedJettyServer;
44
import com.github.codeboyzhou.mcp.declarative.util.ObjectMappers;
55
import io.modelcontextprotocol.server.McpServer;
66
import io.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider;
@@ -16,7 +16,7 @@ public McpServer.SyncSpecification<?> sync(McpStreamableServerInfo info) {
1616
.contextExtractor(info.contextExtractor())
1717
.keepAliveInterval(info.keepAliveInterval())
1818
.build();
19-
McpHttpServer httpserver = new McpHttpServer();
19+
EmbeddedJettyServer httpserver = new EmbeddedJettyServer();
2020
httpserver.use(transportProvider).bind(info.port()).start();
2121
return McpServer.sync(transportProvider);
2222
}

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/configurable/ConfigurableMcpSseServerFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerConfiguration;
44
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerSSE;
5-
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
5+
import com.github.codeboyzhou.mcp.declarative.server.EmbeddedJettyServer;
66
import io.modelcontextprotocol.server.McpServer;
77
import io.modelcontextprotocol.server.transport.HttpServletSseServerTransportProvider;
88
import org.slf4j.Logger;
@@ -26,7 +26,7 @@ public McpServer.SyncSpecification<?> sync() {
2626
.sseEndpoint(sse.endpoint())
2727
.messageEndpoint(sse.messageEndpoint())
2828
.build();
29-
McpHttpServer httpserver = new McpHttpServer();
29+
EmbeddedJettyServer httpserver = new EmbeddedJettyServer();
3030
httpserver.use(transportProvider).bind(sse.port()).start();
3131
return McpServer.sync(transportProvider);
3232
}

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/configurable/ConfigurableMcpStreamableServerFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerConfiguration;
44
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerStreamable;
5-
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
5+
import com.github.codeboyzhou.mcp.declarative.server.EmbeddedJettyServer;
66
import com.github.codeboyzhou.mcp.declarative.util.ObjectMappers;
77
import io.modelcontextprotocol.server.McpServer;
88
import io.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider;
@@ -24,7 +24,7 @@ public McpServer.SyncSpecification<?> sync() {
2424
.disallowDelete(streamable.disallowDelete())
2525
.keepAliveInterval(Duration.ofMillis(streamable.keepAliveInterval()))
2626
.build();
27-
McpHttpServer httpserver = new McpHttpServer();
27+
EmbeddedJettyServer httpserver = new EmbeddedJettyServer();
2828
httpserver.use(transportProvider).bind(streamable.port()).start();
2929
return McpServer.sync(transportProvider);
3030
}

src/main/java/com/github/codeboyzhou/mcp/declarative/util/Strings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ public final class Strings {
1414
}
1515

1616
public static String defaultIfBlank(String str, String defaultValue) {
17-
return str == null || str.trim().isBlank() ? defaultValue : str;
17+
return str == null || str.isBlank() ? defaultValue : str;
1818
}
1919
}

src/main/java/com/github/codeboyzhou/mcp/declarative/util/Types.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ private static Object getDefaultValue(Class<?> type) {
8585
}
8686

8787
private static Object getDefaultValue(String jsonSchemaType) {
88-
if (String.class.getSimpleName().equalsIgnoreCase(jsonSchemaType)) {
88+
if (JsonSchemaDataType.STRING.getType().equalsIgnoreCase(jsonSchemaType)) {
8989
return Strings.EMPTY;
9090
}
91-
if (Integer.class.getSimpleName().equalsIgnoreCase(jsonSchemaType)) {
91+
if (JsonSchemaDataType.INTEGER.getType().equalsIgnoreCase(jsonSchemaType)) {
9292
return 0;
9393
}
94-
if (Number.class.getSimpleName().equalsIgnoreCase(jsonSchemaType)) {
94+
if (JsonSchemaDataType.NUMBER.getType().equalsIgnoreCase(jsonSchemaType)) {
9595
return 0.0;
9696
}
97-
if (Boolean.class.getSimpleName().equalsIgnoreCase(jsonSchemaType)) {
97+
if (JsonSchemaDataType.BOOLEAN.getType().equalsIgnoreCase(jsonSchemaType)) {
9898
return false;
9999
}
100100
return null;

0 commit comments

Comments
 (0)