@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; try { filterChain.doFilter(request, response); } catch (final Throwable t) { for (final CustomHandler customHandler : customHandlers) { if (customHandler.isCustomizedFor(t)) { customHandler.handle(httpServletRequest, response, t); return; } } throw t; } }
@Override public void create(Document doc, String type) { // there is some duplicate code between decoders that should be factored out. String path = doc.getElementsByTagName(type) .item(0) .getAttributes() .getNamedItem(SOURCE_TAG) .getTextContent(); String subtype = type.substring(0, type.length() - 1); NodeList nodeLst = doc.getElementsByTagName(subtype); myCustomHandler.create(doc, subtype); for (int i = 0; i < nodeLst.getLength(); i++) { Element nElement = (Element) nodeLst.item(i); String name = getElement(nElement, NAME_TAG); String img = getElement(nElement, IMAGE_TAG); String sound = getElement(nElement, SOUND_TAG); int health = Integer.parseInt(getElement(nElement, HEALTH_TAG)); double buildTime = Double.parseDouble(getElement(nElement, TIME_TAG)); Building building = (Building) ReflectionHelper.makeInstance( path, new Pixmap( ResourceManager.getInstance() .<BufferedImage>getFile(img, BufferedImage.class)), new Sound(sound), health, buildTime); building.setInfo(getInformation(name, nElement)); myFactory.put(name, building); // Load Production Dependencies now String[] nameCanProduce = getElement(nElement, PRODUCE_TAG).split("\\s+"); if (nameCanProduce[0] != "") { myFactory.putProductionDependency(name, nameCanProduce); } // Load Strategy Dependencies now String[] strategies = new String[5]; strategies[0] = CANNOT_ATTACK; strategies[1] = getElement(nElement, OCCUPY_TAG); strategies[2] = CANNOT_GATHER; strategies[3] = getElement(nElement, UPGRADE_TAG); strategies[4] = getElement(nElement, UPGRADE_TREE_NAME_TAG); // Load Weapon Dependency String[] weapons = getElement(nElement, MYWEAPONS_TAG).split("\\s+"); if (weapons[0] != "") { myFactory.putWeaponDependency(name, weapons); strategies[0] = CAN_ATTACK; } myFactory.putStrategyDependency(name, strategies); } }