소스 검색

XSL file for converting web.xml to acegified version.

Luke Taylor 20 년 전
부모
커밋
118f6401d8
1개의 변경된 파일109개의 추가작업 그리고 0개의 파일을 삭제
  1. 109 0
      core/src/main/resources/acegi-web.xsl

+ 109 - 0
core/src/main/resources/acegi-web.xsl

@@ -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>&#xA;      </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>&#xA;</xsl:text>
+        </param-value>
+    </context-param>            
+    </xsl:if>
+</xsl:template>
+    
+</xsl:stylesheet>