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 }
|