package hprose.exam.client;
import hprose.client.HproseHttpClient;
import hprose.common.ByRef;
import hprose.common.HproseCallback;
import hprose.common.HproseCallback1;
import hprose.common.MethodName;
import hprose.io.HproseClassManager;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;
import java.util.logging.Level;
import java.util.logging.Logger;
interface ITest {
void swapKeyAndValue(Map<String, String> strmap, HproseCallback<Map<String, String>> callback);
@MethodName("swapKeyAndValue")
@ByRef(true)
void swap(Map<String, String> strmap, HproseCallback<Map<String, String>> callback);
void getUserList(HproseCallback1<List<User>> callback);
@MethodName("getUserList")
void getUserArray(HproseCallback1<User[]> callback);
Future<List<User>> getUserList();
}
public class ClientExam10 {
public static void main(String[] args) throws IOException {
HproseClassManager.register(User.class, "User");
HproseHttpClient client = new HproseHttpClient();
client.useService("http://localhost:8084/examserver/Methods");
final ITest test = client.useService(ITest.class, "ex2");
Map<String, String> map = new HashMap<String, String>();
map.put("January", "Jan");
map.put("February", "Feb");
map.put("March", "Mar");
map.put("April", "Apr");
map.put("May", "May");
map.put("June", "Jun");
map.put("July", "Jul");
map.put("August", "Aug");
map.put("September", "Sep");
map.put("October", "Oct");
map.put("November", "Nov");
map.put("December", "Dec");
test.swapKeyAndValue(map, new HproseCallback<Map<String, String>>() {
public void handler(Map<String, String> result, Object[] args) {
synchronized (test) {
Map<String, String> map = (Map<String, String>)args[0];
Map<String, String> map2 = result;
System.out.println("byVal:");
System.out.println(map);
System.out.println(map2);
System.out.println();
}
}
});
test.swap(map, new HproseCallback<Map<String, String>>() {
public void handler(Map<String, String> result, Object[] args) {
synchronized (test) {
Map<String, String> map = (Map<String, String>)args[0];
Map<String, String> map2 = result;
System.out.println("byRef:");
System.out.println(map);
System.out.println(map2);
System.out.println();
}
}
});
test.getUserList(new HproseCallback1<List<User>>() {
public void handler(List<User> users) {
synchronized (test) {
System.out.println("getUserList:");
for (User user : users) {
System.out.printf("name: %s, ", user.getName());
System.out.printf("age: %d, ", user.getAge());
System.out.printf("sex: %s, ", user.getSex());
System.out.printf("birthday: %s, ", user.getBirthday());
System.out.printf("married: %s.", user.isMarried());
System.out.println();
}
System.out.println();
}
}
});
test.getUserArray(new HproseCallback1<User[]>() {
public void handler(User[] users) {
synchronized (test) {
System.out.println("getUserArray:");
for (User user : users) {
System.out.printf("name: %s, ", user.getName());
System.out.printf("age: %d, ", user.getAge());
System.out.printf("sex: %s, ", user.getSex());
System.out.printf("birthday: %s, ", user.getBirthday());
System.out.printf("married: %s.", user.isMarried());
System.out.println();
}
System.out.println();
}
}
});
Future<List<User>> result = test.getUserList();
List<User> users;
try {
users = result.get();
synchronized (test) {
System.out.println("Future<List<User>> getUserList:");
for (User user : users) {
System.out.printf("name: %s, ", user.getName());
System.out.printf("age: %d, ", user.getAge());
System.out.printf("sex: %s, ", user.getSex());
System.out.printf("birthday: %s, ", user.getBirthday());
System.out.printf("married: %s.", user.isMarried());
System.out.println();
}
System.out.println();
}
} catch (Exception ex) {
Logger.getLogger(ClientExam10.class.getName()).log(Level.SEVERE, null, ex);
}
client.close();
}
}