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 ca.uhn.hl7v2.util;
28
29 import java.lang.reflect.Constructor;
30
31 import ca.uhn.hl7v2.HL7Exception;
32 import ca.uhn.hl7v2.model.Group;
33 import ca.uhn.hl7v2.model.Message;
34 import ca.uhn.hl7v2.model.Structure;
35 import ca.uhn.hl7v2.parser.ModelClassFactory;
36
37 public class ReflectionUtil {
38
39
40 private ReflectionUtil() {
41
42 }
43
44 public static <T extends Structure> T instantiateStructure(Class<T> theType, Group parent,
45 ModelClassFactory theModelClassFactory) throws HL7Exception {
46 try {
47 Constructor<T> constructor = theType.getConstructor(Group.class,
48 ModelClassFactory.class);
49 return constructor.newInstance(parent, theModelClassFactory);
50 } catch (Exception e) {
51 throw new HL7Exception("Failed to instantiate type " + theType.getCanonicalName()
52 + ": ", e);
53 }
54 }
55
56 public static <T extends Message> T instantiateMessage(Class<T> theType,
57 ModelClassFactory theModelClassFactory) throws HL7Exception {
58 try {
59 Constructor<T> constructor = theType
60 .getConstructor(ModelClassFactory.class);
61 return constructor.newInstance(theModelClassFactory);
62 } catch (Exception e) {
63 throw new HL7Exception("Failed to instantiate type " + theType.getCanonicalName()
64 + ": ", e);
65 }
66 }
67
68 public static <T> T instantiate(Class<T> theType) throws HL7Exception {
69 try {
70 return theType.newInstance();
71 } catch (Exception e) {
72 throw new HL7Exception("Failed to instantiate type " + theType.getCanonicalName()
73 + ": ", e);
74 }
75 }
76
77 }