1import java.net.InetAddress;
2import java.rmi.RemoteException;
3import java.util.HashMap;
4import java.util.concurrent.ConcurrentHashMap;
5import java.util.concurrent.locks.ReentrantLock;
6
7import javax.rmi.PortableRemoteObject;
8
9public class HelloImpl extends PortableRemoteObject implements HelloInterface {
10    public HelloImpl() throws java.rmi.RemoteException {
11        super(); // invoke rmi linking and remote object initialization
12    }
13
14    public String sayHello(String from) throws java.rmi.RemoteException {
15        System.out.println("Hello from " + from + "!!");
16        System.out.flush();
17        String reply = "Hello from us to you " + from;
18        return reply;
19    }
20
21    @Override
22    public String sayHelloToTest(Test test) throws RemoteException {
23        return "Test says Hello";
24       }
25
26    @Override
27    public String sayHelloWithInetAddress(InetAddress ipAddr)
28            throws RemoteException {
29        String response = "Hello with InetAddress " + ipAddr.toString();
30        return response;
31    }
32
33    @Override
34    public String sayHelloWithHashMap(ConcurrentHashMap<String, String> receivedHashMap)
35            throws RemoteException {
36        int hashMapSize = 0;
37
38        hashMapSize = receivedHashMap.size();
39        String response = "Hello with hashMapSize == " + hashMapSize;
40        return response;
41    }
42
43    @Override
44    public String sayHelloWithHashMap2(HashMap<String, String> receivedHashMap)
45            throws RemoteException {
46        int hashMapSize = 0;
47
48        hashMapSize = receivedHashMap.size();
49        String response = "Hello with hashMapSize == " + hashMapSize;
50        return response;
51    }
52
53    @Override
54    public String sayHelloWithReentrantLock(ReentrantLock receivedLock)
55            throws RemoteException {
56
57        String response = "Hello with lock == " + receivedLock.isLocked();
58        return response;
59    }
60}
61