From b96f9e0e40e52ddec924054851f2e04610aa4516 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 11 Mar 2015 00:45:07 -0400 Subject: [PATCH] remove nested closures --- .idea/workspace.xml | 133 ++++++++++++------ .../MediaBrowser.ApiClient.Java.jar | Bin 606176 -> 606154 bytes ...AuthenticationInfoFromConnectResponse.java | 22 +++ .../connectionmanager/ConnectionManager.java | 33 +---- .../EnsureConnectUserResponse.java | 99 ++++--------- ...va => GetConnectServersInnerResponse.java} | 6 +- .../GetConnectServersResponse.java | 97 +++++++++++++ 7 files changed, 242 insertions(+), 148 deletions(-) create mode 100644 src/mediabrowser/apiinteraction/connectionmanager/AddAuthenticationInfoFromConnectResponse.java rename src/mediabrowser/apiinteraction/connectionmanager/{EnsureConnectUserInnerResponse.java => GetConnectServersInnerResponse.java} (73%) create mode 100644 src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index d49d78a3..b45df3c6 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,10 +7,11 @@ - - + + + - + @@ -38,18 +39,58 @@ - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -100,11 +141,6 @@ @@ -811,34 +852,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1181,15 +1194,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - diff --git a/out/artifacts/MediaBrowser_ApiClient_Java_jar/MediaBrowser.ApiClient.Java.jar b/out/artifacts/MediaBrowser_ApiClient_Java_jar/MediaBrowser.ApiClient.Java.jar index a6d85d6cd7762f18897688a6e6ace5ec8b3230a3..586791f03ed9c1b89e7671017db318f654781ddc 100644 GIT binary patch delta 42794 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

SO?GqVU#p=B%h}4e!B0 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 response) { final ServerCredentials credentials = _credentialProvider.GetCredentials(); if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(credentials.getConnectAccessToken())) { - EnsureConnectUser(credentials, new EmptyResponse(){ - - private void onEnsureConnectUserDone(){ - AfterConnectValidated(server, credentials, systemInfo, connectionMode, true, options, response); - } - @Override - public void onResponse() { - - if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getExchangeToken())){ - AddAuthenticationInfoFromConnect(server, connectionMode, credentials, new EmptyResponse() { - - @Override - public void onResponse() { - - onEnsureConnectUserDone(); - } - }); - } - else{ - onEnsureConnectUserDone(); - } - } - - }); + EnsureConnectUser(credentials, new EnsureConnectUserResponse(this, server, credentials, systemInfo, connectionMode, connectionOptions, response)); } else { - AfterConnectValidated(server, credentials, systemInfo, connectionMode, true, options, response); + AfterConnectValidated(server, credentials, systemInfo, connectionMode, true, connectionOptions, response); } } - private void AddAuthenticationInfoFromConnect(final ServerInfo server, + void AddAuthenticationInfoFromConnect(final ServerInfo server, ConnectionMode connectionMode, ServerCredentials credentials, final EmptyResponse response){ @@ -548,7 +525,7 @@ public class ConnectionManager implements IConnectionManager { findServersResponse.onError(null); } - EmptyResponse connectServersResponse = new EnsureConnectUserResponse(logger, connectService, credentials, foundServers, connectServers, numTasks, numTasksCompleted, response, this); + EmptyResponse connectServersResponse = new GetConnectServersResponse(logger, connectService, credentials, foundServers, connectServers, numTasks, numTasksCompleted, response, this); if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(credentials.getConnectAccessToken())) { diff --git a/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java b/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java index 094153ad..a92faa5f 100644 --- a/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java +++ b/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java @@ -1,97 +1,50 @@ package mediabrowser.apiinteraction.connectionmanager; +import mediabrowser.apiinteraction.ConnectionResult; import mediabrowser.apiinteraction.EmptyResponse; import mediabrowser.apiinteraction.Response; -import mediabrowser.apiinteraction.connect.ConnectService; +import mediabrowser.model.apiclient.ConnectionMode; +import mediabrowser.model.apiclient.ConnectionOptions; import mediabrowser.model.apiclient.ServerCredentials; import mediabrowser.model.apiclient.ServerInfo; -import mediabrowser.model.connect.ConnectUserServer; -import mediabrowser.model.connect.UserLinkType; -import mediabrowser.model.extensions.StringHelper; -import mediabrowser.model.logging.ILogger; - -import java.util.ArrayList; +import mediabrowser.model.system.PublicSystemInfo; /** - * Created by Luke on 2/15/2015. + * Created by Luke on 3/11/2015. */ public class EnsureConnectUserResponse extends EmptyResponse { - private ILogger logger; - private ConnectService connectService; - private ServerCredentials credentials; - private ArrayList foundServers; - private ArrayList connectServers; - private int numTasks; - private int[] numTasksCompleted; - private Response> finalResponse; private ConnectionManager connectionManager; + private ServerInfo server; + private ServerCredentials credentials; + private PublicSystemInfo systemInfo; + private ConnectionMode connectionMode; + private ConnectionOptions connectionOptions; + private Response response; - public EnsureConnectUserResponse(ILogger logger, ConnectService connectService, ServerCredentials credentials, ArrayList foundServers, ArrayList connectServers, int numTasks, int[] numTasksCompleted, Response> finalResponse, ConnectionManager connectionManager) { - this.logger = logger; - this.connectService = connectService; - this.credentials = credentials; - this.foundServers = foundServers; - this.connectServers = connectServers; - this.numTasks = numTasks; - this.numTasksCompleted = numTasksCompleted; - this.finalResponse = finalResponse; + public EnsureConnectUserResponse(ConnectionManager connectionManager, ServerInfo server, ServerCredentials credentials, PublicSystemInfo systemInfo, ConnectionMode connectionMode, ConnectionOptions connectionOptions, Response response) { this.connectionManager = connectionManager; + this.server = server; + this.credentials = credentials; + this.systemInfo = systemInfo; + this.connectionMode = connectionMode; + this.connectionOptions = connectionOptions; + this.response = response; } - void OnAny(ConnectUserServer[] servers){ - - synchronized (credentials){ - - connectServers.addAll(ConvertServerList(servers)); - - numTasksCompleted[0]++; - - if (numTasksCompleted[0] >= numTasks) { - connectionManager.OnGetServerResponse(credentials, foundServers, connectServers, finalResponse); - } - } + void onEnsureConnectUserDone(){ + connectionManager.AfterConnectValidated(server, credentials, systemInfo, connectionMode, true, connectionOptions, response); } @Override public void onResponse() { - logger.Debug("Getting connect servers"); - - connectService.GetServers(credentials.getConnectUserId(), credentials.getConnectAccessToken(), new EnsureConnectUserInnerResponse(this)); - } - - @Override - public void onError(Exception ex) { - - OnAny(new ConnectUserServer[]{}); - } - - private ArrayList ConvertServerList(ConnectUserServer[] userServers){ - - ArrayList servers = new ArrayList(); - - for(ConnectUserServer userServer : userServers){ - - ServerInfo server = new ServerInfo(); - - server.setExchangeToken(userServer.getAccessKey()); - server.setId(userServer.getSystemId()); - server.setName(userServer.getName()); - server.setLocalAddress(userServer.getLocalAddress()); - server.setRemoteAddress(userServer.getUrl()); - - if (StringHelper.EqualsIgnoreCase(userServer.getUserType(), "guest")) - { - server.setUserLinkType(UserLinkType.Guest); - } - else{ - server.setUserLinkType(UserLinkType.LinkedUser); - } - - servers.add(server); + if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(server.getExchangeToken())){ + connectionManager.AddAuthenticationInfoFromConnect(server, connectionMode, credentials, new AddAuthenticationInfoFromConnectResponse(this)); + } + else{ + onEnsureConnectUserDone(); } - - return servers; } + } diff --git a/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserInnerResponse.java b/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java similarity index 73% rename from src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserInnerResponse.java rename to src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java index cc0a0cb4..d04ccc02 100644 --- a/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserInnerResponse.java +++ b/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java @@ -6,11 +6,11 @@ import mediabrowser.model.connect.ConnectUserServer; /** * Created by Luke on 2/15/2015. */ -public class EnsureConnectUserInnerResponse extends Response { +public class GetConnectServersInnerResponse extends Response { - private EnsureConnectUserResponse parent; + private GetConnectServersResponse parent; - public EnsureConnectUserInnerResponse(EnsureConnectUserResponse parent) { + public GetConnectServersInnerResponse(GetConnectServersResponse parent) { this.parent = parent; } diff --git a/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java b/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java new file mode 100644 index 00000000..52b4404f --- /dev/null +++ b/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java @@ -0,0 +1,97 @@ +package mediabrowser.apiinteraction.connectionmanager; + +import mediabrowser.apiinteraction.EmptyResponse; +import mediabrowser.apiinteraction.Response; +import mediabrowser.apiinteraction.connect.ConnectService; +import mediabrowser.model.apiclient.ServerCredentials; +import mediabrowser.model.apiclient.ServerInfo; +import mediabrowser.model.connect.ConnectUserServer; +import mediabrowser.model.connect.UserLinkType; +import mediabrowser.model.extensions.StringHelper; +import mediabrowser.model.logging.ILogger; + +import java.util.ArrayList; + +/** + * Created by Luke on 2/15/2015. + */ +public class GetConnectServersResponse extends EmptyResponse { + + private ILogger logger; + private ConnectService connectService; + private ServerCredentials credentials; + private ArrayList foundServers; + private ArrayList connectServers; + private int numTasks; + private int[] numTasksCompleted; + private Response> finalResponse; + private ConnectionManager connectionManager; + + public GetConnectServersResponse(ILogger logger, ConnectService connectService, ServerCredentials credentials, ArrayList foundServers, ArrayList connectServers, int numTasks, int[] numTasksCompleted, Response> finalResponse, ConnectionManager connectionManager) { + this.logger = logger; + this.connectService = connectService; + this.credentials = credentials; + this.foundServers = foundServers; + this.connectServers = connectServers; + this.numTasks = numTasks; + this.numTasksCompleted = numTasksCompleted; + this.finalResponse = finalResponse; + this.connectionManager = connectionManager; + } + + void OnAny(ConnectUserServer[] servers){ + + synchronized (credentials){ + + connectServers.addAll(ConvertServerList(servers)); + + numTasksCompleted[0]++; + + if (numTasksCompleted[0] >= numTasks) { + connectionManager.OnGetServerResponse(credentials, foundServers, connectServers, finalResponse); + } + } + } + + @Override + public void onResponse() { + + logger.Debug("Getting connect servers"); + + connectService.GetServers(credentials.getConnectUserId(), credentials.getConnectAccessToken(), new GetConnectServersInnerResponse(this)); + } + + @Override + public void onError(Exception ex) { + + OnAny(new ConnectUserServer[]{}); + } + + private ArrayList ConvertServerList(ConnectUserServer[] userServers){ + + ArrayList servers = new ArrayList(); + + for(ConnectUserServer userServer : userServers){ + + ServerInfo server = new ServerInfo(); + + server.setExchangeToken(userServer.getAccessKey()); + server.setId(userServer.getSystemId()); + server.setName(userServer.getName()); + server.setLocalAddress(userServer.getLocalAddress()); + server.setRemoteAddress(userServer.getUrl()); + + if (StringHelper.EqualsIgnoreCase(userServer.getUserType(), "guest")) + { + server.setUserLinkType(UserLinkType.Guest); + } + else{ + server.setUserLinkType(UserLinkType.LinkedUser); + } + + servers.add(server); + } + + return servers; + } +}