1 package org.codehaus.mojo.natives.manager;
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 import org.codehaus.mojo.natives.compiler.MessageCompiler;
28
29 import org.codehaus.plexus.logging.AbstractLogEnabled;
30 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
31
32 import java.util.HashMap;
33 import java.util.Map;
34 import org.codehaus.plexus.component.annotations.Component;
35 import org.codehaus.plexus.component.annotations.Requirement;
36
37 @Component(role = MessageCompilerManager.class, hint = "native-message-compiler-provider-manager")
38 public class DefaultMessageCompilerManager
39 extends AbstractLogEnabled
40 implements MessageCompilerManager, Initializable
41 {
42 @Requirement(role = MessageCompiler.class)
43 private Map providers;
44
45
46
47
48
49 public void initialize()
50 {
51 if ( providers == null )
52 {
53 providers = new HashMap();
54 }
55
56 if ( providers.size() == 0 )
57 {
58 getLogger().warn( "No compiler providers configured." );
59 }
60 }
61
62 public MessageCompiler getMessageCompiler( String providerType )
63 throws NoSuchNativeProviderException
64 {
65
66 MessageCompiler provider = (MessageCompiler) providers.get( providerType );
67
68 if ( provider == null )
69 {
70 throw new NoSuchNativeProviderException( providerType );
71 }
72
73 return provider;
74 }
75 }