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.config.ConfigurationException;
14 import org.mule.util.scan.ClasspathScanner;
15
16 import java.io.IOException;
17 import java.util.HashSet;
18 import java.util.Set;
19
20 import org.ibeans.annotation.Call;
21 import org.ibeans.annotation.IBeanGroup;
22 import org.ibeans.annotation.Template;
23
24
25
26
27
28
29 public class IBeanHolderConfigurationBuilder extends AbstractAnnotationConfigurationBuilder
30 {
31 public static final String IBEAN_HOLDER_PREFIX = "_ibeanHolder.";
32
33 public IBeanHolderConfigurationBuilder()
34 {
35 super();
36 }
37
38 public IBeanHolderConfigurationBuilder(String... basepackages)
39 {
40 super(basepackages);
41 }
42
43 public IBeanHolderConfigurationBuilder(ClassLoader classLoader)
44 {
45 super(classLoader);
46 }
47
48 public IBeanHolderConfigurationBuilder(ClassLoader classLoader, String... basepackages)
49 {
50 super(classLoader, basepackages);
51 }
52
53 @Override
54 protected String getScanPackagesProperty()
55 {
56 return "ibeans.scan.packages";
57 }
58
59 @Override
60 protected void doConfigure(MuleContext muleContext) throws Exception
61 {
62 Set<Class<?>> ibeanClasses = new HashSet<Class<?>>();
63 ClasspathScanner scanner = createClasspathScanner();
64
65 try
66 {
67
68 ibeanClasses.addAll(scanner.scanFor(Call.class, ClasspathScanner.INCLUDE_INTERFACE));
69 ibeanClasses.addAll(scanner.scanFor(Template.class, ClasspathScanner.INCLUDE_INTERFACE));
70
71 ibeanClasses.addAll(scanner.scanFor(IBeanGroup.class, ClasspathScanner.INCLUDE_INTERFACE));
72 }
73 catch (IOException e)
74 {
75 throw new ConfigurationException(e);
76 }
77
78 for (Class<?> ibeanClass : ibeanClasses)
79 {
80 muleContext.getRegistry().registerObject(IBeanHolder.getId(ibeanClass), new IBeanHolder(ibeanClass));
81 }
82 }
83 }