1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.shiro.jndi;
20
21 import org.apache.shiro.util.Factory;
22
23 import javax.naming.NamingException;
24
25
26
27
28
29
30 public class JndiObjectFactory<T> extends JndiLocator implements Factory<T> {
31
32 private String resourceName;
33 private Class<? extends T> requiredType;
34
35 public T getInstance() {
36 try {
37 if(requiredType != null) {
38 return requiredType.cast(this.lookup(resourceName, requiredType));
39 } else {
40 return (T) this.lookup(resourceName);
41 }
42 } catch (NamingException e) {
43 final String typeName = requiredType != null ? requiredType.getName() : "object";
44 throw new IllegalStateException("Unable to look up " + typeName + " with jndi name '" + resourceName + "'.", e);
45 }
46 }
47
48 public String getResourceName() {
49 return resourceName;
50 }
51
52 public void setResourceName(String resourceName) {
53 this.resourceName = resourceName;
54 }
55
56 public Class<? extends T> getRequiredType() {
57 return requiredType;
58 }
59
60 public void setRequiredType(Class<? extends T> requiredType) {
61 this.requiredType = requiredType;
62 }
63 }