@Override public AppendingStringBuffer filter(AppendingStringBuffer responseBuffer) { if(enabled) { return super.filter(responseBuffer); } else { return responseBuffer; } }
public AppendingStringBuffer filter(AppendingStringBuffer responseBuffer) { IRequestablePage responsePage = getResponsePage(); if (responsePage != null && !(responsePage instanceof Page) || RequestCycle.get().find(AjaxRequestTarget.class) != null) { return responseBuffer; } DocType docType = getDocType(responseBuffer); if (docType == null) { setMetaData("Unknown doctype"); onUnknownDocType(responseBuffer); return responseBuffer; } try { ValidationReport report = validateMarkup(responseBuffer.toString(), docType); if (report.isValid()) { setMetaData("Markup is valid " + docType); onValidMarkup(responseBuffer, report); } else { setMetaData("Markup is invalid " + docType); onInvalidMarkup(responseBuffer, report); } } catch (Exception e) { log.error(e.toString(), e); } return responseBuffer; }
/** * Called when no known {@link DocType} could be determined from the * {@code responseBuffer}. The markup is not validated. * * @param responseBuffer * the response markup that could not be validated. */ protected void onUnknownDocType(AppendingStringBuffer response) { IRequestablePage responsePage = getResponsePage(); String detectionString = getFirstCharacters(response, 128); if (responsePage != null) { log.info("No or unknown DOCTYPE detected for page {}: {}", responsePage.getClass().getName(), detectionString); } else { log.info("No or unknown DOCTYPE detected: {}", detectionString); } }
/** * Called when the validated markup does not contain any errors. * * @param responseBuffer * the validated response markup * @param report * the validation report */ protected void onValidMarkup(AppendingStringBuffer responseBuffer, ValidationReport report) { IRequestablePage responsePage = getResponsePage(); DocType doctype = getDocType(responseBuffer); log.info("Markup for {} is valid {}", responsePage != null ? responsePage.getClass().getName() : "<unable to determine page class>", doctype.name()); String head = report.getHeadMarkup(); String body = report.getBodyMarkup(); int indexOfHeadClose = responseBuffer.lastIndexOf("</head>"); responseBuffer.insert(indexOfHeadClose, head); int indexOfBodyClose = responseBuffer.lastIndexOf("</body>"); responseBuffer.insert(indexOfBodyClose, body); }
getMarkupSettings().setStripWicketTags(true); HtmlValidationResponseFilter htmlvalidator = new GeoServerHTMLValidatorResponseFilter(); htmlvalidator.setIgnoreAutocomplete(true); htmlvalidator.setIgnoreKnownWicketBugs(true); getRequestCycleSettings().addResponseFilter(htmlvalidator);
@Override public void init(WebApplication webApplication) { if (RuntimeConfigurationType.DEVELOPMENT == webApplication.getConfigurationType()) { webApplication.getMarkupSettings().setStripWicketTags(true); webApplication.getRequestCycleSettings().addResponseFilter(new HtmlValidationResponseFilter()); } }
private void setMetaData(String msg) { IRequestablePage responsePage = getResponsePage(); if (responsePage instanceof Page) { ((Page) responsePage).setMetaData(HtmlValidationResultKey.KEY, msg); } }
/** * Gets the DOCTYPE from the response. Returns {@code null} when the DOCTYPE * is not detected, or unknown. See {@link DocType} for supported DOCTYPEs. */ protected DocType getDocType(AppendingStringBuffer response) { String contentSoFar = getFirstCharacters(response, 128); Matcher matcher = DOCTYPE_PATTERN.matcher(contentSoFar); if (!matcher.find()) return null; String docTypeStr = matcher.group(); if (Strings.isEmpty(docTypeStr)) return null; DocType docType = DocType.getDocType(docTypeStr); return docType; }
@Override public void init(WebApplication webApplication) { if (RuntimeConfigurationType.DEVELOPMENT == webApplication.getConfigurationType()) { webApplication.getMarkupSettings().setStripWicketTags(true); webApplication.getRequestCycleSettings().addResponseFilter(new HtmlValidationResponseFilter()); } }
private ValidationReport validateMarkup(String response, DocType docType) throws Exception { IRequestablePage responsePage = getResponsePage(); ValidationReport report = new ValidationReport(configuration, responsePage, response, docType); PropertyMapBuilder properties = new PropertyMapBuilder(); properties.put(ValidateProperty.ERROR_HANDLER, report); Schema schema = docType.createSchema(); Validator validator = schema .createValidator(properties.toPropertyMap()); XMLReader reader = docType.createParser(); reader.setContentHandler(validator.getContentHandler()); try { reader.parse(new InputSource(new StringReader(response))); } catch (SAXParseException parseError) { report.fatalError(parseError); } return report; }