001 /* 
002  * Copyright 2008-2015 the original author or authors. 
003  * 
004  * Licensed under the Apache License, Version 2.0 (the "License"); 
005  * you may not use this file except in compliance with the License. 
006  * You may obtain a copy of the License at 
007  * 
008  *     http://www.apache.org/licenses/LICENSE-2.0 
009  * 
010  * Unless required by applicable law or agreed to in writing, software 
011  * distributed under the License is distributed on an "AS IS" BASIS, 
012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
013  * See the License for the specific language governing permissions and 
014  * limitations under the License. 
015  */ 
016 package org.codehaus.griffon.runtime.core; 
017  
018 import griffon.core.ApplicationClassLoader; 
019 import griffon.core.ApplicationConfigurer; 
020 import griffon.core.Configuration; 
021 import griffon.core.Context; 
022 import griffon.core.ExecutorServiceManager; 
023 import griffon.core.GriffonExceptionHandler; 
024 import griffon.core.LifecycleHandler; 
025 import griffon.core.PlatformHandler; 
026 import griffon.core.addon.AddonManager; 
027 import griffon.core.artifact.ArtifactHandler; 
028 import griffon.core.artifact.ArtifactManager; 
029 import griffon.core.controller.ActionManager; 
030 import griffon.core.env.Environment; 
031 import griffon.core.env.Lifecycle; 
032 import griffon.core.env.Metadata; 
033 import griffon.core.env.RunMode; 
034 import griffon.core.event.EventHandler; 
035 import griffon.core.event.EventRouter; 
036 import griffon.core.i18n.MessageSource; 
037 import griffon.core.mvc.MVCGroupManager; 
038 import griffon.core.resources.ResourceHandler; 
039 import griffon.core.resources.ResourceInjector; 
040 import griffon.core.resources.ResourceResolver; 
041 import griffon.core.threading.UIThreadManager; 
042 import griffon.core.view.WindowManager; 
043 import griffon.util.CompositeResourceBundleBuilder; 
044 import org.codehaus.griffon.runtime.core.addon.DefaultAddonManager; 
045 import org.codehaus.griffon.runtime.core.artifact.ControllerArtifactHandler; 
046 import org.codehaus.griffon.runtime.core.artifact.DefaultArtifactManager; 
047 import org.codehaus.griffon.runtime.core.artifact.ModelArtifactHandler; 
048 import org.codehaus.griffon.runtime.core.artifact.ServiceArtifactHandler; 
049 import org.codehaus.griffon.runtime.core.artifact.ViewArtifactHandler; 
050 import org.codehaus.griffon.runtime.core.controller.DefaultActionManager; 
051 import org.codehaus.griffon.runtime.core.env.EnvironmentProvider; 
052 import org.codehaus.griffon.runtime.core.env.MetadataProvider; 
053 import org.codehaus.griffon.runtime.core.env.RunModeProvider; 
054 import org.codehaus.griffon.runtime.core.event.DefaultEventHandler; 
055 import org.codehaus.griffon.runtime.core.event.DefaultEventRouter; 
056 import org.codehaus.griffon.runtime.core.i18n.MessageSourceProvider; 
057 import org.codehaus.griffon.runtime.core.injection.AbstractModule; 
058 import org.codehaus.griffon.runtime.core.mvc.DefaultMVCGroupManager; 
059 import org.codehaus.griffon.runtime.core.resources.DefaultApplicationResourceInjector; 
060 import org.codehaus.griffon.runtime.core.resources.DefaultResourceHandler; 
061 import org.codehaus.griffon.runtime.core.resources.ResourceResolverProvider; 
062 import org.codehaus.griffon.runtime.core.threading.DefaultExecutorServiceProvider; 
063 import org.codehaus.griffon.runtime.core.threading.DefaultUIThreadManager; 
064 import org.codehaus.griffon.runtime.core.view.NoopWindowManager; 
065 import org.codehaus.griffon.runtime.util.DefaultCompositeResourceBundleBuilder; 
066 import org.codehaus.griffon.runtime.util.ResourceBundleProvider; 
067  
068 import javax.inject.Named; 
069 import java.util.ResourceBundle; 
070 import java.util.concurrent.ExecutorService; 
071  
072 import static griffon.util.AnnotationUtils.named; 
073  
074 /** 
075  * @author Andres Almiray 
076  * @since 2.0.0 
077  */ 
078 @Named("core") 
079 public class DefaultApplicationModule extends AbstractModule { 
080     @Override 
081     protected void doConfigure() { 
082         // tag::bindings[] 
083         bind(ApplicationClassLoader.class) 
084             .to(DefaultApplicationClassLoader.class) 
085             .asSingleton(); 
086  
087         bind(Metadata.class) 
088             .toProvider(MetadataProvider.class) 
089             .asSingleton(); 
090  
091         bind(RunMode.class) 
092             .toProvider(RunModeProvider.class) 
093             .asSingleton(); 
094  
095         bind(Environment.class) 
096             .toProvider(EnvironmentProvider.class) 
097             .asSingleton(); 
098  
099         bind(Context.class) 
100             .withClassifier(named("applicationContext")) 
101             .to(DefaultContext.class) 
102             .asSingleton(); 
103  
104         bind(ApplicationConfigurer.class) 
105             .to(DefaultApplicationConfigurer.class) 
106             .asSingleton(); 
107  
108         bind(ResourceHandler.class) 
109             .to(DefaultResourceHandler.class) 
110             .asSingleton(); 
111  
112         bind(CompositeResourceBundleBuilder.class) 
113             .to(DefaultCompositeResourceBundleBuilder.class) 
114             .asSingleton(); 
115  
116         bind(ResourceBundle.class) 
117             .withClassifier(named("applicationResourceBundle")) 
118             .toProvider(new ResourceBundleProvider("Config")) 
119             .asSingleton(); 
120  
121         bind(Configuration.class) 
122             .to(DefaultConfiguration.class) 
123             .asSingleton(); 
124  
125         bind(ExecutorServiceManager.class) 
126             .to(DefaultExecutorServiceManager.class) 
127             .asSingleton(); 
128  
129         bind(EventRouter.class) 
130             .withClassifier(named("applicationEventRouter")) 
131             .to(DefaultEventRouter.class) 
132             .asSingleton(); 
133  
134         bind(EventRouter.class) 
135             .to(DefaultEventRouter.class); 
136  
137         bind(ResourceResolver.class) 
138             .withClassifier(named("applicationResourceResolver")) 
139             .toProvider(new ResourceResolverProvider("resources")) 
140             .asSingleton(); 
141  
142         bind(MessageSource.class) 
143             .withClassifier(named("applicationMessageSource")) 
144             .toProvider(new MessageSourceProvider("messages")) 
145             .asSingleton(); 
146  
147         bind(ResourceInjector.class) 
148             .withClassifier(named("applicationResourceInjector")) 
149             .to(DefaultApplicationResourceInjector.class) 
150             .asSingleton(); 
151  
152         bind(ExecutorService.class) 
153             .withClassifier(named("defaultExecutorService")) 
154             .toProvider(DefaultExecutorServiceProvider.class) 
155             .asSingleton(); 
156  
157         bind(UIThreadManager.class) 
158             .to(DefaultUIThreadManager.class) 
159             .asSingleton(); 
160  
161         bind(MVCGroupManager.class) 
162             .to(DefaultMVCGroupManager.class) 
163             .asSingleton(); 
164  
165         for (Lifecycle lifecycle : Lifecycle.values()) { 
166             bind(LifecycleHandler.class) 
167                 .withClassifier(named(lifecycle.getName())) 
168                 .toProvider(new LifecycleHandlerProvider(lifecycle.getName())) 
169                 .asSingleton(); 
170         } 
171  
172         bind(WindowManager.class) 
173             .to(NoopWindowManager.class) 
174             .asSingleton(); 
175  
176         bind(ActionManager.class) 
177             .to(DefaultActionManager.class) 
178             .asSingleton(); 
179  
180         bind(ArtifactManager.class) 
181             .to(DefaultArtifactManager.class) 
182             .asSingleton(); 
183  
184         bind(ArtifactHandler.class) 
185             .to(ModelArtifactHandler.class) 
186             .asSingleton(); 
187  
188         bind(ArtifactHandler.class) 
189             .to(ViewArtifactHandler.class) 
190             .asSingleton(); 
191  
192         bind(ArtifactHandler.class) 
193             .to(ControllerArtifactHandler.class) 
194             .asSingleton(); 
195  
196         bind(ArtifactHandler.class) 
197             .to(ServiceArtifactHandler.class) 
198             .asSingleton(); 
199  
200         bind(PlatformHandler.class) 
201             .toProvider(PlatformHandlerProvider.class) 
202             .asSingleton(); 
203  
204         bind(AddonManager.class) 
205             .to(DefaultAddonManager.class) 
206             .asSingleton(); 
207  
208         bind(EventHandler.class) 
209             .to(DefaultEventHandler.class) 
210             .asSingleton(); 
211  
212         bind(GriffonExceptionHandler.class) 
213             .asSingleton(); 
214         // end::bindings[] 
215     } 
216 }
    
    |