/** * Set the display-name element in the web.xml document. * * @param displayName (required) * @param document the web.xml document (required) * @param comment (optional) */ public static void setDisplayName(final String displayName, final Document document, final String comment) { Validate.notBlank(displayName, "display name required"); Validate.notNull(document, "Web XML document required"); Element displayNameElement = XmlUtils.findFirstElement(WEB_APP_XPATH + "display-name", document.getDocumentElement()); if (displayNameElement == null) { displayNameElement = document.createElement("display-name"); insertBetween(displayNameElement, "the-start", "description", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(displayNameElement, comment, document); } } displayNameElement.setTextContent(displayName); }
/** * Add a new filter definition to web.xml document. The filter will be added * AFTER (FilterPosition.LAST) all existing filters. * * @param filterName (required) * @param filterClass the fully qualified name of the filter type (required) * @param urlPattern (required) * @param document the web.xml document (required) * @param comment (optional) * @param initParams a vararg of initial parameters (optional) */ public static void addFilter(final String filterName, final String filterClass, final String urlPattern, final Document document, final String comment, final WebXmlParam... initParams) { addFilterAtPosition(FilterPosition.LAST, null, null, filterName, filterClass, urlPattern, document, comment, initParams); }
private static void insertBefore(final Element element, final String beforeElementName, final Document document) { final Element beforeElement = XmlUtils.findFirstElement(WEB_APP_XPATH + beforeElementName, document.getDocumentElement()); if (beforeElement != null) { document.getDocumentElement().insertBefore(element, beforeElement); addLineBreakBefore(element, document); addLineBreakBefore(element, document); return; } document.getDocumentElement().appendChild(element); addLineBreakBefore(element, document); addLineBreakBefore(element, document); }
/** * Set session timeout in web.xml document * * @param timeout * @param document (required) * @param comment (optional) */ public static void setSessionTimeout(final int timeout, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notNull(timeout, "Timeout required"); Element sessionConfigElement = XmlUtils.findFirstElement(WEB_APP_XPATH + "session-config", document.getDocumentElement()); if (sessionConfigElement == null) { sessionConfigElement = document.createElement("session-config"); insertBetween(sessionConfigElement, "servlet-mapping[last()]", "welcome-file-list", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(sessionConfigElement, comment, document); } } appendChildIfNotPresent(sessionConfigElement, new XmlElementBuilder("session-timeout", document).setText(String.valueOf(timeout)).build()); }
new XmlElementBuilder("filter-name", document).setText(filterName).build()).build(); if (filterPosition.equals(FilterPosition.FIRST)) { insertBetween(filterElement, "context-param", "filter", document); } else if (filterPosition.equals(FilterPosition.BEFORE)) { Validate.notBlank(beforeFilterName, "The filter position filter name is required when using FilterPosition.BEFORE"); insertBefore(filterElement, "filter[filter-name = '" + beforeFilterName + "']", document); } else if (filterPosition.equals(FilterPosition.AFTER)) { Validate.notBlank(afterFilterName, "The filter position filter name is required when using FilterPosition.AFTER"); insertAfter(filterElement, "filter[filter-name = '" + afterFilterName + "']", document); } else if (filterPosition.equals(FilterPosition.BETWEEN)) { Validate.notBlank(beforeFilterName, Validate.notBlank(afterFilterName, "The 'after' filter name is required when using FilterPosition.BETWEEN"); insertBetween(filterElement, "filter[filter-name = '" + afterFilterName + "']", "filter[filter-name = '" + beforeFilterName + "']", document); } else { insertBetween(filterElement, "context-param[last()]", "filter-mapping", document); addCommentBefore(filterElement, comment, document); appendChildIfNotPresent(filterElement, new XmlElementBuilder("filter-class", document).setText(filterClass).build()); for (final WebXmlParam initParam : initParams) { appendChildIfNotPresent( filterElement, new XmlElementBuilder("init-param", document)
if (securityConstraintElement == null) { securityConstraintElement = document.createElement("security-constraint"); insertAfter(securityConstraintElement, "session-config[last()]", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(securityConstraintElement, comment, document); appendChildIfNotPresent(securityConstraintElement, new XmlElementBuilder("display-name", document).setText(displayName).build()); appendChildIfNotPresent(securityConstraintElement, webResourceCollectionBuilder.build()); appendChildIfNotPresent(securityConstraintElement, authConstraintBuilder.build()); userDataConstraintBuilder.addChild(new XmlElementBuilder("transport-guarantee", document) .setText(transportGuarantee).build()); appendChildIfNotPresent(securityConstraintElement, userDataConstraintBuilder.build());
/** * Add a welcome file definition to web.xml document * * @param path (required) * @param document (required) * @param comment (optional) */ public static void addWelcomeFile(final String path, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notBlank("Path required"); Element welcomeFileElement = XmlUtils.findFirstElement(WEB_APP_XPATH + "welcome-file-list", document.getDocumentElement()); if (welcomeFileElement == null) { welcomeFileElement = document.createElement("welcome-file-list"); insertBetween(welcomeFileElement, "session-config[last()]", "error-page", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(welcomeFileElement, comment, document); } } appendChildIfNotPresent(welcomeFileElement, new XmlElementBuilder("welcome-file", document) .setText(path).build()); }
/** * Add error code to web.xml document * * @param errorCode (required) * @param location (required) * @param document (required) * @param comment (optional) */ public static void addErrorCode(final Integer errorCode, final String location, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notNull(errorCode, "Error code required"); Validate.notBlank(location, "Location required"); Element errorPageElement = XmlUtils.findFirstElement( WEB_APP_XPATH + "error-page[error-code = '" + errorCode.toString() + "']", document.getDocumentElement()); if (errorPageElement == null) { errorPageElement = new XmlElementBuilder("error-page", document).addChild( new XmlElementBuilder("error-code", document).setText(errorCode.toString()).build()) .build(); insertBetween(errorPageElement, "welcome-file-list[last()]", "the-end", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(errorPageElement, comment, document); } } appendChildIfNotPresent(errorPageElement, new XmlElementBuilder("location", document).setText(location).build()); }
/** * Set the description element in the web.xml document. * * @param description (required) * @param document the web.xml document (required) * @param comment (optional) */ public static void setDescription(final String description, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notBlank(description, "Description required"); Element descriptionElement = XmlUtils.findFirstElement(WEB_APP_XPATH + "description", document.getDocumentElement()); if (descriptionElement == null) { descriptionElement = document.createElement("description"); insertBetween(descriptionElement, "display-name[last()]", "context-param", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(descriptionElement, comment, document); } } descriptionElement.setTextContent(description); }
private static void addCommentBefore(final Element element, final String comment, final Document document) { if (null == XmlUtils.findNode("//comment()[.=' " + comment + " ']", document.getDocumentElement())) { document.getDocumentElement().insertBefore(document.createComment(" " + comment + " "), element); addLineBreakBefore(element, document); } }
/** * Add a new filter definition to web.xml document. The filter will be added * at the FilterPosition specified. * * @param filterPosition Filter position (required) * @param beforeFilterName (optional for filter position FIRST and LAST, * required for BEFORE and AFTER) * @param filterName (required) * @param filterClass the fully qualified name of the filter type (required) * @param urlPattern (required) * @param document the web.xml document (required) * @param comment (optional) * @param initParams (optional) */ public static void addFilterAtPosition(final FilterPosition filterPosition, final String afterFilterName, final String beforeFilterName, final String filterName, final String filterClass, final String urlPattern, final Document document, final String comment, final WebXmlParam... initParams) { addFilterAtPosition(filterPosition, afterFilterName, beforeFilterName, filterName, filterClass, urlPattern, document, comment, initParams == null ? new ArrayList<WebXmlParam>() : Arrays.asList(initParams), new ArrayList<Dispatcher>()); }
/** * Add exception type to web.xml document * * @param exceptionType fully qualified exception type name (required) * @param location (required) * @param document (required) * @param comment (optional) */ public static void addExceptionType(final String exceptionType, final String location, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notBlank(exceptionType, "Fully qualified exception type name required"); Validate.notBlank(location, "location required"); Element errorPageElement = XmlUtils.findFirstElement(WEB_APP_XPATH + "error-page[exception-type = '" + exceptionType + "']", document.getDocumentElement()); if (errorPageElement == null) { errorPageElement = new XmlElementBuilder("error-page", document).addChild( new XmlElementBuilder("exception-type", document).setText(exceptionType).build()) .build(); insertBetween(errorPageElement, "welcome-file-list[last()]", "the-end", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(errorPageElement, comment, document); } } appendChildIfNotPresent(errorPageElement, new XmlElementBuilder("location", document).setText(location).build()); }
/** * Add listener element to web.xml document * * @param className the fully qualified name of the listener type (required) * @param document (required) * @param comment (optional) */ public static void addListener(final String className, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notBlank(className, "Class name required"); Element listenerElement = XmlUtils.findFirstElement(WEB_APP_XPATH + "listener[listener-class = '" + className + "']", document.getDocumentElement()); if (listenerElement == null) { listenerElement = new XmlElementBuilder("listener", document).addChild( new XmlElementBuilder("listener-class", document).setText(className).build()).build(); insertBetween(listenerElement, "filter-mapping[last()]", "servlet", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(listenerElement, comment, document); } } }
private static void insertAfter(final Element element, final String afterElementName, final Document document) { final Element afterElement = XmlUtils.findFirstElement(WEB_APP_XPATH + afterElementName, document.getDocumentElement()); if (afterElement != null && afterElement.getNextSibling() != null && afterElement.getNextSibling() instanceof Element) { document.getDocumentElement().insertBefore(element, afterElement.getNextSibling()); addLineBreakBefore(element, document); addLineBreakBefore(element, document); return; } document.getDocumentElement().appendChild(element); addLineBreakBefore(element, document); addLineBreakBefore(element, document); }
/** * Add a context param to the web.xml document * * @param contextParam (required) * @param document the web.xml document (required) * @param comment (optional) */ public static void addContextParam(final WebXmlParam contextParam, final Document document, final String comment) { Validate.notNull(document, "Web XML document required"); Validate.notNull(contextParam, "Context param required"); Element contextParamElement = XmlUtils.findFirstElement( WEB_APP_XPATH + "context-param[param-name = '" + contextParam.getName() + "']", document.getDocumentElement()); if (contextParamElement == null) { contextParamElement = new XmlElementBuilder("context-param", document) .addChild( new XmlElementBuilder("param-name", document).setText(contextParam.getName()) .build()).build(); insertBetween(contextParamElement, "description[last()]", "filter", document); if (StringUtils.isNotBlank(comment)) { addCommentBefore(contextParamElement, comment, document); } } appendChildIfNotPresent(contextParamElement, new XmlElementBuilder("param-value", document) .setText(contextParam.getValue()).build()); }
private static void insertBetween(final Element element, final String afterElementName, final String beforeElementName, final Document document) { final Element beforeElement = XmlUtils.findFirstElement(WEB_APP_XPATH + beforeElementName, document.getDocumentElement()); if (beforeElement != null) { document.getDocumentElement().insertBefore(element, beforeElement); addLineBreakBefore(element, document); addLineBreakBefore(element, document); return; } final Element afterElement = XmlUtils.findFirstElement(WEB_APP_XPATH + afterElementName, document.getDocumentElement()); if (afterElement != null && afterElement.getNextSibling() != null && afterElement.getNextSibling() instanceof Element) { document.getDocumentElement().insertBefore(element, afterElement.getNextSibling()); addLineBreakBefore(element, document); addLineBreakBefore(element, document); return; } document.getDocumentElement().appendChild(element); addLineBreakBefore(element, document); addLineBreakBefore(element, document); }
new XmlElementBuilder("servlet", document).addChild( new XmlElementBuilder("servlet-name", document).setText(servletName).build()).build(); insertBetween(servletElement, "listener[last()]", "servlet-mapping", document); if (comment != null && comment.length() > 0) { addCommentBefore(servletElement, comment, document); appendChildIfNotPresent(servletElement, new XmlElementBuilder("servlet-class", document) .setText(className).build()); for (final WebXmlParam initParam : initParams) { appendChildIfNotPresent( servletElement, new XmlElementBuilder("init-param", document) appendChildIfNotPresent(servletElement, new XmlElementBuilder("load-on-startup", document) .setText(loadOnStartup.toString()).build()); new XmlElementBuilder("servlet-mapping", document).addChild( new XmlElementBuilder("servlet-name", document).setText(servletName).build()).build(); insertBetween(servletMappingElement, "servlet[last()]", "session-config", document); appendChildIfNotPresent(servletMappingElement, new XmlElementBuilder("url-pattern", document) .setText(urlPattern).build()); } else { appendChildIfNotPresent(servletMappingElement, new XmlElementBuilder("servlet-name", document).setText(servletName).build());