Class MockApnsServerBuilder
A MockApnsServerBuilder
constructs new MockApnsServer
instances. Callers must supply server
credentials via one of the setServerCredentials
methods and supply a PushNotificationHandlerFactory
prior to constructing a new server with the build()
method; all other settings are
optional.
Server builders may be reused to generate multiple servers, and their settings may be changed from one server to the next.
- Since:
- 0.8
- Author:
- Jon Chambers
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The default maximum number of concurrent streams for an APNs server, which matches the default limit set by the real APNs server at the time of this writing. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbuild()
Constructs a new server with the previously-set configuration.generateApnsUniqueId
(boolean generateApnsUniqueId) setEventLoopGroup
(EventLoopGroup eventLoopGroup) Sets the event loop group to be used by the server under construction.setHandlerFactory
(PushNotificationHandlerFactory handlerFactory) Sets the handler factory to be used to construct push notification handlers for the server under construction.setListener
(MockApnsServerListener listener) Sets the listener to be notified when notifications are accepted or rejected by the server under construction.setMaxConcurrentStreams
(int maxConcurrentStreams) Sets the maximum number of concurrent HTTP/2 streams allowed by the server under construction.setServerCredentials
(File certificatePemFile, File privateKeyPkcs8File, String privateKeyPassword) Sets the credentials for the server under construction using the certificates in the given PEM file and the private key in the given PKCS#8 file.setServerCredentials
(InputStream certificatePemInputStream, InputStream privateKeyPkcs8InputStream, String privateKeyPassword) Sets the credentials for the server under construction using the certificates in the given PEM input stream and the private key in the given PKCS#8 input stream.setServerCredentials
(X509Certificate[] certificates, PrivateKey privateKey, String privateKeyPassword) Sets the credentials for the server under construction.setTrustedClientCertificateChain
(File certificatePemFile) Sets the trusted certificate chain for the server under construction using the contents of the given PEM file.setTrustedClientCertificateChain
(InputStream certificateInputStream) Sets the trusted certificate chain for the server under construction using the contents of the given PEM input stream.setTrustedServerCertificateChain
(X509Certificate... certificates) Sets the trusted certificate chain for the server under construction.setUseAlpn
(boolean useAlpn) Sets whether the server under construction should use ALPN.
-
Field Details
-
DEFAULT_MAX_CONCURRENT_STREAMS
public static final int DEFAULT_MAX_CONCURRENT_STREAMSThe default maximum number of concurrent streams for an APNs server, which matches the default limit set by the real APNs server at the time of this writing.- See Also:
-
-
Constructor Details
-
MockApnsServerBuilder
public MockApnsServerBuilder()
-
-
Method Details
-
setServerCredentials
public MockApnsServerBuilder setServerCredentials(File certificatePemFile, File privateKeyPkcs8File, String privateKeyPassword) Sets the credentials for the server under construction using the certificates in the given PEM file and the private key in the given PKCS#8 file.
- Parameters:
certificatePemFile
- a PEM file containing the certificate chain for the server under constructionprivateKeyPkcs8File
- a PKCS#8 file containing the private key for the server under constructionprivateKeyPassword
- the password for the given private key, ornull
if the key is not password-protected- Returns:
- a reference to this builder
-
setServerCredentials
public MockApnsServerBuilder setServerCredentials(InputStream certificatePemInputStream, InputStream privateKeyPkcs8InputStream, String privateKeyPassword) Sets the credentials for the server under construction using the certificates in the given PEM input stream and the private key in the given PKCS#8 input stream.
- Parameters:
certificatePemInputStream
- a PEM input stream containing the certificate chain for the server under constructionprivateKeyPkcs8InputStream
- a PKCS#8 input stream containing the private key for the server under constructionprivateKeyPassword
- the password for the given private key, ornull
if the key is not password-protected- Returns:
- a reference to this builder
-
setServerCredentials
public MockApnsServerBuilder setServerCredentials(X509Certificate[] certificates, PrivateKey privateKey, String privateKeyPassword) Sets the credentials for the server under construction.
- Parameters:
certificates
- a certificate chain including the server's own certificateprivateKey
- the private key for the server's certificateprivateKeyPassword
- the password for the given private key, ornull
if the key is not password-protected- Returns:
- a reference to this builder
-
setTrustedClientCertificateChain
Sets the trusted certificate chain for the server under construction using the contents of the given PEM file. If not set (or
null
), the server will use the JVM's default trust manager.In development environments, callers will almost always need to provide a trusted certificate chain for clients (since clients in development environments will generally not present credentials recognized by the JVM's default trust manager).
- Parameters:
certificatePemFile
- a PEM file containing one or more trusted certificates- Returns:
- a reference to this builder
-
setTrustedClientCertificateChain
Sets the trusted certificate chain for the server under construction using the contents of the given PEM input stream. If not set (or
null
), the server will use the JVM's default trust manager.In development environments, callers will almost always need to provide a trusted certificate chain for clients (since clients in development environments will generally not present credentials recognized by the JVM's default trust manager).
- Parameters:
certificateInputStream
- an input stream to PEM-formatted data containing one or more trusted certificates- Returns:
- a reference to this builder
-
setTrustedServerCertificateChain
Sets the trusted certificate chain for the server under construction. If not set (or
null
), the server will use the JVM's default trust manager.In development environments, callers will almost always need to provide a trusted certificate chain for clients (since clients in development environments will generally not present credentials recognized by the JVM's default trust manager).
- Parameters:
certificates
- one or more trusted certificates- Returns:
- a reference to this builder
-
setEventLoopGroup
Sets the event loop group to be used by the server under construction. If not set (or if
null
), the server will create and manage its own event loop group.- Parameters:
eventLoopGroup
- the event loop group to use for this server, ornull
to let the server manage its own event loop group- Returns:
- a reference to this builder
-
setMaxConcurrentStreams
Sets the maximum number of concurrent HTTP/2 streams allowed by the server under construction. By default, mock servers will have a concurrent stream limit of 1500<T extends com.eatthepath.pushy.apns.server.BaseHttp2Server>.- Parameters:
maxConcurrentStreams
- the maximum number of concurrent HTTP/2 streams allowed by the server under construction; must be positive- Returns:
- a reference to this builder
-
setUseAlpn
Sets whether the server under construction should use ALPN. By default, mock servers do not use ALPN and instead require clients to use direct negotiation.
Note that Pushy itself does not require (or even use) ALPN and always uses direct protocol negotiation. ALPN is only useful in cases where Pushy's mock server is being used with a non-Pushy APNs client.
Note also that turning on ALPN support may introduce new system requirements for the mock server. Prior to version 9, Java does not include support for ALPN, and so it will need to be provided by thid-party software such as the Jetty ALPN agent or Netty's netty-tcnative package.
- Parameters:
useAlpn
-true
to enable ALPN support, orfalse
to require direct protocol negotiation- Returns:
- a reference to this builder
- See Also:
-
setHandlerFactory
Sets the handler factory to be used to construct push notification handlers for the server under construction. Servers require a handler factory.- Parameters:
handlerFactory
- the handler factory to be used by the server under construction- Returns:
- a reference to this builder
- Since:
- 0.12
-
setListener
Sets the listener to be notified when notifications are accepted or rejected by the server under construction. If not set or ifnull
, the server will not notify a listener when notifications are accepted or rejected.- Parameters:
listener
- the listener to be used by the server under construction- Returns:
- a reference to this builder
- Since:
- 0.12
-
generateApnsUniqueId
-
build
Constructs a new server with the previously-set configuration.- Returns:
- a new server instance with the previously-set configuration
- Throws:
SSLException
- if an SSL context could not be created for the new server for any reason
-