Make rnc transform part of Gradle build
This commit is contained in:
parent
d06eae9967
commit
036e0505b3
|
@ -49,6 +49,12 @@ dependencies {
|
||||||
'com.springsource.bundlor:com.springsource.bundlor.blint:1.0.0.RELEASE'
|
'com.springsource.bundlor:com.springsource.bundlor.blint:1.0.0.RELEASE'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Trang
|
||||||
|
dependencies {
|
||||||
|
compile 'com.thaiopensource:trang:20091111',
|
||||||
|
'net.sourceforge.saxon:saxon:9.1.0.8'
|
||||||
|
}
|
||||||
|
|
||||||
task ide(type: Copy) {
|
task ide(type: Copy) {
|
||||||
from configurations.runtime
|
from configurations.runtime
|
||||||
into 'ide'
|
into 'ide'
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package trang;
|
||||||
|
|
||||||
|
import com.thaiopensource.relaxng.translate.Driver
|
||||||
|
|
||||||
|
import javax.xml.transform.Transformer
|
||||||
|
import javax.xml.transform.TransformerFactory
|
||||||
|
import javax.xml.transform.stream.StreamSource
|
||||||
|
import javax.xml.transform.stream.StreamResult
|
||||||
|
|
||||||
|
import org.gradle.api.*;
|
||||||
|
import org.gradle.api.tasks.*
|
||||||
|
import org.gradle.api.file.FileCollection
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for converting .rnc files to .xsd files.
|
||||||
|
* @author Rob Winch
|
||||||
|
*/
|
||||||
|
class TrangPlugin implements Plugin<Project> {
|
||||||
|
public void apply(Project project) {
|
||||||
|
Task rncToXsd = project.tasks.add('rncToXsd', RncToXsd.class)
|
||||||
|
rncToXsd.description = 'Converts .rnc to .xsd'
|
||||||
|
rncToXsd.group = 'Build'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts .rnc files to .xsd files using trang and then applies an xsl file to cleanup the results.
|
||||||
|
*/
|
||||||
|
public class RncToXsd extends DefaultTask {
|
||||||
|
@InputDirectory
|
||||||
|
File rncDir
|
||||||
|
|
||||||
|
@InputFile
|
||||||
|
File xslFile
|
||||||
|
|
||||||
|
@OutputDirectory
|
||||||
|
File xsdDir
|
||||||
|
|
||||||
|
@TaskAction
|
||||||
|
public final void transform() {
|
||||||
|
String xslPath = xslFile.absolutePath
|
||||||
|
rncDir.listFiles( { dir, file -> file.endsWith('.rnc')} as FilenameFilter).each { rncFile ->
|
||||||
|
File xsdFile = new File(xsdDir, rncFile.name.replace('.rnc', '.xsd'))
|
||||||
|
String xsdOutputPath = xsdFile.absolutePath
|
||||||
|
new Driver().run([rncFile.absolutePath, xsdOutputPath] as String[]);
|
||||||
|
|
||||||
|
TransformerFactory tFactory = new net.sf.saxon.TransformerFactoryImpl()
|
||||||
|
Transformer transformer =
|
||||||
|
tFactory.newTransformer(new StreamSource(xslPath))
|
||||||
|
File temp = File.createTempFile("gradle-trang-" + xsdFile.name, ".xsd")
|
||||||
|
xsdFile.withInputStream { is ->
|
||||||
|
temp << is
|
||||||
|
}
|
||||||
|
StreamSource xmlSource = new StreamSource(temp)
|
||||||
|
transformer.transform(xmlSource, new StreamResult(xsdFile))
|
||||||
|
temp.delete()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
implementation-class=trang.TrangPlugin
|
|
@ -1,6 +1,7 @@
|
||||||
// Config Module build file
|
// Config Module build file
|
||||||
|
|
||||||
apply plugin: 'groovy'
|
apply plugin: 'groovy'
|
||||||
|
apply plugin: 'trang'
|
||||||
|
|
||||||
compileTestJava.dependsOn(':spring-security-core:compileTestJava')
|
compileTestJava.dependsOn(':spring-security-core:compileTestJava')
|
||||||
|
|
||||||
|
@ -52,3 +53,11 @@ test {
|
||||||
integrationTest {
|
integrationTest {
|
||||||
systemProperties['apacheDSWorkDir'] = "${buildDir}/apacheDSWork"
|
systemProperties['apacheDSWorkDir'] = "${buildDir}/apacheDSWork"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rncToXsd {
|
||||||
|
rncDir = file('src/main/resources/org/springframework/security/config/')
|
||||||
|
xsdDir = rncDir
|
||||||
|
xslFile = new File(rncDir, 'spring-security.xsl')
|
||||||
|
}
|
||||||
|
|
||||||
|
build.dependsOn rncToXsd
|
|
@ -1,11 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
pushd src/main/resources/org/springframework/security/config/
|
|
||||||
|
|
||||||
echo "Converting rnc file to xsd ..."
|
|
||||||
java -jar ~/bin/trang.jar spring-security-3.1.rnc spring-security-3.1.xsd
|
|
||||||
|
|
||||||
echo "Applying XSL transformation to xsd ..."
|
|
||||||
xsltproc --output spring-security-3.1.xsd spring-security.xsl spring-security-3.1.xsd
|
|
||||||
|
|
||||||
popd
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
|
||||||
<xsl:output method="xml" indent="yes"/>
|
<xsl:output method="xml" indent="yes"/>
|
||||||
|
|
||||||
<xsl:variable name="elts-to-inline">
|
<xsl:variable name="elts-to-inline">
|
||||||
<xsl:text>,access-denied-handler,anonymous,session-management,concurrency-control,after-invocation-provider,authentication-provider,ldap-authentication-provider,user,port-mapping,openid-login,expression-handler,form-login,http-basic,intercept-url,logout,password-encoder,port-mappings,port-mapper,password-compare,protect,protect-pointcut,pre-post-annotation-handling,pre-invocation-advice,post-invocation-advice,invocation-attribute-factory,remember-me,salt-source,x509,</xsl:text>
|
<xsl:text>,access-denied-handler,anonymous,session-management,concurrency-control,after-invocation-provider,authentication-provider,ldap-authentication-provider,user,port-mapping,openid-login,expression-handler,form-login,http-basic,intercept-url,logout,password-encoder,port-mappings,port-mapper,password-compare,protect,protect-pointcut,pre-post-annotation-handling,pre-invocation-advice,post-invocation-advice,invocation-attribute-factory,remember-me,salt-source,x509,</xsl:text>
|
||||||
|
@ -42,4 +42,10 @@
|
||||||
</xsl:copy>
|
</xsl:copy>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="xs:documentation">
|
||||||
|
<xsl:element name="xs:documentation">
|
||||||
|
<xsl:copy-of select="@*" />
|
||||||
|
<xsl:value-of select="replace(concat(normalize-space(text()),' '), '(.{0,90}) ','$1
 ')"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:template>
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
|
Loading…
Reference in New Issue