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