From: Konstantin P. <ko...@us...> - 2006-09-24 11:59:00
|
Update of /cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-web/src/main/java/org/xdoclet/plugin/web In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9889/plugin-web/src/main/java/org/xdoclet/plugin/web Modified Files: TaglibPlugin.jelly WebPlugin.java WebPlugin.jelly Log Message: reworked jelly merge, moved taglib from web plugin to generama to provide standard merge capabilities Index: TaglibPlugin.jelly =================================================================== RCS file: /cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-web/src/main/java/org/xdoclet/plugin/web/TaglibPlugin.jelly,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** TaglibPlugin.jelly 4 Dec 2005 18:25:16 -0000 1.13 --- TaglibPlugin.jelly 24 Sep 2006 11:58:57 -0000 1.14 *************** *** 2,6 **** <j:jelly xmlns:j="jelly:core" xmlns:jxml="jelly:xml" ! xmlns:x="jelly:org.xdoclet.plugin.web.jelly.XdocletTaglib"> <j:if test="${plugin.needsDoctype()}"> --- 2,6 ---- <j:jelly xmlns:j="jelly:core" xmlns:jxml="jelly:xml" ! xmlns:g="jelly:org.generama.jelly.GeneramaTaglib"> <j:if test="${plugin.needsDoctype()}"> *************** *** 18,25 **** <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <x:condelement tag="description" obj="${plugin}" property="description"/> ! <x:condelement tag="display-name" obj="${plugin}" property="displayname"/> ! <x:condelement tag="small-icon" obj="${plugin}" property="smallicon"/> ! <x:condelement tag="large-icon" obj="${plugin}" property="largeicon"/> </j:if> --- 18,25 ---- <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <g:condelement tag="description" obj="${plugin}" property="description"/> ! <g:condelement tag="display-name" obj="${plugin}" property="displayname"/> ! <g:condelement tag="small-icon" obj="${plugin}" property="smallicon"/> ! <g:condelement tag="large-icon" obj="${plugin}" property="largeicon"/> </j:if> *************** *** 30,41 **** <short-name>${plugin.shortname}</short-name> ! <x:condelement tag="uri" obj="${plugin}" property="uri"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <x:condelement tag="display-name" obj="${plugin}" property="displayname"/> ! <x:condelement tag="small-icon" obj="${plugin}" property="smallicon"/> ! <x:condelement tag="large-icon" obj="${plugin}" property="largeicon"/> ! <x:condelement tag="description" obj="${plugin}" property="description"/> </j:if> ! <x:condelement tag="validator" obj="${plugin}" property="validator"/> <!-- listeners --> --- 30,41 ---- <short-name>${plugin.shortname}</short-name> ! <g:condelement tag="uri" obj="${plugin}" property="uri"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <g:condelement tag="display-name" obj="${plugin}" property="displayname"/> ! <g:condelement tag="small-icon" obj="${plugin}" property="smallicon"/> ! <g:condelement tag="large-icon" obj="${plugin}" property="largeicon"/> ! <g:condelement tag="description" obj="${plugin}" property="description"/> </j:if> ! <g:condelement tag="validator" obj="${plugin}" property="validator"/> <!-- listeners --> *************** *** 53,83 **** <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <x:condelement tag="description" obj="${tagtag}" property="description"/> ! <x:condelement tag="display-name" obj="${tagtag}" property="display-name"/> ! <x:condelement tag="small-icon" obj="${tagtag}" property="small-icon"/> ! <x:condelement tag="large-icon" obj="${tagtag}" property="large-icon"/> </j:if> <name>${tagtag.getNamedParameter('name')}</name> <tag-class>${tag.fullyQualifiedName}</tag-class> ! <x:condelement tag="tei-class" doclettag="${tagtag}" property="tei-class"/> ! <x:condelement tag="body-content" doclettag="${tagtag}" property="body-content"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <x:condelement tag="display-name" doclettag="${tagtag}" property="display-name"/> ! <x:condelement tag="small-icon" doclettag="${tagtag}" property="small-icon"/> ! <x:condelement tag="large-icon" doclettag="${tagtag}" property="large-icon"/> ! <x:condelement tag="description" doclettag="${tagtag}" property="description"/> </j:if> <j:forEach var="var" items="${tag.getTagsByName('jsp.variable')}"> <variable> <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <x:condelement tag="description" doclettag="${var}" property="description"/> </j:if> ! <x:condelement tag="name-given" doclettag="${var}" property="name-given"/> ! <x:condelement tag="name-from-attribute" doclettag="${var}" property="name-from-attribute"/> ! <x:condelement tag="variable-class" doclettag="${var}" property="class"/> ! <x:condelement tag="declare" doclettag="${var}" property="declare"/> ! <x:condelement tag="scope" doclettag="${var}" property="scope"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <x:condelement tag="description" doclettag="${var}" property="description"/> </j:if> </variable> --- 53,83 ---- <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <g:condelement tag="description" obj="${tagtag}" property="description"/> ! <g:condelement tag="display-name" obj="${tagtag}" property="display-name"/> ! <g:condelement tag="small-icon" obj="${tagtag}" property="small-icon"/> ! <g:condelement tag="large-icon" obj="${tagtag}" property="large-icon"/> </j:if> <name>${tagtag.getNamedParameter('name')}</name> <tag-class>${tag.fullyQualifiedName}</tag-class> ! <g:condelement tag="tei-class" doclettag="${tagtag}" property="tei-class"/> ! <g:condelement tag="body-content" doclettag="${tagtag}" property="body-content"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <g:condelement tag="display-name" doclettag="${tagtag}" property="display-name"/> ! <g:condelement tag="small-icon" doclettag="${tagtag}" property="small-icon"/> ! <g:condelement tag="large-icon" doclettag="${tagtag}" property="large-icon"/> ! <g:condelement tag="description" doclettag="${tagtag}" property="description"/> </j:if> <j:forEach var="var" items="${tag.getTagsByName('jsp.variable')}"> <variable> <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <g:condelement tag="description" doclettag="${var}" property="description"/> </j:if> ! <g:condelement tag="name-given" doclettag="${var}" property="name-given"/> ! <g:condelement tag="name-from-attribute" doclettag="${var}" property="name-from-attribute"/> ! <g:condelement tag="variable-class" doclettag="${var}" property="class"/> ! <g:condelement tag="declare" doclettag="${var}" property="declare"/> ! <g:condelement tag="scope" doclettag="${var}" property="scope"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <g:condelement tag="description" doclettag="${var}" property="description"/> </j:if> </variable> *************** *** 87,98 **** <attribute> <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <x:condelement tag="description" doclettag="${attr}" property="description"/> </j:if> <name>${attrMethod.propertyName}</name> ! <x:condelement tag="required" doclettag="${attr}" property="required"/> ! <x:condelement tag="rtexprvalue" doclettag="${attr}" property="rtexprvalue"/> ! <x:condelement tag="type" doclettag="${attr}" property="type"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <x:condelement tag="description" doclettag="${attr}" property="description"/> </j:if> </attribute> --- 87,98 ---- <attribute> <j:if test="${plugin.isMinimumJspVersion('2.0')}"> ! <g:condelement tag="description" doclettag="${attr}" property="description"/> </j:if> <name>${attrMethod.propertyName}</name> ! <g:condelement tag="required" doclettag="${attr}" property="required"/> ! <g:condelement tag="rtexprvalue" doclettag="${attr}" property="rtexprvalue"/> ! <g:condelement tag="type" doclettag="${attr}" property="type"/> <j:if test="${plugin.isMaximumJspVersion('1.2')}"> ! <g:condelement tag="description" doclettag="${attr}" property="description"/> </j:if> </attribute> Index: WebPlugin.java =================================================================== RCS file: /cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-web/src/main/java/org/xdoclet/plugin/web/WebPlugin.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** WebPlugin.java 19 Jan 2006 23:49:23 -0000 1.24 --- WebPlugin.java 24 Sep 2006 11:58:57 -0000 1.25 *************** *** 19,204 **** /** ! * * TODO : check qtags, xtags ! * ! * TODO: add getMetadataProvider() to AbstractPlugin instead of keeping the allClass reference ? ! * * TODO : validate generated XML ? ! * ! * TODO : mandatory tags/attributes? (filter-name, filter-class, filter-mapping, ...) ! * ! * TODO : filter-mapping: check that a mapping has only of one url-pattern or servlet-name ! * TODO : filter-mapping: check that a servlet-name mapping points to an existing servlet? i wouldn't do it, because ! * a servlet might be declared in a merge file. ! * ! * @author Grégory Joseph ! * @author Aslak Hellesøy ! * @version $Revision$ */ public class WebPlugin extends QDoxPlugin { - private String publicId = WebUtils.WEBXML_PUBLIC_ID_2_3; - private String systemId = WebUtils.WEBXML_SYSTEM_ID_2_3; ! private static Map filterInterface = new HashMap(); ! static { ! filterInterface.put(WebUtils.SERVLET_23, new String[]{"javax.servlet.Filter"}); ! filterInterface.put(WebUtils.SERVLET_24, new String[]{"javax.servlet.Filter"}); ! } ! private static String servletInterface = "javax.servlet.Servlet"; ! private static String[] allWebInterfaces = {"javax.servlet.Filter", servletInterface, ! "javax.servlet.ServletContextAttributeListener", "javax.servlet.ServletContextListener", ! "javax.servlet.ServletRequestAttributeListener", "javax.servlet.ServletRequestListener", ! "javax.servlet.http.HttpSessionActivationListener", "javax.servlet.http.HttpSessionAttributeListener", ! "javax.servlet.http.HttpSessionBindingListener", "javax.servlet.http.HttpSessionListener"}; // TODO avoid repeating listenerInterfaces ! private WebUtils webUtils; ! private String servletversion = WebUtils.SERVLET_23; ! protected File mergeDir; ! public WebPlugin(JellyTemplateEngine jellyTemplateEngine, QDoxCapableMetadataProvider metadataProvider, WriterMapper writerMapper) { ! super(jellyTemplateEngine, metadataProvider, writerMapper); ! setMultioutput(false); ! setFilereplace("web.xml"); ! setOutputValidator(new XMLOutputValidator(WebUtils.DTDs)); ! new TagLibrary(metadataProvider); ! } ! //== plugin attributes == ! public String getServletversion() { ! return servletversion; ! } ! public void setServletversion(String servletversion) { ! this.servletversion = servletversion; ! } ! //== util methods used by jelly script == ! public WebUtils getWebUtils() { ! if (webUtils == null) { ! webUtils = new WebUtils(servletversion); ! } ! return webUtils; ! } ! // TODO : this is to be replaced by an XmlDocVersion class ! public boolean needsDoctype() { ! return !getWebUtils().isMinimumServletVersion(WebUtils.SERVLET_24); ! } ! public boolean needsSchema() { ! return getWebUtils().isMinimumServletVersion(WebUtils.SERVLET_24); ! } ! public String getSchemaXmlNs() { ! return needsSchema() ? "http://java.sun.com/xml/ns/j2ee" : null; ! } ! public String getSchemaXmlNsXsi() { ! return needsSchema() ? "http://www.w3.org/2001/XMLSchema-instance" : null; ! } ! public String getSchemaXsiSchemaLocation() { ! return needsSchema() ? "http://java.sun.com/xml/ns/j2ee " + WebUtils.WEBXML_SCHEMA_2_4 : null; ! } ! /** ! * Returns an ordered collection of all the filters passed to the plugin. ! * ! * TODO: document the "order" attribute. ! * TODO: more test cases with order? maybe not xmltestcases then, but smaller units.. ! * TODO: use "before"&"after" attributes instead of "order" ? ! * ! * TODO : return empty collection if servlet-api-version < 2.3 ! * ! * @return ! * @see ClassTagPredicate used to filter out non-filters ! * @see ClassAttributeComparator used to sort filters ! */ ! public Collection getFilters() { ! // filter out non-filter classes ! ArrayList filters = new ArrayList(); ! String[] interfaces = (String[]) filterInterface.get(servletversion); ! if (interfaces != null) { ! Predicate predicate = new ClassTagPredicate(interfaces, "web.filter"); ! CollectionUtils.select(metadataProvider.getMetadata(), predicate, filters); ! // sort filters by the order attribute of the @web.filter tag ! Collections.sort(filters, new ClassAttributeComparator("web.filter", "order")); ! } ! return filters; ! } ! public Collection getServlets() { ! ArrayList servlets = new ArrayList(); ! Predicate predicate = new ClassTagPredicate(servletInterface, "web.servlet"); ! CollectionUtils.select(metadataProvider.getMetadata(), predicate, servlets); ! // sort servlets by the order attribute of the @web.servlet tag ! Collections.sort(servlets, new ClassAttributeComparator("web.servlet", "order")); ! return servlets; ! } ! /** ! * TODO : cache the result of this? (maybe it's one of the reasons the plugin is slow??) ! */ ! public Collection getAllWebClasses() { ! ArrayList all = new ArrayList(); ! Predicate predicate = new ClassTagPredicate(allWebInterfaces); ! CollectionUtils.select(metadataProvider.getMetadata(), predicate, all); ! // TODO: any order for this? maybe by classname. ! return metadataProvider.getMetadata(); ! } ! public boolean needsServletRunAs(DocletTag tag) { ! return (tag.getNamedParameter("run-as") != null) ! && (servletversion.compareTo(WebUtils.SERVLET_23)>=0); ! } ! public String getPublicId() { ! return publicId; ! } ! public String getSystemId() { ! return systemId; ! } ! /** ! * Setter for mergeDir property ! * ! * @param mergeDir The value for the property ! */ ! public void setMergedir(File mergeDir) { ! this.mergeDir = mergeDir; ! } ! /** ! * Utility method called from jelly script to resolve a mergeFile reference ! * ! * @param mergeFile The mergeFile to look for ! * ! * @return A File for mergeFile ! */ ! public File getMergeFile(String mergeFile) { ! if ((mergeFile != null) && (mergeDir != null) && mergeDir.isDirectory()) { ! // The listing of mergeDir's files avoid possibly security issues in path resolving (paranoid?) ! File[] files = mergeDir.listFiles(); ! for (int i = 0; i < files.length; i++) { ! if (mergeFile.trim().equals(files[i].getName())) { ! return files[i]; ! } ! } ! } ! return null; ! } } --- 19,245 ---- /** ! * * TODO : check qtags, xtags ! * ! * TODO: add getMetadataProvider() to AbstractPlugin instead of keeping the ! * allClass reference ? ! * * TODO : validate generated XML ? ! * ! * TODO : mandatory tags/attributes? (filter-name, filter-class, filter-mapping, ! * ...) ! * ! * TODO : filter-mapping: check that a mapping has only of one url-pattern or ! * servlet-name TODO : filter-mapping: check that a servlet-name mapping points ! * to an existing servlet? i wouldn't do it, because a servlet might be declared ! * in a merge file. ! * ! * @author Grégory Joseph ! * @author Aslak Hellesøy ! * @version $Revision$ */ public class WebPlugin extends QDoxPlugin { ! private static String[] allWebInterfaces = { "javax.servlet.Filter", ! "javax.servlet.Servlet", "javax.servlet.ServletContextAttributeListener", ! "javax.servlet.ServletContextListener", ! "javax.servlet.ServletRequestAttributeListener", ! "javax.servlet.ServletRequestListener", ! "javax.servlet.http.HttpSessionActivationListener", ! "javax.servlet.http.HttpSessionAttributeListener", ! "javax.servlet.http.HttpSessionBindingListener", ! "javax.servlet.http.HttpSessionListener" }; // TODO avoid repeating ! // listenerInterfaces ! private static Map filterInterface = new HashMap(); ! static { ! filterInterface.put(WebUtils.SERVLET_23, ! new String[] { "javax.servlet.Filter" }); ! filterInterface.put(WebUtils.SERVLET_24, ! new String[] { "javax.servlet.Filter" }); ! } ! protected String mergeDir; ! private String publicId = WebUtils.WEBXML_PUBLIC_ID_2_3; ! private String servletversion = WebUtils.SERVLET_23; ! private String systemId = WebUtils.WEBXML_SYSTEM_ID_2_3; ! private WebUtils webUtils; ! public WebPlugin(JellyTemplateEngine jellyTemplateEngine, ! QDoxCapableMetadataProvider metadataProvider, ! WriterMapper writerMapper) { ! super(jellyTemplateEngine, metadataProvider, writerMapper); ! setMultioutput(false); ! setFilereplace("web.xml"); ! setOutputValidator(new XMLOutputValidator(WebUtils.DTDs)); ! new TagLibrary(metadataProvider); ! } ! /** ! * TODO : cache the result of this? (maybe it's one of the reasons the ! * plugin is slow??) ! */ ! public Collection getAllWebClasses() { ! ArrayList all = new ArrayList(); ! Predicate predicate = new ClassTagPredicate(allWebInterfaces); ! CollectionUtils.select(metadataProvider.getMetadata(), predicate, all); ! // TODO: any order for this? maybe by classname. ! return metadataProvider.getMetadata(); ! } ! /** ! * base path to resource directory containing resources to be merged they ! * shall be made available on class path ! * ! * @return ! */ ! public String getMergeDir() { ! return mergeDir; ! } ! public void setMergeDir(String mergeDir) { ! this.mergeDir = mergeDir; ! } ! /** ! * Returns an ordered collection of all the filters passed to the plugin. ! * ! * TODO: document the "order" attribute. TODO: more test cases with order? ! * maybe not xmltestcases then, but smaller units.. TODO: use ! * "before"&"after" attributes instead of "order" ? ! * ! * TODO : return empty collection if servlet-api-version < 2.3 ! * ! * @return ! * @see ClassTagPredicate used to filter out non-filters ! * @see ClassAttributeComparator used to sort filters ! */ ! public Collection getFilters() { ! // filter out non-filter classes ! ArrayList filters = new ArrayList(); ! String[] interfaces = (String[]) filterInterface.get(servletversion); ! if (interfaces != null) { ! Predicate predicate = new ClassTagPredicate(interfaces, ! "web.filter"); ! CollectionUtils.select(metadataProvider.getMetadata(), predicate, ! filters); ! // sort filters by the order attribute of the @web.filter tag ! Collections.sort(filters, new ClassAttributeComparator( ! "web.filter", "order")); ! } ! return filters; ! } ! /** ! * Utility method called from jelly script to resolve a mergeFile reference ! * ! * @param mergeFile ! * The mergeFile to look for ! * ! * @return A File for mergeFile ! */ ! // public File getMergeFile(String mergeFile) { ! // if ((mergeFile != null) && (mergeDir != null) && mergeDir.isDirectory()) { ! // // The listing of mergeDir's files avoid possibly security issues in ! // // path resolving (paranoid?) ! // File[] files = mergeDir.listFiles(); ! // ! // for (int i = 0; i < files.length; i++) { ! // if (mergeFile.trim().equals(files[i].getName())) { ! // return files[i]; ! // } ! // } ! // } ! // ! // return null; ! // } ! public String getPublicId() { ! return publicId; ! } ! public String getSchemaXmlNs() { ! return needsSchema() ? "http://java.sun.com/xml/ns/j2ee" : null; ! } ! public String getSchemaXmlNsXsi() { ! return needsSchema() ? "http://www.w3.org/2001/XMLSchema-instance" ! : null; ! } ! public String getSchemaXsiSchemaLocation() { ! return needsSchema() ? "http://java.sun.com/xml/ns/j2ee " ! + WebUtils.WEBXML_SCHEMA_2_4 : null; ! } ! public Collection getServlets() { ! ArrayList servlets = new ArrayList(); ! Predicate predicate = new ClassTagPredicate("javax.servlet.Servlet", ! "web.servlet"); ! CollectionUtils.select(metadataProvider.getMetadata(), predicate, ! servlets); ! // sort servlets by the order attribute of the @web.servlet tag ! Collections.sort(servlets, new ClassAttributeComparator("web.servlet", ! "order")); ! return servlets; ! } ! // == plugin attributes == ! public String getServletversion() { ! return servletversion; ! } ! public String getSystemId() { ! return systemId; ! } ! // == util methods used by jelly script == ! public WebUtils getWebUtils() { ! if (webUtils == null) { ! webUtils = new WebUtils(servletversion); ! } ! return webUtils; ! } ! // TODO : this is to be replaced by an XmlDocVersion class ! public boolean needsDoctype() { ! return !getWebUtils().isMinimumServletVersion(WebUtils.SERVLET_24); ! } ! ! public boolean needsSchema() { ! return getWebUtils().isMinimumServletVersion(WebUtils.SERVLET_24); ! } ! ! public boolean needsServletRunAs(DocletTag tag) { ! return (tag.getNamedParameter("run-as") != null) ! && (servletversion.compareTo(WebUtils.SERVLET_23) >= 0); ! } ! ! /** ! * Setter for mergeDir property ! * ! * @param mergeDir ! * The value for the property ! */ ! public void setMergedir(String mergeDir) { ! this.mergeDir = mergeDir; ! } ! ! public void setServletversion(String servletversion) { ! this.servletversion = servletversion; ! } } Index: WebPlugin.jelly =================================================================== RCS file: /cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-web/src/main/java/org/xdoclet/plugin/web/WebPlugin.jelly,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** WebPlugin.jelly 19 Jan 2006 23:49:23 -0000 1.21 --- WebPlugin.jelly 24 Sep 2006 11:58:57 -0000 1.22 *************** *** 1,6 **** <?xml version="1.0" encoding="UTF-8"?> ! <j:jelly xmlns:j="jelly:core" xmlns:jxml="jelly:xml" xmlns:d="jelly:define" ! xmlns:x="jelly:org.xdoclet.plugin.web.jelly.XdocletTaglib"> <!--macros--> --- 1,6 ---- <?xml version="1.0" encoding="UTF-8"?> ! <j:jelly xmlns:j="jelly:core" xmlns:x="jelly:xml" xmlns:d="jelly:define" ! xmlns:g="jelly:org.generama.jelly.GeneramaTaglib"> <!--macros--> *************** *** 8,17 **** <init-param> <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <x:condelement tag="description" doclettag="${param}" property="description"/> </j:if> <param-name>${param.getNamedParameter("name")}</param-name> <param-value>${param.getNamedParameter("value")}</param-value> <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <x:condelement tag="description" doclettag="${param}" property="description"/> </j:if> </init-param> --- 8,17 ---- <init-param> <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <g:condelement tag="description" doclettag="${param}" property="description"/> </j:if> <param-name>${param.getNamedParameter("name")}</param-name> <param-value>${param.getNamedParameter("value")}</param-value> <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <g:condelement tag="description" doclettag="${param}" property="description"/> </j:if> </init-param> *************** *** 24,30 **** <j:if test="${plugin.needsDoctype()}"> ! <jxml:doctype name="web-app" ! publicId="${plugin.publicId}" ! systemId="${plugin.systemId}"/> </j:if> --- 24,30 ---- <j:if test="${plugin.needsDoctype()}"> ! <x:doctype name="web-app" ! publicId="${plugin.publicId}" ! systemId="${plugin.systemId}"/> </j:if> *************** *** 32,259 **** <!-- TODO : check exactly what parameters are mandatory or not, esp. with ejb-reb and such --> ! <jxml:element URI="${plugin.schemaXmlNs}" name="web-app"> <j:if test="${plugin.needsSchema()}"> ! <jxml:attribute URI="${plugin.schemaXmlNsXsi}" name="xsi:schemaLocation" trim="true">${plugin.schemaXsiSchemaLocation}</jxml:attribute> ! <jxml:attribute name="version" trim="true">${plugin.servletversion}</jxml:attribute> </j:if> ! <jxml:replaceNamespace toURI="${plugin.schemaXmlNs}"> <!--TODO : distributable : add this tag conditionaly/--> <!-- filters --> ! <j:forEach var="filter" items="${plugin.filters}"> ! <filter> ! <j:set var="item" value="${filter.getTagByName('web.filter')}"/> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <x:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! </j:if> ! <j:if test="${item.getNamedParameter('icon') != null}"> ! <icon> ! <small-icon>${item.getNamedParameter('icon')}</small-icon> ! </icon> ! </j:if> ! <filter-name>${item.getNamedParameter('name')}</filter-name> ! <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <x:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! </j:if> ! <filter-class>${filter.fullyQualifiedName}</filter-class> ! <j:forEach var="param" items="${filter.getTagsByName('web.filter-init-param')}"> ! <d:invoke script="${init_param}"/> ! </j:forEach> ! </filter> ! </j:forEach> ! <j:choose> ! <j:when test="${plugin.getMergeFile('filters.xml').exists()}"> ! <j:import file="${plugin.getMergeFile('filters.xml').path}" inherit="true"/> ! </j:when> ! <j:otherwise> ! <jxml:comment trim="false">To add filters that you have deployment descriptor info for, add a file to your XDoclet merge directory called filters.xml that contains the <filter></filter> markup for those beans.</jxml:comment> ! </j:otherwise> ! </j:choose> ! <!-- filter-mappings --> ! <j:forEach var="filter" items="${plugin.filters}"> ! <j:forEach var="mapping" items="${filter.getTagsByName('web.filter-mapping')}"> ! <filter-mapping> ! <filter-name>${filter.getNamedParameter("web.filter","name")}</filter-name> ! <x:condelement tag="url-pattern" doclettag="${mapping}" property="url-pattern"/> ! <x:condelement tag="servlet-name" doclettag="${mapping}" property="servlet-name"/> ! </filter-mapping> </j:forEach> ! </j:forEach> ! <j:choose> ! <j:when test="${plugin.getMergeFile('filter-mappings.xml').exists()}"> ! <j:import file="${plugin.getMergeFile('filter-mappings.xml').path}" inherit="true"/> ! </j:when> ! <j:otherwise> ! <jxml:comment trim="false">To add filters that you have deployment descriptor info for, add a file to your XDoclet merge directory called filter-mappings.xml that contains the <filter-mappings></filter-mappings> markup for those beans.</jxml:comment> ! </j:otherwise> ! </j:choose> <!-- listeners --> ! <j:forEach var="listener" items="${plugin.webUtils.getListeners(metadata)}"> ! <listener> ! <listener-class>${listener.fullyQualifiedName}</listener-class> ! </listener> ! </j:forEach> <!-- servlets --> ! <j:forEach var="servlet" items="${plugin.servlets}"> ! <j:set var="item" value="${servlet.getTagByName('web.servlet')}"/> ! <servlet> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <x:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! </j:if> ! <servlet-name>${servlet.getNamedParameter("web.servlet","name")}</servlet-name> ! <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <x:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! </j:if> ! <servlet-class>${servlet.fullyQualifiedName}</servlet-class> ! <j:forEach var="param" items="${servlet.getTagsByName('web.servlet-init-param')}"> ! <d:invoke script="${init_param}"/> ! </j:forEach> ! <x:condelement tag="load-on-startup" doclettag="${item}" property="load-on-startup"/> ! <j:if test="${plugin.needsServletRunAs(item)}"> ! <run-as> ! <role-name>${item.getNamedParameter('run-as')}</role-name> ! </run-as> ! </j:if> <!-- security-roles references --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.security-role-ref')}"> ! <security-role-ref> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <role-name>${item.getNamedParameter('role-name')}</role-name> ! <role-link>${item.getNamedParameter('role-link')}</role-link> ! </security-role-ref> </j:forEach> ! </j:forEach> ! </servlet> ! </j:forEach> ! <j:choose> ! <j:when test="${plugin.getMergeFile('servlets.xml').exists()}"> ! <j:import file="${plugin.getMergeFile('servlets.xml').path}" inherit="true"/> ! </j:when> ! <j:otherwise> ! <jxml:comment trim="false">To add filters that you have deployment descriptor info for, add a file to your XDoclet merge directory called servlets.xml that contains the <servlet></servlet> markup for those beans.</jxml:comment> ! </j:otherwise> ! </j:choose> <!-- servlet-mappings --> ! <j:forEach var="servlet" items="${plugin.servlets}"> ! <j:forEach var="mapping" items="${servlet.getTagsByName('web.servlet-mapping')}"> ! <servlet-mapping> ! <servlet-name>${servlet.getNamedParameter("web.servlet","name")}</servlet-name> ! <x:condelement tag="url-pattern" doclettag="${mapping}" property="url-pattern"/> ! </servlet-mapping> </j:forEach> ! </j:forEach> ! <j:choose> ! <j:when test="${plugin.getMergeFile('servlet-mappings.xml').exists()}"> ! <j:import file="${plugin.getMergeFile('servlet-mappings.xml').path}" inherit="true"/> ! </j:when> ! <j:otherwise> ! <jxml:comment trim="false">To add filters that you have deployment descriptor info for, add a file to your XDoclet merge directory called servlet-mappings.xml that contains the <servlet-mappings></servlet-mappings> markup for those beans.</jxml:comment> ! </j:otherwise> ! </j:choose> <!-- resource env references --> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.3')}"> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.resource-env-ref')}"> ! <resource-env-ref> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <resource-env-ref-name>${item.getNamedParameter('name')}</resource-env-ref-name> ! <resource-env-ref-type>${item.getNamedParameter('type')}</resource-env-ref-type> ! </resource-env-ref> </j:forEach> ! </j:forEach> ! </j:if> <!-- resource references --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.resource-ref')}"> ! <resource-ref> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <res-ref-name>${item.getNamedParameter('name')}</res-ref-name> ! <res-type>${item.getNamedParameter('type')}</res-type> ! <res-auth>${item.getNamedParameter('auth')}</res-auth> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.3')}"> ! <x:condelement tag="res-sharing-scope" doclettag="${item}" property="scope"/> ! </j:if> ! </resource-ref> </j:forEach> ! </j:forEach> <!-- security-roles --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.security-role')}"> ! <security-role> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <role-name>${item.getNamedParameter('role-name')}</role-name> ! </security-role> </j:forEach> ! </j:forEach> ! <j:choose> ! <j:when test="${plugin.getMergeFile('web-security.xml').exists()}"> ! <j:import file="${plugin.getMergeFile('web-security.xml').path}" inherit="true"/> ! </j:when> ! <j:otherwise> ! <jxml:comment trim="false">To add filters that you have deployment descriptor info for, add a file to your XDoclet merge directory called web-security.xml that contains the <web-security></web-security> markup for those beans.</jxml:comment> ! </j:otherwise> ! </j:choose> <!-- env entries --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.env-entry')}"> ! <env-entry> ! <x:condelement tag="description" doclettag="${item}" property="description"/> ! <env-entry-name>${item.getNamedParameter('name')}</env-entry-name> ! <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <env-entry-value>${item.getNamedParameter('value')}</env-entry-value> ! </j:if> ! <env-entry-type>${item.getNamedParameter('type')}</env-entry-type> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <env-entry-value>${item.getNamedParameter('value')}</env-entry-value> ! </j:if> ! </env-entry> </j:forEach> ! </j:forEach> <!-- ejb refs --> - <j:forEach var="class" items="${plugin.allWebClasses}"> - <j:forEach var="item" items="${class.getTagsByName('web.ejb-ref')}"> - <ejb-ref> - <x:condelement tag="description" doclettag="${item}" property="description"/> - <ejb-ref-name>${item.getNamedParameter('name')}</ejb-ref-name> - <ejb-ref-type>${item.getNamedParameter('type')}</ejb-ref-type> - <home>${item.getNamedParameter('home')}</home> - <remote>${item.getNamedParameter('remote')}</remote> - <ejb-link>${item.getNamedParameter('link')}</ejb-link> - </ejb-ref> - </j:forEach> - </j:forEach> - - <!-- ejb local refs --> - <j:if test="${plugin.webUtils.isMinimumServletVersion('2.3')}"> <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.ejb-local-ref')}"> ! <ejb-local-ref> ! <x:condelement tag="description" doclettag="${item}" property="description"/> <ejb-ref-name>${item.getNamedParameter('name')}</ejb-ref-name> <ejb-ref-type>${item.getNamedParameter('type')}</ejb-ref-type> ! <local-home>${item.getNamedParameter('home')}</local-home> ! <local>${item.getNamedParameter('local')}</local> ! <x:condelement tag="ejb-link" doclettag="${item}" property="link"/> ! </ejb-local-ref> </j:forEach> </j:forEach> ! </j:if> ! </jxml:replaceNamespace> ! </jxml:element> </j:jelly> --- 32,308 ---- <!-- TODO : check exactly what parameters are mandatory or not, esp. with ejb-reb and such --> ! <x:element URI="${plugin.schemaXmlNs}" name="web-app"> <j:if test="${plugin.needsSchema()}"> ! <x:attribute URI="${plugin.schemaXmlNsXsi}" name="xsi:schemaLocation" trim="true">${plugin.schemaXsiSchemaLocation}</x:attribute> ! <x:attribute name="version" trim="true">${plugin.servletversion}</x:attribute> </j:if> ! <x:replaceNamespace toURI="${plugin.schemaXmlNs}"> <!--TODO : distributable : add this tag conditionaly/--> <!-- filters --> ! <j:forEach var="filter" items="${plugin.filters}"> ! <filter> ! <j:set var="item" value="${filter.getTagByName('web.filter')}"/> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <g:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! </j:if> ! <j:if test="${item.getNamedParameter('icon') != null}"> ! <icon> ! <small-icon>${item.getNamedParameter('icon')}</small-icon> ! </icon> ! </j:if> ! <filter-name>${item.getNamedParameter('name')}</filter-name> ! <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <g:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! </j:if> ! <filter-class>${filter.fullyQualifiedName}</filter-class> ! <j:forEach var="param" items="${filter.getTagsByName('web.filter-init-param')}"> ! <d:invoke script="${init_param}"/> ! </j:forEach> ! </filter> ! </j:forEach> ! <g:merge file="filters.xml"> ! <x:comment> ! To add filters that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called filters.xml ! that contains the <filter></filter> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"/> ! </x:comment> ! </g:merge> ! <!-- filter-mappings --> ! <j:forEach var="filter" items="${plugin.filters}"> ! <j:forEach var="mapping" items="${filter.getTagsByName('web.filter-mapping')}"> ! <filter-mapping> ! <filter-name>${filter.getNamedParameter("web.filter","name")}</filter-name> ! <g:condelement tag="url-pattern" doclettag="${mapping}" property="url-pattern"/> ! <g:condelement tag="servlet-name" doclettag="${mapping}" property="servlet-name"/> ! </filter-mapping> ! </j:forEach> </j:forEach> ! <g:merge file="filter-mappings.xml"> ! <x:comment> ! To add filter mappings that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called filter-mappings.xml ! that contains the <filter-mapping></filter-mapping> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- listeners --> ! <j:forEach var="listener" items="${plugin.webUtils.getListeners(metadata)}"> ! <listener> ! <listener-class>${listener.fullyQualifiedName}</listener-class> ! </listener> ! </j:forEach> ! <g:merge file="listeners.xml"> ! <x:comment> ! To add listener definitions that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called listeners.xml ! that contains the <listener></listener> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- servlets --> ! <j:forEach var="servlet" items="${plugin.servlets}"> ! <j:set var="item" value="${servlet.getTagByName('web.servlet')}"/> ! <servlet> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <g:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! </j:if> ! <servlet-name>${servlet.getNamedParameter("web.servlet","name")}</servlet-name> ! <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <g:condelement tag="display-name" doclettag="${item}" property="display-name"/> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! </j:if> ! <servlet-class>${servlet.fullyQualifiedName}</servlet-class> ! <j:forEach var="param" items="${servlet.getTagsByName('web.servlet-init-param')}"> ! <d:invoke script="${init_param}"/> ! </j:forEach> ! <g:condelement tag="load-on-startup" doclettag="${item}" property="load-on-startup"/> ! <j:if test="${plugin.needsServletRunAs(item)}"> ! <run-as> ! <role-name>${item.getNamedParameter('run-as')}</role-name> ! </run-as> ! </j:if> <!-- security-roles references --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.security-role-ref')}"> ! <security-role-ref> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <role-name>${item.getNamedParameter('role-name')}</role-name> ! <role-link>${item.getNamedParameter('role-link')}</role-link> ! </security-role-ref> ! </j:forEach> </j:forEach> ! </servlet> ! </j:forEach> ! <g:merge file="servlets.xml"> ! <x:comment> ! To add servlets that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called servlets.xml ! that contains the <servlet></servlet> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- servlet-mappings --> ! <j:forEach var="servlet" items="${plugin.servlets}"> ! <j:forEach var="mapping" items="${servlet.getTagsByName('web.servlet-mapping')}"> ! <servlet-mapping> ! <servlet-name>${servlet.getNamedParameter("web.servlet","name")}</servlet-name> ! <g:condelement tag="url-pattern" doclettag="${mapping}" property="url-pattern"/> ! </servlet-mapping> ! </j:forEach> </j:forEach> ! <g:merge file="servlet-mapings.xml"> ! <x:comment> ! To add filters that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called filters.xml ! that contains the <servlet-mapping></servlet-mapping> markup for ! those beans. Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- resource env references --> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.3')}"> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.resource-env-ref')}"> ! <resource-env-ref> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <resource-env-ref-name>${item.getNamedParameter('name')}</resource-env-ref-name> ! <resource-env-ref-type>${item.getNamedParameter('type')}</resource-env-ref-type> ! </resource-env-ref> ! </j:forEach> </j:forEach> ! </j:if> ! <g:merge file="resource-env-ref.xml"> ! <x:comment> ! To add resource env refenrences that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called resource-env-ref.xml ! that contains the <resource-env-ref></resource-env-ref> markup. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- resource references --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.resource-ref')}"> ! <resource-ref> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <res-ref-name>${item.getNamedParameter('name')}</res-ref-name> ! <res-type>${item.getNamedParameter('type')}</res-type> ! <res-auth>${item.getNamedParameter('auth')}</res-auth> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.3')}"> ! <g:condelement tag="res-sharing-scope" doclettag="${item}" property="scope"/> ! </j:if> ! </resource-ref> ! </j:forEach> </j:forEach> ! <g:merge file="resource-ref.xml"> ! <x:comment> ! To add filter mappings that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called filter-mappings.xml ! that contains the <resource-ref></resource-ref> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- security-roles --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.security-role')}"> ! <security-role> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <role-name>${item.getNamedParameter('role-name')}</role-name> ! </security-role> ! </j:forEach> </j:forEach> ! <g:merge file="web-security.xml"> ! <x:comment> ! To add information about security roles that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called web-security.xml ! that contains the <security-role></security-role> markup. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- env entries --> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.env-entry')}"> ! <env-entry> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <env-entry-name>${item.getNamedParameter('name')}</env-entry-name> ! <j:if test="${plugin.webUtils.isMaximumServletVersion('2.3')}"> ! <env-entry-value>${item.getNamedParameter('value')}</env-entry-value> ! </j:if> ! <env-entry-type>${item.getNamedParameter('type')}</env-entry-type> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.4')}"> ! <env-entry-value>${item.getNamedParameter('value')}</env-entry-value> ! </j:if> ! </env-entry> ! </j:forEach> </j:forEach> ! <g:merge file="env-entries.xml"> ! <x:comment> ! To add environment entries that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called env-entries.xml ! that contains the <env-entry></env-entry> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> <!-- ejb refs --> <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.ejb-ref')}"> ! <ejb-ref> ! <g:condelement tag="description" doclettag="${item}" property="description"/> <ejb-ref-name>${item.getNamedParameter('name')}</ejb-ref-name> <ejb-ref-type>${item.getNamedParameter('type')}</ejb-ref-type> ! <home>${item.getNamedParameter('home')}</home> ! <remote>${item.getNamedParameter('remote')}</remote> ! <ejb-link>${item.getNamedParameter('link')}</ejb-link> ! </ejb-ref> </j:forEach> </j:forEach> ! <g:merge file="ejb-refs.xml"> ! <x:comment> ! To add EJB references that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called fejb-refs.xml ! that contains the <ejb-ref></ejb-ref> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> ! ! <!-- ejb local refs --> ! <j:if test="${plugin.webUtils.isMinimumServletVersion('2.3')}"> ! <j:forEach var="class" items="${plugin.allWebClasses}"> ! <j:forEach var="item" items="${class.getTagsByName('web.ejb-local-ref')}"> ! <ejb-local-ref> ! <g:condelement tag="description" doclettag="${item}" property="description"/> ! <ejb-ref-name>${item.getNamedParameter('name')}</ejb-ref-name> ! <ejb-ref-type>${item.getNamedParameter('type')}</ejb-ref-type> ! <local-home>${item.getNamedParameter('home')}</local-home> ! <local>${item.getNamedParameter('local')}</local> ! <g:condelement tag="ejb-link" doclettag="${item}" property="link"/> ! </ejb-local-ref> ! </j:forEach> ! </j:forEach> ! </j:if> ! <g:merge file="ejb-local-refs.xml"> ! <x:comment> ! To add local EJB references that you have deployment descriptor info for, ! add a file to your XDoclet merge directory called filter-mappings.xml ! that contains the <ejb-local-ref></ejb-local-ref> markup for those beans. ! Define root element as <j:jelly xmlns:j="jelly:core"> ! </x:comment> ! </g:merge> ! ! </x:replaceNamespace> ! </x:element> </j:jelly> |