@Override protected void configure() { // Create bindings for servlet instances for (ServletInstanceBindingEntry entry : servletInstanceEntries) { bind(entry.key).toInstance(entry.servlet); } // Ensure that servlets are not bound twice to the same pattern. Set<String> servletUris = Sets.newHashSet(); for (ServletDefinition servletDefinition : servletDefinitions) { if (servletUris.contains(servletDefinition.getPattern())) { addError("More than one servlet was mapped to the same URI pattern: " + servletDefinition.getPattern()); } else { bind(Key.get(ServletDefinition.class, UniqueAnnotations.create())).toProvider(servletDefinition); servletUris.add(servletDefinition.getPattern()); } } }
@Override protected void configure() { // Create bindings for servlet instances for (ServletInstanceBindingEntry entry : servletInstanceEntries) { bind(entry.key).toInstance(entry.servlet); } // Ensure that servlets are not bound twice to the same pattern. Set<String> servletUris = Sets.newHashSet(); for (ServletDefinition servletDefinition : servletDefinitions) { if (servletUris.contains(servletDefinition.getPattern())) { addError("More than one servlet was mapped to the same URI pattern: " + servletDefinition.getPattern()); } else { bind(Key.get(ServletDefinition.class, UniqueAnnotations.create())).toProvider(servletDefinition); servletUris.add(servletDefinition.getPattern()); } } }
@Override protected void configure() { // Ensure that servlets are not bound twice to the same pattern. Set<String> servletUris = Sets.newHashSet(); for (ServletDefinition servletDefinition : servletDefinitions) { if (servletUris.contains(servletDefinition.getPattern())) { addError("More than one servlet was mapped to the same URI pattern: " + servletDefinition.getPattern()); } else { servletUris.add(servletDefinition.getPattern()); } } // Bind these servlet definitions to a unique random key. Doesn't matter what it is, // coz it's never used. bind(Key.get(new TypeLiteral<List<ServletDefinition>>() {}, UniqueAnnotations.create())) .toInstance(servletDefinitions); }
@Inject public ServletInfo(Injector injector) { // Extract pattern to servlet key information from ServletDefinition configure using ServletModule List<Binding<ServletDefinition>> servletBindings = injector.findBindingsByType(TypeLiteral.get(ServletDefinition.class)); for (Binding<ServletDefinition> binding : servletBindings) { ServletDefinition def = binding.getProvider().get(); servlets.put(def.getPattern(), def.getKey()); } // Extract pattern to filter key information from FilterDefinition configure using ServletModule List<Binding<FilterDefinition>> filterBindings = injector.findBindingsByType(TypeLiteral.get(FilterDefinition.class)); for (Binding<FilterDefinition> binding : filterBindings) { FilterDefinition def = binding.getProvider().get(); try { Field patternField = def.getClass().getDeclaredField("pattern"); patternField.setAccessible(true); Field keyField = def.getClass().getDeclaredField("filterKey"); keyField.setAccessible(true); filters.put(patternField.get(def).toString(), keyField.get(def).toString()); } catch (Exception e) { LOG.debug("Unable to get details for {}", def.toString(), e); } } }