1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package com.mjh.switchrmi.jndi;
28
29 import com.mjh.switchrmi.*;
30
31 import java.net.*;
32
33 import java.util.*;
34
35 import javax.naming.*;
36
37 import org.apache.log4j.*;
38
39 public abstract class RmiObjectFactoryBase
40 {
41 private static final Logger log =
42 Logger.getLogger(RmiObjectFactoryBase.class.getName());
43
44 protected String getClassName(Name name, Hashtable env)
45 {
46 GenericReferenceable ref =
47 (GenericReferenceable) env.get(name.get(name.size() - 1));
48
49 return ref.getClassName();
50 }
51
52 protected Class[] getInterfaces(Name name, Hashtable env,
53 ClassLoader loader)
54 throws ClassNotFoundException
55 {
56 ObjectReferenceable ref =
57 (ObjectReferenceable) env.get(name.get(name.size() - 1));
58 String[] strings = ref.getInterfaces();
59 Class[] classes = new Class[strings.length];
60
61 for (int i = 0; i < strings.length; i++)
62 {
63 classes[i] = loader.loadClass(strings[i]);
64 }
65
66 return classes;
67 }
68
69 protected URL[] getCodebase(Name name, Hashtable env)
70 throws Exception
71 {
72 URL[] result = null;
73 ObjectReferenceable ref =
74 (ObjectReferenceable) env.get(name.get(name.size() - 1));
75
76 if (log.isDebugEnabled())
77 {
78 log.debug("ref = " + ref);
79 }
80
81 String codebase = ref.getCodebase();
82 List libs = ref.getLibraries();
83
84 if (log.isDebugEnabled())
85 {
86 log.debug("libs = " + libs);
87 }
88
89 if (codebase != null)
90 {
91 int numLibs = libs.size();
92
93 if (log.isDebugEnabled())
94 {
95 log.debug("numLibs = " + numLibs);
96 }
97
98 result = new URL[1 + numLibs];
99 result[0] = new URL(codebase);
100
101 for (int i = 0; i < numLibs; i++)
102 {
103 String lib = (String) libs.get(i);
104
105 result[i + 1] = new URL(lib);
106 }
107 }
108
109 return result;
110 }
111
112 protected Object getTypeInfoValue(String typeKey, Name name, Hashtable env)
113 {
114 ObjectReferenceable ref =
115 (ObjectReferenceable) env.get(name.get(name.size() - 1));
116
117 return ref.getTypeValue(typeKey);
118 }
119 }