Skip to content

Commit b15f931

Browse files
committed
Remove clunky initialize method from Client interface
1 parent 9ca2942 commit b15f931

File tree

4 files changed

+92
-182
lines changed

4 files changed

+92
-182
lines changed

src/main/java/org/kitteh/irc/client/library/Client.java

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -888,60 +888,6 @@ interface WithManagement extends Client {
888888
*/
889889
void setServerAddress(@NonNull HostWithPort address);
890890

891-
/**
892-
* Initialize with pre-connection information.
893-
*
894-
* @param name name
895-
* @param networkHandler networkHandler
896-
* @param serverHostWithPort serverHostWithPort
897-
* @param serverPassword serverPassword
898-
* @param bindAddress bindAddress
899-
* @param proxyAddress proxyAddress
900-
* @param proxyType proxyType
901-
* @param nick nick
902-
* @param userString userString
903-
* @param realName realName
904-
* @param actorTracker actorTracker
905-
* @param authManager authManager
906-
* @param capabilityManager capabilityManager
907-
* @param eventManager eventManager
908-
* @param listenerSuppliers listenerSuppliers
909-
* @param messageTagManager messageTagManager
910-
* @param iSupportManager iSupportManager
911-
* @param defaultMessageMap defaultMessageMap
912-
* @param messageSendingQueue messageSendingQueue
913-
* @param serverInfo serverInfo
914-
* @param exceptionListener exceptionListener
915-
* @param inputListener inputListener
916-
* @param outputListener outputListener
917-
* @param secure secure
918-
* @param secureKeyCertChain secureKeyCertChain
919-
* @param secureKey secureKey
920-
* @param secureKeyPassword secureKeyPassword
921-
* @param trustManagerFactory trustManagerFactory
922-
* @param stsStorageManager stsStorageManager
923-
* @param webircHost webircHost
924-
* @param webircIP webircIP
925-
* @param webircPassword webircPassword
926-
* @param webircUser webircUser
927-
*/
928-
void initialize(@NonNull String name, @NonNull NetworkHandler networkHandler,
929-
@NonNull HostWithPort serverHostWithPort, @Nullable String serverPassword,
930-
@Nullable InetSocketAddress bindAddress,
931-
@Nullable HostWithPort proxyAddress, @Nullable ProxyType proxyType,
932-
@NonNull String nick, @NonNull String userString, @NonNull String realName, @NonNull ActorTracker actorTracker,
933-
@NonNull AuthManager authManager, CapabilityManager.@NonNull WithManagement capabilityManager,
934-
@NonNull EventManager eventManager, @NonNull List<EventListenerSupplier> listenerSuppliers,
935-
@NonNull MessageTagManager messageTagManager,
936-
@NonNull ISupportManager iSupportManager, @Nullable DefaultMessageMap defaultMessageMap,
937-
@NonNull Function<Client.WithManagement, ? extends MessageSendingQueue> messageSendingQueue,
938-
@NonNull Function<Client.WithManagement, ? extends ServerInfo.WithManagement> serverInfo,
939-
@Nullable Consumer<Exception> exceptionListener, @Nullable Consumer<String> inputListener,
940-
@Nullable Consumer<String> outputListener, boolean secure, @Nullable Path secureKeyCertChain,
941-
@Nullable Path secureKey, @Nullable String secureKeyPassword, @Nullable TrustManagerFactory trustManagerFactory,
942-
@Nullable StsStorageManager stsStorageManager, @Nullable String webircHost,
943-
@Nullable InetAddress webircIP, @Nullable String webircPassword, @Nullable String webircUser);
944-
945891
/**
946892
* Sets the client's user modes.
947893
*

src/main/java/org/kitteh/irc/client/library/defaults/DefaultBuilder.java

Lines changed: 38 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -340,52 +340,52 @@ private class ManagementImpl implements Management {
340340
private static final Function<Client.WithManagement, ? extends MessageTagManager> DEFAULT_MESSAGE_TAG_MANAGER = DefaultMessageTagManager::new;
341341
private static final Function<Client.WithManagement, ? extends ServerInfo.WithManagement> DEFAULT_SERVER_INFO = DefaultServerInfo::new;
342342

343-
private String name = "Unnamed";
343+
String name = "Unnamed";
344344

345-
private @Nullable String bindHost;
346-
private int bindPort;
345+
@Nullable String bindHost;
346+
int bindPort;
347347

348-
private HostWithPort serverHostWithPort = HostWithPort.of(DefaultBuilder.DEFAULT_SERVER_HOST, DefaultBuilder.DEFAULT_SERVER_PORT);
349-
private @Nullable String serverPassword = null;
350-
private boolean secure = true;
351-
private @Nullable Path secureKeyCertChain = null;
352-
private @Nullable Path secureKey = null;
353-
private @Nullable String secureKeyPassword = null;
354-
private @Nullable TrustManagerFactory secureTrustManagerFactory = null;
348+
HostWithPort serverHostWithPort = HostWithPort.of(DefaultBuilder.DEFAULT_SERVER_HOST, DefaultBuilder.DEFAULT_SERVER_PORT);
349+
@Nullable String serverPassword = null;
350+
boolean secure = true;
351+
@Nullable Path secureKeyCertChain = null;
352+
@Nullable Path secureKey = null;
353+
@Nullable String secureKeyPassword = null;
354+
@Nullable TrustManagerFactory secureTrustManagerFactory = null;
355355

356-
private String nick = "Kitteh";
357-
private String userString = "Kitteh";
358-
private String realName = "KICL " + Version.getVersion() + " - kitteh.org";
356+
String nick = "Kitteh";
357+
String userString = "Kitteh";
358+
String realName = "KICL " + Version.getVersion() + " - kitteh.org";
359359

360360
// Listeners
361-
private @Nullable Consumer<Exception> exceptionListener = Throwable::printStackTrace;
362-
private @Nullable Consumer<String> inputListener = null;
363-
private @Nullable Consumer<String> outputListener = null;
361+
@Nullable Consumer<Exception> exceptionListener = Throwable::printStackTrace;
362+
@Nullable Consumer<String> inputListener = null;
363+
@Nullable Consumer<String> outputListener = null;
364364

365365
// Proxy
366-
private @Nullable String proxyHost;
367-
private int proxyPort;
368-
private @Nullable ProxyType proxyType;
366+
@Nullable String proxyHost;
367+
int proxyPort;
368+
@Nullable ProxyType proxyType;
369369

370370
// WebIRC
371-
private @Nullable String webircHost = null;
372-
private @Nullable InetAddress webircIP = null;
373-
private @Nullable String webircPassword = null;
374-
private @Nullable String webircGateway = null;
371+
@Nullable String webircHost = null;
372+
@Nullable InetAddress webircIP = null;
373+
@Nullable String webircPassword = null;
374+
@Nullable String webircGateway = null;
375375

376376
// Management
377-
private Function<Client.WithManagement, ? extends ActorTracker> actorTracker = DefaultBuilder.DEFAULT_ACTOR_TRACKER;
378-
private Function<Client.WithManagement, ? extends AuthManager> authManager = DefaultBuilder.DEFAULT_AUTH_MANAGER;
379-
private Function<Client.WithManagement, ? extends CapabilityManager.WithManagement> capabilityManager = DefaultBuilder.DEFAULT_CAPABILITY_MANAGER;
380-
private @Nullable DefaultMessageMap defaultMessageMap = null;
381-
private Function<Client.WithManagement, ? extends EventManager> eventManager = DefaultBuilder.DEFAULT_EVENT_MANAGER;
382-
private List<EventListenerSupplier> eventListeners = DefaultBuilder.DEFAULT_EVENT_LISTENERS;
383-
private Function<Client.WithManagement, ? extends ISupportManager> iSupportManager = DefaultBuilder.DEFAULT_ISUPPORT_MANAGER;
384-
private Function<Client.WithManagement, ? extends MessageSendingQueue> messageSendingQueue = DefaultBuilder.DEFAULT_MESSAGE_SENDING_QUEUE;
385-
private Function<Client.WithManagement, ? extends MessageTagManager> messageTagManager = DefaultBuilder.DEFAULT_MESSAGE_TAG_MANAGER;
386-
private NetworkHandler networkHandler = NettyNetworkHandler.getInstance();
387-
private Function<Client.WithManagement, ? extends ServerInfo.WithManagement> serverInfo = DefaultBuilder.DEFAULT_SERVER_INFO;
388-
private @Nullable StsStorageManager stsStorageManager = null;
377+
Function<Client.WithManagement, ? extends ActorTracker> actorTracker = DefaultBuilder.DEFAULT_ACTOR_TRACKER;
378+
Function<Client.WithManagement, ? extends AuthManager> authManager = DefaultBuilder.DEFAULT_AUTH_MANAGER;
379+
Function<Client.WithManagement, ? extends CapabilityManager.WithManagement> capabilityManager = DefaultBuilder.DEFAULT_CAPABILITY_MANAGER;
380+
@Nullable DefaultMessageMap defaultMessageMap = null;
381+
Function<Client.WithManagement, ? extends EventManager> eventManager = DefaultBuilder.DEFAULT_EVENT_MANAGER;
382+
List<EventListenerSupplier> eventListeners = DefaultBuilder.DEFAULT_EVENT_LISTENERS;
383+
Function<Client.WithManagement, ? extends ISupportManager> iSupportManager = DefaultBuilder.DEFAULT_ISUPPORT_MANAGER;
384+
Function<Client.WithManagement, ? extends MessageSendingQueue> messageSendingQueue = DefaultBuilder.DEFAULT_MESSAGE_SENDING_QUEUE;
385+
Function<Client.WithManagement, ? extends MessageTagManager> messageTagManager = DefaultBuilder.DEFAULT_MESSAGE_TAG_MANAGER;
386+
NetworkHandler networkHandler = NettyNetworkHandler.getInstance();
387+
Function<Client.WithManagement, ? extends ServerInfo.WithManagement> serverInfo = DefaultBuilder.DEFAULT_SERVER_INFO;
388+
@Nullable StsStorageManager stsStorageManager = null;
389389

390390
@Override
391391
public @NonNull DefaultBuilder name(@NonNull String name) {
@@ -447,28 +447,8 @@ private class ManagementImpl implements Management {
447447

448448
@Override
449449
public @NonNull Client build() {
450-
if (this.stsStorageManager != null) {
451-
Sanity.truthiness(!SslUtil.isInsecure(this.secureTrustManagerFactory), "Cannot use STS with an insecure trust manager.");
452-
}
453-
454-
HostWithPort proxyAddress = null;
455-
if ((this.proxyHost != null) && (this.proxyPort > 0)) {
456-
proxyAddress = HostWithPort.of(this.proxyHost, this.proxyPort);
457-
}
458-
Client.WithManagement client = new DefaultClient();
459-
client.initialize(this.name, this.networkHandler,
460-
this.serverHostWithPort, this.serverPassword,
461-
this.getInetSocketAddress(this.bindHost, this.bindPort),
462-
proxyAddress, this.proxyType,
463-
this.nick, this.userString, this.realName,
464-
this.actorTracker.apply(client),
465-
this.authManager.apply(client), this.capabilityManager.apply(client), this.eventManager.apply(client),
466-
this.eventListeners, this.messageTagManager.apply(client),
467-
this.iSupportManager.apply(client), this.defaultMessageMap, this.messageSendingQueue,
468-
this.serverInfo, this.exceptionListener, this.inputListener, this.outputListener, this.secure,
469-
this.secureKeyCertChain, this.secureKey, this.secureKeyPassword, this.secureTrustManagerFactory, this.stsStorageManager,
470-
this.webircHost, this.webircIP, this.webircPassword, this.webircGateway
471-
);
450+
DefaultClient client = new DefaultClient(this);
451+
client.initialize(this);
472452

473453
return client;
474454
}
@@ -485,7 +465,7 @@ private class ManagementImpl implements Management {
485465
return new ToStringer(this).toString();
486466
}
487467

488-
private InetSocketAddress getInetSocketAddress(@Nullable String host, int port) {
468+
InetSocketAddress getInetSocketAddress(@Nullable String host, int port) {
489469
if (host != null) {
490470
return new InetSocketAddress(host, port);
491471
} else {

src/main/java/org/kitteh/irc/client/library/defaults/DefaultClient.java

Lines changed: 54 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -241,69 +241,65 @@ protected void processElement(@NonNull String element) {
241241

242242
/**
243243
* Creates a new default client.
244+
*
245+
* @param builder builder
244246
*/
245-
public DefaultClient() {
246-
247-
}
248-
249-
@Override
250-
public void initialize(@NonNull String name, @NonNull NetworkHandler networkHandler,
251-
@NonNull HostWithPort serverAddress, @Nullable String serverPassword,
252-
@Nullable InetSocketAddress bindAddress,
253-
@Nullable HostWithPort proxyAddress, @Nullable ProxyType proxyType,
254-
@NonNull String nick, @NonNull String userString, @NonNull String realName, @NonNull ActorTracker actorTracker,
255-
@NonNull AuthManager authManager, CapabilityManager.@NonNull WithManagement capabilityManager,
256-
@NonNull EventManager eventManager, @NonNull List<EventListenerSupplier> listenerSuppliers,
257-
@NonNull MessageTagManager messageTagManager,
258-
@NonNull ISupportManager iSupportManager, @Nullable DefaultMessageMap defaultMessageMap,
259-
@NonNull Function<Client.WithManagement, ? extends MessageSendingQueue> messageSendingQueue,
260-
@NonNull Function<Client.WithManagement, ? extends ServerInfo.WithManagement> serverInfo,
261-
@Nullable Consumer<Exception> exceptionListener, @Nullable Consumer<String> inputListener,
262-
@Nullable Consumer<String> outputListener, boolean secure, @Nullable Path secureKeyCertChain,
263-
@Nullable Path secureKey, @Nullable String secureKeyPassword, @Nullable TrustManagerFactory trustManagerFactory,
264-
@Nullable StsStorageManager stsStorageManager, @Nullable String webircHost,
265-
@Nullable InetAddress webircIP, @Nullable String webircPassword, @Nullable String webircGateway) {
266-
this.name = name;
247+
DefaultClient(DefaultBuilder builder) {
267248
this.processor = new InputProcessor();
268249
this.messageSendingImmediate = new QueueProcessingThreadSender(this, "Immediate");
269-
this.networkHandler = networkHandler;
270-
this.serverAddress = serverAddress;
271-
this.proxyAddress = proxyAddress;
272-
this.proxyType = proxyType;
273-
this.serverPassword = serverPassword;
274-
this.bindAddress = bindAddress;
275-
this.currentNick = this.requestedNick = this.goalNick = nick;
276-
this.userString = userString;
277-
this.realName = realName;
278-
this.actorTracker = actorTracker;
279-
this.authManager = authManager;
280-
this.capabilityManager = capabilityManager;
281-
this.eventManager = eventManager;
282-
this.messageTagManager = messageTagManager;
283-
this.iSupportManager = iSupportManager;
284-
this.defaultMessageMap = (defaultMessageMap == null) ? new SimpleDefaultMessageMap() : defaultMessageMap;
285-
this.messageSendingQueueSupplier = messageSendingQueue;
286-
this.serverInfoSupplier = serverInfo;
287-
this.exceptionListener = new Listener<>(this, exceptionListener);
288-
this.inputListener = new Listener<>(this, inputListener);
289-
this.outputListener = new Listener<>(this, outputListener);
290-
this.secure = secure;
291-
this.secureKeyCertChain = secureKeyCertChain;
292-
this.secureKey = secureKey;
293-
this.secureKeyPassword = secureKeyPassword;
294-
this.secureTrustManagerFactory = trustManagerFactory;
295-
this.stsStorageManager = stsStorageManager;
296-
this.webircHost = webircHost;
297-
this.webircIP = webircIP;
298-
this.webircPassword = webircPassword;
299-
this.webircGateway = webircGateway;
300-
301-
for (EventListenerSupplier eventListenerSupplier : listenerSuppliers) {
302-
this.eventManager.registerEventListener(eventListenerSupplier.getConstructingFunction().apply(this));
303-
}
304250

305-
this.serverInfo = this.serverInfoSupplier.apply(this);
251+
this.name = builder.name;
252+
253+
this.networkHandler = builder.networkHandler;
254+
this.serverAddress = builder.serverHostWithPort;
255+
this.serverPassword = builder.serverPassword;
256+
this.bindAddress = builder.getInetSocketAddress(builder.bindHost, builder.bindPort);
257+
this.proxyAddress = ((builder.proxyHost != null) && (builder.proxyPort > 0)) ? HostWithPort.of(builder.proxyHost, builder.proxyPort) : null;
258+
this.proxyType = builder.proxyType;
259+
260+
this.currentNick = this.requestedNick = this.goalNick = builder.nick;
261+
this.userString = builder.userString;
262+
this.realName = builder.realName;
263+
264+
this.defaultMessageMap = (builder.defaultMessageMap == null) ? new SimpleDefaultMessageMap() : builder.defaultMessageMap;
265+
266+
this.messageSendingQueueSupplier = builder.messageSendingQueue;
267+
268+
this.serverInfoSupplier = builder.serverInfo;
269+
270+
this.exceptionListener = new Listener<>(this, builder.exceptionListener);
271+
this.inputListener = new Listener<>(this, builder.inputListener);
272+
this.outputListener = new Listener<>(this, builder.outputListener);
306273

274+
this.secure = builder.secure;
275+
this.secureKeyCertChain = builder.secureKeyCertChain;
276+
this.secureKey = builder.secureKey;
277+
this.secureKeyPassword = builder.secureKeyPassword;
278+
this.secureTrustManagerFactory = builder.secureTrustManagerFactory;
279+
this.stsStorageManager = builder.stsStorageManager;
280+
281+
this.webircHost = builder.webircHost;
282+
this.webircIP = builder.webircIP;
283+
this.webircPassword = builder.webircPassword;
284+
this.webircGateway = builder.webircGateway;
285+
}
286+
287+
/**
288+
* Call initialization methods that require a fully constructed Client.
289+
*
290+
* @param builder builder, same as sent to constructor
291+
*/
292+
void initialize(@NonNull DefaultBuilder builder) {
293+
this.actorTracker = builder.actorTracker.apply(this);
294+
this.authManager = builder.authManager.apply(this);
295+
this.capabilityManager = builder.capabilityManager.apply(this);
296+
this.eventManager = builder.eventManager.apply(this);
297+
this.messageTagManager = builder.messageTagManager.apply(this);
298+
this.iSupportManager = builder.iSupportManager.apply(this);
299+
this.serverInfo = this.serverInfoSupplier.apply(this);
300+
for (EventListenerSupplier eventListenerSupplier : builder.eventListeners) {
301+
this.eventManager.registerEventListener(eventListenerSupplier.getConstructingFunction().apply(this));
302+
}
307303
if (this.stsStorageManager != null) {
308304
this.configureSts();
309305
} else if (!this.isSecureConnection()) {

0 commit comments

Comments
 (0)