View Javadoc

1   /*
2    * Copyright (c) 1998-2005 The Jgroup Team.
3    *
4    * This program is free software; you can redistribute it and/or modify
5    * it under the terms of the GNU Lesser General Public License version 2 as
6    * published by the Free Software Foundation.
7    *
8    * This program is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   * GNU Lesser General Public License for more details.
12   *
13   * You should have received a copy of the GNU Lesser General Public License
14   * along with this program; if not, write to the Free Software
15   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16   *
17   */
18  package jgroup.relacs.gm;
19  
20  import java.io.IOException;
21  import java.lang.reflect.Proxy;
22  
23  import jgroup.core.GroupManager;
24  import jgroup.jini.LookupManager;
25  import jgroup.relacs.gmi.GroupInvocationHandler;
26  
27  import org.apache.log4j.Logger;
28  
29  /**
30   *  Layer implementing the <code>GregLookupService</code> interface.
31   *
32   * @author Rohnny Moland
33   * @since Jgroup 2.2
34   */
35  public final class GregLookupLayer 
36    implements GregLookupService
37  {
38  
39    // //////////////////////////////////////////////////////////////////////////////////////////
40    // Logger
41    // //////////////////////////////////////////////////////////////////////////////////////////
42  
43    /** Obtain logger for this class */
44    private static final Logger log = Logger.getLogger(GregLookupLayer.class);
45  
46    // //////////////////////////////////////////////////////////////////////////////////////////
47    // Fields
48    // //////////////////////////////////////////////////////////////////////////////////////////
49  
50    /** The group manager reference associated with this layer */
51    private GroupManager gm;
52  
53    // //////////////////////////////////////////////////////////////////////////////////////////
54    // Constructor
55    // //////////////////////////////////////////////////////////////////////////////////////////
56  
57    /**
58     * Construct the <code>LookupLayer</code>.
59     * 
60     * @param gm
61     *          The group manager object to which this layer is associated
62     */
63    private GregLookupLayer(GroupManager gm)
64    {
65      this.gm = gm;
66    }
67  
68    // //////////////////////////////////////////////////////////////////////////////////////////
69    // Static factory
70    // //////////////////////////////////////////////////////////////////////////////////////////
71  
72    public static GregLookupLayer getLayer(GroupManager gm)
73    {
74      return new GregLookupLayer(gm);
75    }
76  
77    // //////////////////////////////////////////////////////////////////////////////////////////
78    // Layer interface methods
79    // //////////////////////////////////////////////////////////////////////////////////////////
80  
81    public void addListener(Object listener)
82    {
83      // should never be called, since Lookup does not provide a listener
84      // interface
85    }
86  
87    // //////////////////////////////////////////////////////////////////////////////////////////
88    // GregLookupService interface methods
89    // //////////////////////////////////////////////////////////////////////////////////////////
90  
91  
92    /*
93     * (non-Javadoc)
94     * 
95     * @see jgroup.core.registry.LookupService#lookup(java.lang.String,
96     *      java.lang.Class)
97     */
98    public Object lookup(String name) throws IOException
99    {
100     Object server = LookupManager.lookup(name);
101     GroupInvocationHandler handler = (GroupInvocationHandler) Proxy.getInvocationHandler(server);
102     handler.setGroupManager(gm);    
103     return server;
104   }
105 
106 } // END of GregLookupLayer