1 16 package org.directwebremoting.guice; 17 18 import com.google.inject.AbstractModule; 19 import com.google.inject.Key; 20 import com.google.inject.Module; 21 import com.google.inject.TypeLiteral; 22 import com.google.inject.binder.AnnotatedBindingBuilder; 23 import com.google.inject.binder.ConstantBindingBuilder; 24 import com.google.inject.binder.LinkedBindingBuilder; 25 26 import java.util.HashMap ; 27 import java.util.List ; 28 import java.util.Map ; 29 import static java.util.Arrays.asList ; 30 31 import org.directwebremoting.AjaxFilter; 32 import org.directwebremoting.extend.Configurator; 33 import org.directwebremoting.extend.Converter; 34 35 import static org.directwebremoting.guice.ParamName.CLASSES; 36 37 42 public abstract class AbstractDwrModule extends AbstractModule 43 { 44 48 protected abstract void configure(); 49 50 51 56 protected void bindDwrScopes() 57 { 58 install(new DwrGuiceServletModule(true)); 59 } 60 61 62 69 protected void bindDwrScopes(boolean bindPotentiallyConflictingTypes) 70 { 71 install(new DwrGuiceServletModule(bindPotentiallyConflictingTypes)); 72 } 73 74 75 80 protected LinkedBindingBuilder<Converter> bindConversion(String match) 81 { 82 return bind(Converter.class) 83 .annotatedWith(new ConvertingImpl(match)); 84 } 85 86 87 91 protected LinkedBindingBuilder<Converter> bindConversion(Class <?> type) 92 { 93 return bind(Converter.class) 94 .annotatedWith(new ConvertingImpl(type)); 95 } 96 97 98 104 protected <T> void bindConversion(Class <T> type, Class <? extends T> impl) 105 { 106 bind(Converter.class) 107 .annotatedWith(new ConvertingImpl(type, impl)) 108 .to(InternalConverter.class); } 110 111 112 126 protected <T> LinkedBindingBuilder<T> bindRemoted(Class <T> type) 127 { 128 return bind(type) 129 .annotatedWith(new RemotedImpl()); 130 } 131 132 133 148 protected <T> LinkedBindingBuilder<T> bindRemotedAs(String scriptName, Class <T> type) 149 { 150 return bind(type) 151 .annotatedWith(new RemotedImpl(scriptName)); 152 } 153 154 155 160 protected LinkedBindingBuilder<AjaxFilter> bindFilter(String scriptName) 161 { 162 return bind(AjaxFilter.class) 163 .annotatedWith(new FilteringImpl(scriptName)); 164 } 165 166 167 171 protected LinkedBindingBuilder<AjaxFilter> bindGlobalFilter() 172 { 173 return bind(AjaxFilter.class) 174 .annotatedWith(new FilteringImpl()); 175 } 176 177 178 184 protected ConstantBindingBuilder bindParameter(ParamName paramName) 185 { 186 return bindConstant() 187 .annotatedWith(new InitParamImpl(paramName)); 188 } 189 190 191 197 protected void bindAnnotatedClasses(Class ... classes) 198 { 199 bind(new TypeLiteral<List <Class >>(){}) 200 .annotatedWith(new InitParamImpl(CLASSES)) 201 .toInstance(asList(classes)); 202 203 } 204 } 205 | Popular Tags |