KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > SOFA > Util > SOFAURI


1 /* $Id: SOFAURI.java,v 1.3 2004/05/20 14:23:53 bures Exp $ */
2 package SOFA.Util;
3
4 import java.net.InetAddress JavaDoc;
5 import java.net.UnknownHostException JavaDoc;
6
7 import org.omg.CosNaming.NameComponent JavaDoc;
8
9 import SOFA.SOFAnode.Run.DeplDockRegistry.DeplDockRegistry;
10 import SOFA.SOFAnode.Run.DeplDockRegistry.DeplDockRegistryHelper;
11 import SOFA.SOFAnode.Run.DeplDockRegistry.NotFoundException;
12
13
14
15 /** Methods for manipulation with SOFA URI.
16   *
17   * @author Petr Hnetynka
18   */

19 public class SOFAURI {
20
21   /** Exception for bad SOFA URI */
22   public static class BadSOFAURIException extends cz.cuni.sofa.lib.SystemException {
23     public BadSOFAURIException() {
24       super();
25     }
26   
27     public BadSOFAURIException(String JavaDoc __reason) {
28       super(__reason);
29     }
30
31     public BadSOFAURIException(String JavaDoc __reason, Throwable JavaDoc __cause) {
32       super(__reason, __cause);
33     }
34   }
35
36    /** Returns serialized reference to depldock from sofa URI. SOFA URI is in the form sofa://name_of_sofa_node/name_of_depldock
37     * @param sofaURI SOFA URI
38     * @return serialized form of sofa reference
39     * @throws BadSOFAURIException bad URI
40     */

41   public static byte[] getReferenceToDeplDockFromSOFAURI(String JavaDoc sofaURI) throws BadSOFAURIException {
42     java.net.URI JavaDoc uri = null;
43     try {
44       uri = new java.net.URI JavaDoc(sofaURI);
45     } catch (java.net.URISyntaxException JavaDoc e) {
46       throw new BadSOFAURIException("URISynaxException: "+e.getMessage(), e);
47     }
48     if (uri.getScheme().compareTo("sofa") != 0)
49       throw new BadSOFAURIException("Bad scheme of the URI");
50     String JavaDoc sofaNodeName = System.getProperty("sofa.nodename","");
51     if (sofaNodeName.compareTo("")==0) {
52       try {
53         sofaNodeName = InetAddress.getLocalHost().getHostName();
54       } catch (UnknownHostException JavaDoc e) {}
55     }
56     String JavaDoc host = uri.getHost();
57     if (host.compareTo("local")==0 || host.compareTo(sofaNodeName)==0)
58       throw new BadSOFAURIException("Can't locate sofa node");
59     String JavaDoc dockName = uri.getPath();
60     if (dockName.lastIndexOf('/')!=0)
61       throw new BadSOFAURIException("Bad name of the depldock");
62     dockName = dockName.substring(1);
63     
64     SOFA.Util.CORBAAccess ca = new SOFA.Util.CORBAAccess();
65     NameComponent JavaDoc nc = new NameComponent JavaDoc("DeplDockRegistry", "");
66     NameComponent JavaDoc path[] = {nc};
67     DeplDockRegistry ddr = null;
68     try {
69       ddr = DeplDockRegistryHelper.narrow(SOFA.Util.CORBAAccess.ncRef.resolve(path));
70     } catch (Exception JavaDoc e) {
71       throw new SOFA.SOFAnode.Run.SOFARuntimeException("Can't get DeplDock registry.");
72     }
73     
74     byte[] serRef = null;
75     try {
76       serRef = ddr.lookup(dockName);
77     } catch (NotFoundException e) {
78       throw new BadSOFAURIException("No deployment dock with name \""+dockName+"\".");
79     }
80     return serRef;
81   }
82
83   /** Tests if URI is local.
84     * @param uri SOFA URI
85     * @return true if URI is local
86     */

87   public static boolean isLocal(java.net.URI JavaDoc uri) {
88     if (uri.getScheme().compareTo("sofa") != 0)
89       return false;
90     if (uri.getHost().compareTo("local")!=0)
91       return false;
92     if (uri.getPath().compareTo("/local")!=0)
93       return false;
94     return true;
95   }
96
97   /** Tests if URI is local.
98     * @param uri SOFA URI
99     * @return true if URI is local
100     * @throws BadSOFAURIException bad URI
101     */

102   public static boolean isLocal(String JavaDoc uri) throws BadSOFAURIException {
103     java.net.URI JavaDoc u = null;
104     try {
105       u = new java.net.URI JavaDoc(uri);
106     } catch (java.net.URISyntaxException JavaDoc e) {
107       throw new BadSOFAURIException("URISynaxException: "+e.getMessage(), e);
108     }
109     return isLocal(u);
110   }
111  
112 }
113
Popular Tags