1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.plugins.s2.spi;
18
19 import org.seasar.cubby.spi.ContainerProvider;
20 import org.seasar.cubby.spi.container.Container;
21 import org.seasar.cubby.spi.container.LookupException;
22 import org.seasar.framework.container.ComponentNotFoundRuntimeException;
23 import org.seasar.framework.container.CyclicReferenceRuntimeException;
24 import org.seasar.framework.container.S2Container;
25 import org.seasar.framework.container.TooManyRegistrationRuntimeException;
26
27
28
29
30
31
32 public class S2ContainerProvider implements ContainerProvider {
33
34 public static final String s2Container_BINDING = "bindingType=must";
35
36
37 private final Container container = new S2ContainerImpl();
38
39
40 private S2Container s2Container;
41
42
43
44
45
46
47
48 public void setS2Container(final S2Container s2Container) {
49 this.s2Container = s2Container;
50 }
51
52
53
54
55 public Container getContainer() {
56 return container;
57 }
58
59
60
61
62
63
64 private class S2ContainerImpl implements Container {
65
66
67
68
69
70
71 public <T> T lookup(final Class<T> type) throws LookupException {
72 try {
73 final T component = type.cast(s2Container.getRoot()
74 .getComponent(type));
75 if (component == null) {
76 throw new LookupException();
77 }
78 return component;
79 } catch (final ComponentNotFoundRuntimeException e) {
80 throw new LookupException(e);
81 } catch (final TooManyRegistrationRuntimeException e) {
82 throw new LookupException(e);
83 } catch (final CyclicReferenceRuntimeException e) {
84 throw new LookupException(e);
85 }
86 }
87
88 }
89
90 }