|
4 | 4 |
|
5 | 5 | package io.modelcontextprotocol.spec; |
6 | 6 |
|
| 7 | +import io.modelcontextprotocol.common.McpTransportContext; |
7 | 8 | import io.modelcontextprotocol.server.McpNotificationHandler; |
8 | 9 | import io.modelcontextprotocol.server.McpRequestHandler; |
9 | 10 |
|
@@ -45,11 +46,33 @@ public DefaultMcpStreamableServerSessionFactory(Duration requestTimeout, |
45 | 46 |
|
46 | 47 | @Override |
47 | 48 | public McpStreamableServerSession.McpStreamableServerSessionInit startSession( |
48 | | - McpSchema.InitializeRequest initializeRequest) { |
| 49 | + final McpSchema.InitializeRequest initializeRequest) { |
| 50 | + final String sessionId = generateSessionId(null, initializeRequest); |
49 | 51 | return new McpStreamableServerSession.McpStreamableServerSessionInit( |
50 | | - new McpStreamableServerSession(UUID.randomUUID().toString(), initializeRequest.capabilities(), |
| 52 | + new McpStreamableServerSession(sessionId, initializeRequest.capabilities(), |
51 | 53 | initializeRequest.clientInfo(), requestTimeout, requestHandlers, notificationHandlers), |
52 | 54 | this.initRequestHandler.handle(initializeRequest)); |
53 | 55 | } |
54 | 56 |
|
| 57 | + @Override |
| 58 | + public McpStreamableServerSession.McpStreamableServerSessionInit startSession( |
| 59 | + final McpTransportContext mcpTransportContext, final McpSchema.InitializeRequest initializeRequest) { |
| 60 | + final String sessionId = generateSessionId(mcpTransportContext, initializeRequest); |
| 61 | + return new McpStreamableServerSession.McpStreamableServerSessionInit( |
| 62 | + new McpStreamableServerSession(sessionId, initializeRequest.capabilities(), |
| 63 | + initializeRequest.clientInfo(), requestTimeout, requestHandlers, notificationHandlers), |
| 64 | + this.initRequestHandler.handle(initializeRequest)); |
| 65 | + } |
| 66 | + |
| 67 | + /** |
| 68 | + * An extensibility point to generate session IDs differently. |
| 69 | + * @param mcpTransportContext transport context |
| 70 | + * @param initializeRequest initialization request |
| 71 | + * @return generated session ID |
| 72 | + */ |
| 73 | + protected String generateSessionId(McpTransportContext mcpTransportContext, |
| 74 | + McpSchema.InitializeRequest initializeRequest) { |
| 75 | + return UUID.randomUUID().toString(); |
| 76 | + } |
| 77 | + |
55 | 78 | } |
0 commit comments