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