001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.config; 005 006 import java.net.MalformedURLException; 007 import java.rmi.Naming; 008 import java.rmi.NotBoundException; 009 import java.rmi.RemoteException; 010 011 import javax.rmi.PortableRemoteObject; 012 013 import org.w3c.dom.Element; 014 import org.w3c.dom.Node; 015 016 /** 017 * Binds remote object to name tree. 018 * @author Pavel Vlasov 019 * @revision $Revision$ 020 */ 021 public class RmiWrapper implements Wrapper, Component, DomConfigurable { 022 private Object master; 023 private Class narrowTo; 024 private String url; 025 026 public Object getMaster() { 027 return master; 028 } 029 030 public void start() throws ConfigurationException { 031 try { 032 master=Naming.lookup(url); 033 if (narrowTo!=null) { 034 master=PortableRemoteObject.narrow(master, narrowTo); 035 } 036 } catch (MalformedURLException e) { 037 throw new ConfigurationException("Could not lookup '"+url+"' - "+e, e); 038 } catch (RemoteException e) { 039 throw new ConfigurationException("Could not lookup '"+url+"' - "+e, e); 040 } catch (NotBoundException e) { 041 throw new ConfigurationException("Could not bind '"+url+"' - "+e, e); 042 } 043 } 044 045 public void stop() { 046 // Nothing 047 } 048 049 public void setOwner(Object owner) { 050 // nothing 051 052 } 053 054 public void configure(Node configNode, Context context) throws ConfigurationException { 055 Element ce = (Element) configNode; 056 url=ce.getAttribute("url"); 057 058 if (ce.hasAttribute("narrow-to")) { 059 try { 060 narrowTo=Class.forName(ce.getAttribute("narrow-to")); 061 } catch (ClassNotFoundException e) { 062 throw new ConfigurationException("Narrow-to class not found: "+ce.getAttribute("narrow-to"), e); 063 } 064 } 065 } 066 067 }