Comment #2 on issue 544 by mathieu.carbou: Guice servlet module crashed
when used with Elements.getElements()
http://code.google.com/p/google-guice/issues/detail?id=544
Here is a quick fix: cretae this class:
import com.google.inject.Module;
import com.google.inject.servlet.ServletModule;
import java.lang.reflect.Field;
import java.util.List;
/**
* FIX BUG http://code.google.com/p/google-guice/issues/detail?id=544
* TODO: REMOVE THIS WHEN FIXED
*/
public final class ServletModuleFix {
public static void fix(ServletModule me) {
try {
Field servletsModuleBuilder =
ServletModule.class.getDeclaredField("servletsModuleBuilder");
servletsModuleBuilder.setAccessible(true);
Field filtersModuleBuilder =
ServletModule.class.getDeclaredField("filtersModuleBuilder");
filtersModuleBuilder.setAccessible(true);
Module servletsModule = (Module) servletsModuleBuilder.get(me);
Module filtersModule = (Module) filtersModuleBuilder.get(me);
for (Module module : new Module[]{servletsModule,
filtersModule}) {
for (Field field : module.getClass().getDeclaredFields()) {
if (List.class.isAssignableFrom(field.getType())) {
field.setAccessible(true);
((List) field.get(module)).clear();
}
}
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
}
And use it in your servlets modules like this:
public class RestModule extends ServletModule {
@Override
protected void configureServlets() {
ServletModuleFix.fix(this);
[...]
}
}
--
You received this message because you are subscribed to the Google Groups
"google-guice-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice-dev?hl=en.