|  | @@ -0,0 +1,109 @@
 | 
	
		
			
				|  |  | +<?xml version="1.0" encoding="UTF-8"?>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!-- 
 | 
	
		
			
				|  |  | + | XSL Sheet used by the web.xml to acegi-security beans converter
 | 
	
		
			
				|  |  | + | to create the new acegified web.xml.
 | 
	
		
			
				|  |  | + | $Id$
 | 
	
		
			
				|  |  | + -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!-- The CAS proxy url (left empty if not to be used) -->
 | 
	
		
			
				|  |  | +<xsl:param name="cas-proxy-url"/>
 | 
	
		
			
				|  |  | +<!-- The acegi context file name - used in the -->
 | 
	
		
			
				|  |  | +<xsl:param name="acegi-security-context-file" select="'applicationContext-acegi-security.xml'"/>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<xsl:output doctype-public="-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 | 
	
		
			
				|  |  | +        doctype-system="http://java.sun.com/J2EE/dtds/web-app_2_3.dtd"
 | 
	
		
			
				|  |  | +        indent="yes"/>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!-- Identity template which we override for specific cases -->
 | 
	
		
			
				|  |  | +<xsl:template match="@*|node()">
 | 
	
		
			
				|  |  | +    <xsl:copy>
 | 
	
		
			
				|  |  | +        <xsl:apply-templates select="@*|node()"/>
 | 
	
		
			
				|  |  | +    </xsl:copy>
 | 
	
		
			
				|  |  | +</xsl:template>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +<xsl:template match="web-app">
 | 
	
		
			
				|  |  | +<web-app>
 | 
	
		
			
				|  |  | +    <xsl:apply-templates select="icon|display-name|description|distributable"/>  
 | 
	
		
			
				|  |  | +    <xsl:apply-templates select="context-param"/>
 | 
	
		
			
				|  |  | +    <xsl:call-template name="insert-spring-context-param"/>
 | 
	
		
			
				|  |  | +    <xsl:if test="$cas-proxy-url">
 | 
	
		
			
				|  |  | +	<!-- Required for CAS ProxyTicketReceptor servlet. This is the
 | 
	
		
			
				|  |  | +	     URL to CAS' "proxy" actuator, where a PGT and TargetService can
 | 
	
		
			
				|  |  | +	     be presented to obtain a new proxy ticket. THIS CAN BE
 | 
	
		
			
				|  |  | +	     REMOVED IF THE APPLICATION DOESN'T NEED TO ACT AS A PROXY -->
 | 
	
		
			
				|  |  | +    <context-param>
 | 
	
		
			
				|  |  | +        <param-name>edu.yale.its.tp.cas.proxyUrl</param-name>
 | 
	
		
			
				|  |  | +        <param-value><xsl:value-of select="$cas-proxy-url"/></param-value>
 | 
	
		
			
				|  |  | +    </context-param>        
 | 
	
		
			
				|  |  | +    </xsl:if>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <filter>
 | 
	
		
			
				|  |  | +        <filter-name>Acegi Filter Chain Proxy</filter-name>
 | 
	
		
			
				|  |  | +        <filter-class>net.sf.acegisecurity.util.FilterToBeanProxy</filter-class>
 | 
	
		
			
				|  |  | +        <init-param>
 | 
	
		
			
				|  |  | +            <param-name>targetClass</param-name>
 | 
	
		
			
				|  |  | +            <param-value>net.sf.acegisecurity.util.FilterChainProxy</param-value>
 | 
	
		
			
				|  |  | +        </init-param>
 | 
	
		
			
				|  |  | +    </filter>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <xsl:apply-templates select="filter"/>   
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    <filter-mapping>
 | 
	
		
			
				|  |  | +      <filter-name>Acegi Filter Chain Proxy</filter-name>
 | 
	
		
			
				|  |  | +      <url-pattern>/*</url-pattern>
 | 
	
		
			
				|  |  | +    </filter-mapping>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    <xsl:apply-templates select="filter-mapping"/>    
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +	<listener>
 | 
	
		
			
				|  |  | +		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 | 
	
		
			
				|  |  | +	</listener>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <xsl:apply-templates select="listener"/>    
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    <!-- Run any remaining non-security elements through the identity template -->
 | 
	
		
			
				|  |  | +    <xsl:apply-templates select="servlet|servlet-mapping|session-config|mime-mapping|welcome-file-list|error-page|taglib|resource-env-ref|resource-ref|env-entry|ejb-ref|ejb-local-ref"/>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +</web-app>
 | 
	
		
			
				|  |  | +</xsl:template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!-- 
 | 
	
		
			
				|  |  | + | Looks for the case where we have an existing Spring context and appends
 | 
	
		
			
				|  |  | + | the acegi file to the list of app. context files. Otherwise just copies the contents.
 | 
	
		
			
				|  |  | + -->
 | 
	
		
			
				|  |  | +<xsl:template match="context-param">
 | 
	
		
			
				|  |  | +    <context-param>
 | 
	
		
			
				|  |  | +    <xsl:choose>
 | 
	
		
			
				|  |  | +        <xsl:when test="./param-name = 'contextConfigLocation'">
 | 
	
		
			
				|  |  | +            <param-name>contextConfigLocation</param-name>
 | 
	
		
			
				|  |  | +            <param-value>
 | 
	
		
			
				|  |  | +                <xsl:value-of select="./param-value"/>
 | 
	
		
			
				|  |  | +                <xsl:value-of select="concat('    /WEB-INF/',$acegi-security-context-file)"/><xsl:text>
      </xsl:text>                
 | 
	
		
			
				|  |  | +            </param-value>
 | 
	
		
			
				|  |  | +        </xsl:when>
 | 
	
		
			
				|  |  | +        <xsl:otherwise>
 | 
	
		
			
				|  |  | +            <xsl:apply-templates />
 | 
	
		
			
				|  |  | +        </xsl:otherwise>
 | 
	
		
			
				|  |  | +    </xsl:choose>
 | 
	
		
			
				|  |  | +    </context-param>
 | 
	
		
			
				|  |  | +</xsl:template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!-- 
 | 
	
		
			
				|  |  | + | Inserts a Spring config location context-param if one doesn't already exist.
 | 
	
		
			
				|  |  | + | If there is one, do nothing as it will be handled by the context-param template above.
 | 
	
		
			
				|  |  | + --> 
 | 
	
		
			
				|  |  | +<xsl:template name="insert-spring-context-param">
 | 
	
		
			
				|  |  | +    <xsl:if test="not(./context-param/param-name[string() = 'contextConfigLocation'])">
 | 
	
		
			
				|  |  | +    <context-param>
 | 
	
		
			
				|  |  | +        <param-name>contextConfigLocation</param-name>
 | 
	
		
			
				|  |  | +        <param-value>
 | 
	
		
			
				|  |  | +            <xsl:value-of select="concat('/WEB-INF/',$acegi-security-context-file)"/><xsl:text>
</xsl:text>
 | 
	
		
			
				|  |  | +        </param-value>
 | 
	
		
			
				|  |  | +    </context-param>            
 | 
	
		
			
				|  |  | +    </xsl:if>
 | 
	
		
			
				|  |  | +</xsl:template>
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +</xsl:stylesheet>
 |