# Class ServerEndpointConfig.Configurator

java.lang.Object
jakarta.websocket.server.ServerEndpointConfig.Configurator

Enclosing interface:
  `ServerEndpointConfig`

public static class ServerEndpointConfig.Configurator extends Object
Provides a mechanism to customize the WebSocket handshake for server endpoints. Applications may subclass this to inspect or modify the handshake.

## Constructor Summary

Constructors
Constructor
Description
`Configurator()`
Creates a new instance of the Configurator.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`checkOrigin(String originHeaderValue)`
Checks whether the given Origin header value is acceptable.
`ServerEndpointConfig.Configurator`
`getContainerDefaultConfigurator()`
Return the platform default configurator.
`<T> T`
`getEndpointInstance(Class<T> clazz)`
Creates a new instance of the endpoint class.
`List<Extension>`
`getNegotiatedExtensions(List<Extension> installed, List<Extension> requested)`
Determines the extensions to use for the WebSocket connection by comparing the installed and requested extensions.
`String`
`getNegotiatedSubprotocol(List<String> supported, List<String> requested)`
Determines the sub-protocol to use for the WebSocket connection by comparing the supported and requested sub-protocols.
`void`
`modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response)`
Provides the opportunity to modify the handshake before it is completed.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Configurator

public Configurator()
Creates a new instance of the Configurator.

## Method Details

### getContainerDefaultConfigurator

public ServerEndpointConfig.Configurator getContainerDefaultConfigurator()
Return the platform default configurator.

Returns:
  the platform default configurator
Since:
  WebSocket 2.1

### getNegotiatedSubprotocol

public String getNegotiatedSubprotocol(List<String> supported, List<String> requested)
Determines the sub-protocol to use for the WebSocket connection by comparing the supported and requested sub-protocols.

Parameters:
  `supported` - The list of sub-protocols supported by the endpoint
  `requested` - The list of sub-protocols requested by the client
Returns:
  The negotiated sub-protocol, or `null` if none matches

### getNegotiatedExtensions

public List<Extension> getNegotiatedExtensions(List<Extension> installed, List<Extension> requested)
Determines the extensions to use for the WebSocket connection by comparing the installed and requested extensions.

Parameters:
  `installed` - The list of extensions installed on the server
  `requested` - The list of extensions requested by the client
Returns:
  The list of negotiated extensions

### checkOrigin

public boolean checkOrigin(String originHeaderValue)
Checks whether the given Origin header value is acceptable. The default implementation always returns `true`.

Parameters:
  `originHeaderValue` - The Origin header value to check
Returns:
  `true` if the origin is acceptable

### modifyHandshake

public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response)
Provides the opportunity to modify the handshake before it is completed. This method is called after the sub-protocol and extensions have been negotiated.

Parameters:
  `sec` - The server endpoint configuration
  `request` - The handshake request
  `response` - The handshake response

### getEndpointInstance

public <T> T getEndpointInstance(Class<T> clazz) throws InstantiationException
Creates a new instance of the endpoint class.

Type Parameters:
  `T` - The type of the endpoint class
Parameters:
  `clazz` - The endpoint class
Returns:
  A new instance of the endpoint
Throws:
  `InstantiationException` - If the endpoint cannot be instantiated