remove nested closures

This commit is contained in:
Luke Pulverenti 2015-03-11 00:45:07 -04:00
parent f6a8521d52
commit b96f9e0e40
7 changed files with 242 additions and 148 deletions

133
.idea/workspace.xml generated
View File

@ -7,10 +7,11 @@
</component>
<component name="ChangeListManager">
<list default="true" id="ded6c251-ca93-4546-8a98-be60c6d1fbb2" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/FirstServerConnectResponse.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/ApiClient.java" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/ApiClient.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/AddAuthenticationInfoFromConnectResponse.java" />
<change type="MOVED" beforePath="C:\Dev\MediaBrowser.ApiClient.Java\src\mediabrowser\apiinteraction\connectionmanager\EnsureConnectUserInnerResponse.java" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java" />
<change type="MOVED" beforePath="C:\Dev\MediaBrowser.ApiClient.Java\src\mediabrowser\apiinteraction\connectionmanager\EnsureConnectUserResponse.java" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ConnectionManager.java" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ConnectionManager.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/sync/OfflineUsersSync.java" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/sync/OfflineUsersSync.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java" afterPath="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
<ignored path="MediaBrowser.ApiClient.Java.iws" />
@ -38,18 +39,58 @@
<file leaf-file-name="ConnectionManager.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ConnectionManager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.12713179" vertical-offset="3831" max-vertical-offset="12750">
<caret line="259" column="0" selection-start-line="259" selection-start-column="0" selection-end-line="259" selection-end-column="0" />
<state vertical-scroll-proportion="0.27209303" vertical-offset="3746" max-vertical-offset="12359">
<caret line="265" column="0" selection-start-line="265" selection-start-column="0" selection-end-line="265" selection-end-column="0" />
<folding>
<element signature="e#3173#3349#0" expanded="true" />
<element signature="e#3348#3349#0" expanded="true" />
<element signature="e#10449#10680#0" expanded="true" />
<element signature="e#10679#10680#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="EnsureConnectUserResponse.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="72" max-vertical-offset="952">
<caret line="42" column="149" selection-start-line="42" selection-start-column="149" selection-end-line="42" selection-end-column="149" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GetConnectServersInnerResponse.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="527">
<caret line="21" column="0" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GetConnectServersResponse.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-3.7586207" vertical-offset="10" max-vertical-offset="1581">
<caret line="17" column="38" selection-start-line="17" selection-start-column="38" selection-end-line="17" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AddAuthenticationInfoFromConnectResponse.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/AddAuthenticationInfoFromConnectResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="476">
<caret line="12" column="45" selection-start-line="12" selection-start-column="45" selection-end-line="12" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FirstServerConnectResponse.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/FirstServerConnectResponse.java">
<provider selected="true" editor-type-id="text-editor">
@ -100,11 +141,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/AndroidNetworkConnection.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ExchangePinResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ExchangeTokenResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectUserResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ApiClientLogoutResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/AndroidCredentialProvider.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ValidateAuthenticationInnerResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ValidateAuthenticationResponse.java" />
@ -150,7 +186,12 @@
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/ApiClient.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/sync/OfflineUsersSync.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/FirstServerConnectResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserInnerResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ConnectionManager.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java" />
<option value="$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/AddAuthenticationInfoFromConnectResponse.java" />
</list>
</option>
</component>
@ -811,34 +852,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/sync/Authenticator.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.1607565" vertical-offset="0" max-vertical-offset="1105">
<caret line="13" column="26" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/sync/MultiServerSyncProgress.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1513">
<caret line="23" column="78" selection-start-line="23" selection-start-column="78" selection-end-line="23" selection-end-column="78" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/sync/PeriodicSync.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="714">
<caret line="19" column="8" selection-start-line="19" selection-start-column="8" selection-end-line="19" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/sync/OnDemandSync.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="595">
<caret line="20" column="8" selection-start-line="18" selection-start-column="8" selection-end-line="20" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/android/sync/AuthenticatorService.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="23" max-vertical-offset="1292">
@ -1181,15 +1194,47 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/AddAuthenticationInfoFromConnectResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="476">
<caret line="12" column="45" selection-start-line="12" selection-start-column="45" selection-end-line="12" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-3.7586207" vertical-offset="10" max-vertical-offset="1581">
<caret line="17" column="38" selection-start-line="17" selection-start-column="38" selection-end-line="17" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/GetConnectServersInnerResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="527">
<caret line="21" column="0" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/EnsureConnectUserResponse.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="72" max-vertical-offset="952">
<caret line="42" column="149" selection-start-line="42" selection-start-column="149" selection-end-line="42" selection-end-column="149" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/mediabrowser/apiinteraction/connectionmanager/ConnectionManager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.12713179" vertical-offset="3831" max-vertical-offset="12750">
<caret line="259" column="0" selection-start-line="259" selection-start-column="0" selection-end-line="259" selection-end-column="0" />
<state vertical-scroll-proportion="0.27209303" vertical-offset="3746" max-vertical-offset="12359">
<caret line="265" column="0" selection-start-line="265" selection-start-column="0" selection-end-line="265" selection-end-column="0" />
<folding>
<element signature="e#3173#3349#0" expanded="true" />
<element signature="e#3348#3349#0" expanded="true" />
<element signature="e#10449#10680#0" expanded="true" />
<element signature="e#10679#10680#0" expanded="true" />
</folding>
</state>
</provider>

View File

@ -0,0 +1,22 @@
package mediabrowser.apiinteraction.connectionmanager;
import mediabrowser.apiinteraction.EmptyResponse;
/**
* Created by Luke on 3/11/2015.
*/
public class AddAuthenticationInfoFromConnectResponse extends EmptyResponse {
private EnsureConnectUserResponse parentResponse;
public AddAuthenticationInfoFromConnectResponse(EnsureConnectUserResponse parentResponse) {
this.parentResponse = parentResponse;
}
@Override
public void onResponse() {
parentResponse.onEnsureConnectUserDone();
}
}

View File

@ -261,44 +261,21 @@ public class ConnectionManager implements IConnectionManager {
void OnSuccessfulConnection(final ServerInfo server,
final PublicSystemInfo systemInfo,
final ConnectionMode connectionMode,
final ConnectionOptions options,
final ConnectionOptions connectionOptions,
final Response<ConnectionResult> 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()))
{

View File

@ -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<ServerInfo> foundServers;
private ArrayList<ServerInfo> connectServers;
private int numTasks;
private int[] numTasksCompleted;
private Response<ArrayList<ServerInfo>> finalResponse;
private ConnectionManager connectionManager;
private ServerInfo server;
private ServerCredentials credentials;
private PublicSystemInfo systemInfo;
private ConnectionMode connectionMode;
private ConnectionOptions connectionOptions;
private Response<ConnectionResult> response;
public EnsureConnectUserResponse(ILogger logger, ConnectService connectService, ServerCredentials credentials, ArrayList<ServerInfo> foundServers, ArrayList<ServerInfo> connectServers, int numTasks, int[] numTasksCompleted, Response<ArrayList<ServerInfo>> 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<ConnectionResult> 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<ServerInfo> ConvertServerList(ConnectUserServer[] userServers){
ArrayList<ServerInfo> servers = new ArrayList<ServerInfo>();
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;
}
}

View File

@ -6,11 +6,11 @@ import mediabrowser.model.connect.ConnectUserServer;
/**
* Created by Luke on 2/15/2015.
*/
public class EnsureConnectUserInnerResponse extends Response<ConnectUserServer[]> {
public class GetConnectServersInnerResponse extends Response<ConnectUserServer[]> {
private EnsureConnectUserResponse parent;
private GetConnectServersResponse parent;
public EnsureConnectUserInnerResponse(EnsureConnectUserResponse parent) {
public GetConnectServersInnerResponse(GetConnectServersResponse parent) {
this.parent = parent;
}

View File

@ -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<ServerInfo> foundServers;
private ArrayList<ServerInfo> connectServers;
private int numTasks;
private int[] numTasksCompleted;
private Response<ArrayList<ServerInfo>> finalResponse;
private ConnectionManager connectionManager;
public GetConnectServersResponse(ILogger logger, ConnectService connectService, ServerCredentials credentials, ArrayList<ServerInfo> foundServers, ArrayList<ServerInfo> connectServers, int numTasks, int[] numTasksCompleted, Response<ArrayList<ServerInfo>> 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<ServerInfo> ConvertServerList(ConnectUserServer[] userServers){
ArrayList<ServerInfo> servers = new ArrayList<ServerInfo>();
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;
}
}