1
2
3
4
5
6
7
8
9
10 package org.mule.module.ibeans.config;
11
12 import org.mule.api.MuleContext;
13 import org.mule.api.MuleException;
14 import org.mule.api.construct.FlowConstruct;
15 import org.mule.module.ibeans.spi.MuleIBeansPlugin;
16
17 import org.ibeans.impl.IBeansNotationHelper;
18 import org.ibeans.impl.view.TextView;
19
20
21
22
23
24 public class IBeanHolder implements Comparable
25 {
26 private Class ibean;
27 private String usage;
28
29 public IBeanHolder(Class ibean)
30 {
31 this.ibean = ibean;
32 }
33
34 public int compareTo(Object o)
35 {
36 IBeanHolder to = (IBeanHolder) o;
37 return getId().compareTo(to.getId());
38 }
39
40 public Class getIbeanClass()
41 {
42 return ibean;
43 }
44
45 public Object create(MuleContext context, MuleIBeansPlugin plugin) throws MuleException
46 {
47 IBeanFlowConstruct flow = new IBeanFlowConstruct(ibean.getSimpleName() + "." + System.identityHashCode(this), context);
48 context.getRegistry().registerObject(flow.getName(), flow, FlowConstruct.class);
49
50 IBeanBinding router = new IBeanBinding(flow, plugin);
51 router.setInterface(ibean);
52 return router.createProxy(new Object());
53 }
54
55 public String getId()
56 {
57 return IBeansNotationHelper.getIBeanShortID(ibean);
58 }
59
60 public String getUsage()
61 {
62 if (usage == null)
63 {
64 TextView view = new TextView();
65 usage = view.createView(ibean);
66 }
67 return usage;
68 }
69
70 @Override
71 public String toString()
72 {
73 return "IBean: " + getId() + " : " + ibean.getName();
74 }
75 }