Project

General

Profile

1
package edu.ucsb.nceas.metacat.dataone;
2

    
3
import org.apache.log4j.Logger;
4
import org.dataone.cn.index.messaging.IndexTaskMessagingClient;
5
import org.dataone.cn.index.messaging.IndexTaskMessagingClientFactory;
6

    
7
/**
8
 * This class will guarantee to get a single IndexTaskMesagingClient by the singleton pattern 
9
 * @author tao
10
 *
11
 */
12
public class IndexTaskMessagingClientManager {
13

    
14
    private IndexTaskMessagingClient indexTaskClient = null;
15
    private static IndexTaskMessagingClientManager manager = null;
16
    private static Logger logMetacat = Logger.getLogger(IndexTaskMessagingClientManager.class);
17
    
18
    /**
19
     * A thread safe method to get the instance of the manager
20
     * @return
21
     * @throws InstantiationException
22
     * @throws IllegalAccessException
23
     * @throws ClassNotFoundException
24
     */
25
    public static IndexTaskMessagingClientManager getInstance() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
26
        if(manager == null) {
27
            synchronized (IndexTaskMessagingClientManager.class) {
28
                if(manager == null) {
29
                    manager = new IndexTaskMessagingClientManager();
30
                }
31
            }
32
        }
33
        return manager;
34
    }
35
    
36
    /**
37
     * Default private constructor
38
     * @throws InstantiationException
39
     * @throws IllegalAccessException
40
     * @throws ClassNotFoundException
41
     */
42
    private IndexTaskMessagingClientManager() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
43
        initIndexTaskClient();
44
    }
45
    
46
    /*
47
     * Method to get the index tasks client.
48
     */
49
    private void initIndexTaskClient() throws InstantiationException, IllegalAccessException, ClassNotFoundException {
50
        if(indexTaskClient == null) {
51
            indexTaskClient = IndexTaskMessagingClientFactory.getClient();
52
            logMetacat.info("IndexTaskMessagingClientManager.initIndexTaskClient - after generating the client .......................");
53
        }
54
    }
55
    
56
    /**
57
     * Get the client object which can submit the index tasks.
58
     * @return
59
     */
60
    public IndexTaskMessagingClient getMessagingClient() {
61
        return indexTaskClient;
62
    }
63
}
(5-5/9)