Skip to content

Commit f62f209

Browse files
committed
Change Proxy API and Server API from sync to async.
1 parent cf5f40f commit f62f209

11 files changed

+213
-15
lines changed

Diff for: src/main/java/org/amahi/anywhere/activity/ServersActivity.java

+43-1
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,15 @@
1111
import org.amahi.anywhere.bus.BusProvider;
1212
import org.amahi.anywhere.bus.ConnectionNotAuthorizedEvent;
1313
import org.amahi.anywhere.bus.ConnectionTimeoutEvent;
14+
import org.amahi.anywhere.bus.ServerConnectedEvent;
15+
import org.amahi.anywhere.bus.ServerFilesLoadedEvent;
16+
import org.amahi.anywhere.bus.ServerSharesLoadedEvent;
1417
import org.amahi.anywhere.bus.ServersLoadedEvent;
1518
import org.amahi.anywhere.server.client.AmahiClient;
1619
import org.amahi.anywhere.server.client.ServerClient;
1720
import org.amahi.anywhere.server.model.Authentication;
21+
import org.amahi.anywhere.server.model.Server;
22+
import org.amahi.anywhere.server.model.ServerShare;
1823

1924
import javax.inject.Inject;
2025

@@ -26,6 +31,8 @@ public class ServersActivity extends Activity
2631
@Inject
2732
ServerClient serverClient;
2833

34+
Server server;
35+
2936
@Override
3037
protected void onCreate(Bundle savedInstanceState) {
3138
super.onCreate(savedInstanceState);
@@ -60,7 +67,42 @@ private void setUpServers(Authentication authentication) {
6067

6168
@Subscribe
6269
public void onServersLoaded(ServersLoadedEvent event) {
63-
showMessage("Loaded.");
70+
showMessage("Loaded: servers.");
71+
72+
setUpServerConnection(event.getServers().get(0));
73+
}
74+
75+
private void setUpServerConnection(Server server) {
76+
this.server = server;
77+
78+
serverClient.connect(server);
79+
}
80+
81+
@Subscribe
82+
public void onServerConnection(ServerConnectedEvent event) {
83+
showMessage("Connected.");
84+
85+
setUpServerShares();
86+
}
87+
88+
private void setUpServerShares() {
89+
serverClient.getShares();
90+
}
91+
92+
@Subscribe
93+
public void onServerSharesLoaded(ServerSharesLoadedEvent event) {
94+
showMessage("Loaded: server’s shares.");
95+
96+
setUpServerFiles(event.getServerShares().get(0));
97+
}
98+
99+
private void setUpServerFiles(ServerShare serverShare) {
100+
serverClient.getFiles(serverShare, null);
101+
}
102+
103+
@Subscribe
104+
public void onServerFilesLoaded(ServerFilesLoadedEvent event) {
105+
showMessage("Loaded: server’s files");
64106
}
65107

66108
@Subscribe
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.amahi.anywhere.bus;
2+
3+
public class ServerConnectedEvent implements BusEvent
4+
{
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.amahi.anywhere.bus;
2+
3+
import org.amahi.anywhere.server.model.ServerFile;
4+
5+
import java.util.List;
6+
7+
public class ServerFilesLoadedEvent implements BusEvent
8+
{
9+
private final List<ServerFile> serverFiles;
10+
11+
public ServerFilesLoadedEvent(List<ServerFile> serverFiles) {
12+
this.serverFiles = serverFiles;
13+
}
14+
15+
public List<ServerFile> getServerFiles() {
16+
return serverFiles;
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.amahi.anywhere.bus;
2+
3+
import org.amahi.anywhere.server.model.ServerRoute;
4+
5+
public class ServerRouteLoadedEvent implements BusEvent
6+
{
7+
private final ServerRoute serverRoute;
8+
9+
public ServerRouteLoadedEvent(ServerRoute serverRoute) {
10+
this.serverRoute = serverRoute;
11+
}
12+
13+
public ServerRoute getServerRoute() {
14+
return serverRoute;
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.amahi.anywhere.bus;
2+
3+
import org.amahi.anywhere.server.model.ServerShare;
4+
5+
import java.util.List;
6+
7+
public class ServerSharesLoadedEvent implements BusEvent
8+
{
9+
private final List<ServerShare> serverShares;
10+
11+
public ServerSharesLoadedEvent(List<ServerShare> serverShares) {
12+
this.serverShares = serverShares;
13+
}
14+
15+
public List<ServerShare> getServerShares() {
16+
return serverShares;
17+
}
18+
}

Diff for: src/main/java/org/amahi/anywhere/server/api/ProxyApi.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
import org.amahi.anywhere.server.model.ServerRoute;
44

5+
import retrofit.Callback;
56
import retrofit.http.Header;
67
import retrofit.http.PUT;
78

89
public interface ProxyApi
910
{
1011
@PUT("/client")
11-
public ServerRoute getServerRoute(
12-
@Header("Session") String session);
12+
public void getServerRoute(
13+
@Header("Session") String session,
14+
Callback<ServerRoute> callback);
1315
}

Diff for: src/main/java/org/amahi/anywhere/server/api/ServerApi.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,22 @@
55

66
import java.util.List;
77

8+
import retrofit.Callback;
89
import retrofit.http.GET;
910
import retrofit.http.Header;
1011
import retrofit.http.Query;
1112

1213
public interface ServerApi
1314
{
1415
@GET("/shares")
15-
public List<ServerShare> getShares(
16-
@Header("session") String session);
16+
public void getShares(
17+
@Header("session") String session,
18+
Callback<List<ServerShare>> callback);
1719

1820
@GET("/files")
19-
public List<ServerFile> getFiles(
21+
public void getFiles(
2022
@Header("Session") String session,
2123
@Query("s") String share,
22-
@Query("p") String path);
24+
@Query("p") String path,
25+
Callback<List<ServerFile>> callback);
2326
}

Diff for: src/main/java/org/amahi/anywhere/server/client/ServerClient.java

+32-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package org.amahi.anywhere.server.client;
22

3+
import com.squareup.otto.Subscribe;
4+
5+
import org.amahi.anywhere.bus.BusProvider;
6+
import org.amahi.anywhere.bus.ServerConnectedEvent;
7+
import org.amahi.anywhere.bus.ServerRouteLoadedEvent;
38
import org.amahi.anywhere.server.Api;
49
import org.amahi.anywhere.server.api.ProxyApi;
510
import org.amahi.anywhere.server.api.ServerApi;
611
import org.amahi.anywhere.server.header.ApiHeaders;
712
import org.amahi.anywhere.server.model.Server;
8-
import org.amahi.anywhere.server.model.ServerFile;
913
import org.amahi.anywhere.server.model.ServerRoute;
1014
import org.amahi.anywhere.server.model.ServerShare;
11-
12-
import java.util.List;
15+
import org.amahi.anywhere.server.response.ServerRouteResponse;
16+
import org.amahi.anywhere.server.response.ServerFilesResponse;
17+
import org.amahi.anywhere.server.response.ServerSharesResponse;
1318

1419
import javax.inject.Inject;
1520
import javax.inject.Singleton;
@@ -49,9 +54,28 @@ private ProxyApi buildProxyApi() {
4954

5055
public void connect(Server server) {
5156
this.server = server;
52-
this.serverRoute = proxyApi.getServerRoute(server.getSession());
5357

58+
startServerConnection();
59+
}
60+
61+
private void startServerConnection() {
62+
BusProvider.getBus().register(this);
63+
64+
proxyApi.getServerRoute(server.getSession(), new ServerRouteResponse());
65+
}
66+
67+
@Subscribe
68+
public void onServerRouteLoaded(ServerRouteLoadedEvent event) {
69+
this.serverRoute = event.getServerRoute();
5470
this.serverApi = buildServerApi();
71+
72+
finishServerConnection();
73+
}
74+
75+
private void finishServerConnection() {
76+
BusProvider.getBus().unregister(this);
77+
78+
BusProvider.getBus().post(new ServerConnectedEvent());
5579
}
5680

5781
private ServerApi buildServerApi() {
@@ -64,11 +88,11 @@ private ServerApi buildServerApi() {
6488
return apiAdapter.create(ServerApi.class);
6589
}
6690

67-
public List<ServerShare> getShares() {
68-
return serverApi.getShares(server.getSession());
91+
public void getShares() {
92+
serverApi.getShares(server.getSession(), new ServerSharesResponse());
6993
}
7094

71-
public List<ServerFile> getFiles(ServerShare share, String path) {
72-
return serverApi.getFiles(server.getSession(), share.getName(), path);
95+
public void getFiles(ServerShare share, String path) {
96+
serverApi.getFiles(server.getSession(), share.getName(), path, new ServerFilesResponse());
7397
}
7498
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.amahi.anywhere.server.response;
2+
3+
import org.amahi.anywhere.bus.BusProvider;
4+
import org.amahi.anywhere.bus.ServerFilesLoadedEvent;
5+
import org.amahi.anywhere.server.model.ServerFile;
6+
7+
import java.util.List;
8+
9+
import retrofit.Callback;
10+
import retrofit.RetrofitError;
11+
import retrofit.client.Response;
12+
13+
public class ServerFilesResponse extends ApiResponse implements Callback<List<ServerFile>>
14+
{
15+
@Override
16+
public void success(List<ServerFile> serverFiles, Response response) {
17+
BusProvider.getBus().post(new ServerFilesLoadedEvent(serverFiles));
18+
}
19+
20+
@Override
21+
public void failure(RetrofitError error) {
22+
BusProvider.getBus().post(getFailureEvent(error));
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.amahi.anywhere.server.response;
2+
3+
import org.amahi.anywhere.bus.BusProvider;
4+
import org.amahi.anywhere.bus.ServerRouteLoadedEvent;
5+
import org.amahi.anywhere.server.model.ServerRoute;
6+
7+
import retrofit.Callback;
8+
import retrofit.RetrofitError;
9+
import retrofit.client.Response;
10+
11+
public class ServerRouteResponse extends ApiResponse implements Callback<ServerRoute>
12+
{
13+
@Override
14+
public void success(ServerRoute serverRoute, Response response) {
15+
BusProvider.getBus().post(new ServerRouteLoadedEvent(serverRoute));
16+
}
17+
18+
@Override
19+
public void failure(RetrofitError error) {
20+
BusProvider.getBus().post(getFailureEvent(error));
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.amahi.anywhere.server.response;
2+
3+
import org.amahi.anywhere.bus.BusProvider;
4+
import org.amahi.anywhere.bus.ServerSharesLoadedEvent;
5+
import org.amahi.anywhere.server.model.ServerShare;
6+
7+
import java.util.List;
8+
9+
import retrofit.Callback;
10+
import retrofit.RetrofitError;
11+
import retrofit.client.Response;
12+
13+
public class ServerSharesResponse extends ApiResponse implements Callback<List<ServerShare>>
14+
{
15+
@Override
16+
public void success(List<ServerShare> serverShares, Response response) {
17+
BusProvider.getBus().post(new ServerSharesLoadedEvent(serverShares));
18+
}
19+
20+
@Override
21+
public void failure(RetrofitError error) {
22+
BusProvider.getBus().post(getFailureEvent(error));
23+
}
24+
}

0 commit comments

Comments
 (0)