diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..c9273b7
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,27 @@
+# Definition of a custom attribute that reverse binary attribute
+[attr]textfile text diff merge
+
+# Declare files as binary by default preventing potential problematic end-of-line conversion
+* binary
+
+# Declare files that will always have native line endings on checkout.
+*.checkstyle textfile
+*.css textfile
+*.gitattributes textfile
+*.gitignore textfile
+*.gradle textfile
+*.java textfile
+*.js textfile
+*.json textfile
+*.MF textfile
+*.md textfile
+*.properties textfile
+*.txt textfile
+
+# Declare files that will always have LF line endings on checkout.
+*.sh textfile eol=lf
+gradlew textfile eol=lf
+
+# Declare files that will always have CRLF line endings on checkout.
+*.bat textfile eol=crlf
+*.cmd textfile eol=crlf
diff --git a/build.gradle b/build.gradle
index 4ec0dc3..fb677bc 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,158 +1,158 @@
-group = "com.nuecho"
-version = "1.0.0"
-
-subprojects {
- apply plugin: 'eclipse'
- apply plugin: 'ivy-publish' // ivy publishing is for fallback if maven doesn't work.
- apply plugin: 'maven'
- apply plugin: 'signing'
-
- group = rootProject.group
- version = rootProject.version
-
- repositories { mavenCentral() }
-
- signing {
- required { gradle.taskGraph.hasTask("uploadArchives") } // Only sign during release.
- sign configurations.archives
- }
-
- uploadArchives {
- repositories {
- mavenDeployer(name: 'mavenCentral') {
- repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
- // Add credentials only if they are present in the project.
- // Avoid build failure if not trying to release and user doesn't have proper credentials.
- if(project.hasProperty('sonatypeUsername') && project.hasProperty('sonatypePassword')){
- authentication(userName: sonatypeUsername, password: sonatypePassword)
- }
- }
-
- beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
- // All these are required for maven central release.
- // See https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-6.CentralSyncRequirement
- pom.project {
- name 'rivr'
- description 'Rivr is a lightweight open-source dialogue engine enabling flexible VoiceXML web application development for the agile Java developer and enterprise.'
- url 'http://rivr.nuecho.com/'
-
- scm {
- url 'scm:git@github.com:nuecho/rivr.git'
- connection 'scm:git@github.com:nuecho/rivr.git'
- developerConnection 'scm:git@github.com:nuecho/rivr.git'
- }
-
- licenses {
- license {
- name 'The Apache Software License, Version 2.0'
- url 'http://www.apache.org/licenses/LICENSE-2.0.html'
- distribution 'repo'
- }
- }
-
- developers {
- developer {
- id 'nuecho'
- name 'Nu Echo inc.'
- email 'rivr-support@nuecho.com'
- }
- }
- }
- }
- }
- }
-}
-
-// Configure the java projects release.
-
-def javaProjects = [project(':rivr-core'), project(':rivr-voicexml')]
-
-configure(javaProjects) {
- apply plugin: 'java'
- apply plugin: 'checkstyle'
-
- dependencies { checkstyle 'com.puppycrawl.tools:checkstyle:5.5' }
-
- checkstyle.configFile = rootProject.file('checkstyle/checkstyle.xml')
- sourceCompatibility = '1.6'
-
- // Fix for Unable to get class information
- checkstyleMain { classpath += configurations.compile }
- checkstyleTest { classpath += configurations.compile }
-
- task sourcesJar(type: Jar) {
- from sourceSets.main.java
- classifier 'sources'
- }
-
- // Required for Maven central
- task javadocJar(type: Jar, dependsOn: javadoc) {
- classifier = 'javadoc'
- from javadoc.destinationDir
- }
-
- eclipse {
- project {
- natures 'net.sf.eclipsecs.core.CheckstyleNature'
- buildCommand 'net.sf.eclipsecs.core.CheckstyleBuilder'
- }
- classpath {
- defaultOutputDir = file("${project.projectDir}/build/classes")
- // This should probably be submitted as a patch to the eclipse plugin.
- containers.clear()
- containers.add("org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6")
- }
- }
-
-
- // Maven central release use the "old" uploadArchives mechanism since maven-publish doesn't support signing yet.
- artifacts {
- archives javadocJar
- archives sourcesJar
- }
-
- artifacts { archives jar }
-
- uploadArchives{
- repositories {
- mavenCentral{
- pom.project{ packaging 'jar' }
- }
- }
- }
-}
-
-task globalJavadoc(type: Javadoc) {
- source javaProjects.collect {project -> project.sourceSets.main.allJava }
- destinationDir = new File(buildDir, 'javadoc')
- classpath = files(javaProjects.collect {project -> project.sourceSets.main.compileClasspath})
-
- // To use Java 7 Javadoc:
- // gradlew -DjavadocExecutable=/usr/java/jdk7/bin/javadoc globalJavadoc
- if(System.getProperty("javadocExecutable") != null) {
- executable = System.getProperty("javadocExecutable")
- }
-
- configure(options) {
- splitIndex true
- linkSource true
- windowTitle "Rivr API documentation"
- docTitle "Rivr documentation ($project.version)"
- bottom 'Copyright © 2013 Nu Echo Inc..'
- use = true
- noTimestamp = true
- group("Rivr Core Packages", "com.nuecho.rivr.core*")
- group("Rivr VoiceXML Packages", "com.nuecho.rivr.voicexml*")
- footer "To report errors, inconsistencies and omissions in the Rivr API documentation, please open an issue."
- links "http://download.oracle.com/javase/6/docs/api/"
- links "http://download.oracle.com/javaee/6/api/"
- links "http://slf4j.org/api/"
- links "https://json-processing-spec.java.net/nonav/releases/1.0/fcs/javadocs/"
- setOverview("${projectDir}/doc/javadoc-extra/overview.html")
- stylesheetFile = new File( projectDir, 'doc/javadoc-extra/rivr-javadoc.css' )
- docTitle "
API documentation of Rivr $project.version"
- }
-}
-
+group = "com.nuecho"
+version = "1.0.0"
+
+subprojects {
+ apply plugin: 'eclipse'
+ apply plugin: 'ivy-publish' // ivy publishing is for fallback if maven doesn't work.
+ apply plugin: 'maven'
+ apply plugin: 'signing'
+
+ group = rootProject.group
+ version = rootProject.version
+
+ repositories { mavenCentral() }
+
+ signing {
+ required { gradle.taskGraph.hasTask("uploadArchives") } // Only sign during release.
+ sign configurations.archives
+ }
+
+ uploadArchives {
+ repositories {
+ mavenDeployer(name: 'mavenCentral') {
+ repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
+ // Add credentials only if they are present in the project.
+ // Avoid build failure if not trying to release and user doesn't have proper credentials.
+ if(project.hasProperty('sonatypeUsername') && project.hasProperty('sonatypePassword')){
+ authentication(userName: sonatypeUsername, password: sonatypePassword)
+ }
+ }
+
+ beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+
+ // All these are required for maven central release.
+ // See https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-6.CentralSyncRequirement
+ pom.project {
+ name 'rivr'
+ description 'Rivr is a lightweight open-source dialogue engine enabling flexible VoiceXML web application development for the agile Java developer and enterprise.'
+ url 'http://rivr.nuecho.com/'
+
+ scm {
+ url 'scm:git@github.com:nuecho/rivr.git'
+ connection 'scm:git@github.com:nuecho/rivr.git'
+ developerConnection 'scm:git@github.com:nuecho/rivr.git'
+ }
+
+ licenses {
+ license {
+ name 'The Apache Software License, Version 2.0'
+ url 'http://www.apache.org/licenses/LICENSE-2.0.html'
+ distribution 'repo'
+ }
+ }
+
+ developers {
+ developer {
+ id 'nuecho'
+ name 'Nu Echo inc.'
+ email 'rivr-support@nuecho.com'
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// Configure the java projects release.
+
+def javaProjects = [project(':rivr-core'), project(':rivr-voicexml')]
+
+configure(javaProjects) {
+ apply plugin: 'java'
+ apply plugin: 'checkstyle'
+
+ dependencies { checkstyle 'com.puppycrawl.tools:checkstyle:5.5' }
+
+ checkstyle.configFile = rootProject.file('checkstyle/checkstyle.xml')
+ sourceCompatibility = '1.6'
+
+ // Fix for Unable to get class information
+ checkstyleMain { classpath += configurations.compile }
+ checkstyleTest { classpath += configurations.compile }
+
+ task sourcesJar(type: Jar) {
+ from sourceSets.main.java
+ classifier 'sources'
+ }
+
+ // Required for Maven central
+ task javadocJar(type: Jar, dependsOn: javadoc) {
+ classifier = 'javadoc'
+ from javadoc.destinationDir
+ }
+
+ eclipse {
+ project {
+ natures 'net.sf.eclipsecs.core.CheckstyleNature'
+ buildCommand 'net.sf.eclipsecs.core.CheckstyleBuilder'
+ }
+ classpath {
+ defaultOutputDir = file("${project.projectDir}/build/classes")
+ // This should probably be submitted as a patch to the eclipse plugin.
+ containers.clear()
+ containers.add("org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6")
+ }
+ }
+
+
+ // Maven central release use the "old" uploadArchives mechanism since maven-publish doesn't support signing yet.
+ artifacts {
+ archives javadocJar
+ archives sourcesJar
+ }
+
+ artifacts { archives jar }
+
+ uploadArchives{
+ repositories {
+ mavenCentral{
+ pom.project{ packaging 'jar' }
+ }
+ }
+ }
+}
+
+task globalJavadoc(type: Javadoc) {
+ source javaProjects.collect {project -> project.sourceSets.main.allJava }
+ destinationDir = new File(buildDir, 'javadoc')
+ classpath = files(javaProjects.collect {project -> project.sourceSets.main.compileClasspath})
+
+ // To use Java 7 Javadoc:
+ // gradlew -DjavadocExecutable=/usr/java/jdk7/bin/javadoc globalJavadoc
+ if(System.getProperty("javadocExecutable") != null) {
+ executable = System.getProperty("javadocExecutable")
+ }
+
+ configure(options) {
+ splitIndex true
+ linkSource true
+ windowTitle "Rivr API documentation"
+ docTitle "Rivr documentation ($project.version)"
+ bottom 'Copyright © 2013 Nu Echo Inc..'
+ use = true
+ noTimestamp = true
+ group("Rivr Core Packages", "com.nuecho.rivr.core*")
+ group("Rivr VoiceXML Packages", "com.nuecho.rivr.voicexml*")
+ footer "To report errors, inconsistencies and omissions in the Rivr API documentation, please open an issue."
+ links "http://download.oracle.com/javase/6/docs/api/"
+ links "http://download.oracle.com/javaee/6/api/"
+ links "http://slf4j.org/api/"
+ links "https://json-processing-spec.java.net/nonav/releases/1.0/fcs/javadocs/"
+ setOverview("${projectDir}/doc/javadoc-extra/overview.html")
+ stylesheetFile = new File( projectDir, 'doc/javadoc-extra/rivr-javadoc.css' )
+ docTitle "
API documentation of Rivr $project.version"
+ }
+}
+
task wrapper(type: Wrapper) { gradleVersion = '1.9' }
\ No newline at end of file
diff --git a/gradlew.bat b/gradlew.bat
index aec9973..8a0b282 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,90 +1,90 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega