You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by cm...@apache.org on 2016/01/04 20:58:09 UTC

svn commit: r1722954 [1/2] - in /openoffice/devtools/lazybones-templates: ./ branches/ tags/ trunk/ trunk/.gradle/ trunk/.gradle/2.7/ trunk/.gradle/2.7/taskArtifacts/ trunk/gradle/ trunk/gradle/wrapper/ trunk/templates/ trunk/templates/aoo-client/ trun...

Author: cmarcum
Date: Mon Jan  4 19:58:09 2016
New Revision: 1722954

URL: http://svn.apache.org/viewvc?rev=1722954&view=rev
Log:
#i126770# initial import of lazybones-templates project

Added:
    openoffice/devtools/lazybones-templates/
    openoffice/devtools/lazybones-templates/branches/
    openoffice/devtools/lazybones-templates/tags/
    openoffice/devtools/lazybones-templates/trunk/
    openoffice/devtools/lazybones-templates/trunk/.gradle/
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties   (with props)
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties.lock   (with props)
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileHashes.bin   (with props)
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileSnapshots.bin   (with props)
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/outputFileStates.bin   (with props)
    openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/taskArtifacts.bin   (with props)
    openoffice/devtools/lazybones-templates/trunk/README.md
    openoffice/devtools/lazybones-templates/trunk/build.gradle
    openoffice/devtools/lazybones-templates/trunk/gradle/
    openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/
    openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.jar   (with props)
    openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.properties   (with props)
    openoffice/devtools/lazybones-templates/trunk/gradlew   (with props)
    openoffice/devtools/lazybones-templates/trunk/gradlew.bat   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/README.md
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/VERSION
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/build.gradle
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/gradle.properties   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/lazybones.groovy
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/GroovyUnoClient.groovy
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/guno/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/guno/SpreadsheetDocHelper.groovy
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/InstallationFinder.java   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/Loader.java   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/WinRegKey.java   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/WinRegKeyException.java   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/resources/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/resources/META-INF/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/resources/META-INF/LICENSE   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/resources/META-INF/NOTICE   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/resources/win/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/resources/win/unowinreg.dll   (with props)
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/test/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/test/groovy/
    openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/test/groovy/.retain

Added: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties (added)
+++ openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties Mon Jan  4 19:58:09 2016
@@ -0,0 +1 @@
+#Sun Jan 03 08:13:48 EST 2016

Propchange: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties.lock
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties.lock?rev=1722954&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/cache.properties.lock
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileHashes.bin
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileHashes.bin?rev=1722954&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileHashes.bin
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileSnapshots.bin
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileSnapshots.bin?rev=1722954&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/fileSnapshots.bin
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/outputFileStates.bin
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/outputFileStates.bin?rev=1722954&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/outputFileStates.bin
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/taskArtifacts.bin
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/taskArtifacts.bin?rev=1722954&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openoffice/devtools/lazybones-templates/trunk/.gradle/2.7/taskArtifacts/taskArtifacts.bin
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: openoffice/devtools/lazybones-templates/trunk/README.md
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/README.md?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/README.md (added)
+++ openoffice/devtools/lazybones-templates/trunk/README.md Mon Jan  4 19:58:09 2016
@@ -0,0 +1,24 @@
+Lazybones template project
+--------------------------
+
+You have just created a simple project for managing your own Lazybones project
+templates. You get a build file (`build.gradle`) and a directory for putting
+your templates in (`templates`).
+
+To get started, simply create new directories under the `templates` directory
+and put the source of the different project templates into them. You can then
+package and install the templates locally with the command:
+
+    ./gradlew installAllTemplates
+
+You'll then be able to use Lazybones to create new projects from these templates.
+If you then want to distribute them, you will need to set up a Bintray account,
+populate the `repositoryUrl`, `repositoryUsername` and `repositoryApiKey` settings
+in `build.gradle`, add new Bintray packages in the repository via the Bintray
+UI, and finally publish the templates with
+
+    ./gradlew publishAllTemplates
+
+You can find out more about creating templates on [the GitHub wiki][1].
+
+[1]: https://github.com/pledbrook/lazybones/wiki/Template-developers-guide

Added: openoffice/devtools/lazybones-templates/trunk/build.gradle
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/build.gradle?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/build.gradle (added)
+++ openoffice/devtools/lazybones-templates/trunk/build.gradle Mon Jan  4 19:58:09 2016
@@ -0,0 +1,29 @@
+buildscript {
+    repositories {
+        maven {
+            url "http://dl.bintray.com/pledbrook/plugins"
+        }
+    }
+
+    dependencies {
+        classpath "uk.co.cacoethes:lazybones-gradle:1.2.1"
+    }
+}
+
+apply plugin: "uk.co.cacoethes.lazybones-templates"
+
+lazybones {
+    repositoryName = "<account>/<templates-repo>"
+
+    // It's best to pull this information from a gradle.properties file in the
+    // root directory. For example, gradle.properties could contain:
+    //
+    //     bintrayUsername=dilbert
+    //     bintrayApiKey=kdshfiu2htr082hg0h2ghkhsdafkh
+    //
+    // You could then set the following properties to `project.bintrayUsername`
+    // and `project.bintrayApiKey` respectively.
+    repositoryUsername = "your_bintray_username"
+    repositoryApiKey = "your_bintray_api_key"
+}
+

Added: openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.jar
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.jar?rev=1722954&view=auto
==============================================================================
Binary file - no diff available.

Propchange: openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.jar
------------------------------------------------------------------------------
    svn:mime-type = application/zip

Added: openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.properties
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.properties?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.properties (added)
+++ openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.properties Mon Jan  4 19:58:09 2016
@@ -0,0 +1,6 @@
+#Sat Aug 23 08:12:12 BST 2014
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip

Propchange: openoffice/devtools/lazybones-templates/trunk/gradle/wrapper/gradle-wrapper.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openoffice/devtools/lazybones-templates/trunk/gradlew
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/gradlew?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/gradlew (added)
+++ openoffice/devtools/lazybones-templates/trunk/gradlew Mon Jan  4 19:58:09 2016
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

Propchange: openoffice/devtools/lazybones-templates/trunk/gradlew
------------------------------------------------------------------------------
    svn:executable = 

Added: openoffice/devtools/lazybones-templates/trunk/gradlew.bat
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/gradlew.bat?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/gradlew.bat (added)
+++ openoffice/devtools/lazybones-templates/trunk/gradlew.bat Mon Jan  4 19:58:09 2016
@@ -0,0 +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

Propchange: openoffice/devtools/lazybones-templates/trunk/gradlew.bat
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/README.md
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/README.md?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/README.md (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/README.md Mon Jan  4 19:58:09 2016
@@ -0,0 +1,74 @@
+Apache OpenOffice Client Application project template
+-----------------------------------------------------
+
+You have just created a basic Apache OpenOffice Client application. 
+There is a standard project structure for source code and tests.
+Simply add your source files to `src/main/<groovy or java>`, your test cases 
+to `src/test/<groovy or java>` and then you will be able to build your project 
+with `gradle jar` and run with `gradle runJar`.
+
+In this project you get:
+
+* A Gradle build file
+* A standard project structure:
+
+   <proj>
+      |
+      +- src
+           |
+           +- main
+           |     |
+           |     +- groovy
+           |     |     |
+           |     |     +- <your-package>
+           |     |     |    |
+           |     |     |    +- <your-class>.groovy
+           |     |     |          
+           |     |     |          
+           |     |     |
+           |     |     +- org
+           |     |          |
+           |     |          +- openoffice
+           |     |                |
+           |     |                +- guno
+           |     |                      |
+           |     |                      +- SpreadsheetDocHelper.groovy
+           |     |      
+           |     +- java
+           |     |     |
+           |     |     +- com
+           |     |          |
+           |     |          +- sun
+           |     |               |
+           |     |               +- lib
+           |     |                    |
+           |     |                    +- loader
+           |     |                          |
+           |     |                          +- InstallationFinder.java
+           |     |                          |
+           |     |                          +- Loader.java
+           |     |                          |
+           |     |                          +- WinRegKey.java
+           |     |                          |
+           |     |                          +- WinRegKeyException.java
+           |     |
+           |     +- resources
+           |           |                           
+           |           +- META-INF
+           |           |     |
+           |           |     +- LICENSE
+           |           |     |
+           |           |     +- NOTICE
+           |           |
+           |           +- win
+           |                |
+           |                +- unowinreg.dll
+           |
+           +- test
+                |
+                +- groovy
+ 
+You need to edit the build.gradle file for the location of the GroovyUnoExtension 
+jar file and also add any additional dependencies if needed.
+
+

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/VERSION
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/VERSION?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/VERSION (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/VERSION Mon Jan  4 19:58:09 2016
@@ -0,0 +1,2 @@
+0.1.0
+

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/build.gradle
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/build.gradle?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/build.gradle (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/build.gradle Mon Jan  4 19:58:09 2016
@@ -0,0 +1,60 @@
+apply plugin: "groovy"
+apply plugin: "application"
+
+group "${project_group}"
+version "${project_version}"
+
+repositories {
+    mavenCentral()
+
+}
+
+
+
+dependencies {
+    compile 'org.codehaus.groovy:groovy-all:2.4.5'
+    compile "org.openoffice:juh:4.1.2"
+    compile "org.openoffice:ridl:4.1.2"
+    compile "org.openoffice:unoil:4.1.2"
+    compile "org.openoffice:jurt:4.1.2"
+    // use local extension jar until available from maven repo
+    compile files('../GroovyUnoExtension/build/libs/GroovyUnoExtension-0.0.1.jar')
+    testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
+
+}
+
+
+mainClassName = "com.sun.star.lib.loader.Loader"
+
+
+task copyLibs(type: Copy) {
+    into buildDir.toString() + "/libs/lib"
+    from findJar('groovy-all')
+    // additional froms
+    from findJar('GroovyUnoExtension')
+} 
+
+// returns a file list from configurations.runtime that start with prefix
+def findJar(prefix) { 
+    println "findJar filter = " + prefix
+    configurations.runtime.filter { it.name.startsWith(prefix) } 
+}
+
+jar {
+    manifest {
+        attributes('Main-Class': 'com.sun.star.lib.loader.Loader')
+        attributes('Class-Path': 'lib/groovy-all-2.4.5.jar lib/GroovyUnoExtension-0.0.1.jar') // use spaces between additional jars. use one string.
+        attributes('Application-Class': '${project_package}.${project_class_name}', 'com/sun/star/lib/loader/Loader.class')
+    }
+    
+    dependsOn 'copyLibs'
+}
+
+// executes 'java -jar 
+task runJar(dependsOn:jar) << {
+    javaexec { main="-jar"; args jar.archivePath } 
+}
+
+// make sure we always clean first
+compileJava.dependsOn clean
+

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/gradle.properties
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/gradle.properties?rev=1722954&view=auto
==============================================================================
    (empty)

Propchange: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/gradle.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/lazybones.groovy
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/lazybones.groovy?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/lazybones.groovy (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/lazybones.groovy Mon Jan  4 19:58:09 2016
@@ -0,0 +1,56 @@
+import uk.co.cacoethes.util.NameType
+import org.apache.commons.io.FileUtils
+
+Map props = [:]
+if (projectDir.name =~ /\-/) {
+    props.project_class_name = transformText(projectDir.name, from: NameType.HYPHENATED, to: NameType.CAMEL_CASE)
+} else {
+    props.project_class_name = transformText(projectDir.name, from: NameType.PROPERTY, to: NameType.CAMEL_CASE)
+}
+props.project_name = transformText(props.project_class_name, from: NameType.CAMEL_CASE, to: NameType.HYPHENATED)
+
+props.project_group = ask("Define value for 'group' [org.example]: ", "org.example", "group")
+props.project_name = ask("Define value for 'artifactId' [" + props.project_name + "]: ", props.project_name , "artifactId")
+props.project_version = ask("Define value for 'version' [0.1.0]: ", "0.1.0", "version")
+props.project_package = ask("Define value for 'package' [" + props.project_group + "]: ", props.project_group, "package")
+props.project_class_name = ask("Define value for 'className' [" + props.project_class_name + "]: ", props.project_class_name, "className").capitalize()
+props.project_property_name = transformText(props.project_class_name, from: NameType.CAMEL_CASE, to: NameType.PROPERTY)
+props.project_capitalized_name = props.project_property_name.capitalize()
+String packagePath = props.project_package.replace('.' as char, '/' as char)
+
+// props.buildDir = '$buildDir'
+// props.prefix = '$prefix'
+// props.it = 'it'
+
+processTemplates 'build.gradle', props
+processTemplates 'settings.gradle', props
+processTemplates 'gradle.properties', props
+processTemplates 'src/main/groovy/*.groovy', props
+processTemplates 'src/test/groovy/*.groovy', props
+
+File mainSources = new File(projectDir, 'src/main/groovy')
+File testSources = new File(projectDir, 'src/test/groovy')
+
+File mainSourcesPath = new File(mainSources, packagePath)
+mainSourcesPath.mkdirs()
+File testSourcesPath = new File(testSources, packagePath)
+testSourcesPath.mkdirs()
+
+def renameFile = { File from, String path ->
+    if (from.file) {
+        File to = new File(path)
+        to.parentFile.mkdirs()
+        FileUtils.moveFile(from, to)
+    }
+}
+
+mainSources.eachFile { File file ->
+    renameFile(file, mainSourcesPath.absolutePath + '/' + file.name)
+}
+testSources.eachFile { File file ->
+    renameFile(file, testSourcesPath.absolutePath + '/' + props.project_capitalized_name + file.name)
+}
+
+renameFile(new File(mainSourcesPath, 'GroovyUnoClient.groovy'), mainSourcesPath.absolutePath + '/' + props.project_class_name + ".groovy")
+
+

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/GroovyUnoClient.groovy
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/GroovyUnoClient.groovy?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/GroovyUnoClient.groovy (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/GroovyUnoClient.groovy Mon Jan  4 19:58:09 2016
@@ -0,0 +1,149 @@
+/*
+ * ************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ ************************************************************
+ */
+/*
+ * ${project_class_name}.groovy
+ *
+ * Created on 2015.12.05 - 08:01:43
+ *
+ */
+package ${project_package}
+
+import com.sun.star.beans.PropertyValue as PV
+import com.sun.star.beans.XPropertySet
+import com.sun.star.uno.XComponentContext
+import com.sun.star.comp.helper.Bootstrap
+import com.sun.star.container.XEnumeration
+import com.sun.star.container.XEnumerationAccess
+import com.sun.star.frame.XComponentLoader
+import com.sun.star.frame.XController
+import com.sun.star.frame.XModel
+import com.sun.star.lang.XComponent
+import com.sun.star.lang.XMultiComponentFactory
+import com.sun.star.sheet.CellFlags
+import com.sun.star.sheet.XCellAddressable
+import com.sun.star.sheet.XCellRangesQuery
+import com.sun.star.sheet.XSheetCellRangeContainer
+import com.sun.star.sheet.XSheetCellRanges
+import com.sun.star.sheet.XSpreadsheet
+import com.sun.star.sheet.XSpreadsheetDocument
+import com.sun.star.sheet.XSpreadsheetView
+import com.sun.star.sheet.XSpreadsheets
+import com.sun.star.table.XCell
+import com.sun.star.uno.UnoRuntime
+
+import org.openoffice.guno.SpreadsheetDocHelper
+
+/**
+ *
+ * @author Carl Marcum
+ */
+class ${project_class_name} {
+
+    /**
+     * Creates a new instance of GroovyUnoClient
+     */
+    public ${project_class_name}() {
+    }
+
+    /**
+     * @param args the command line arguments
+     */
+    static void main(String[] args) {
+        try {
+
+            SpreadsheetDocHelper sdHelper = new SpreadsheetDocHelper()
+
+            XSpreadsheetDocument xSpreadsheetDocument = sdHelper.getDocument()
+
+            XSpreadsheets xSpreadsheets = xSpreadsheetDocument.getSheets()
+            xSpreadsheets.insertNewByName("MySheet", (short)0)
+            
+            com.sun.star.uno.Type elemType = xSpreadsheets.getElementType()
+            println(elemType.getTypeName())
+
+            XSpreadsheet xSpreadsheet = xSpreadsheetDocument.getSheetByName("MySheet")
+ 
+            XCell xCell = xSpreadsheet.getCellByPosition(0, 0)
+            xCell.value = 21
+            xCell = xSpreadsheet.getCellByPosition(0, 1)
+            xCell.value = 21
+            xCell = xSpreadsheet.getCellByPosition(0, 2)
+            
+            // looks like property access but calls setFormula
+            xCell.formula = "=sum(A1:A2)"
+
+            // looks like property access but calls setCellStyle
+            xCell.cellStyle = "Result"
+            
+            // example for use of enum types
+            xCell.vertJustify = com.sun.star.table.CellVertJustify.TOP
+            // xCell.vertJustify = 1 // also works
+
+            XSpreadsheetView xSpreadsheetView = sdHelper.getSpreadsheetView()
+
+            xSpreadsheetView.setActiveSheet(xSpreadsheet)
+
+            // *********************************************************
+            // example for getting cell ranges
+            XSheetCellRanges formulaCells = xSpreadsheet.getCellRanges(CellFlags.FORMULA)
+            
+            // example for using a closure to iterate through list of cells
+            XCell[] cellList = formulaCells.cellList
+            cellList.each() {println("Formula cell in column " + it.address.Column  + 
+                ", row " + it.address.Row + " contains " + it.formula)
+            }
+
+            // Create a new cell range container
+            XSheetCellRangeContainer xRangeCont = xSpreadsheetDocument.rangeContainer
+         
+            // query addresses of all cells containing anything
+            XSheetCellRanges xCellRanges = xSpreadsheet.getCellRanges(1023)
+            
+            println("Cells containing anything: " + xCellRanges.rangeAddressesAsString)
+            
+            // add xCellRanges to xRangeCont
+            xRangeCont.addRangeAddresses(xCellRanges.rangeAddresses, false)
+
+            // Get the list of cells from a range container and 
+            // use a closure to iterate through the list
+            XCell[] cellList2 = xRangeCont.cellList
+            print("All filled cells: ")
+            cellList2.each() {println("Formula cell in column " + it.address.Column  + 
+                ", row " + it.address.Row + " contains " + it.formula)
+            }
+
+
+        }
+        catch (Exception e){
+            e.printStackTrace()
+        }
+        finally {
+            System.exit( 0 )
+        }
+    }
+    
+
+    
+
+
+}

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/guno/SpreadsheetDocHelper.groovy
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/guno/SpreadsheetDocHelper.groovy?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/guno/SpreadsheetDocHelper.groovy (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/groovy/org/openoffice/guno/SpreadsheetDocHelper.groovy Mon Jan  4 19:58:09 2016
@@ -0,0 +1,436 @@
+/*
+ * *************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+// based on SpreadsheetDocHelper.java provide with SDK examples
+// added getModel
+
+package org.openoffice.guno
+
+import com.sun.star.comp.servicemanager.ServiceManager
+import com.sun.star.container.XIndexAccess
+import com.sun.star.container.XNamed
+import com.sun.star.beans.XPropertySet
+import com.sun.star.bridge.XUnoUrlResolver
+import com.sun.star.uno.XNamingService
+import com.sun.star.frame.XDesktop
+import com.sun.star.frame.XModel
+import com.sun.star.frame.XComponentLoader
+import com.sun.star.frame.XController
+import com.sun.star.lang.XMultiServiceFactory
+import com.sun.star.sheet.XCellAddressable
+import com.sun.star.sheet.XCellRangeAddressable
+import com.sun.star.sheet.XSheetCellRange
+import com.sun.star.sheet.XSpreadsheet
+import com.sun.star.sheet.XSpreadsheetDocument
+import com.sun.star.sheet.XSpreadsheetView
+import com.sun.star.sheet.XSpreadsheets
+import com.sun.star.table.BorderLine
+import com.sun.star.table.CellAddress
+import com.sun.star.table.CellRangeAddress
+import com.sun.star.table.TableBorder
+import com.sun.star.table.XCell
+import com.sun.star.table.XCellRange
+import com.sun.star.lang.XComponent
+import com.sun.star.lang.XMultiComponentFactory
+
+import com.sun.star.uno.UnoRuntime
+import com.sun.star.uno.XComponentContext
+import com.sun.star.uno.RuntimeException
+
+
+/** This is a helper class for the spreadsheet and table samples.
+It connects to a running office and creates a spreadsheet document.
+Additionally it contains various helper functions.
+ */
+class SpreadsheetDocHelper {
+
+    private final String  msDataSheetName  = "Data"
+
+    private XComponentContext  mxRemoteContext
+    private XMultiComponentFactory  mxRemoteServiceManager
+    //    private com.sun.star.lang.XMultiServiceFactory  mxMSFactory
+    private XSpreadsheetDocument mxDocument
+    
+    //added
+    XComponent xComponent
+
+
+
+    SpreadsheetDocHelper( String[] args ) {
+        
+        // Connect to a running office and get the service manager
+        connect()
+
+        // Create a new spreadsheet document
+        try
+        {
+            mxDocument = initDocument()
+        }
+        catch (Exception ex)
+        {
+            System.err.println( "Couldn't create document: " + ex )
+            System.err.println( "Error: Couldn't create Document\nException Message = "
+                + ex.getMessage())
+            ex.printStackTrace()
+            System.exit( 1 )
+        }
+    }
+
+    // __  helper methods  ____________________________________________
+
+    /** Returns the service manager of the connected office.
+    @return  XMultiComponentFactory interface of the service manager. */
+    XMultiComponentFactory getServiceManager() {
+        return mxRemoteServiceManager
+    }
+
+    /** Returns the component context of the connected office
+    @return  XComponentContext interface of the context. */
+    XComponentContext getContext() {
+        return mxRemoteContext
+    }
+
+    /** Returns the whole spreadsheet document.
+    @return  XSpreadsheetDocument interface of the document. */
+    XSpreadsheetDocument getDocument() {
+        return mxDocument
+    }
+    
+    // added
+    // loads a component specified by an URL into the specified new or existing frame. 
+    /** Returns the component.
+    @return  XComponent interface of the document. */
+    XComponent getComponent() {
+        
+        return xComponent
+    }
+
+    /** Returns the spreadsheet with the specified index (0-based).
+    @param nIndex  The index of the sheet.
+    @return  XSpreadsheet interface of the sheet. */
+    XSpreadsheet getSpreadsheet( int nIndex ) {
+        // Collection of sheets
+        XSpreadsheets xSheets = mxDocument.getSheets()
+        XSpreadsheet xSheet = null
+        try {
+            XIndexAccess xSheetsIA = UnoRuntime.queryInterface(
+                XIndexAccess.class, xSheets )
+            xSheet = UnoRuntime.queryInterface(
+                XSpreadsheet.class, xSheetsIA.getByIndex(nIndex))
+        } catch (Exception ex) {
+            System.err.println( "Error: caught exception in getSpreadsheet()!\nException Message = "
+                + ex.getMessage())
+            ex.printStackTrace()
+        }
+        return xSheet
+    }
+
+    /** Inserts a new empty spreadsheet with the specified name.
+    @param aName  The name of the new sheet.
+    @param nIndex  The insertion index.
+    @return  The XSpreadsheet interface of the new sheet. */
+    XSpreadsheet insertSpreadsheet(
+        String aName, short nIndex ) {
+        // Collection of sheets
+        XSpreadsheets xSheets = mxDocument.getSheets()
+        XSpreadsheet xSheet = null
+        try {
+            xSheets.insertNewByName( aName, nIndex )
+            xSheet = UnoRuntime.queryInterface(XSpreadsheet.class,
+                xSheets.getByName( aName ))
+        } catch (Exception ex) {
+            System.err.println( "Error: caught exception in insertSpreadsheet()!\nException Message = "
+                + ex.getMessage())
+            ex.printStackTrace()
+        }
+        return xSheet
+    }
+
+    XModel getModel() {
+        
+        XModel xModel = null
+        // println xComponent
+        try {
+            xModel = UnoRuntime.queryInterface(XModel.class, xComponent)
+            
+        } catch(Exception e){            
+            System.err.println(" Exception " + e)
+            e.printStackTrace(System.err)
+        }        
+            
+        return xModel
+    }
+    
+    XSpreadsheetView getSpreadsheetView() {
+        XController xSpreadsheetController = this.getModel().getCurrentController()
+        XSpreadsheetView xSpreadsheetView = UnoRuntime.queryInterface(XSpreadsheetView.class,
+            xSpreadsheetController)
+        return xSpreadsheetView
+    }
+    
+    
+    // ________________________________________________________________
+    // Methods to fill values into cells.
+
+    /** Writes a double value into a spreadsheet.
+    @param xSheet  The XSpreadsheet interface of the spreadsheet.
+    @param aCellName  The address of the cell (or a named range).
+    @param fValue  The value to write into the cell. */
+    void setValue(
+        XSpreadsheet xSheet, String aCellName,
+        double fValue ) throws RuntimeException, Exception {
+        xSheet.getCellRangeByName( aCellName ).getCellByPosition( 0, 0 ).setValue( fValue )
+    }
+
+    /** Writes a formula into a spreadsheet.
+    @param xSheet  The XSpreadsheet interface of the spreadsheet.
+    @param aCellName  The address of the cell (or a named range).
+    @param aFormula  The formula to write into the cell. */
+    void setFormula(
+        com.sun.star.sheet.XSpreadsheet xSheet,
+        String aCellName,
+        String aFormula ) throws RuntimeException, Exception {
+        xSheet.getCellRangeByName( aCellName ).getCellByPosition( 0, 0 ).setFormula( aFormula )
+    }
+
+    /** Writes a date with standard date format into a spreadsheet.
+    @param xSheet  The XSpreadsheet interface of the spreadsheet.
+    @param aCellName  The address of the cell (or a named range).
+    @param nDay  The day of the date.
+    @param nMonth  The month of the date.
+    @param nYear  The year of the date. */
+    void setDate(
+        XSpreadsheet xSheet, String aCellName,
+        int nDay, int nMonth, int nYear ) throws RuntimeException, Exception {
+        // Set the date value.
+        com.sun.star.table.XCell xCell = xSheet.getCellRangeByName( aCellName ).getCellByPosition( 0, 0 )
+        String aDateStr = nMonth + "/" + nDay + "/" + nYear
+        xCell.setFormula( aDateStr )
+
+        // Set standard date format.
+        com.sun.star.util.XNumberFormatsSupplier xFormatsSupplier = UnoRuntime.queryInterface(
+            com.sun.star.util.XNumberFormatsSupplier.class, getDocument() )
+        com.sun.star.util.XNumberFormatTypes xFormatTypes = UnoRuntime.queryInterface(
+            com.sun.star.util.XNumberFormatTypes.class, xFormatsSupplier.getNumberFormats() )
+        int nFormat = xFormatTypes.getStandardFormat(
+            com.sun.star.util.NumberFormat.DATE, new com.sun.star.lang.Locale() )
+
+        XPropertySet xPropSet = UnoRuntime.queryInterface(XPropertySet.class, xCell )
+        xPropSet.setPropertyValue( "NumberFormat", new Integer( nFormat ) )
+    }
+
+    /** Draws a colored border around the range and writes the headline in the
+    first cell.
+    @param xSheet  The XSpreadsheet interface of the spreadsheet.
+    @param aRange  The address of the cell range (or a named range).
+    @param aHeadline  The headline text. */
+    void prepareRange(XSpreadsheet xSheet,
+        String aRange, String aHeadline ) throws RuntimeException, Exception {
+        XPropertySet xPropSet = null
+        XCellRange xCellRange = null
+
+        // draw border
+        xCellRange = xSheet.getCellRangeByName( aRange )
+        xPropSet = UnoRuntime.queryInterface(XPropertySet.class, xCellRange )
+        BorderLine aLine = new BorderLine()
+        aLine.Color = 0x99CCFF
+        aLine.InnerLineWidth = aLine.LineDistance = 0
+        aLine.OuterLineWidth = 100
+        TableBorder aBorder = new TableBorder()
+        aBorder.TopLine = aBorder.BottomLine = aBorder.LeftLine = aBorder.RightLine = aLine
+        aBorder.IsTopLineValid = aBorder.IsBottomLineValid = true
+        aBorder.IsLeftLineValid = aBorder.IsRightLineValid = true
+        xPropSet.setPropertyValue( "TableBorder", aBorder )
+
+        // draw headline
+        XCellRangeAddressable xAddr = UnoRuntime.queryInterface(
+            XCellRangeAddressable.class, xCellRange )
+        CellRangeAddress aAddr = xAddr.getRangeAddress();
+
+        xCellRange = xSheet.getCellRangeByPosition(
+            aAddr.StartColumn, aAddr.StartRow, aAddr.EndColumn, aAddr.StartRow )
+        xPropSet = UnoRuntime.queryInterface( com.sun.star.beans.XPropertySet.class, xCellRange )
+        xPropSet.setPropertyValue( "CellBackColor", new Integer( 0x99CCFF ) )
+        // write headline
+        XCell xCell = xCellRange.getCellByPosition( 0, 0 )
+        xCell.setFormula( aHeadline )
+        xPropSet = (com.sun.star.beans.XPropertySet)
+        UnoRuntime.queryInterface(XPropertySet.class, xCell )
+        xPropSet.setPropertyValue( "CharColor", new Integer( 0x003399 ) )
+        xPropSet.setPropertyValue( "CharWeight", new Float( com.sun.star.awt.FontWeight.BOLD ) )
+    }
+    
+    /** Inserts a cell range address into a cell range container and prints a message.
+    @param xContainer The com.sun.star.sheet.XSheetCellRangeContainer interface of the container.
+    @param nSheet Index of sheet of the range.
+    @param nStartCol Index of first column of the range.
+    @param nStartRow Index of first row of the range.
+    @param nEndCol Index of last column of the range.
+    @param nEndRow Index of last row of the range.
+    @param bMerge Determines whether the new range should be merged with the existing ranges.
+     */
+    static void insertRange(
+        com.sun.star.sheet.XSheetCellRangeContainer xContainer,
+        int nSheet, int nStartCol, int nStartRow, int nEndCol, int nEndRow,
+        boolean bMerge) throws RuntimeException, Exception {
+        com.sun.star.table.CellRangeAddress aAddress = new com.sun.star.table.CellRangeAddress();
+        aAddress.Sheet = (short)nSheet;
+        aAddress.StartColumn = nStartCol;
+        aAddress.StartRow = nStartRow;
+        aAddress.EndColumn = nEndCol;
+        aAddress.EndRow = nEndRow;
+        xContainer.addRangeAddress(aAddress, bMerge);
+        System.out.println(
+         "Inserting " + (bMerge ? " with" : "without") + " merge,"
+            + " result list: " + xContainer.getRangeAddressesAsString());
+    }
+
+    // ________________________________________________________________
+    // Methods to create cell addresses and range addresses.
+
+    /** Creates a com.sun.star.table.CellAddress and initializes it
+    with the given range.
+    @param xSheet  The XSpreadsheet interface of the spreadsheet.
+    @param aCell  The address of the cell (or a named cell). */
+    CellAddress createCellAddress(
+        XSpreadsheet xSheet,
+        String aCell ) throws RuntimeException, Exception {
+        XCellAddressable xAddr = UnoRuntime.queryInterface(XCellAddressable.class,
+            xSheet.getCellRangeByName( aCell ).getCellByPosition( 0, 0 ) )
+        return xAddr.getCellAddress()
+    }
+
+    /** Creates a com.sun.star.table.CellRangeAddress and initializes
+    it with the given range.
+    @param xSheet  The XSpreadsheet interface of the spreadsheet.
+    @param aRange  The address of the cell range (or a named range). */
+    CellRangeAddress createCellRangeAddress(
+        XSpreadsheet xSheet, String aRange ) {
+        
+        XCellRangeAddressable xAddr = UnoRuntime.queryInterface(XCellRangeAddressable.class,
+            xSheet.getCellRangeByName( aRange ) )
+        return xAddr.getRangeAddress()
+    }
+
+    // ________________________________________________________________
+    // Methods to convert cell addresses and range addresses to strings.
+
+    /** Returns the text address of the cell.
+    @param nColumn  The column index.
+    @param nRow  The row index.
+    @return  A string containing the cell address. */
+    String getCellAddressString( int nColumn, int nRow ) {
+        String aStr = ""
+        if (nColumn > 25) {
+            aStr += ('A' + nColumn / 26 - 1) // removed char cast
+        } 
+        aStr += ('A' + nColumn % 26)
+        aStr += (nRow + 1)
+        return aStr
+    }
+
+    /** Returns the text address of the cell range.
+    @param aCellRange  The cell range address.
+    @return  A string containing the cell range address. */
+    String getCellRangeAddressString(
+        CellRangeAddress aCellRange ) {
+        return getCellAddressString( aCellRange.StartColumn, aCellRange.StartRow )
+        + ":"
+        + getCellAddressString( aCellRange.EndColumn, aCellRange.EndRow )
+    }
+
+    /** Returns the text address of the cell range.
+    @param xCellRange  The XSheetCellRange interface of the cell range.
+    @param bWithSheet  true = Include sheet name.
+    @return  A string containing the cell range address. */
+    String getCellRangeAddressString(XSheetCellRange xCellRange, boolean bWithSheet ) {
+        String aStr = ""
+        if (bWithSheet) {
+            XSpreadsheet xSheet = xCellRange.getSpreadsheet()
+            XNamed xNamed = UnoRuntime.queryInterface(XNamed.class, xSheet )
+            aStr += xNamed.getName() + "."
+        }
+        XCellRangeAddressable xAddr = UnoRuntime.queryInterface(
+            XCellRangeAddressable.class, xCellRange )
+        aStr += getCellRangeAddressString( xAddr.getRangeAddress() )
+        return aStr
+    }
+
+    /** Returns a list of addresses of all cell ranges contained in the collection.
+    @param xRangesIA  The XIndexAccess interface of the collection.
+    @return  A string containing the cell range address list. */
+    String getCellRangeListString(
+        XIndexAccess xRangesIA ) throws RuntimeException, Exception {
+        String aStr = ""
+        int nCount = xRangesIA.getCount()
+        for (int nIndex = 0; nIndex < nCount; ++nIndex) {
+            if (nIndex > 0)
+            aStr += " "
+            Object aRangeObj = xRangesIA.getByIndex( nIndex )
+            XSheetCellRange xCellRange = (XSheetCellRange)
+            UnoRuntime.queryInterface(XSheetCellRange.class, aRangeObj)
+            aStr += getCellRangeAddressString( xCellRange, false )
+        }
+        return aStr
+    }
+
+
+    // Connect to a running office that is accepting connections.
+    private void connect() {
+        if (mxRemoteContext == null && mxRemoteServiceManager == null) {
+            try {
+                // First step: get the remote office component context
+                mxRemoteContext = com.sun.star.comp.helper.Bootstrap.bootstrap()
+                System.out.println("Connected to a running office ...")
+                    
+                mxRemoteServiceManager = mxRemoteContext.getServiceManager()
+            } catch( Exception e) {
+                System.err.println("ERROR: can't get a component context from a running office ...")
+                e.printStackTrace()
+                System.exit(1)
+            }            
+        }
+    }
+
+    /** Creates an empty spreadsheet document.
+    @return  The XSpreadsheetDocument interface of the document. */
+    private XSpreadsheetDocument initDocument()
+    throws RuntimeException, Exception {
+        XComponentLoader aLoader = UnoRuntime.queryInterface(
+            XComponentLoader.class,
+            mxRemoteServiceManager.createInstanceWithContext(
+                    "com.sun.star.frame.Desktop", mxRemoteContext))
+
+        // changed to use class var xComponent
+        xComponent = aLoader.loadComponentFromURL(
+            "private:factory/scalc", "_default", 0, new com.sun.star.beans.PropertyValue[0] )
+        
+        XSpreadsheetDocument xSpreadsheetDocument = UnoRuntime.queryInterface(
+            XSpreadsheetDocument.class, xComponent )
+
+        return xSpreadsheetDocument
+    }
+
+
+}
+
+

Added: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/InstallationFinder.java
URL: http://svn.apache.org/viewvc/openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/InstallationFinder.java?rev=1722954&view=auto
==============================================================================
--- openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/InstallationFinder.java (added)
+++ openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/InstallationFinder.java Mon Jan  4 19:58:09 2016
@@ -0,0 +1,595 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+
+
+package com.sun.star.lib.loader;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+/**
+ * This class finds a UNO installation on the system.
+ *
+ * <p>A UNO installation can be specified by the user by either setting the
+ * com.sun.star.lib.loader.unopath system property or by setting the
+ * UNO_PATH environment variable to the program directory of a UNO
+ * installation.
+ * Note, that Java 1.3.1 and Java 1.4 don't support environment variables
+ * (System.getenv() throws java.lang.Error) and therefore setting the UNO_PATH
+ * enviroment variable won't work with those Java versions.
+ * If no UNO installation is specified by the user, the default installation
+ * on the system will be returned.</p>
+ *   
+ * <p>On the Windows platform the default installation is read from the Windows
+ * Registry.</p>
+ *   
+ * <p>On the Unix/Linux platforms the default installation is found from the
+ * PATH environment variable. Note, that for Java 1.3.1 and Java 1.4 the
+ * default installation is found by using the 'which' command, because
+ * environment variables are not supported with those Java versions.
+ * Both methods require that the 'soffice' executable or a symbolic
+ * link is in one of the directories listed in the PATH environment variable.
+ * For older versions than OOo 2.0 the above described methods may fail.
+ * In this case the default installation is taken from the .sversionrc file in
+ * the user's home directory. Note, that the .sversionrc file will be omitted
+ * for OOo 2.0</p>
+ */
+final class InstallationFinder {
+
+    private static final String SYSPROP_NAME =
+        "com.sun.star.lib.loader.unopath";
+    private static final String ENVVAR_NAME = "UNO_PATH";
+    private static final String SOFFICE = "soffice"; // Unix/Linux only
+    
+    private InstallationFinder() {} // do not instantiate
+    
+    /**
+     * Gets the path of a UNO installation.
+     *                                 
+     * @return the installation path or <code>null</code>, if no installation
+     *         was specified or found, or if an error occured     
+     */    
+    public static String getPath() {
+        
+        String path = null;
+        
+        // get the installation path from the Java system property
+        // com.sun.star.lib.loader.unopath
+        // (all platforms)
+        path = getPathFromProperty( SYSPROP_NAME );
+        if ( path == null ) {
+            // get the installation path from the UNO_PATH environment variable
+            // (all platforms, not working for Java 1.3.1 and Java 1.4)
+            path = getPathFromEnvVar( ENVVAR_NAME );
+            if ( path == null ) {
+                String osname = null;
+                try {
+                    osname = System.getProperty( "os.name" );
+                } catch ( SecurityException e ) {
+                    // if a SecurityException was thrown,
+                    // return <code>null</code>
+                    return null;
+                }
+                if ( osname != null ) {
+                    if ( osname.startsWith( "Windows" ) ) {
+                        // get the installation path from the Windows Registry
+                        // (Windows platform only)
+                        path = getPathFromWindowsRegistry();
+                    } else {
+                        // get the installation path from the PATH environment
+                        // variable (Unix/Linux platforms only, not working for
+                        // Java 1.3.1 and Java 1.4)
+                        path = getPathFromPathEnvVar();
+                        if ( path == null ) {
+                            // get the installation path from the 'which'
+                            // command (Unix/Linux platforms only)
+                            path = getPathFromWhich();
+                            if ( path == null ) {                   
+                                // get the installation path from the
+                                // .sversionrc file (Unix/Linux platforms only,
+                                // for older versions than OOo 2.0)
+                                path = getPathFromSVersionFile();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        
+        return path;
+    }
+    
+    /**
+     * Gets the installation path from a Java system property.
+     *
+     * <p>This method is called on all platforms.
+     * The Java system property can be passed into the application by using
+     * the -D flag, e.g.
+     * java -D<property name>=<installation path> -jar application.jar.</p>
+     *                          
+     * @return the installation path or <code>null</code>, if no installation
+     *         was specified in the Java system property or if an error occured
+     */    
+    private static String getPathFromProperty( String prop ) {
+
+        String path = null;
+        
+        try {
+            path = System.getProperty( prop );
+        } catch ( SecurityException e ) {
+            // if a SecurityException was thrown, return <code>null</code>
+        }
+
+        return path;        
+    }
+
+    /**
+     * Gets the installation path from an environment variable.
+     *   
+     * <p>This method is called on all platforms.
+     * Note, that in Java 1.3.1 and Java 1.4 System.getenv() throws 
+     * java.lang.Error and therefore this method returns null for those 
+     * Java versions.</p>
+     *
+     * @return the installation path or <code>null</code>, if no installation
+     *         was specified in the environment variable or if an error occured
+     */
+    private static String getPathFromEnvVar( String var ) {        
+
+        String path = null;
+        
+        try {
+            path = System.getenv( var );            
+        } catch ( SecurityException e ) {
+            // if a SecurityException was thrown, return <code>null</code>
+        } catch ( java.lang.Error err ) {
+            // System.getenv() throws java.lang.Error in Java 1.3.1 and 
+            // Java 1.4
+        }
+        
+        return path;
+    }
+    
+    /**
+     * Gets the installation path from the Windows Registry.
+     *
+     * <p>This method is called on the Windows platform only.</p>
+     *   
+     * @return the installation path or <code>null</code>, if no installation
+     *         was found or if an error occured     
+     */    
+    private static String getPathFromWindowsRegistry() {
+
+        final String SUBKEYNAME = "Software\\OpenOffice\\UNO\\InstallPath";
+        final String SUBKEYNAME64 = "Software\\Wow6432Node\\OpenOffice\\UNO\\InstallPath";
+
+        String path = null;
+        
+        try {
+            // read the key's default value from HKEY_CURRENT_USER
+            WinRegKey key = new WinRegKey( "HKEY_CURRENT_USER", SUBKEYNAME );
+            path = key.getStringValue( "" ); // default            
+        } catch ( WinRegKeyException e ) {
+            try {
+                // read the key's default value from HKEY_LOCAL_MACHINE
+                WinRegKey key = new WinRegKey( "HKEY_LOCAL_USER",
+                                               SUBKEYNAME64 );
+                path = key.getStringValue( "" ); // default                
+            } catch ( WinRegKeyException e64 ) {
+                try {
+                    // read the key's default value from HKEY_LOCAL_MACHINE
+                    WinRegKey key = new WinRegKey( "HKEY_LOCAL_MACHINE",
+                                                   SUBKEYNAME );
+                    path = key.getStringValue( "" ); // default                
+                } catch ( WinRegKeyException we ) {
+                    try {
+                        // read the key's default value from HKEY_LOCAL_MACHINE
+                        WinRegKey key = new WinRegKey( "HKEY_LOCAL_MACHINE",
+                                                       SUBKEYNAME64 );
+                        path = key.getStringValue( "" ); // default                
+                    } catch ( WinRegKeyException we64 ) {
+                        System.err.println( "com.sun.star.lib.loader." +
+                                            "InstallationFinder::getPathFromWindowsRegistry: " +
+                                            "reading key from Windows Registry failed: " + we64 );
+                    } 
+                } 
+            }
+        }
+        
+        return path;        
+    }
+
+    /**
+     * Gets the installation path from the PATH environment variable.
+     *
+     * <p>This method is called on Unix/Linux platforms only.
+     * An installation is found, if the executable 'soffice' or a symbolic link
+     * is in one of the directories listed in the PATH environment variable.
+     * Note, that in Java 1.3.1 and Java 1.4 System.getenv() throws
+     * java.lang.Error and therefore this method returns null for those
+     * Java versions.</p>
+     *
+     * @return the installation path or <code>null</code>, if no installation
+     *         was found or if an error occured
+     */
+    private static String getPathFromPathEnvVar() {
+
+        final String PATH_ENVVAR_NAME = "PATH";
+        
+        String path = null;
+        String str = null;
+        
+        try {
+            str = System.getenv( PATH_ENVVAR_NAME );
+        } catch ( SecurityException e ) {
+            // if a SecurityException was thrown, return <code>null</code>
+            return null;
+        } catch ( java.lang.Error err ) {
+            // System.getenv() throws java.lang.Error in Java 1.3.1 and 
+            // Java 1.4
+            return null;
+        }
+
+        if ( str != null ) {
+            StringTokenizer tokens = new StringTokenizer(
+                str, File.pathSeparator );
+            while ( tokens.hasMoreTokens() ) {
+                File file = new File( tokens.nextToken(), SOFFICE );
+                try {
+                    if ( file.exists() ) {
+                        try {                   
+                            // resolve symlink
+                            path = file.getCanonicalFile().getParent();
+                            if ( path != null )
+                                break;
+                        } catch ( IOException e ) {
+                            // if an I/O exception is thrown, ignore this
+                            // path entry and try the next one
+                            System.err.println( "com.sun.star.lib.loader." +
+                                "InstallationFinder::getPathFromEnvVar: " +
+                                "bad path: " + e );
+                        }  
+                    }
+                } catch ( SecurityException e ) {
+                    // if a SecurityException was thrown, ignore this path
+                    // entry and try the next one
+                }
+            }
+        }
+        
+        return path;
+    }
+    
+    /**
+     * Gets the installation path from the 'which' command on Unix/Linux
+     * platforms.
+     *
+     * <p>This method is called on Unix/Linux platforms only.
+     * An installation is found, if the executable 'soffice' or a symbolic link
+     * is in one of the directories listed in the PATH environment variable.</p>
+     *   
+     * @return the installation path or <code>null</code>, if no installation
+     *         was found or if an error occured
+     */    
+    private static String getPathFromWhich() {
+
+        final String WHICH = "which";
+        
+        String path = null;
+        
+        // start the which process
+        String[] cmdArray = new String[2];
+        cmdArray[0] = WHICH;
+        cmdArray[1] = SOFFICE;
+        Process proc = null;
+        Runtime rt = Runtime.getRuntime();
+        try {
+            proc = rt.exec( cmdArray );
+        } catch ( SecurityException e ) {
+            return null;
+        } catch ( IOException e ) {
+            // if an I/O exception is thrown, return <code>null</null>
+            System.err.println( "com.sun.star.lib.loader." +
+                "InstallationFinder::getPathFromWhich: " +
+                "which command failed: " + e );
+            return null;
+        }
+            
+        // empty standard error stream in a seperate thread
+        StreamGobbler gobbler = new StreamGobbler( proc.getErrorStream() );
+        gobbler.start();
+            
+        // read the which output from standard input stream
+        BufferedReader br = new BufferedReader(
+            new InputStreamReader( proc.getInputStream() ) );
+        String line = null;        
+        try {
+            while ( ( line = br.readLine() ) != null ) {
+                if ( path == null ) {
+                    // get the path from the which output
+                    int index = line.lastIndexOf( SOFFICE );
+                    if ( index != -1 ) {
+                        int end = index + SOFFICE.length();
+                        for ( int i = 0; i <= index; i++ ) {
+                            File file = new File( line.substring( i, end ) );
+                            try {
+                                if ( file.exists() ) {
+                                    // resolve symlink
+                                    path = file.getCanonicalFile().getParent();
+                                    if ( path != null )
+                                        break;
+                                }
+                            } catch ( SecurityException e ) {
+                                return null;
+                            }
+                        }
+                    }
+                }
+            }
+        } catch ( IOException e ) {
+            // if an I/O exception is thrown, return <code>null</null>
+            System.err.println( "com.sun.star.lib.loader." +
+                                "InstallationFinder::getPathFromWhich: " +
+                                "reading which command output failed: " + e );
+            return null;
+        } finally {
+            if ( br != null ) {
+                try {                            
+                    br.close();
+                } catch ( IOException e ) {
+                    // closing standard input stream failed, ignore
+                }   
+            }
+        }        
+            
+        try {
+            // wait until the which process has terminated
+            proc.waitFor();
+        } catch ( InterruptedException e ) {
+            // the current thread was interrupted by another thread,
+            // kill the which process
+            proc.destroy();            
+            // set the interrupted status
+            Thread.currentThread().interrupt();                
+        }
+            
+        return path;
+    }
+    
+    /**
+     * Gets the installation path from the .sverionrc file in the user's home
+     * directory.
+     *
+     * <p>This method is called on Unix/Linux platforms only.
+     * The .sversionrc file is written during setup and will be omitted for
+     * OOo 2.0.</p>
+     *
+     * @return the installation path or <code>null</code>, if no installation
+     *         was found or if an error occured     
+     */
+    private static String getPathFromSVersionFile() {
+
+        final String SVERSION = ".sversionrc"; // Unix/Linux only
+        final String VERSIONS = "[Versions]";
+        
+        String path = null;
+        
+        try {        
+            File fSVersion = new File(
+                System.getProperty( "user.home" ) ,SVERSION );
+            if ( fSVersion.exists() ) {
+                Vector lines = new Vector();
+                BufferedReader br = null;
+                try {
+                    br = new BufferedReader( new InputStreamReader(
+                        new FileInputStream( fSVersion ), "UTF-8" ) );
+                    String line = null;                
+                    while ( ( line = br.readLine() ) != null &&
+                            ( line.equals( VERSIONS ) ) != true ) {
+                        // read lines until [Versions] is found
+                    }
+                    while ( ( line = br.readLine() ) != null &&
+                            line.length() != 0 ) {
+                        if ( !line.startsWith( ";" ) )
+                            lines.add( line );
+                    }
+                } catch ( IOException e ) {
+                    // if an I/O exception is thrown, try to analyze the lines
+                    // read so far
+                    System.err.println( "com.sun.star.lib.loader." +
+                        "InstallationFinder::getPathFromSVersionFile: " +
+                        "reading .sversionrc file failed: " + e );
+                } finally {
+                    if ( br != null ) {
+                        try {                            
+                            br.close();
+                        } catch ( IOException e ) {
+                            // closing .sversionrc failed, ignore
+                        }   
+                    }
+                }            
+                for ( int i = lines.size() - 1; i >= 0; i-- ) {
+                    StringTokenizer tokens = new StringTokenizer(
+                        (String)lines.elementAt( i ), "=" );
+                    if ( tokens.countTokens() != 2 )
+                        continue;                
+                    String key = tokens.nextToken();
+                    String url = tokens.nextToken();
+                    path = getCanonicalPathFromFileURL( url );                
+                    if ( path != null )
+                        break;                
+                }            
+            }            
+        } catch ( SecurityException e ) {
+            return null;
+        }        
+        
+        return path;
+    }
+    
+    /**
+     * Translates an OOo-internal absolute file URL reference (encoded using
+     * UTF-8) into a Java canonical pathname.
+     *
+     * @param oooUrl any URL reference; any fragment part is ignored
+     *
+     * @return if the given URL is a valid absolute, local (that is, the host
+     * part is empty or equal to "localhost", ignoring case) file URL, it is
+     * converted into an absolute canonical pathname; otherwise,
+     * <code>null</code> is returned
+     */
+    private static String getCanonicalPathFromFileURL( String oooUrl ) {
+        
+        String prefix = "file://";
+        if (oooUrl.length() < prefix.length()
+            || !oooUrl.substring(0, prefix.length()).toLowerCase().equals(
+                prefix))
+        {
+            return null;
+        }        
+        StringBuffer buf = new StringBuffer(prefix);
+        int n = oooUrl.indexOf('/', prefix.length());
+        if (n < 0) {
+            n = oooUrl.length();
+        }
+        String host = oooUrl.substring(prefix.length(), n);
+        if (host.length() != 0 && !host.toLowerCase().equals("localhost")) {
+            return null;
+        }
+        buf.append(host);
+        if (n == oooUrl.length()) {
+            buf.append('/');
+        } else {
+        loop:
+            while (n < oooUrl.length()) {
+                buf.append('/');
+                ++n;
+                int n2 = oooUrl.indexOf('/', n);
+                if (n2 < 0) {
+                    n2 = oooUrl.length();
+                }
+                while (n < n2) {
+                    char c = oooUrl.charAt(n);
+                    switch (c) {
+                    case '%':
+                        byte[] bytes = new byte[(n2 - n) / 3];
+                        int len = 0;
+                        while (oooUrl.length() - n > 2
+                               && oooUrl.charAt(n) == '%')
+                        {
+                            int d1 = Character.digit(oooUrl.charAt(n + 1), 16);
+                            int d2 = Character.digit(oooUrl.charAt(n + 2), 16);
+                            if (d1 < 0 || d2 < 0) {
+                                break;
+                            }
+                            int d = 16 * d1 + d2;
+                            if (d == '/') {
+                                return null;
+                            }
+                            bytes[len++] = (byte) d;
+                            n += 3;
+                        }
+                        String s;
+                        try {
+                            s = new String(bytes, 0, len, "UTF-8");
+                        } catch (UnsupportedEncodingException e) {
+                            return null;
+                        }
+                        buf.append(s);
+                        break;
+
+                    case '#':
+                        break loop;
+
+                    default:
+                        buf.append(c);
+                        ++n;
+                        break;
+                    }
+                }
+            }
+        }
+        URL url;
+        try {
+            url = new URL(buf.toString());
+        } catch (MalformedURLException e) {
+            return null;
+        }
+        String path = url.getFile();
+        String fragment = url.getRef();
+        if (fragment != null) {
+            path += '#' + fragment;
+        }
+        String ret = null;
+        File file = new File( path, SOFFICE );
+        try {
+            if ( file.isAbsolute() && file.exists() ) {
+                try {
+                    // resolve symlink
+                    ret = file.getCanonicalFile().getParent();
+                } catch ( IOException e ) {
+                    return null;
+                }     
+            }
+        } catch ( SecurityException e ) {
+            return null;
+        }
+        
+        return ret;
+    }
+
+    /**
+       This class is used for emptying any stream which is passed into it in
+       a separate thread.
+     */
+    private static final class StreamGobbler extends Thread {
+
+        InputStream m_istream;
+
+        StreamGobbler( InputStream istream ) {
+            m_istream = istream;
+        }
+
+        public void run() {
+            try {
+                BufferedReader br = new BufferedReader(
+                    new InputStreamReader( m_istream ) );
+                // read from input stream
+                while ( br.readLine() != null ) {
+                    // don't handle line content
+                }
+                br.close();
+            } catch ( IOException e ) {
+                // stop reading from input stream
+            }
+        }
+    }
+}

Propchange: openoffice/devtools/lazybones-templates/trunk/templates/aoo-client/src/main/java/com/sun/star/lib/loader/InstallationFinder.java
------------------------------------------------------------------------------
    svn:eol-style = native