KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > ubik > rmi > naming > remote > archie > UbikRemoteContext


1 package org.sapia.ubik.rmi.naming.remote.archie;
2
3 import org.sapia.archie.Node;
4 import org.sapia.archie.ProcessingException;
5 import org.sapia.archie.jndi.JndiContext;
6
7 import org.sapia.ubik.mcast.EventChannel;
8 import org.sapia.ubik.rmi.naming.remote.DomainInfo;
9 import org.sapia.ubik.rmi.naming.remote.RemoteContext;
10
11 import java.util.Iterator JavaDoc;
12
13 import javax.naming.Context JavaDoc;
14 import javax.naming.Name JavaDoc;
15 import javax.naming.NamingEnumeration JavaDoc;
16 import javax.naming.NamingException JavaDoc;
17
18
19 /**
20  * @author Yanick Duchesne
21  * <dl>
22  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2003 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
23  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
24  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
25  * </dl>
26  */

27 public class UbikRemoteContext extends JndiContext implements RemoteContext {
28   private DomainInfo _domain;
29
30   protected UbikRemoteContext(DomainInfo domain, Node root) {
31     super(root);
32     _domain = domain;
33   }
34
35   protected UbikRemoteContext(UbikSyncNode node) {
36     super(node);
37
38     EventChannel channel = ((UbikSynchronizer) node.getSynchronizer()).getEventChannel();
39     _domain = new DomainInfo(channel.getDomainName(),
40         channel.getMulticastHost(), channel.getMulticastPort());
41   }
42
43   /**
44    * @see org.sapia.ubik.rmi.naming.remote.RemoteContext#getDomainInfo()
45    */

46   public DomainInfo getDomainInfo() {
47     return _domain;
48   }
49
50   /**
51    * @see javax.naming.Context#bind(javax.naming.Name, java.lang.Object)
52    */

53   public void bind(Name JavaDoc name, Object JavaDoc obj) throws NamingException JavaDoc {
54     super.rebind(name, obj);
55   }
56
57   /**
58    * @see javax.naming.Context#bind(java.lang.String, java.lang.Object)
59    */

60   public void bind(String JavaDoc name, Object JavaDoc obj) throws NamingException JavaDoc {
61     super.rebind(name, obj);
62   }
63
64   protected Context newChildContext(Node node) {
65     UbikSyncNode sync = (UbikSyncNode) node;
66
67     return new UbikRemoteContext(sync);
68   }
69
70   protected NamingEnumeration JavaDoc newNamingEnum(Iterator JavaDoc entries,
71     Iterator JavaDoc childNodes, int listType) {
72     return new UbikNamingEnum(entries, childNodes, listType);
73   }
74
75   public static UbikRemoteContext newInstance(EventChannel channel)
76     throws NamingException JavaDoc {
77     UbikSynchronizer sync = new UbikSynchronizer(channel);
78     UbikNodeFactory fac = new UbikNodeFactory(sync);
79
80     try {
81       UbikSyncNode root = new UbikSyncNode(fac);
82       root.setSynchronizer(sync);
83       sync.setRoot(root);
84
85       return new UbikRemoteContext(new DomainInfo(channel.getDomainName(),
86           channel.getMulticastHost(), channel.getMulticastPort()), root);
87     } catch (ProcessingException e) {
88       NamingException JavaDoc ne = new NamingException JavaDoc(
89           "Could not create remote context");
90       ne.setRootCause(e);
91       throw ne;
92     }
93   }
94 }
95
Popular Tags