pax_global_header00006660000000000000000000000064135130432160014510gustar00rootroot0000000000000052 comment=55bd2a07b6a8bf1c81258abfa8a0b1f29ba9e8e3 groovy-2.4.17/000077500000000000000000000000001351304321600131305ustar00rootroot00000000000000groovy-2.4.17/.travis.yml000066400000000000000000000050621351304321600152440ustar00rootroot00000000000000# 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. language: groovy sudo: required matrix: include: - jdk: oraclejdk8 - jdk: openjdk7 - jdk: openjdk6 addons: apt: packages: - openjdk-6-jdk dist: trusty # use bouncycastle security provider to avoid: # javax.net.ssl.SSLException: ... java.security.InvalidKeyException: EC parameters error before_install: - | if [ $TRAVIS_JDK_VERSION == "openjdk7" ]; then JAVA_ETC=java-7-openjdk elif [ $TRAVIS_JDK_VERSION == "openjdk6" ]; then JAVA_ETC=java-6-openjdk fi if [ $TRAVIS_JDK_VERSION == "openjdk6" ] || [ $TRAVIS_JDK_VERSION == "openjdk7" ]; then BCPROV_FILENAME=bcprov-ext-jdk15on-158.jar wget "https://bouncycastle.org/download/${BCPROV_FILENAME}" sudo mv $BCPROV_FILENAME ${JAVA_HOME}/jre/lib/ext sudo perl -pi.bak -e 's/^(security\.provider\.)([0-9]+)/$1.($2+1)/ge' /etc/${JAVA_ETC}/security/java.security echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" | sudo tee -a /etc/${JAVA_ETC}/security/java.security fi install: true # use default mem settings for java 8 only # avoid getting gradle zip and plugins using openjdk6 before_script: - | if [ $TRAVIS_JDK_VERSION == "openjdk6" ] || [ $TRAVIS_JDK_VERSION == "openjdk7" ]; then export _JAVA_OPTIONS=-Xms1024m\ -Xmx2048m else unset _JAVA_OPTIONS fi if [ $TRAVIS_JDK_VERSION == "openjdk6" ]; then jdk_switcher use oraclejdk8 ./gradlew assemble jdk_switcher use openjdk6 fi script: travis_wait 60 ./gradlew clean test # As recommended in: # https://docs.travis-ci.com/user/languages/java/#Caching before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ cache: directories: - $HOME/.gradle/caches/ - $HOME/.gradle/wrapper/ groovy-2.4.17/LICENSE000066400000000000000000000315221351304321600141400ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ------------------------------------------------------------------------ Asciidoc License This product uses the style.css from asciidoctor.org within documentation. The file is available under the MIT License. For details, see licenses/asciidoc-style-license.txt. ------------------------------------------------------------------------ JLine2 Patch License The following class within this product: org.codehaus.groovy.tools.shell.completion.FileNameCompleter was derived from JLine 2.12, and the following patch: https://github.com/jline/jline2/issues/90 JLine2 is made available under a BSD License. For details, see licenses/jline2-license. ------------------------------------------------------------------------ JQuery License The following file is used within documentation: src/spec/assets/css/jquery-2.1.1.min.js This file is made available under the following MIT license: licenses/jquery-js-license.txt ------------------------------------------------------------------------ JSR223 License The following classes within this product: org.codehaus.groovy.jsr223.GroovyCompiledScript org.codehaus.groovy.jsr223.GroovyScriptEngineFactory org.codehaus.groovy.jsr223.GroovyScriptEngineImpl were derived from reference implementation files developed by Sun in collaboration with the Groovy community. The reference implementation has a BSD-style license. Details can be found in: licenses/jsr223-license.txt ------------------------------------------------------------------------ normalize.css License The stylesheet.css file (originally normalize.css) is used by the groovydoc and docgenerator components for groovy-jdk/gapi documentation. It is made available under a MIT License. Details: licenses/normalize-stylesheet-license.txt groovy-2.4.17/NOTICE000066400000000000000000000005721351304321600140400ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product bundles icons from the famfamfam.com silk icons set http://www.famfamfam.com/lab/icons/silk/ Licensed under the Creative Commons Attribution Licence v2.5 http://creativecommons.org/licenses/by/2.5/groovy-2.4.17/README.adoc000066400000000000000000000177651351304321600147350ustar00rootroot00000000000000////////////////////////////////////////// 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. ////////////////////////////////////////// = Groovy The Groovy development team :revdate: 24-02-2014 :build-icon: http://ci.groovy-lang.org:8111/app/rest/builds/buildType:(id:Groovy_Jdk7Build)/statusIcon :noheader: :groovy-www: http://groovy-lang.org/ :groovy-ci: http://ci.groovy-lang.org?guest=1 :jdk: http://www.oracle.com/technetwork/java/javase/downloads :bintray-latest-version-image: https://api.bintray.com/packages/groovy/maven/groovy/images/download.png :bintray-latest-version-link: https://bintray.com/groovy/maven/groovy/_latestVersion :bintray-watch-image: https://www.bintray.com/docs/images/bintray_badge_color.png :bintray-watch-link: https://bintray.com/groovy/maven/groovy/view?source=watch :apache-license-icon: https://img.shields.io/badge/license-APL2-blue.svg :apache-license-link: http://www.apache.org/licenses/LICENSE-2.0.txt :apache-groovy-twitter-icon: https://img.shields.io/twitter/follow/ApacheGroovy.svg?style=social :apache-groovy-twitter-link: https://twitter.com/intent/follow?screen_name=ApacheGroovy :jdk-icon: https://img.shields.io/badge/java-6+-4c7e9f.svg :bintray-download-icon: https://api.bintray.com/packages/groovy/maven/groovy/images/download.svg [.left.text-left] image::https://raw.githubusercontent.com/groovy/artwork/master/medium.png[] image:{jdk-icon}[jdk, link={jdk}] image:{apache-license-icon}[Apache License 2, link={apache-license-link}] image:{build-icon}[build status, link={groovy-ci}] image:{bintray-download-icon}[bintray download, link={bintray-latest-version-link}] image:{apache-groovy-twitter-icon}[follow on Twitter, link={apache-groovy-twitter-link}] {groovy-www}[Groovy] is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at multiplying developers’ productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming. == Downloading Latest Groovy version is available on Bintray image:{bintray-latest-version-image}[Bintray latest version, link={bintray-latest-version-link}] Binary distribution links are on the package page. Maven, Gradle and Ivy dependency declaration snippets are available on specific files of a particular module. image:{bintray-watch-image}[Get automatic notifications about new "groovy" versions link={bintray-watch-link}] == Obtaining the Source You don't need the source code to use Apache Groovy but if you wish to explore its inner workings or build it for yourself there are two ways to obtain the source files. === Checking out from Version Control Apache Groovy uses Git. The official Git repository is at: https://git-wip-us.apache.org/repos/asf/groovy.git And a mirror is hosted on Github: https://github.com/apache/groovy The Github mirror is read-only and provides convenience to users and developers to explore the code and for the community to accept contributions via Github pull requests. Simply `git clone` the repo (or the repo you forked via the github website) and you will have the complete source. === Unpacking the src distribution Alternatively, you can download the source distribution and unpack it. If obtaining the source from the source distribution and you intend to build from source, you also need to https://gradle.org/downloads/[download] and install http://gradle.org/[Gradle] and use the downloaded Gradle to execute one bootstrap step. ==== Bootstrapping Gradle As mentioned in the previous paragraph, if you download the source distribution you need to bootstrap Gradle. This isn't needed if you clone from the Github repo. Each version of Groovy is built and tested using a specific version of Gradle. That version is specified by the `gradle_version` property defined in the `gradle.properties` file within the root directory. Luckily you shouldn't need to know that version and, after bootstrapping, you should use the `gradlew` command which will ensure the correct version is always used. The version of Gradle used for the bootstrap step has some flexibility though in general you might need to download a version similar to the version of Groovy the build is expecting. To bootstrap Gradle, at the top directory of your unpacked source, run the command: gradle -b wrapper.gradle wrapper On Unix-like systems, use `./gradle`. If the version of Gradle you have installed is close to the required version, you might be able to get away without the `-b wrapper.gradle` above, but if in doubt leave it in. *NOTE*: At this point, the Gradle wrapper should be set up and from now on you should use the `gradlew` command instead of `gradle`. (On Unix-like systems, use `./gradlew`). == Building from Source Build is image:{build-icon}[build status, link={groovy-ci}]. To build you will need: * {jdk}[JDK 7+] To build everything using Gradle, use the following command (`./gradlew` on Unix-like systems): gradlew clean dist Note: The gradlew command automatically downloads the correct Gradle version if needed, you do not need to download it first. This will generate a distribution similar to the zip you can download on the Groovy download page. To build everything and launch unit tests, use: gradlew test If you want to launch one unit test, use this. is like `groovy.GroovyMethodsTest`. gradlew :test --tests To build from IntelliJ IDEA: gradlew jarAll idea Then open the generated project in IDEA. To build from Eclipse: gradlew jarAll eclipse Then open the generated project and the generated subprojects in Eclipse. But be aware that Eclipse tends to be more limited in its ability to reproduce a gradle build structure. The generated project files may contain a circular dependency which may or may not prevent Eclipse from using them. It depends on the Eclipse version, if this is an issue or not. To build the documentation (Groovy Language Documentation): gradlew assembleAsciidoc All code samples of the documentation guide are pulled from actual test cases. To run a single documentation test case, take for example `src/spec/test/semantics/PowerAssertTest.groovy` gradlew testSinglePowerAssertTest (note the omission of package name : class is `semantics.PowerAssertTest` but only `PowerAssertTest` is added to `testSingle`). == InvokeDynamic support The Groovy build supports the new Java 7 JVM instruction `invokedynamic`. If you want to build Groovy with invokedynamic, you can use the project property `indy`: gradlew -Pindy=true clean test Please note that the following Gradle tasks generate both indy and non indy variants of the jars, so you don't need to use the system property: * dist * install * uploadArchives == Continuous Integration Server The official CI server runs {groovy-ci}[here] and is sponsored by http://www.jetbrains.com[JetBrains]. == Java Profiler Groovy core team tunes performance through YourKit Java Profiler, which is sponsored by https://www.yourkit.com[YourKit]. == License Groovy is licensed under the terms of the http://www.apache.org/licenses/LICENSE-2.0.html[Apache License, Version 2.0] groovy-2.4.17/build.gradle000066400000000000000000000410051351304321600154070ustar00rootroot00000000000000/* * 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. */ buildscript { repositories { jcenter() maven { name 'Bintray Asciidoctor repo' url 'http://dl.bintray.com/content/aalmiray/asciidoctor' } maven{ name 'Bintray Javadoc Hotfix repo' url 'http://dl.bintray.com/melix/gradle-javadoc-hotfix-plugin' } maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'org.asciidoctor:asciidoctor-gradle-plugin:1.5.7' classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:3.0.3' classpath 'me.champeau.gradle:gradle-javadoc-hotfix-plugin:0.1' classpath 'me.champeau.gradle:japicmp-gradle-plugin:0.1.1' //classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0' classpath "gradle.plugin.org.nosphere.apache:creadur-rat-gradle:0.1.3" classpath 'com.gradle:build-scan-plugin:1.8' classpath 'me.champeau.gradle:buildscan-recipes-plugin:0.2.0' } } if (JavaVersion.current().java7Compatible) { apply plugin: 'com.gradle.build-scan' apply plugin: 'me.champeau.buildscan-recipes' buildScan { licenseAgreementUrl = 'https://gradle.com/terms-of-service' licenseAgree = 'yes' publishAlways() } buildScanRecipes { recipe 'git-commit', baseUrl: 'https://github.com/apache/groovy/tree' recipe 'teamcity', baseUrl: 'https://ci.groovy-lang.org', guest: 'true' recipes 'git-status', 'teamcity', 'travis-ci' } } ext.modules = { subprojects.findAll{ !['performance', 'tests-vm8'].contains(it.name) } } apply from: 'gradle/filter.gradle' apply from: 'gradle/indy.gradle' apply from: 'gradle/publish.gradle' apply plugin: 'javadocHotfix' File javaHome = new File(System.getProperty('java.home')) logger.lifecycle "Using Java from $javaHome (version ${System.getProperty('java.version')})" indyBanner() // TODO use antlr plugin //apply plugin: 'antlr' allprojects { apply plugin: 'java' buildDir = 'target' sourceCompatibility = 1.6 targetCompatibility = 1.6 group = 'org.codehaus.groovy' version = groovyVersion repositories { jcenter() maven { url 'http://dl.bintray.com/melix/thirdparty-apache' } // openbeans } apply plugin: 'groovy' apply from: "${rootProject.projectDir}/gradle/indy.gradle" if (JavaVersion.current().java7Compatible) { apply from: "${rootProject.projectDir}/gradle/asciidoctor.gradle" } } // todo: use the conventional "resources" directory for classpath resources task(copyResources, type: Copy) { destinationDir = file("$buildDir/classes") // text files requiring filtering into('main') { from('src/main') include('**/*.txt', '**/*.xml', '**/*.properties', '**/*.html') filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) } // other resources into('main') { from 'src/main' include('**/*.png', '**/*.gif', '**/*.ico', '**/*.css') } } compileJava.dependsOn(copyResources) task(copyTestResources, type: Copy) .from('src/test') .into("$buildDir/classes/test") .include('**/*.txt', '**/*.xml', '**/*.properties', '**/*.png', '**/*.html', '**/*.gif', '**/*.ico', '**/*.css') compileTestJava.dependsOn(copyTestResources) task sourceJar(type: Jar) { classifier = 'sources' from 'src/main' } subprojects { task sourceJar(type: Jar) { classifier = 'sources' from sourceSets.main.allSource } } repositories { // todo Some repos are needed only for some configs. Declare them just for the configuration once Gradle allows this. maven { url 'http://repository.jboss.org/nexus/content/groups/m2-release-proxy' } // examples, tools } // todo do we need compile and runtime scope for examples? configurations { compilerCompile tools examplesCompile.extendsFrom compile examplesRuntime.extendsFrom examplesCompile antlr spec } ext { antVersion = '1.9.4' asmVersion = '6.1.1' antlrVersion = '2.7.7' coberturaVersion = '1.9.4.1' commonsCliVersion = '1.2' commonsHttpClientVersion = '3.1' eclipseOsgiVersion = '3.9.1-v20140110-1610' gparsVersion = '1.2.1' ivyVersion = '2.4.0' jansiVersion = '1.11' jarjarVersion = '1.3' jlineVersion = '2.12' jmockVersion = '1.2.0' logbackVersion = '1.1.2' log4jVersion = '1.2.17' log4j2Version = '2.1' luceneVersion = '4.7.2' openbeansVersion = '1.0' openejbVersion = '1.0' qdoxVersion = '1.12.1' slf4jVersion = '1.7.6' xmlunitVersion = '1.5' xstreamVersion = '1.4.10' isReleaseVersion = !groovyVersion.toLowerCase().endsWith("snapshot") } dependencies { compile "antlr:antlr:$antlrVersion" compile "org.ow2.asm:asm:$asmVersion" compile "org.ow2.asm:asm-analysis:$asmVersion" compile "org.ow2.asm:asm-commons:$asmVersion" compile "org.ow2.asm:asm-tree:$asmVersion" compile "org.ow2.asm:asm-util:$asmVersion" compile "commons-cli:commons-cli:$commonsCliVersion" compile "org.apache.ant:ant:$antVersion" compile("com.thoughtworks.xstream:xstream:$xstreamVersion") { exclude(group: 'xpp3', module: 'xpp3_min') exclude(group: 'junit', module: 'junit') exclude(group: 'jmock', module: 'jmock') } compile "com.googlecode:openbeans:$openbeansVersion" compile "org.fusesource.jansi:jansi:$jansiVersion" compile("org.apache.ivy:ivy:$ivyVersion") { transitive = false } compile files("${buildDir}/generated-classes") runtime("org.codehaus.gpars:gpars:$gparsVersion") { exclude(group: 'org.codehaus.groovy', module: 'groovy-all') } testCompile "jmock:jmock:$jmockVersion" testCompile "jmock:jmock-cglib:$jmockVersion" testCompile "xmlunit:xmlunit:$xmlunitVersion" testCompile "ch.qos.logback:logback-classic:$logbackVersion" testCompile "log4j:log4j:$log4jVersion" testCompile "org.apache.logging.log4j:log4j-core:$log4j2Version" testCompile "org.slf4j:jcl-over-slf4j:$slf4jVersion" testCompile "com.thoughtworks.qdox:qdox:$qdoxVersion" tools "com.googlecode.jarjar:jarjar:$jarjarVersion" tools("net.sourceforge.cobertura:cobertura:$coberturaVersion") { exclude(module: 'asm') exclude(module: 'asm') exclude(module: 'ant') } tools "org.ow2.asm:asm:$asmVersion" tools "com.thoughtworks.qdox:qdox:$qdoxVersion" examplesCompile project(':groovy-test') examplesCompile project(':groovy-swing') examplesCompile "org.apache.lucene:lucene-core:$luceneVersion" examplesCompile "org.apache.lucene:lucene-analyzers-common:$luceneVersion" examplesCompile "org.apache.lucene:lucene-queryparser:$luceneVersion" examplesCompile "org.eclipse:osgi:$eclipseOsgiVersion" examplesRuntime("commons-httpclient:commons-httpclient:$commonsHttpClientVersion") { exclude(module: 'junit') exclude(module: 'commons-logging') exclude(module: 'commons-codec') } examplesRuntime("openejb:openejb-loader:$openejbVersion") { exclude(module: 'log4j') exclude(module: 'openejb-core') exclude(module: 'geronimo-jta_1.0.1B_spec') exclude(module: 'geronimo-servlet_2.4_spec') exclude(module: 'geronimo-ejb_2.1_spec') exclude(module: 'geronimo-j2ee-connector_1.5_spec') } // TODO use antlr plugin // antlr "antlr:antlr:$antlrVersion" antlr "org.apache.ant:ant-antlr:$antVersion" testCompile project(':groovy-ant') testCompile project(':groovy-test') } ext.generatedDirectory = "${buildDir}/generated-sources" sourceSets { main { java { srcDirs = [ 'src/main', "$generatedDirectory/src/main" ] fileTree('src/main/groovy/ui').matching { exclude 'GroovyMain.java', 'GroovySocketServer.java' }.visit { details -> exclude "groovy/ui/$details.path" } if (!JavaVersion.current().isJava7Compatible()) { exclude '**/indy/*' exclude '**/v7/*' exclude '**/v8/*' exclude '**/vm7/*' } } groovy { srcDirs = [ 'src/main', "$generatedDirectory/src/main" ] if (!JavaVersion.current().isJava7Compatible()) { exclude '**/indy/*' exclude '**/v7/*' exclude '**/v8/*' exclude '**/vm7/*' } } resources { srcDirs = ['src/main', 'src/resources'] include 'META-INF/services/*', 'META-INF/groovy-release-info.properties', 'groovy/grape/*.xml' } } test { groovy { srcDirs = ['src/test'] } resources { srcDirs = ['src/test-resources'] } } tools { compileClasspath = sourceSets.main.runtimeClasspath + configurations.tools runtimeClasspath = output + compileClasspath } examples { groovy { srcDirs = ['src/examples'] } resources { srcDirs = ['src/examples'] } compileClasspath = configurations.examplesRuntime + sourceSets.main.output + project(':groovy-xml').sourceSets.main.output } } // make sure examples can be compiled, even if we don't run them // todo: reorganize examples so that we can run them too check { dependsOn examplesClasses } // remove this from config once GRADLE-854 is fixed. processResources.doLast { copy { from('src/main') { include 'groovy/inspect/swingui/AstBrowserProperties.groovy', 'org/codehaus/groovy/tools/groovydoc/gstringTemplates/GroovyDocTemplateInfo.java' } into sourceSets.main.output.classesDir } } task ensureGrammars { description = 'Ensure all the Antlr generated files are up to date.' ext.antlrDirectory = "$projectDir/src/main/org/codehaus/groovy/antlr" ext.groovyParserDirectory = "$ext.antlrDirectory/parser" ext.javaParserDirectory = "$ext.antlrDirectory/java" ext.genPath = "$generatedDirectory/src/main/org/codehaus/groovy/antlr" ext.groovyOutDir = "$ext.genPath/parser" ext.javaOutDir = "$ext.genPath/java" inputs.dir(antlrDirectory) outputs.dir(groovyOutDir) outputs.dir(javaOutDir) doFirst { new File(groovyOutDir).mkdirs() new File(javaOutDir).mkdirs() ant { taskdef(name: 'antlr', classname: 'org.apache.tools.ant.taskdefs.optional.ANTLR', classpath: configurations.antlr.asPath) mkdir dir: ext.groovyParserDirectory antlr(target: "$ext.antlrDirectory/groovy.g", outputdirectory: ext.groovyOutDir) { classpath path: configurations.compile.asPath } antlr(target: "$ext.javaParserDirectory/java.g", outputdirectory: ext.javaOutDir) { classpath path: configurations.compile.asPath } } } } apply from: 'gradle/utils.gradle' apply from: 'wrapper.gradle' task dgmConverter(dependsOn:compileJava) { description = 'Generates DGM info file required for faster startup.' def classesDir = sourceSets.main.output.classesDir def classpath = files(classesDir, configurations.compile).asPath //main = 'org.codehaus.groovy.tools.DgmConverter' //args = ['--info', classesDir.absolutePath] doFirst { file("$classesDir/META-INF").mkdirs() // we use ant.java because Gradle is a bit "too smart" with JavaExec // as it will invalidate the task if classpath changes, which will // happen once Groovy files are compiled ant.java(classname:'org.codehaus.groovy.tools.DgmConverter', classpath: classpath) { arg(value: '--info') arg(value: classesDir.absolutePath) } } inputs.files fileTree('src').include('**/*GroovyMethods.java') outputs.file file("${classesDir}/META-INF/dgminfo") } compileJava { dependsOn ensureGrammars, exceptionUtils options.fork(memoryMaximumSize: javacMain_mx) } // Gradle classloading magic with Groovy will only work if it finds a *jar* // on classpath. This "bootstrap jar" contains the minimal compiler, without .groovy compiled files task bootstrapJar { dependsOn compileJava, dgmConverter def destinationDir = file("$buildDir/bootstrap") def archiveName = "groovy-${version}-bootstrap.jar" ext.archivePath = file("$destinationDir/$archiveName") doLast { // we use ant.jar because Gradle is a bit "too smart" with JavaExec // as it will invalidate the task if classpath changes, which will // happen once Groovy files are compiled destinationDir.mkdirs() ant.jar( destfile: archivePath, basedir: file(sourceSets.main.output.classesDir) ) } inputs.property('indy', useIndy()) inputs.files sourceSets.main.allJava outputs.file archivePath } compileGroovy.dependsOn bootstrapJar allprojects { tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } tasks.withType(GroovyCompile) { groovyOptions.fork(memoryMaximumSize: groovycMain_mx) groovyOptions.encoding = 'UTF-8' groovyClasspath = files( rootProject.compileJava.classpath, rootProject.bootstrapJar.archivePath ) classpath = classpath + groovyClasspath } if (useIndy()) { tasks.withType(GroovyCompile) { logger.info("Building ${project.name}:${name} with InvokeDynamic support activated") groovyOptions.optimizationOptions.indy = true sourceCompatibility = 1.7 targetCompatibility = 1.7 } tasks.withType(JavaCompile) { sourceCompatibility = 1.7 targetCompatibility = 1.7 } jar { classifier = 'indy' } } } compileTestGroovy { groovyOptions.fork(memoryMaximumSize: groovycTest_mx) } // TODO superfluous to check for JDK7 for Gradle version 3.2+ but leave for future? task checkCompatibility { doLast { assert JavaVersion.current().java7Compatible } } if (!JavaVersion.current().java7Compatible) { logger.lifecycle ''' **************************************** WARNING ******************************************** ****** You are running the build with an older JDK. NEVER try to release with 1.6. ****** ****** You must use a JDK 1.7+ in order to compile all features of the language. ****** ********************************************************************************************* ''' } apply from: 'gradle/test.gradle' apply from: 'gradle/groovydoc.gradle' apply from: 'gradle/docs.gradle' apply from: 'gradle/assemble.gradle' apply from: 'gradle/upload.gradle' apply from: 'gradle/idea.gradle' apply from: 'gradle/eclipse.gradle' apply from: 'gradle/codehaus.gradle' apply from: 'gradle/quality.gradle' // If a local configuration file for tweaking the build is present, apply it if (file('user.gradle').exists()) { apply from: 'user.gradle' } apply from: 'gradle/signing.gradle' // UNCOMMENT THE FOLLOWING TASKS IF YOU WANT TO RUN LICENSE CHECKING //task licenseFormatCustom(type:nl.javadude.gradle.plugins.license.License) { // source = fileTree(dir:"src").include ("**/*.java",'**/*.groovy','**.html','**.css','**.xml','**/*.properties','**/*.properties') //} // //task licenseFormatGradle(type:nl.javadude.gradle.plugins.license.License) { // source = files(fileTree(dir:'.').include('**/*.gradle'),fileTree('buildSrc').include('**/*.groovy')) // mapping('gradle','JAVADOC_STYLE') //} // //licenseFormat.dependsOn licenseFormatCustom //licenseFormat.dependsOn licenseFormatGradle groovy-2.4.17/buildSrc/000077500000000000000000000000001351304321600146775ustar00rootroot00000000000000groovy-2.4.17/buildSrc/build.gradle000066400000000000000000000015111351304321600171540ustar00rootroot00000000000000/* * 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. */ buildDir = 'target'groovy-2.4.17/buildSrc/src/000077500000000000000000000000001351304321600154665ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/000077500000000000000000000000001351304321600164125ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/groovy/000077500000000000000000000000001351304321600177375ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/groovy/org/000077500000000000000000000000001351304321600205265ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/groovy/org/codehaus/000077500000000000000000000000001351304321600223215ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/groovy/org/codehaus/groovy/000077500000000000000000000000001351304321600236465ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/groovy/org/codehaus/groovy/gradle/000077500000000000000000000000001351304321600251045ustar00rootroot00000000000000WriteExtensionDescriptorTask.groovy000066400000000000000000000036601351304321600341520ustar00rootroot00000000000000groovy-2.4.17/buildSrc/src/main/groovy/org/codehaus/groovy/gradle/* * 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 org.codehaus.groovy.gradle import org.gradle.api.DefaultTask import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.Input import org.gradle.api.tasks.OutputFile /** * A Gradle task to generate module descriptor files for Groovy extension modules. * * @author Cedric Champeau */ class WriteExtensionDescriptorTask extends DefaultTask { String description = 'Generates the org.codehaus.groovy.runtime.ExtensionModule descriptor file of a module' @Input String extensionClasses = '' @Input String staticExtensionClasses = '' @OutputFile File descriptor = computeDescriptorFile() private File computeDescriptorFile() { def metaInfDir = new File("${project.buildDir}/classes/main/META-INF/services") return new File(metaInfDir, "org.codehaus.groovy.runtime.ExtensionModule") } @TaskAction def writeDescriptor() { descriptor.parentFile.mkdirs() descriptor.withWriter { it << """moduleName=${project.name} moduleVersion=${project.version} extensionClasses=${extensionClasses} staticExtensionClasses=${staticExtensionClasses}""" } } } groovy-2.4.17/config/000077500000000000000000000000001351304321600143755ustar00rootroot00000000000000groovy-2.4.17/config/binarycompatibility/000077500000000000000000000000001351304321600204535ustar00rootroot00000000000000groovy-2.4.17/config/binarycompatibility/binarycompat-report.groovy000066400000000000000000000146651351304321600257370ustar00rootroot00000000000000/* * 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. */ /** * A template which generates an HTML report from the bincompat XML report */ modelTypes = { String title String baseline String archive Map>> violations } def severityMapping = [ error : 'danger', warning: 'warning', info : 'info', ignore : 'success' ] yieldUnescaped '' html { head { meta 'charset': "utf-8" meta 'http-equiv': "content-type", content: "text/html; charset=utf-8" meta 'http-equiv': "X-UA-Compatible", content: "IE=edge" meta name: "viewport", content: "width=device-width, initial-scale=1" title(title) link href: "http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css", rel: "stylesheet" link href: "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css", rel: "stylesheet" link href: "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css", rel: "stylesheet" } body { div(class:'navbar navbar-inverse navbar-fixed-top', role:'navigation') { div(class:'container') { div(class:'navbar-header') { button(type:'button', class:'navbar-toggle', 'data-toggle':'collapse', 'data-target':'navbar-collaspe') { span(class:'sr-only', 'Toggle navigation') span(class:'icon-bar'){} span(class:'icon-bar'){} span(class:'icon-bar'){} } a(class:'navbar-brand',href:'#', 'Binary compatibility report') } div(class:'navbar-collapse collapse') { ul(class:"nav navbar-nav") { li(class: 'dropdown') { a(id: 'severityDropdown', href: '#', class: 'dropdown-toggle', 'data-toggle': 'dropdown', 'Severity ') ul(class: "dropdown-menu dropdown-severity", role: "menu") { li(role: 'presentation', class: 'active') { a(role: 'menuitem', tabindex: '-1', href: '#', 'All levels') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Error') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Warning') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Info') } } } } } } } div(class: 'container') { div(class:'jumbotron') { div(class:'container') { div(class: 'page-header') { h1 'Binary compatibility' p "Comparing ${archive} to reference ${baseline}" p { yield "Be warned that this report is not perfect and depends on what " a(href: 'https://github.com/siom79/japicmp', 'JApicmp') yield " is capable to detect." } } } } violations.each { fqcn, classViolations -> def errors = classViolations.keySet() def severities = errors.collect { "severity-${it}" } div(class: "panel panel-default ${severities.join(' ')}") { div(class: "panel-heading") { h3(class: 'panel-title', "Class $fqcn") } div(class: 'panel-body') { table(class: "table table-striped table-bordered") { tbody { classViolations.each { err, list -> list.each { item -> tr(class: "bincompat-error severity-${err}") { td { h4 { span(class: "label label-${severityMapping[err]}", err.capitalize()) } } td { span(item) } } } } } } } } } script(src: "http://code.jquery.com/jquery-1.11.0.min.js") {} script(src: "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js") {} script { yieldUnescaped ''' $(document).ready(function () { var severity = null; doFilter(); function doFilter() { var severityClass = "severity-" + severity; $('.panel').hide(); $('.bincompat-error').hide(); $('.bincompat-error').filter(function () { return (severity==null || $(this).hasClass(severityClass)); }).show(); $('.panel').filter(function () { return (severity==null || $(this).hasClass(severityClass)); }).show(); } $(".dropdown-severity li a").click(function() { severity = $(this).text().toLowerCase(); if (severity==="all levels") { severity = null; } doFilter(); }); });''' } } } }groovy-2.4.17/config/bnd/000077500000000000000000000000001351304321600151405ustar00rootroot00000000000000groovy-2.4.17/config/bnd/groovy-all.bnd000066400000000000000000000016341351304321600177240ustar00rootroot00000000000000# 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. version= @GROOVY_BUNDLE_VERSION@ -nouses= true Export-Package= *;version=${version} Import-Package= *;resolution:=optional groovy-2.4.17/config/bnd/groovy.bnd000066400000000000000000000016661351304321600171630ustar00rootroot00000000000000# 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. version= @GROOVY_BUNDLE_VERSION@ -nouses= true Export-Package= *;version=${version} Import-Package= antlr, org.objectweb.asm, *;resolution:=optional groovy-2.4.17/config/checkstyle/000077500000000000000000000000001351304321600165335ustar00rootroot00000000000000groovy-2.4.17/config/checkstyle/checkstyle-report.groovy000066400000000000000000000171511351304321600234560ustar00rootroot00000000000000/* * 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. */ /** * A template which generates an HTML report from the checkstyle XML report */ yieldUnescaped '' def severityMapping = [ error : 'danger', warning: 'warning', info : 'info', ignore : 'success' ] def github = { path, line=null -> def localPath = (path - project.rootDir).replaceAll('\\\\','/') def link = """https://github.com/apache/groovy/blob/master$localPath${line?"#L$line":""}""" if (line) { "$line" } else { " $link" } } html { head { meta 'charset': "utf-8" meta 'http-equiv': "content-type", content: "text/html; charset=utf-8" meta 'http-equiv': "X-UA-Compatible", content: "IE=edge" meta name: "viewport", content: "width=device-width, initial-scale=1" title "Checkstyle report for ${project.name}" link href: "http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css", rel: "stylesheet" link href: "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css", rel: "stylesheet" link href: "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css", rel: "stylesheet" } body { div(class:'navbar navbar-inverse navbar-fixed-top', role:'navigation') { div(class:'container') { div(class:'navbar-header') { button(type:'button', class:'navbar-toggle', 'data-toggle':'collapse', 'data-target':'navbar-collaspe') { span(class:'sr-only', 'Toggle navigation') span(class:'icon-bar'){} span(class:'icon-bar'){} span(class:'icon-bar'){} } a(class:'navbar-brand',href:'#', 'Checkstyle report') } div(class:'navbar-collapse collapse') { ul(class:"nav navbar-nav") { li(class: 'dropdown') { a(id: 'severityDropdown', href: '#', class: 'dropdown-toggle', 'data-toggle': 'dropdown', 'Severity ') ul(class: "dropdown-menu dropdown-severity", role: "menu") { li(role: 'presentation', class: 'active') { a(role: 'menuitem', tabindex: '-1', href: '#', 'All levels') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Error') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Warning') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Info') } li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', 'Ignore') } } } Set rules = files.collect { it.errors.collect { it.source } }.flatten() li(class: 'dropdown') { a(id: 'rulesDropdown', href: '#', class: 'dropdown-toggle', 'data-toggle': 'dropdown', 'Rules ') ul(class: "dropdown-menu dropdown-rule", role: "menu") { li(role: 'presentation', class: 'active') { a(role: 'menuitem', tabindex: '-1', href: '#', 'All rules') } rules.each { rule -> li(role: 'presentation') { a(role: 'menuitem', tabindex: '-1', href: '#', rule) } } } } } } } } div(class: 'container') { div(class:'page-header') { h1("Checkstyle report for project ${project.name}") } files.each { file -> def errors = file.errors Set severities = errors.collect { "severity-${it.severity}" } Set panelRules = errors.collect { "rule-${it.source.toLowerCase()}" } div(class: "panel panel-default ${severities.join(' ')} ${panelRules.join(' ')}") { div(class: "panel-heading") { h3(class: 'panel-title', github(file.name)) } div(class: 'panel-body') { table(class: "table table-striped table-bordered") { tbody { errors.each { err -> tr(class:"checkstyle-error severity-${err.severity} rule-${err.source.toLowerCase()}") { td { h4 { span(class: "label label-${severityMapping[err.severity]}", err.severity.capitalize()) } } td { span "At line ${github(file.name, err.line)}, $err.message" } } } } } } } } script(src: "http://code.jquery.com/jquery-1.11.0.min.js") {} script(src: "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js") {} script { yieldUnescaped '''$(document).ready(function () { var severity = null; var rule = null; doFilter(); function doFilter() { var severityClass = "severity-" + severity; var ruleClass = "rule-" + rule; $('.panel').hide(); $('.checkstyle-error').hide(); $('.checkstyle-error').filter(function () { return (severity==null || $(this).hasClass(severityClass)) && (rule==null || $(this).hasClass(ruleClass)); }).show(); $('.panel').filter(function () { return (severity==null || $(this).hasClass(severityClass)) && (rule==null || $(this).hasClass(ruleClass)); }).show(); } $(".dropdown-severity li a").click(function() { rule = null; severity = $(this).text().toLowerCase(); if (severity==="all levels") { severity = null; } doFilter(); }); $(".dropdown-rule li a").click(function() { severity = null; rule = $(this).text().toLowerCase(); if (rule==="all rules") { rule = null; } doFilter(); }); });''' } } } } groovy-2.4.17/config/checkstyle/checkstyle.xml000066400000000000000000000202201351304321600214070ustar00rootroot00000000000000 groovy-2.4.17/config/checkstyle/codeHeader.txt000066400000000000000000000016111351304321600213160ustar00rootroot00000000000000^/\*$ ^ \* 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\.$ ^ \*.*groovy-2.4.17/config/codenarc/000077500000000000000000000000001351304321600161535ustar00rootroot00000000000000groovy-2.4.17/config/codenarc/codenarc.groovy000066400000000000000000000370421351304321600212060ustar00rootroot00000000000000/* * 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. */ ruleset { ruleset('rulesets/naming.xml') { exclude 'PackageName' { regex = '^[a-z]([a-zA-Z\\.0-9])*\\b' } 'ClassName' { regex = '^[A-Z]([a-zA-Z0-9$_])*\\b' doNotApplyToClassNames='$Temp,fileNameFinderTest,rayMain' } 'FieldName' { regex = '^[a-z]([a-zA-Z0-9$])*\\b' finalRegex = '^[a-z]([a-zA-Z0-9$])*\\b' staticFinalRegex = '^[A-Z]([A-Z0-9$_])*\\b|^serialVersionUID\\b' staticRegex = '^[A-Z]([A-Z0-9$_])*\\b' doNotApplyToClassNames='Entity,AstNodeToScriptVisitor,LookAndFeelHelper,SwingBuilder,Console,' + 'JavadocAssertionTestBuilder,JavadocAssertionTestSuite,Main,Groovysh,Parser,' + 'AliasTargetProxyCommand,WorkerThread,Cheddar,CategoryTestPropertyCategory,' + 'GroovyClosureMethodsTest,SingletonBugPrivate,SingletonBugProtected,' + 'GroovyInnerEnumBug$MyEnum,GroovyInnerEnumBug,' + 'CategoryTestHelperPropertyReplacer,PrimitiveTypeFieldTest,I3830,Cheese,' + 'SingletonBugTest,ClosureWithStaticVariablesBug,Groovy1018_Bug,Groovy3830Bug,Groovy4386_Bug,' + 'GroovyInnerEnumBug,GroovySwingTestCase,GpathSyntaxTestSupport,MixedMarkupTestSupport,' + 'TraversalTestSupport,CallClosureFieldAsMethodTest' } 'PropertyName' { regex = '^[a-z]([a-zA-Z0-9$])*\\b' finalRegex = '^[a-z]([a-zA-Z0-9$])*\\b' staticFinalRegex = '^[A-Z]([A-Z0-9$_])*\\b|^serialVersionUID\\b' staticRegex = '^[A-Z]([A-Z0-9$_])*\\b' doNotApplyToClassNames='groovy.inspect.swingui.AstNodeToScriptVisitor,groovy.inspect.swingui.ScriptToTreeNodeAdapter,' + 'groovy.swing.factory.TitledBorderFactory,groovy.ui.Console,groovy.ui.OutputTransforms,' + 'org.codehaus.groovy.tools.shell.commands.HistoryCommand,org.codehaus.groovy.tools.shell.commands.PurgeCommand,' + 'org.codehaus.groovy.tools.shell.commands.RecordCommand,org.codehaus.groovy.tools.shell.commands.ShadowCommand,' + 'org.codehaus.groovy.tools.shell.commands.ShowCommand,org.codehaus.groovy.tools.shell.ComplexCommandSupport,' + 'groovy.bugs.StaticPropertyFoo,groovy.bugs.Groovy3135Bug,groovy.util.XmlParserTest,' + 'org.codehaus.groovy.runtime.PerInstanceMetaClassTest,groovy.StaticImportChild,' + 'gls.scope.VariablePrecedenceTest,groovy.bugs.Groovy3069Bug,groovy.StaticImportTarget,' + 'gls.scope.VariablePrecedenceTest,groovy.bugs.Groovy3069Bug,groovy.mock.interceptor.Baz,' + 'groovy.bugs.Groovy2706Bug,groovy.sql.TestHelper,org.codehaus.groovy.runtime.WriterAppendTest,' + 'groovy.bugs.Groovy3135Bug,groovy.mock.interceptor.Baz,groovy.ReadLineTest,' + 'groovy.bugs.TedsClosureBug,groovy.tree.ClosureClassLoaderBug,groovy.tree.NestedClosureBugTest,' + 'groovy.tree.SmallTreeTest,groovy.ReadLineTest,groovy.bugs.Groovy3135Bug,' + 'org.codehaus.groovy.runtime.DateGDKTest,groovy.sql.PersonDTO,groovy.bugs.One,' + 'groovy.bugs.Two,org.codehaus.groovy.runtime.FileAppendTest,org.codehaus.groovy.runtime.WriterAppendTest,' + 'org.codehaus.groovy.runtime.FileAppendTest,org.codehaus.groovy.runtime.WriterAppendTest,groovy.sql.PersonDTO,' + 'groovy.bugs.Groovy3135Bug,Sphere,groovy.sql.PersonDTO,groovy.bugs.Groovy3135Bug,' + 'gls.enums.GrooyColors3693,groovy.sql.PersonDTO,groovy.bugs.HasStaticFieldSomeClass,groovy.PrintTest,' + 'groovy.bugs.StaticClosurePropertyBug,groovy.bugs.Groovy3311Bug,groovy.StaticImportParent,' + 'org.codehaus.groovy.transform.TestTransform,org.codehaus.groovy.classgen.asm.InstructionSequenceHelperClassTest,' + 'groovy.bugs.Groovy3511Bug,groovy.bugs.Groovy3135Bug,groovy.bugs.Groovy2556Bug,' + 'groovy.mock.interceptor.Baz,org.codehaus.groovy.ast.builder.AstBuilderFromCodeTest,' + 'groovy.bugs.UseStaticInClosureBug,groovy.bugs.Groovy2556Bug,' + 'groovy.ReadLineTest,org.codehaus.groovy.runtime.FileAppendTest,org.codehaus.groovy.runtime.WriterAppendTest,' + 'org.codehaus.groovy.transform.TestTransform,groovy.bugs.ClosureWithStaticVariablesBug' } 'VariableName' { regex = '^[a-z]([a-zA-Z0-9$])*\\b' finalRegex = '^[a-z]([a-zA-Z0-9$])*\\b' doNotApplyToClassNames='groovy.GroovyClosureMethodsTest,groovy.RegularExpressionsTest,groovy.NumberMathTest,' + 'groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,' + 'groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,' + 'groovy.NumberMathTest,groovy.RegularExpressionsTest,' + 'groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,' + 'groovy.RegularExpressionsTest,groovy.NumberMathTest,groovy.NumberMathTest,' + 'groovy.NumberMathTest,groovy.ValidNameTest,groovy.ValidNameTest,' + 'org.codehaus.groovy.runtime.PerInstanceMetaClassTest,' + 'groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,' + 'groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,groovy.NumberMathTest,' + 'gls.scope.NameResolvingTest,groovy.util.AntTest,groovy.sql.SqlCacheTest,' + 'groovy.operator.NegateListsTest,org.codehaus.groovy.reflection.WeakMapTest,' + 'groovy.RegularExpressionsTest,gls.scope.NameResolvingTest' } 'MethodName' { doNotApplyToClassNames='groovy.swing.SwingBuilder,groovy.$Temp,groovy.bugs.Groovy4119Bug,' + 'groovy.lang.MetaClassRegistryTest,groovy.lang.MixinTest,' + 'groovy.swing.TitledBorderFactoryJustificationTest' doNotApplyToFilesMatching='.*spectralnorm\\.groovy' } 'ParameterName' { doNotApplyToClassNames='groovy.bugs.MyDelegatingMetaClass' doNotApplyToFilesMatching='.*spectralnorm\\.groovy' } 'ConfusingMethodName' { doNotApplyToClassNames='Groovy1059Foo' } exclude 'FactoryMethodName' // many violations } ruleset('rulesets/unused.xml') { 'UnusedVariable' { doNotApplyToClassNames = 'SourceBaseTestCase,SAXTest,groovy.ForLoopTest,groovy.bugs.Groovy3894Bug,' + 'ExpandoMetaClassTest,ExceptionTest,JSR223Test,' + 'groovy.util.GroovyShellTestCase,org.codehaus.groovy.tools.shell.ShellRunner,' + 'groovy.bugs.Bytecode7Bug,groovy.mock.interceptor.HalfMockTest,' + 'groovy.mock.interceptor.MockSingleCallTest,groovy.mock.interceptor.StubSingleCallTest,' + 'groovy.operator.TernaryOperatorsTest,groovy.swing.SwingBuilderTableTest,' + 'groovy.swing.SwingBuilderTest,groovy.util.BuilderSupportTest,' + 'groovy.util.GroovyScriptEngineTest,groovy.util.ObservableMapTest,' + 'groovy.xml.NamespaceNodeGPathTest,groovy.bugs.ClassGeneratorFixesTest,' + 'groovy.bugs.ClosureWithBitwiseDefaultParamTest,groovy.bugs.ConstructorThisCallBug,' + 'groovy.bugs.InconsistentStackHeightBug,groovy.bugs.InterfaceImplBug,' + 'groovy.bugs.TedsClosureBug,org.codehaus.groovy.ast.builder.AstBuilderFromCodeTest,' + 'SubscriptTest,UnsafeNavigationTest,' + 'GStringTest,GeneratorTest,GroovyClosureMethodsTest,' + 'GroovyMethodsTest,ImmutableModificationTest,LittleClosureTest,' + 'NumberMathTest,OptionalReturnTest,OverridePropertyGetterTest,' + 'PrivateVariableAccessFromAnotherInstanceTest,PropertyTest,' + 'gls.annotations.closures.CallOnOwner,gls.annotations.closures.JavaCompatibility,' + 'gls.annotations.closures.CallOnThisObject,gls.annotations.closures.JavaCompatibilityParameterized,' + 'gls.annotations.closures.UnqualifiedCall,groovy.CompileOrderTest,' + 'gls.annotations.closures.ClosureWithParameters,EscapedUnicodeTest,' + 'groovy.bugs.Groovy2365Base,groovy.bugs.Groovy249_Bug,' + 'groovy.bugs.Groovy3139Bug,groovy.bugs.Get2,groovy.bugs.Groovy3511Bug,' + 'org.codehaus.groovy.tools.LoaderConfigurationTest' } 'UnusedPrivateField' { doNotApplyToClassNames='gls.annotations.closures.CallOnOwner,gls.annotations.closures.CallOnThisObject,' + 'gls.annotations.closures.UnqualifiedCall,gls.annotations.closures.ClosureWithParameters,' + 'gls.annotations.closures.JavaCompatibility,gls.annotations.closures.JavaCompatibilityParameterized,' + 'groovy.Foo,groovy.Singlet' } 'UnusedPrivateMethod' { doNotApplyToClassNames='org.codehaus.groovy.ast.builder.AstBuilder,org.codehaus.groovy.ast.builder.AstSpecificationCompiler,' + 'StringMethodName,Foo' } 'UnusedPrivateMethodParameter' { doNotApplyToClassNames='CurryFoo4170,AssertionRenderingTest' } 'UnusedObject' { doNotApplyToClassNames='groovy.ui.OutputTransforms,org.codehaus.groovy.ast.builder.AstSpecificationCompiler,groovy.lang.GroovyCodeSourceTest' } } ruleset('rulesets/imports.xml') { 'UnnecessaryGroovyImport' { doNotApplyToFileNames='JListProperties.groovy,GridBagFactory.groovy,Groovy558_616_Bug.groovy' } 'DuplicateImport' { doNotApplyToFileNames='StaticImportTest.groovy,' } exclude 'ImportFromSamePackage' // too many to worry about, review later exclude 'MisorderedStaticImports' // too many to worry about, opposite to IDEA default } ruleset('rulesets/logging.xml') { exclude 'SystemOutPrint' // too many to worry about, review later exclude 'SystemErrPrint' // too many to worry about, review later } ruleset('rulesets/braces.xml') { exclude 'ForStatementBraces' // for statements without braces seems acceptable in our coding standards exclude 'IfStatementBraces' // if statements without braces seems acceptable in our coding standards exclude 'WhileStatementBraces' // while statements without braces seems acceptable in our coding standards exclude 'ElseBlockBraces' // else statements without braces seems acceptable in our coding standards } ruleset('rulesets/basic.xml') { 'DeadCode' { doNotApplyToClassNames='ThrowTest' } } ruleset('rulesets/size.xml') { exclude 'CyclomaticComplexity' // too many to worry about, review later exclude 'AbcMetric' // too many to worry about, review later exclude 'MethodSize' // too many to worry about, review later exclude 'MethodCount' // too many to worry about, review later exclude 'ClassSize' // too many to worry about, review later exclude 'MethodSizeCount' // too many to worry about, review later exclude 'NestedBlockDepth' // too many to worry about, review later } ruleset('rulesets/junit.xml') { exclude 'JUnitStyleAssertions' // too many to worry about, review later exclude 'JUnitTestMethodWithoutAssert' // too many to worry about, review later exclude 'JUnitLostTest' //we do not use the @Test annotation, so it is o.k. to use JUnit 4 classes and have test* Methods without this annotation } ruleset('rulesets/concurrency.xml') { exclude 'SynchronizedMethod' // OK within Groovy exclude 'WaitOutsideOfWhileLoop' // too many to worry about, review later exclude 'SynchronizedOnThis' // too many to worry about, review later } ruleset('rulesets/unnecessary.xml') { 'UnnecessaryInstantiationToGetClass' { doNotApplyToClassNames='SpreadDotTest' } 'ConsecutiveStringConcatenation' { doNotApplyToClassNames='groovy.DynamicMemberTest,groovy.StaticImportTest,groovy.bugs.Groovy675_Bug,groovy.bugs.MorgansBug,' + 'groovy.bugs.WriteOnlyPropertyBug,groovy.operator.StringOperatorsTest,groovy.swing.SwingBuilderTest,' + 'org.codehaus.groovy.runtime.powerassert.EvaluationTest,groovy.json.JsonLexerTest' } 'ConsecutiveLiteralAppends' { doNotApplyToClassNames='groovy.bugs.ByteIndexBug' } exclude 'UnnecessaryPackageReference' // failing for all scripts } ruleset('rulesets/dry.xml') { exclude 'DuplicateNumberLiteral' // too many to worry about, review later exclude 'DuplicateStringLiteralRule' // too many to worry about, review later exclude 'DuplicateStringLiteral' // too many to worry about, review later } ruleset('rulesets/design.xml') { 'CloseWithoutCloseable' { doNotApplyToClassNames='Log4jInterceptingAppender' } exclude 'EmptyMethodInAbstractClass' // too many to worry about, review later exclude 'ImplementationAsType' // too many to worry about, review later exclude 'AbstractClassWithoutAbstractMethod' // too many to worry about, review later exclude 'ConstantsOnlyInterface' // too many to worry about, review later exclude 'FinalClassWithProtectedMember' // too many to worry about, review later } ruleset('rulesets/exceptions.xml') { exclude 'ThrowRuntimeException' // too many to worry about, review later exclude 'ThrowException' // too many to worry about, review later exclude 'CatchThrowable' // too many to worry about, review later exclude 'CatchException' // too many to worry about, review later exclude 'CatchRuntimeException' // too many to worry about, review later exclude 'CatchNullPointerException' // too many to worry about, review later exclude 'ReturnNullFromCatchBlock' // too many to worry about, review later exclude 'ThrowNullPointerException' // too many to worry about, review later exclude 'CatchIllegalMonitorStateException' // too many to worry about, review later exclude 'CatchError' // too many to worry about, review later exclude 'ExceptionExtendsError' // too many to worry about, review later exclude 'ThrowError' // too many to worry about, review later } } groovy-2.4.17/config/licensing/000077500000000000000000000000001351304321600163505ustar00rootroot00000000000000groovy-2.4.17/config/licensing/HEADER.txt000066400000000000000000000014011351304321600200350ustar00rootroot00000000000000 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. groovy-2.4.17/gradle.properties000066400000000000000000000023571351304321600165130ustar00rootroot00000000000000# 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. groovyVersion = 2.4.17 # bundle version format: major('.'minor('.'micro('.'qualifier)?)?)? (first 3 only digits) groovyBundleVersion = 2.4.17 gradle_version=2.14.1 groovyJUnit_ms=512m groovyJUnit_mx=1g groovyJUnit_permSize=64m groovyJUnit_maxPermSize=256m javacMain_mx=512m groovycMain_mx=1g groovycTest_mx=1g javaDoc_mx=1g org.gradle.jvmargs=-Xms800m -Xmx1500m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+IgnoreUnrecognizedVMOptions groovy-2.4.17/gradle/000077500000000000000000000000001351304321600143665ustar00rootroot00000000000000groovy-2.4.17/gradle/asciidoctor.gradle000066400000000000000000000126241351304321600200560ustar00rootroot00000000000000/* * 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. */ apply plugin: 'org.asciidoctor.gradle.asciidoctor' asciidoctor { def (full, major, minor, patch, flavor) = (groovyVersion =~ /(\d+)\.(\d++)\.(\d+)(?:-(.+))?/)[0] logDocuments = true sourceDir = project.file('src/spec/doc') attributes([ 'rootProjectDir': rootProject.projectDir, 'source-highlighter': 'prettify', groovyversion: groovyVersion, 'groovy-major-version': major, 'groovy-minor-version': minor, 'groovy-patch-version': patch, 'groovy-full-version': groovyVersion, 'groovy-short-version': "${major}.${minor}", doctype: 'book', revnumber: groovyVersion, icons: 'font', toc2: '', specfolder: 'src/spec/doc', linkcss: '', stylesheet: "assets/css/style.css", encoding: 'utf-8', toclevels: 10, numbered: '', sectanchors: '' ]) extensions { def baseUrls = [ jdk: "http://docs.oracle.com/javase/8/docs/api/index.html", gjdk: "http://docs.groovy-lang.org/${version}/html/groovy-jdk/index.html", gapi: "http://docs.groovy-lang.org/${version}/html/gapi/index.html", ] baseUrls.each { macroName, baseURL -> inlinemacro(name: macroName) { parent, target, attributes -> def (className, anchor) = target.split('#') as List options = [ "type" : ":link", "target": calculateDocUrl(baseURL, className, anchor) ] createInline(parent, "anchor", attributes.text?:target, attributes, options).render() } } } } // skip the asciidoctor task if there's no directory with asciidoc files asciidoctor.onlyIf { project.file('src/spec/doc').exists() } task asciidoctorAssets(type:Copy) { from project.fileTree('src/spec/assets') into "${asciidoctor.outputDir}/html5/assets" into "${rootProject.asciidoctor.outputDir}/html5/assets" } asciidoctor.finalizedBy asciidoctorAssets def adocSanityCheck = { file, text, errors -> Set localErrors = [] text.eachLine(1) { line,i -> if (line =~ /tag:[a-zA-Z0-9]/) { localErrors << "line $i misses semicolon. Should be tag::\n $line" } if (line =~ /end:[a-zA-Z0-9]/) { localErrors << "line $i misses semicolon. Should be end::\n $line" } if (line =~ /(tag|end)::[^\[\]]$/) { localErrors << "line $i contains incorrect tag definition (misses []):\n $line" } } localErrors.collect(errors) { " $file, $it" } } def htmlOutputSanityCheck = { file, text, errors -> Set localErrors = [] text.eachLine(1) { line,i -> if (line =~ /^={1,5} /) { localErrors << "line $i starting with asciidoctor raw markup:\n$line" } if (line =~ /<\/code>/) { localErrors << "contains empty code block, probably incorrect import of a tag." } if (line =~ /(gapi|jdk|gjdk):(.+?)/) { localErrors << "line $i starting with asciidoctor raw markup:\n$line" } } localErrors.collect(errors) { " $file, $it" } } asciidoctor { def errors = new LinkedHashSet() doFirst { def specTestDir = file('src/spec/test') if (specTestDir.exists()) { specTestDir.eachFileRecurse { file -> if (file.isFile()) { adocSanityCheck(file, file.getText('utf-8'), errors) } } } if (errors) { throw new GradleException("Incorrect Asciidoctor input:\n${errors.join('\n')}") } } doLast { def scripts = ''' ''' // gapi macro expansion outputDir.eachFileMatch(~'.*html') { File file -> def text = file.getText('UTF-8') text = text.replaceAll('', "$scripts") htmlOutputSanityCheck(file, text, errors) file.write(text, 'UTF-8') } if (errors) { throw new GradleException("Incorrect Asciidoctor output:\n${errors.join('\n')}") } } } String calculateDocUrl(String baseUrl, String className, String anchor) { if (className == "index") return baseUrl return baseUrl + "?" + className.replace('.', '/') + '.html' + (anchor ? '#' + anchor : '') } groovy-2.4.17/gradle/assemble.gradle000066400000000000000000000677721351304321600173640ustar00rootroot00000000000000/* * 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. */ import org.apache.tools.ant.filters.ReplaceTokens apply plugin: 'osgi' group = 'org.codehaus.groovy' archivesBaseName = 'groovy' ext.srcSpec = copySpec { from(projectDir) { exclude 'target', 'benchmark', 'subprojects/*/target', 'buildSrc/target', buildDir.path, 'classes/**', 'cruise/**', 'security/groovykeys', '.clover/*', 'local.build.properties', 'gradle/wrapper', 'gradlew', 'gradlew.bat', 'cobertura.ser', 'junitvmwatcher*.properties', 'out', 'artifactory.properties', // generated by the CI server 'gradle.properties.gz', // generated by the CI server '**/*.iml', // used by Intellij IDEA '**/*.ipr', // used by Intellij IDEA '**/*.iws', // used by Intellij IDEA '.settings', // used by Eclipse '.gradle', // used by Gradle 'buildSrc/.gradle' // used by Gradle } } ext.docSpec = copySpec { into('html/api') { from javadocAll.destinationDir } into('html/gapi') { from groovydocAll.destinationDir } into('html/documentation') { from "$buildDir/asciidoc/html5" } into('html/groovy-jdk') { from docGDK.destinationDir } into('licenses') { from 'licenses' include 'asciidoc-style-license.txt' include 'jquery-js-license.txt' include 'normalize-stylesheet-license.txt' } from "$projectDir/licenses/LICENSE-DOC" from "$projectDir/notices/NOTICE-BASE" rename 'LICENSE-DOC', 'LICENSE' rename 'NOTICE-BASE', 'NOTICE' } task copy(type: Copy) { into "$buildDir/meta" } ext.allManifest = manifest { attributes('Built-By': System.properties['user.name'], 'Extension-Name': 'groovy', 'Specification-Title': 'Groovy: a powerful, dynamic language for the JVM', 'Specification-Version': groovyBundleVersion, 'Specification-Vendor': 'The Apache Software Foundation', 'Implementation-Title': 'Groovy: a powerful, dynamic language for the JVM', 'Implementation-Version': groovyBundleVersion, 'Implementation-Vendor': 'The Apache Software Foundation', 'Bundle-ManifestVersion': '2', 'Bundle-Name': 'Groovy Runtime', 'Bundle-Description': 'Groovy Runtime', 'Bundle-Version': groovyBundleVersion, 'Bundle-Vendor': 'The Apache Software Foundation', 'Bundle-ClassPath': '.', 'Eclipse-BuddyPolicy': 'dependent', 'DynamicImport-Package': '*', 'Main-class': 'groovy.ui.GroovyMain') } ext.groovyOsgiManifest = { // Exclude the Bnd-LastModified attribute as it always triggers a rebuild without being really needed. from(allManifest) { eachEntry { details -> if (details.key == 'Bnd-LastModified') { details.exclude() } } } version = groovyBundleVersion instruction '-nouses', 'true' instruction 'Export-Package', "*;version=${groovyBundleVersion}" classpath = sourceSets.main.runtimeClasspath } ext.subprojectOsgiManifest = { // Exclude attributes not needed for subprojects. from(allManifest) { eachEntry { details -> if (details.key in ['Bnd-LastModified', 'Extension-Name', 'Bundle-Name', 'Bundle-Description', 'Main-class']) { details.exclude() } } } version = groovyBundleVersion instruction '-nouses', 'true' instruction 'Export-Package', "*;version=${groovyBundleVersion}" classpath = sourceSets.main.runtimeClasspath } jar { dependsOn('dgmConverter') metaInf { from("$projectDir/licenses/LICENSE-JARJAR") from("$projectDir/licenses") { into('licenses') include('asm-license.txt') include('antlr2-license.txt') } from("$projectDir/notices/NOTICE-JARJAR") from('src/main/META-INF/groovy-release-info.properties') { filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) } rename { String filename -> filename == 'LICENSE-JARJAR' ? 'LICENSE' : filename == 'NOTICE-JARJAR' ? 'NOTICE' : filename } } exclude '**/package-info.class', 'META-INF/groovy-release-info.properties' } allprojects { task jarjar(type:Jar, dependsOn: jar) { destinationDir = jar.destinationDir baseName = jar.baseName appendix = jar.appendix?"${jar.appendix}-jarjar":"jarjar" classifier = jar.classifier includeEmptyDirs = false def target = new File("${archivePath}.tmp") def targetTmp = new File("${archivePath}.tmp.1.tmp") doFirst { from zipTree(target) def keepUntouched = [ 'org/codehaus/groovy/cli/GroovyPosixParser*.class', 'groovy/util/CliBuilder*.class', 'groovy/util/OptionAccessor*.class', 'org/codehaus/groovy/tools/shell/util/HelpFormatter*.class' ].join(',') boolean isRoot = project == rootProject def gradleProject = project ant { taskdef name: 'jarjar', classname: 'com.tonicsystems.jarjar.JarJarTask', classpath: rootProject.configurations.tools.asPath jarjar(jarfile: targetTmp) { zipfileset( src: jar.archivePath, excludes: keepUntouched) // only groovy core will include the dependencies repackaged if (isRoot) { configurations.runtime.files.findAll { file -> ['antlr', 'asm', 'commons-cli'].any { file.name.startsWith(it) } && ['asm-attr', 'asm-util', 'asm-analysis'].every { !file.name.startsWith(it) } }.each { jarjarFile -> // explanation of excludes: // GROOVY-7386: stop copy of incorrect maven meta info // GROOVY-8387: we don't want module-info.class from any dependencies zipfileset(src: jarjarFile, excludes: 'META-INF/maven/commons-cli/commons-cli/*,META-INF/*,module-info.class') } zipfileset(src: configurations.runtime.files.find { file -> file.name.startsWith('asm-util') }, includes: 'org/objectweb/asm/util/Printer.class,org/objectweb/asm/util/Textifier.class,org/objectweb/asm/util/Trace*') } rule pattern: 'antlr.**', result: 'groovyjarjarantlr.@1' rule pattern: 'org.objectweb.**', result: 'groovyjarjarasm.@1' rule pattern: 'org.apache.commons.cli.**', result: 'groovyjarjarcommonscli.@1' } } def manifestSpec = isRoot ? groovyOsgiManifest : subprojectOsgiManifest manifest = osgiManifest { symbolicName = gradleProject.name instruction 'Import-Package', '*;resolution:=optional' classesDir = targetTmp } manifest(manifestSpec) def manifestPath = "${temporaryDir}/META-INF/MANIFEST.MF" manifest.writeTo(manifestPath) ant.copy(file: targetTmp, tofile: target) ant.jar(destfile: target, update: true, manifest: manifestPath) { zipfileset( src: jar.archivePath, includes: keepUntouched) } } doLast { target.delete() ant.delete(file: targetTmp, quiet: true, deleteonexit: true) } } if (project.name in ['groovy', 'groovy-test']) { task grooidjar(type: Jar) { onlyIf { !rootProject.useIndy() } destinationDir = jar.destinationDir baseName = jar.baseName appendix = jar.appendix classifier = jar.classifier ? "${jar.classifier}grooid" : 'grooid' includeEmptyDirs = false def target = new File("${archivePath}.tmp") boolean isRootProject = project==rootProject doFirst { from zipTree(target) ant { taskdef name: 'jarjar', classname: 'com.tonicsystems.jarjar.JarJarTask', classpath: rootProject.configurations.tools.asPath jarjar(jarfile: target) { zipfileset(dir: "$rootProject.projectDir/notices/", includes: isRootProject ? 'NOTICE-GROOIDJARJAR' : 'NOTICE-GROOID', fullpath: 'META-INF/NOTICE') zipfileset(src: jarjar.archivePath, excludes: 'META-INF/NOTICE') if (isRootProject) { zipfileset(src: rootProject.configurations.runtime.files.find { it.name.startsWith('openbeans') }, excludes: 'META-INF/*') } rule pattern: 'com.googlecode.openbeans.**', result: 'groovyjarjaropenbeans.@1' rule pattern: 'org.apache.harmony.beans.**', result: 'groovyjarjarharmonybeans.@1' rule pattern: 'java.beans.**', result: 'groovyjarjaropenbeans.@1' } } } doLast { target.delete() } } jarjar.finalizedBy(grooidjar) } } subprojects { sp -> jar { metaInf { if (file("${projectDir}/LICENSE").exists()) { from "${projectDir}/LICENSE" } else { from "${rootProject.projectDir}/licenses/LICENSE-BASE" } if (file("${projectDir}/NOTICE").exists()) { from "${projectDir}/NOTICE" } else { from "${rootProject.projectDir}/notices/NOTICE-BASE" } from("${rootProject.projectDir}/src/main/META-INF/groovy-release-info.properties") { filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) } rename { String filename -> filename == 'LICENSE-BASE' ? 'LICENSE' : filename == 'NOTICE-BASE' ? 'NOTICE' : filename } } exclude '**/package-info.class', 'META-INF/groovy-release-info.properties' } } def moduleJars() { modules()*.jar.archivePath } def mergeModuleDescriptors() { new File("$buildDir/tmp/").mkdirs() def extensionClasses = [] def staticExtensionClasses = [] modules().collect { new File("${it.buildDir}/classes/main/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule") }.findAll { it.exists() }.each { def props = new Properties() props.load(it.newInputStream()) extensionClasses += props.get('extensionClasses').split(',').findAll { it } staticExtensionClasses += props.get('staticExtensionClasses').split(',').findAll { it } } def descriptor = new File("$buildDir/tmp/org.codehaus.groovy.runtime.ExtensionModule") descriptor.withWriter('UTF-8') { it << '# This is a generated file, do not edit\n' it << 'moduleName=groovy-all\n' it << "moduleVersion=${project.version}\n" it << "extensionClasses=${extensionClasses.join(',')}\n" it << "staticExtensionClasses=${staticExtensionClasses.join(',')}\n" } descriptor } task replaceJarWithJarJar(dependsOn: allprojects.jarjar ) { description = "Overwrites normal JAR files with their JARJAR version" doLast { allprojects { def jarjarFile = tasks.jarjar.archivePath if (jarjarFile) { file(jar.archivePath).delete() ant.copy(file: jarjarFile, tofile: jar.archivePath) jarjarFile.delete() } } } inputs.files(allprojects.jarjar.archivePath) outputs.files(allprojects.jar.archivePath) } allprojects { rootProject.replaceJarWithJarJar.mustRunAfter(test) } task jarAll(type: Jar, dependsOn: replaceJarWithJarJar) { inputs.files(allprojects.jar.archivePath) ext.metaInfDir = "$buildDir/tmp/groovy-all-metainf" baseName = 'groovy-all' includeEmptyDirs = false if (rootProject.useIndy()) { classifier = 'indy' } doLast { def manifestPath = "$ext.metaInfDir/MANIFEST.MF" manifest.writeTo(manifestPath) copy { from "$projectDir/notices/NOTICE-ALLJARJAR" into owner.ext.metaInfDir rename('NOTICE-ALLJARJAR', 'NOTICE') } copy { from "$projectDir/licenses" into "$owner.ext.metaInfDir/licenses" include 'normalize-stylesheet-license.txt' include 'jsr223-license.txt' include 'jline2-license.txt' } copy { from "$projectDir/licenses/LICENSE-ALLJARJAR" into owner.ext.metaInfDir rename('LICENSE-ALLJARJAR', 'LICENSE') } copy { from(mergeModuleDescriptors()) into "$owner.ext.metaInfDir/services" } copy { into "$owner.ext.metaInfDir" } logger.info 'Packaging with jarjar' def archivePathTmp = new File("${archivePath}.1.tmp") ant { taskdef name: 'jarjar', classname: 'com.tonicsystems.jarjar.JarJarTask', classpath: configurations.tools.asPath jarjar(jarfile: archivePathTmp, manifest: "$owner.ext.metaInfDir/MANIFEST.MF") { zipfileset(dir: "$owner.ext.metaInfDir", prefix: 'META-INF') zipfileset(src: jar.archivePath, excludes:'META-INF/NOTICE,META-INF/LICENSE') moduleJars().each { zipfileset(src: it, excludes:'META-INF/NOTICE,META-INF/LICENSE') } } } manifest = osgiManifest { symbolicName = 'groovy-all' instruction 'Import-Package', '*;resolution:=optional' classesDir = archivePathTmp } manifest groovyOsgiManifest manifestPath = "${temporaryDir}/META-INF/MANIFEST.MF" manifest.writeTo(manifestPath) ant { copy(file: archivePathTmp, tofile: archivePath) jar(destfile: archivePath, update: true, index: true, manifest: manifestPath) { zipfileset(src: jar.archivePath, excludes:'META-INF') } delete(file: archivePathTmp, quiet: true, deleteonexit: true) } } } allprojects { task jarWithIndy(type: GradleBuild) { onlyIf rootProject.indyCapable description = 'Triggers an external build generating the indy jar' buildFile = 'build.gradle' startParameter.projectProperties['indy'] = true tasks = ['jar'] } } task jarAllWithIndy(type: GradleBuild) { onlyIf rootProject.indyCapable description = 'Triggers an external build generating the indy jarAll' buildFile = 'build.gradle' startParameter.projectProperties['indy'] = true tasks = ['jarAll'] } task jarAllAll(dependsOn: [jarAll, jarAllWithIndy]) { description = 'Generates groovy-all and groovy-all-indy jars' doFirst { if (useIndy()) { logger.lifecycle('InvokeDynamic support was activated but needs to be off for this pass. Disabling.') ext.useIndy = false } } } allprojects { tasks.withType(Test) { task -> jarAll.mustRunAfter(task) jarAllWithIndy.mustRunAfter(task) } } task sourceAllJar(type: Jar, dependsOn: { modules()*.sourceJar + rootProject.sourceJar }) { with sourceJar.rootSpec modules()*.sourceJar.each { with it.rootSpec } baseName = 'groovy-all' classifier = rootProject.useIndy() ? 'indy-sources' : 'sources' } allprojects { task javadocJar(type: Jar, dependsOn: javadoc) { classifier = rootProject.useIndy() ? 'indy-javadoc' : 'javadoc' from javadoc.destinationDir } task groovydocJar(type: Jar, dependsOn: groovydoc) { classifier = rootProject.useIndy() ? 'indy-groovydoc' : 'groovydoc' from groovydoc.destinationDir } } task javadocAllJar(type: Jar, dependsOn: javadocAll) { baseName = 'groovy-all' classifier = rootProject.useIndy() ? 'indy-javadoc' : 'javadoc' from javadocAll.destinationDir } task groovydocAllJar(type: Jar, dependsOn: groovydocAll) { baseName = 'groovy-all' classifier = rootProject.useIndy() ? 'indy-groovydoc' : 'groovydoc' from groovydocAll.destinationDir } ext.distSpec = copySpec { from("$projectDir/licenses/LICENSE-BINZIP") from("$projectDir/notices/NOTICE-BINZIP") rename { String filename -> filename == 'LICENSE-BINZIP' ? 'LICENSE' : filename == 'NOTICE-BINZIP' ? 'NOTICE' : filename } into('lib') { from jar.archivePath from { configurations.runtime.findAll { it.name.endsWith('jar') && !it.name.startsWith('openbeans-') && !it.name.startsWith('asm-') && !it.name.startsWith('antlr-') } + modules()*.jar.archivePath + modules().configurations.runtime*.findAll { it.name.endsWith('jar') && !it.name.contains('livetribe-jsr223') && !it.name.matches(/groovy-\d.*/) && !it.name.startsWith('asm-') && !it.name.startsWith('antlr-') && !it.name.startsWith('openbeans-') }.flatten() as Set } from('src/bin/groovy.icns') } into('indy') { from { new File(jar.archivePath.parent, "${jar.baseName}-${jar.version}-indy.jar") } from { modules()*.jar.collect { j -> new File(j.archivePath.parent, "${j.baseName}-${j.version}-indy.jar") } } } into('grooid') { from { new File(jar.archivePath.parent, "${jar.baseName}-${jar.version}-grooid.jar") } from { modules()*.jar.collect { j -> new File(j.archivePath.parent, "${j.baseName}-${j.version}-grooid.jar") } } } into('conf') { from 'src/conf' } into('bin') { from('src/bin') { filter(ReplaceTokens, tokens: [GROOVYJAR:jar.archiveName]) fileMode = 0755 exclude 'groovy.icns' } from('src/tools/org/codehaus/groovy/tools/groovy.ico') } into('licenses') { from 'licenses' include 'antlr2-license.txt' include 'asm-license.txt' include 'hamcrest-license.txt' include 'jline2-license.txt' include 'jsr166y-license.txt' include 'jsr223-license.txt' include 'junit-license.txt' include 'xstream-license.txt' } into('embeddable') { from jarAll.archivePath from { new File(jarAll.destinationDir, "${jarAll.baseName}-${jarAll.version}-indy.jar") } } } task distBin(type: Zip, dependsOn: [jar, jarAllAll, replaceJarWithJarJar]) { baseName = 'apache-groovy' appendix = 'binary' into("groovy-$version") { with distSpec } } task distDoc(type: Zip, dependsOn: doc) { baseName = 'apache-groovy' appendix = 'docs' into("groovy-$version") { with docSpec } } task syncDoc(type: Copy, dependsOn: doc) { inputs.files javadoc.outputs.files inputs.files groovydoc.outputs.files destinationDir(file("$buildDir/html")) into('api') { from javadoc.destinationDir } into('gapi') { from groovydoc.destinationDir } // groovy-jdk already at the correct place } task distSrc(type: Zip) { baseName = 'apache-groovy' appendix = 'src' into("groovy-$version") with srcSpec } def installDir = { project.hasProperty('groovy_installPath')?project.groovy_installPath: System.properties.installDirectory ?: "$buildDir/install" } task installGroovy(type: Sync, dependsOn: [checkCompatibility, distBin]) { description 'Generates a groovy distribution into an install directory' doLast { logger.lifecycle "Groovy installed under ${installDir()}" } with distSpec into installDir } import org.gradle.api.file.DuplicatesStrategy task dist(type: Zip, dependsOn: [checkCompatibility, distBin, distSrc, distDoc, syncDoc]) { description = 'Generates the binary, sources, documentation and full distributions' baseName = 'apache-groovy' duplicatesStrategy = DuplicatesStrategy.EXCLUDE appendix 'sdk' into "groovy-$version" from("$projectDir/licenses/LICENSE-SDK") from("$projectDir/notices/NOTICE-SDK") rename { String filename -> filename == 'LICENSE-SDK' ? 'LICENSE' : filename == 'NOTICE-SDK' ? 'NOTICE' : filename } with distSpec into('doc') { with docSpec } into('src') { with srcSpec } if ((version.endsWith('SNAPSHOT') && !groovyBundleVersion.endsWith('SNAPSHOT')) || (!version.endsWith('SNAPSHOT') && groovyBundleVersion.endsWith('SNAPSHOT'))) { throw new GradleException("Incoherent versions. Found groovyVersion=$version and groovyBundleVersion=$groovyBundleVersion") } } task updateLicenses { description = 'Updates the various LICENSE files' ext.licensesDir = "${projectDir}/licenses" ext.licenseBaseFile = "${licensesDir}/LICENSE-BASE" ext.licenseSrcFile = "${projectDir}/LICENSE" ext.licenseDocGeneratorFile = "${projectDir}/subprojects/groovy-docgenerator/LICENSE" ext.licenseGroovyDocFile = "${projectDir}/subprojects/groovy-groovydoc/LICENSE" ext.licenseGroovyshFile = "${projectDir}/subprojects/groovy-groovysh/LICENSE" ext.licenseJsr223File = "${projectDir}/subprojects/groovy-jsr223/LICENSE" ext.licenseAllJarJarFile = "${licensesDir}/LICENSE-ALLJARJAR" ext.licenseBinZipFile = "${licensesDir}/LICENSE-BINZIP" ext.licenseDocFile = "${licensesDir}/LICENSE-DOC" ext.licenseJarJarFile = "${licensesDir}/LICENSE-JARJAR" ext.licenseSdkFile = "${licensesDir}/LICENSE-SDK" inputs.files(licenseBaseFile, fileTree(licensesDir).include('*.txt')) outputs.files(licenseAllJarJarFile, licenseBinZipFile, licenseDocFile, licenseJarJarFile, licenseSrcFile, licenseDocGeneratorFile, licenseGroovyDocFile, licenseGroovyshFile, licenseJsr223File, licenseSdkFile) doLast { def srcFiles = fileTree(licensesDir).include('*-SRC*.txt').sort { it.name } def docFiles = fileTree(licensesDir).include('*-DOC*.txt').sort { it.name } def jarjarFiles = fileTree(licensesDir).include('*-JARJAR*.txt').sort { it.name } def allJarjarFiles = fileTree(licensesDir) { include '*-JARJAR*.txt' include '*-ALLJARJAR*.txt' }.sort { it.name } def binzipFiles = fileTree(licensesDir) { include '*-JARJAR*.txt' include '*-ALLJARJAR*.txt' include '*-BINZIP*.txt' }.sort { it.name } def docgeneratorFiles = fileTree(licensesDir).include('normalize-stylesheet-groovy-docgenerator.txt') def groovydocFiles = fileTree(licensesDir).include('normalize-stylesheet-groovy-groovydoc.txt') def groovyshFiles = fileTree(licensesDir).include('jline2-patch-ALLJARJAR-SRC.txt') def jsr223Files = fileTree(licensesDir).include('jsr223-ALLJARJAR-SRC.txt') def licenseHdr = '\n\n------------------------------------------------------------------------\n\n' [ (licenseAllJarJarFile) : allJarjarFiles, (licenseBinZipFile) : binzipFiles, (licenseDocFile) : docFiles, (licenseJarJarFile) : jarjarFiles, (licenseSrcFile) : srcFiles, (licenseDocGeneratorFile): docgeneratorFiles, (licenseGroovyDocFile) : groovydocFiles, (licenseGroovyshFile) : groovyshFiles, (licenseJsr223File) : jsr223Files, ].each { outFile, inFiles -> file(outFile).withWriter('utf-8') { writer -> writer << ([file(licenseBaseFile)] + inFiles).collect { it.text.replaceAll(/[\n\r]*$/, '') }.join(licenseHdr) + '\n' } } file(licenseSdkFile).withWriter { writer -> writer << [ file(licenseBinZipFile).text, "This convenience zip embeds Groovy's src and doc zips.\nSee also src/LICENSE " + "and doc/LICENSE files for additional license information." ].join(licenseHdr) + '\n' } } } task updateNotices { description = 'Updates the various NOTICE files' ext.noticesDir = "${projectDir}/notices" ext.noticeBaseFile = "${noticesDir}/NOTICE-BASE" ext.noticeSrcFile = "${projectDir}/NOTICE" ext.noticeGroovyConsoleFile = "${projectDir}/subprojects/groovy-console/NOTICE" ext.noticeAllJarJarFile = "${noticesDir}/NOTICE-ALLJARJAR" ext.noticeBinZipFile = "${noticesDir}/NOTICE-BINZIP" ext.noticeGrooidFile = "${noticesDir}/NOTICE-GROOID" ext.noticeGrooidJarJarFile = "${noticesDir}/NOTICE-GROOIDJARJAR" ext.noticeJarJarFile = "${noticesDir}/NOTICE-JARJAR" ext.noticeSdkFile = "${noticesDir}/NOTICE-SDK" inputs.files(noticeBaseFile, fileTree(noticesDir).include('*.txt')) outputs.files(noticeAllJarJarFile, noticeBinZipFile, noticeGrooidFile, noticeGrooidJarJarFile, noticeJarJarFile, noticeSrcFile, noticeGroovyConsoleFile, noticeSdkFile) doLast { def srcFiles = fileTree(noticesDir).include('*-SRC*.txt').sort { it.name } def grooidFiles = fileTree(noticesDir).include('*-GROOID*.txt').sort { it.name } def jarjarFiles = fileTree(noticesDir).include('*-JARJAR*.txt').sort { it.name } def grooidJarjarFiles = fileTree(noticesDir) { include '*-JARJAR*.txt' include '*-GROOID*.txt' }.sort { it.name } def allJarjarFiles = fileTree(noticesDir) { include '*-JARJAR*.txt' include '*-ALLJARJAR*.txt' }.sort { it.name } def binzipFiles = fileTree(noticesDir) { include '*-JARJAR*.txt' include '*-ALLJARJAR*.txt' include '*-GROOID*.txt' include '*-BINZIP*.txt' }.sort { it.name } def groovyconsoleFiles = fileTree(noticesDir).include('silkicons-ALLJARJAR-SRC.txt') [ (noticeAllJarJarFile): allJarjarFiles, (noticeBinZipFile): binzipFiles, (noticeGrooidFile): grooidFiles, (noticeGrooidJarJarFile): grooidJarjarFiles, (noticeJarJarFile): jarjarFiles, (noticeSrcFile): srcFiles, (noticeGroovyConsoleFile): groovyconsoleFiles, ].each { outFile, inFiles -> file(outFile).withWriter('utf-8') { writer -> writer << ([file(noticeBaseFile)] + inFiles).collect { it.text.replaceAll(/[\n\r]*$/, '') }.join('\n\n') } } file(noticeSdkFile).withWriter { writer -> writer << [ file(noticeBinZipFile).text, "This convenience zip embeds Groovy's src and doc zips.\nSee also src/NOTICE " + "and doc/NOTICE files for additional notice information." ].join('\n\n') } } } groovy-2.4.17/gradle/backports.gradle000066400000000000000000000043601351304321600175410ustar00rootroot00000000000000/* * 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. */ /* * This file describes artifacts which will be distributed in separate jars, intended to be used with * older versions of Groovy for binary compatibility with classes compiled with newer versions of groovy */ ext.backports = [ compat23: ['org/codehaus/groovy/runtime/typehandling/ShortTypeHandling.class'] ] task backportJars { group = 'Backports' description = 'Generates backports jars' } dist.dependsOn backportJars install.dependsOn backportJars uploadArchives.dependsOn backportJars backports.each { pkg, classList -> def backportJar = task "backport${pkg}Jar"(type:Jar) { group = 'Backports' dependsOn jarAll from zipTree(jar.archivePath) include classList baseName = "groovy-backports-$pkg" classifier = '' } // the following two jars are empty. No wonder, Maven Central *requires* a javadoc and sources classifier // it's stupid in our case, because we don't have such, but we have no choice def javadocJar = task "backport${pkg}JavadocJar"(type:Jar) { group = 'Backports' dependsOn jarAll baseName = "groovy-backports-$pkg" classifier = 'javadoc' } def sourcesJar = task "backport${pkg}SourcesJar"(type:Jar) { group = 'Backports' dependsOn jarAll baseName = "groovy-backports-$pkg" classifier = 'sources' } backportJars.dependsOn([backportJar, javadocJar, sourcesJar]) } groovy-2.4.17/gradle/binarycompatibility.gradle000066400000000000000000000174131351304321600216320ustar00rootroot00000000000000/* * 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. */ import groovy.text.markup.MarkupTemplateEngine import groovy.text.markup.TemplateConfiguration import java.lang.reflect.Modifier buildscript { // this block should not be necessary, but for some reason it fails without! repositories { jcenter() } dependencies { classpath 'me.champeau.gradle:japicmp-gradle-plugin:0.1.1' } } task checkBinaryCompatibility { description = 'Generates binary compatibility reports' } check.dependsOn(checkBinaryCompatibility) def excludeModules = ['performance', 'tests-vm8'] //def excludeModules = [] Set projectsToCheck = allprojects.findAll{ !(it.name in excludeModules) } if (JavaVersion.current().isJava7Compatible()) { allprojects { if (project in projectsToCheck) { apply plugin: 'me.champeau.gradle.japicmp' } } def referenceMinorVersion = '2.4.15' def prettyPrint = { classOrMethod -> "${Modifier.toString(classOrMethod.get()?.modifiers)} ${classOrMethod.get()?.longName}" } def reportGenerator = { model -> outputProcessor { def skipClass = { c -> c.fullyQualifiedName =~ /\$[0-9]+$/ || // skip AIC c.fullyQualifiedName.startsWith('org.codehaus.groovy.runtime.dgm$') || c.fullyQualifiedName.contains('_closure') } def skipMethod = { c, m -> skipClass(c) || m.name =~ /access\$[0-9]+/ } def violations = [:].withDefault { // key = class name // value = map of violations [:].withDefault { [] } } removedConstructor { c, m -> if (!skipMethod(c, m)) { def level = Modifier.isPrivate(m.oldConstructor.get()?.modifiers) ? 'info' : 'error' violations[c.fullyQualifiedName][level] << "Constructor ${prettyPrint(m.oldConstructor)} has been removed" } } removedMethod { c, m -> if (!skipMethod(c, m)) { def level = m.name.startsWith('super$') ? 'warning' : 'error' violations[c.fullyQualifiedName][level] << "Method ${m.name} has been removed" } } removedClass { c -> if (!skipClass(c)) { violations[c.fullyQualifiedName].error << "Class has been removed" } } modifiedMethod { c, m -> if (!skipMethod(c, m)) { violations[c.fullyQualifiedName].warning << """

Method ${m.name} has been modified

From

${prettyPrint(m.oldMethod)}
to
${prettyPrint(m.newMethod)}

""" } } modifiedConstructor { c, m -> if (!skipMethod(c, m)) { violations[c.fullyQualifiedName].warning << """

Constructor ${m.name} has been modified

From

${prettyPrint(m.oldConstructor)}
to
${prettyPrint(m.newConstructor)}

""" } } modifiedClass { c -> if (!skipClass(c)) { def level = c.binaryCompatible?'info':'error' def message = "Class ${c.fullyQualifiedName} has been modified" violations[c.fullyQualifiedName][level] << message } } newClass { c -> if (!skipClass(c)) { violations[c.fullyQualifiedName].info << "Class has been added" } } newMethod { c, m -> if (!skipMethod(c, m)) { violations[c.fullyQualifiedName].info << """

Method ${m.name} has been added

Signature:

${prettyPrint(m.newMethod)}

""" } } after { model.violations = violations } } } // using a global engine for all tasks in order to increase performance def configDir = file("$rootProject.projectDir/config/binarycompatibility") def templateFile = 'binarycompat-report.groovy' def templateConfiguration = new TemplateConfiguration() templateConfiguration.with { autoIndent = true autoNewLine = true } def engine = new MarkupTemplateEngine(this.class.classLoader, configDir, templateConfiguration) task japicmpAll(type: me.champeau.gradle.ArtifactJapicmpTask) { dependsOn jarAll baseline = "org.codehaus.groovy:groovy-all:${referenceMinorVersion}@jar" to = jarAll.archivePath accessModifier = 'protected' onlyModified = true failOnModification = false txtOutputFile = file("$buildDir/reports/japi.txt") doFirst { classpath = projectsToCheck.configurations.japicmp.files.flatten() } def htmlReportFile = file("${buildDir}/reports/binary-compat-${project.name}-all.html") inputs.file file("$configDir/$templateFile") inputs.file templateFile outputs.file htmlReportFile def model = [title : "Binary compatibility report for ${project.name}", project : project, baseline: baseline, archive : to.name] outputProcessor(reportGenerator.curry(model)) doLast { htmlReportFile.withWriter('utf-8') { wrt -> engine.createTemplateByPath(templateFile).make(model).writeTo(wrt) } } } allprojects { if (project in projectsToCheck) { dependencies { japicmp files(rootProject.jar.archivePath) } task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask) { dependsOn replaceJarWithJarJar baseline = "org.codehaus.groovy:${project.name}:${referenceMinorVersion}@jar" to = jar.archivePath accessModifier = 'protected' onlyModified = true failOnModification = false txtOutputFile = file("$buildDir/reports/japi.txt") def htmlReportFile = file("${buildDir}/reports/binary-compat-${project.name}.html") inputs.file file("$configDir/$templateFile") inputs.file templateFile outputs.file htmlReportFile def model = [title : "Binary compatibility report for ${project.name}", project : project, baseline: baseline, archive : to.name] outputProcessor(reportGenerator.curry(model)) doLast { htmlReportFile.withWriter('utf-8') { wrt -> engine.createTemplateByPath(templateFile).make(model).writeTo(wrt) } } } } } allprojects { tasks.withType(me.champeau.gradle.ArtifactJapicmpTask) { task -> checkBinaryCompatibility.dependsOn(task) } } } groovy-2.4.17/gradle/codehaus.gradle000066400000000000000000000043731351304321600173500ustar00rootroot00000000000000/* * 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. */ import com.github.sardine.* import com.github.sardine.impl.* import groovy.io.* buildscript { repositories { mavenCentral() } dependencies { classpath 'com.github.lookfirst:sardine:5.0.1' } } task htmlPush { //inputs.files syncDoc.inputs.files doLast { def sardine = SardineFactory.begin(System.getProperty('groovy.deploy.username'), System.getProperty('groovy.deploy.password')) def serverBase = "https://dav.codehaus.org/groovy/" //sardine.list(serverBase).each {println it} def copyConf = ["gapi":file("$buildDir/allgroovydoc"), "api":file("$buildDir/alljavadoc")] copyConf.each { targetDirPart, base -> def basePath = base.canonicalPath base.eachFileRecurse { def name = it.canonicalPath.substring(basePath.length()+1) def target = serverBase+targetDirPart+"/"+name if (it.directory) { println "MKCOL $target" try { sardine.createDirectory(target+"/"); } catch (SardineException se) { //ignore 405, thrown for existing directories if (se.statusCode != 405) throw se } } else { println "PUT $target" sardine.put (target, it.newInputStream()) } } } } } groovy-2.4.17/gradle/docs.gradle000066400000000000000000000217461351304321600165100ustar00rootroot00000000000000/* * 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. */ task doc(dependsOn: ['javadocAll', 'groovydocAll', 'docGDK']) { if (JavaVersion.current().java7Compatible) { dependsOn 'asciidocAll', 'assembleAsciidoc' } ext.footer = 'Copyright © 2003-2019 The Apache Software Foundation. All rights reserved.' ext.title = "Groovy ${groovyVersion}" } if (JavaVersion.current().java7Compatible) { task assembleAsciidoc(type: Copy, dependsOn: 'asciidocAll') { subprojects { from project.asciidoctor } into "$buildDir/asciidoc" } task asciidocAll(dependsOn: 'asciidoctor') } def javadocSpec = { maxMemory = javaDoc_mx project.configure(options) { windowTitle = doc.title docTitle = doc.title locale = 'en_US' encoding = 'UTF-8' author = true version = true overview = rootProject.file('src/main/overviewj.html') footer = doc.footer source = rootProject.useIndy()?'1.7':'1.6' links('http://docs.oracle.com/javase/8/docs/api/', 'http://docs.oracle.com/javaee/7/api/', 'http://commons.apache.org/proper/commons-cli/javadocs/api-release/', 'http://junit.org/junit4/javadoc/latest/', 'http://docs.oracle.com/javaee/6/api/', 'http://www.antlr2.org/javadoc/') } } def groovydocSpec = { // hack to avoid errors when using gradle 3 to get the wrapper // we won't ever build 2.4.x using a 3+ version - at least not // without further changes if (gradle.gradleVersion.startsWith('2.')) { use = true if (project != rootProject) source = project.sourceSets.main.allSource classpath = javadoc.classpath ext.windowtitle = doc.title ext.doctitle = doc.title header = doc.title footer = doc.footer overview = rootProject.file('src/main/overview.html') includePrivate = false link 'http://docs.oracle.com/javaee/7/api/', 'javax.servlet.', 'javax.management.' link 'http://docs.oracle.com/javase/8/docs/api/', 'java.', 'org.xml.', 'javax.', 'org.w3c.' link 'http://docs.groovy-lang.org/docs/ant/api/', 'org.apache.ant.', 'org.apache.tools.ant.' link 'http://junit.org/junit4/javadoc/latest/', 'org.junit.', 'junit.' link 'http://www.antlr2.org/javadoc/', 'antlr.' link 'http://commons.apache.org/proper/commons-cli/javadocs/api-release/', 'org.apache.commons.cli.' } } allprojects { javadoc javadocSpec groovydoc groovydocSpec } // Root project has an extra 'all' javadoc task task javadocAll(type: Javadoc) javadocAll { destinationDir = new File(buildDir, 'alljavadoc') source = javadoc.source classpath = javadoc.classpath subprojects.each { sp -> source += sp.javadoc.source classpath += sp.javadoc.classpath } } javadocAll javadocSpec // Root project has an extra 'all' groovydoc task task groovydocAll(type: Groovydoc) groovydocAll { dependsOn( { project(':groovy-groovydoc').classes }) dependsOn( { project(':groovy-docgenerator').classes }) destinationDir = new File(buildDir, 'allgroovydoc') source = groovydoc.source classpath = groovydoc.classpath groovyClasspath = groovydoc.groovyClasspath subprojects.each { sp -> source += sp.groovydoc.source classpath += sp.groovydoc.classpath groovyClasspath += sp.groovydoc.groovyClasspath } } groovydocAll groovydocSpec // when docgenerator is run by the build, it requires a groovy-release-info file // but the file is only generated by the 'jar' task, so as a workaround, we copy // it into the docgenerator classes task docProjectVersionInfo(type: Copy) { destinationDir = file("${project(':groovy-docgenerator').buildDir}/classes/main") into('META-INF') { from('src/main/META-INF/groovy-release-info.properties') { filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens) } } from('subprojects/groovy-docgenerator/src/main/resources') } task docGDK { // ext.extraDocGDKclasses = [] dependsOn([project(':groovy-groovydoc'), project(':groovy-docgenerator')]*.classes) // TODO don't hard-code these dependsOn([project(':groovy-sql'), project(':groovy-xml'), project(':groovy-swing')]*.classes) if(JavaVersion.current().isJava7Compatible()) { dependsOn([project(':groovy-nio')]*.classes) } dependsOn docProjectVersionInfo ext.destinationDir = "$buildDir/html/groovy-jdk" inputs.files sourceSets.main.runtimeClasspath + configurations.tools outputs.dir destinationDir doLast { task -> try { ant { java(classname: 'org.codehaus.groovy.tools.DocGenerator', fork: 'true', failonerror: 'true', classpath: (sourceSets.main.runtimeClasspath + configurations.tools + groovydocAll.groovyClasspath).asPath, errorproperty: 'edr', outputproperty: 'odr') { arg(value: '-title') arg(value: 'Groovy JDK enhancements') arg(value: '-link') arg(value: 'groovy,org.codehaus.groovy=http://docs.groovy-lang.org/latest/html/gapi/') arg(value: '-link') arg(value: 'java,org.xml,javax,org.w3c=http://docs.oracle.com/javase/7/docs/api/') // either package name if in core or fully qualified path otherwise arg(value: 'org.codehaus.groovy.runtime.DefaultGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.DefaultGroovyStaticMethods') arg(value: 'org.codehaus.groovy.runtime.DateGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.EncodingGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.IOGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.ProcessGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.ResourceGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.SocketGroovyMethods') arg(value: 'org.codehaus.groovy.runtime.StringGroovyMethods') arg(value: 'org.codehaus.groovy.vmplugin.v5.PluginDefaultGroovyMethods') arg(value: 'org.codehaus.groovy.vmplugin.v6.PluginDefaultGroovyMethods') arg(value: 'org.codehaus.groovy.vmplugin.v6.PluginStaticGroovyMethods') // TODO don't hard-code these arg(value: 'subprojects/groovy-sql/src/main/java/org/codehaus/groovy/runtime/SqlGroovyMethods.java') arg(value: 'subprojects/groovy-swing/src/main/java/org/codehaus/groovy/runtime/SwingGroovyMethods.java') arg(value: 'subprojects/groovy-xml/src/main/java/org/codehaus/groovy/runtime/XmlGroovyMethods.java') if(JavaVersion.current().isJava7Compatible()) { arg(value: 'subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/NioGroovyMethods.java') } arg(value: 'subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/ScriptExtensions.java') arg(value: 'subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/ScriptStaticExtensions.java') } } } finally { if (ant.properties.odr) { logger.info 'Out: ' + ant.properties.odr } if (ant.properties.edr) { logger.error 'Err: ' + ant.properties.edr } } copy { into task.destinationDir from 'src/tools/org/codehaus/groovy/tools/groovy.ico', 'src/tools/org/codehaus/groovy/tools/stylesheet.css' } } } // apply javadoc fix tool to generated javadocs - ensures no vulnerability even on old JDK versions allprojects { apply plugin: 'javadocHotfix' } if (JavaVersion.current().isJava7Compatible()) { javadocAll.options.source = '1.7' } if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { // disable the crazy super-strict doclint tool in Java 8 options.addStringOption('Xdoclint:none', '-quiet') } } } groovy-2.4.17/gradle/eclipse.gradle000066400000000000000000000057521351304321600172030ustar00rootroot00000000000000/* * 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. */ //most of this is just a "hack" to break the circular dependencies between projects //which exist because Eclipse does not distinguish between build phases (e.g. compile, test, runtime) allprojects { apply plugin: 'eclipse' eclipse.jdt { sourceCompatibility = 1.7 targetCompatibility = 1.7 } eclipse.classpath.file { whenMerged { classpath -> classpath.entries.removeAll{ entry -> entry.path == '/groovy-groovydoc' } classpath.entries.removeAll{ entry -> entry.path =~ /groovy-ant/ } classpath.entries.removeAll{ entry -> entry.path =~ /target/ } classpath.entries.unique(true){ entry -> entry.path } } withXml { def node = it.asNode() node.appendNode('classpathentry', [kind: 'lib', path: "${rootProject.jar.archivePath}"]) } } project.tasks.eclipse.doLast { File groovyPrefs = file("${project.projectDir}/.settings/org.eclipse.jdt.groovy.core.prefs") if (!groovyPrefs.exists()) { groovyPrefs.append('groovy.compiler.level=-1\n') } } } eclipse.classpath.file { whenMerged { classpath -> classpath.entries.find { entry -> entry.path =~ /src\/main/ }.path = '/groovy/src/main' classpath.entries.find { entry -> entry.path =~ /src\/main/ }.includes = [] classpath.entries.each { entry -> if(entry.path == 'src/test'){ entry.excludes = ['groovy/PropertyTest.groovy'] as List } } classpath.entries.removeAll{ entry -> entry.path == '/groovy-test' } classpath.entries.removeAll{ entry -> entry.path =~ /subprojects/ } classpath.entries.removeAll{ entry -> entry.path =~ /examples/ } } withXml { def node = it.asNode() ['groovy-test', 'groovy-groovydoc', 'groovy-jmx', 'groovy-xml', 'groovy-ant'].each{ node.appendNode('classpathentry', [kind: 'src', path: "/groovy/subprojects/$it/src/main/groovy"]) node.appendNode('classpathentry', [kind: 'src', path: "/groovy/subprojects/$it/src/main/java"]) } node.appendNode('classpathentry', [kind: 'src', path: '/groovy/subprojects/groovy-templates/src/main/groovy']) } } groovy-2.4.17/gradle/filter.gradle000066400000000000000000000024261351304321600170370ustar00rootroot00000000000000/* * 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. */ import java.text.SimpleDateFormat ext.buildTime = new Date() ext.propertiesFilter = [ beginToken: '#', endToken: '#', tokens: [ ImplementationVersion: rootProject.groovyVersion, BundleVersion: rootProject.groovyBundleVersion, BuildDate: new SimpleDateFormat('dd-MMM-yyyy').format(rootProject.buildTime), BuildTime: new SimpleDateFormat('hh:mm aa').format(rootProject.buildTime) ] ] groovy-2.4.17/gradle/groovydoc.gradle000066400000000000000000000031051351304321600175600ustar00rootroot00000000000000/* * 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. */ // Define a GroovyDoc task which depends on the generated groovydoc tool allprojects { groovydoc { dependsOn( { project(':groovy-groovydoc').classes }) dependsOn( { project(':groovy-docgenerator').classes }) groovyClasspath = files( rootProject.compileJava.classpath, rootProject.bootstrapJar.archivePath, { project(':groovy-docgenerator').compileJava.destinationDir }, { project(':groovy-groovydoc').compileJava.destinationDir }, { project(':groovy-groovydoc').sourceSets.main.runtimeClasspath }, { project(':groovy-ant').sourceSets.main.runtimeClasspath }, { project(':groovy-templates').sourceSets.main.runtimeClasspath }, ) } }groovy-2.4.17/gradle/idea.gradle000066400000000000000000000237111351304321600164540ustar00rootroot00000000000000/* * 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. */ /** * Configuration for gradle idea. * * Inspired from the Gradle build. */ def appendNode(node, text) { node.append(new XmlParser().parseText(text)) } allprojects { apply plugin: 'idea' idea { module.iml.withXml { provider -> def node = provider.asNode() // remove target classes from libraries def moduleRoot = node.component.find { it.'@name' == 'NewModuleRootManager' } def entries = moduleRoot.orderEntry.findAll { oe -> oe.library.CLASSES.root.'@url' =~ /target/ } if (entries) { entries.each { moduleRoot.remove(it) } } } } } idea { project { ipr { withXml { provider -> def node = provider.asNode() // jdk, language level fix def pRoot = node.component.find { it.'@name' == 'ProjectRootManager' } pRoot.'@languageLevel' = 'JDK_1_6' pRoot.'@project-jdk-name' = '1.8' // Use git def vcsConfig = node.component.find { it.'@name' == 'VcsDirectoryMappings' } vcsConfig.mapping[0].'@vcs' = 'Git' // license header def copyrightManager = node.component.find { it.'@name' == 'CopyrightManager' } copyrightManager.@default = 'ASL2' def aslCopyright = copyrightManager.copyright.find { it.option.find { it.@name == 'myName' }?.@value == 'ASL2' } if (aslCopyright == null) { appendNode(copyrightManager, ''' ''') appendNode(copyrightManager, ''' ''') } def compilerConfig = node.component.find { it.@name == 'CompilerConfiguration' } ['/**/org.codehaus.groovy.runtime.ExtensionModule', '*.jar', 'test-resources:/**/*.groovy','test-resources:/**/*.java', '!?*.groovy', '/groovy/inspect/swingui/AstBrowserProperties.groovy', '/groovy/inspect/swingui/AstBrowserProperties.groovy', '/**/org.codehaus.groovy.runtime.ExtensionModule;*.jar', '/groovy/inspect/swingui/AstBrowserProperties.groovy', '/**/org.codehaus.groovy.runtime.ExtensionModule', '*.jar'].each { appendNode(compilerConfig.wildcardResourcePatterns[0], "") } appendNode(compilerConfig,''' ''') } } } workspace { iws { withXml { provider -> def node = provider.asNode() // exclude some files from stub generation def groovyCompilerConfig = node.component.find { it.'@name' == 'GroovyCompilerConfiguration' } if (!groovyCompilerConfig) { node.append(new XmlParser().parseText(''' ''')) groovyCompilerConfig = node.component.find { it.'@name' == 'GroovyCompilerConfiguration' } } def excludeNode = groovyCompilerConfig.excludes[0] ['/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy', '/src/test/groovy/bugs/Groovy593_Bug.groovy'].each { excludedFile -> def url = "file://\$PROJECT_DIR\$$excludedFile" if (!excludeNode.file.any { it.'@url' == url }) { excludeNode.append(new XmlParser().parseText("")) } } // add sample configurations def runmanager = node.component.find { it.'@name' == 'RunManager' } appendNode(runmanager, ''' ''') appendNode(runmanager,''' ''') } } } module.iml.withXml { provider -> def node = provider.asNode() // remove compiler classes from libraries def moduleRoot = node.component.find { it.'@name' == 'NewModuleRootManager' } def entry = moduleRoot.orderEntry.find { oe -> oe.library.CLASSES.root.'@url' =~ /classes\/compiler/ } if (entry) { moduleRoot.remove(entry) } // add an entry for groovy jar appendNode(moduleRoot, """ """) } tasks.withType(GenerateIdeaProject).all { it.dependsOn(jar) } } groovy-2.4.17/gradle/indy.gradle000066400000000000000000000056561351304321600165250ustar00rootroot00000000000000/* * 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. */ // This file contains support tools for the Gradle build // with regards to invoke dynamic support (indy) rootProject.ext.indyCapable = { boolean capable = true try { Class.forName('java.lang.invoke.MethodHandle') } catch (e) { capable = false } capable && !rootProject.hasProperty('skipIndy') } rootProject.ext.useIndy = { boolean indy = false // first, check if a system property activates indy support indy |= System.hasProperty('indy') && Boolean.valueOf(System.getProperty('indy')) // ultimately, check if the main project has an extension property setting indy to true // which is the case if the build is started with -Pindy=true or during install/dist tasks indy |= rootProject.hasProperty('indy') && (Boolean.valueOf(rootProject.indy)) indy && rootProject.indyCapable() } rootProject.ext.indyBanner = { if (project==rootProject && useIndy()) { logger.lifecycle ''' DM .N$? $I?7OM. .7+?II77MZ ,:~~ +I$7O$8? .M..DMMNNMMNZ. ONDOMI. 7MMMMMMOO$I. DOM87= ZMNM8NMI77$. .MNDO?$8$? 8MMNMMMN7II. MMMO. O$7Z. OI8?MDNNM$$$$7OM M8 ZZ7$. MMMMMDD7I77I777MMMM. ZZ$7$ DMM$N$ZNMZDMODNDM. DD .Z$$I$$ .ZI777777II778 ?D. 8$$7I$I+ .$I7?I7II7D. ?Z .O$$7I$78 N77O+??I?$. Z =7$7777$7 . .=7NZ?I$7I+$. O ~:7$$7$7D+$~:=Z:=~++77Z$?IIZ~. N $Z$7O8D8=Z8I7==I~I:+~OZ887$MOI$O .7 :O$I+~=?:O8?I$=++=:===Z$77ZN++$+~. Z. :7$78ZZZZZ=ZZ$~?==~+DD$8O$OO$7+?:. $ .=~=+Z7I7?7I$+~=:~+~O~???77?~+??~ O +=IZ7$7OI$=Z:~:~=8I?I?+$Z8++: N. =$+8ZO$$==+=~=?=8$IIIIID$ZZ. Z INDY ENABLED ! ''' } } if (useIndy()) { gradle.taskGraph.whenReady { graph -> graph.allTasks.findAll { it instanceof org.gradle.process.JavaForkOptions }.unique().each { task -> logger.debug "Adding indy target to project ${task.project.name} task ${task.name}" task.systemProperties 'groovy.target.indy': true } } } groovy-2.4.17/gradle/jacoco/000077500000000000000000000000001351304321600156245ustar00rootroot00000000000000groovy-2.4.17/gradle/jacoco/jacoco.gradle000066400000000000000000000046671351304321600202570ustar00rootroot00000000000000/* * 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. */ if (rootProject.hasProperty('coverage') && Boolean.valueOf(rootProject.getProperty('coverage'))) { // we only apply the jacoco configuration if a system property is set, in order to avoid instrumentation if we // are not specifically asking for code coverage allprojects { apply plugin: 'jacoco' project.afterEvaluate { tasks.withType(JacocoReport) { if (name!='jacocoAllReport') { sourceDirectories += files(project.sourceSets.main.allGroovy.srcDirs) classDirectories += files(project.sourceSets.main.output) } } } } task jacocoMerge(type:JacocoMerge) { destinationFile = file("$buildDir/jacoco/jacoco-all.exec") allprojects { project.plugins.withType(JavaPlugin) { project.tasks.withType(Test) { task -> if (sourceSets.test.allSource.srcDirs.any { it.exists() }) { executionData(task) } } } } } task jacocoAllReport(type:JacocoReport, dependsOn: 'jacocoMerge') { executionData jacocoMerge.destinationFile allprojects { project.plugins.withType(JavaPlugin) { def sd = sourceDirectories?:files() def cd = classDirectories?:files() sourceDirectories = sd + files(project.sourceSets.main.allGroovy.srcDirs, project.sourceSets.main.allJava.srcDirs) classDirectories = cd + files(project.sourceSets.main.output) } } } check.dependsOn jacocoAllReport }groovy-2.4.17/gradle/jacoco/jacocofix.gradle000066400000000000000000000022001351304321600207430ustar00rootroot00000000000000/* * 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. */ // workaround for configuration of Jacoco task being executed before all information is available gradle.taskGraph.whenReady { tasks.withType(JacocoReport) { sourceDirectories = files(sourceSets.main.allGroovy.srcDirs + sourceSets.main.allJava.srcDirs) classDirectories = files(sourceSets.main.output) } } groovy-2.4.17/gradle/pomconfigurer.gradle000066400000000000000000000462471351304321600204420ustar00rootroot00000000000000/* * 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. */ group = 'org.codehaus.groovy' project.ext.optionalDeps = [] project.ext.providedDeps = [] project.ext.optional = { project.ext.optionalDeps << it } project.ext.provided = { project.ext.providedDeps << it } project.ext.pomConfigureClosureWithoutTweaks = { project { name 'Apache Groovy' description 'Groovy: A powerful, dynamic language for the JVM' url 'http://groovy-lang.org' inceptionYear '2003' organization { name 'Apache Software Foundation' url 'http://groovy-lang.org' } developers { developer { id 'glaforge' name 'Guillaume Laforge' organization 'SpringSource' roles { role 'Project Manager' role 'Despot' role 'Developer' } } developer { id 'bob' name 'bob mcwhirter' email 'bob@werken.com' organization 'The Werken Company' roles { role 'Founder' } } developer { id 'jstrachan' name 'James Strachan' email 'james@coredevelopers.com' organization 'Core Developers Network' roles { role 'Founder' } } developer { id 'joe' name 'Joe Walnes' organization 'ThoughtWorks' roles { role 'Developer Emeritus' } } developer { id 'skizz' name 'Chris Stevenson' organization 'ThoughtWorks' roles { role 'Developer Emeritus' } } developer { id 'jamiemc' name 'Jamie McCrindle' organization 'Three' roles { role 'Developer Emeritus' } } developer { id 'mattf' name 'Matt Foemmel' organization 'ThoughtWorks' roles { role 'Developer Emeritus' } } developer { id 'alextkachman' name 'Alex Tkachman' roles { role 'Developer Emeritus' } } developer { id 'roshandawrani' name 'Roshan Dawrani' roles { role 'Developer Emeritus' } } developer { id 'spullara' name 'Sam Pullara' email 'sam@sampullara.com' roles { role 'Developer Emeritus' } } developer { id 'kasper' name 'Kasper Nielsen' roles { role 'Developer Emeritus' } } developer { id 'travis' name 'Travis Kay' roles { role 'Developer Emeritus' } } developer { id 'zohar' name 'Zohar Melamed' roles { role 'Developer Emeritus' } } developer { id 'jwilson' name 'John Wilson' email 'tug@wilson.co.uk' organization 'The Wilson Partnership' roles { role 'Developer Emeritus' } } developer { id 'cpoirier' name 'Chris Poirier' email 'cpoirier@dreaming.org' roles { role 'Developer Emeritus' } } developer { id 'ckl' name 'Christiaan ten Klooster' email 'ckl@dacelo.nl' organization 'Dacelo WebDevelopment' roles { role 'Developer Emeritus' } } developer { id 'goetze' name 'Steve Goetze' email 'goetze@dovetail.com' organization 'Dovetailed Technologies, LLC' roles { role 'Developer Emeritus' } } developer { id 'bran' name 'Bing Ran' email 'b55r@sina.com' organization 'Leadingcare' roles { role 'Developer Emeritus' } } developer { id 'jez' name 'Jeremy Rayner' email 'jeremy.rayner@gmail.com' organization 'javanicus' roles { role 'Developer Emeritus' } } developer { id 'jstump' name 'John Stump' email 'johnstump2@yahoo.com' roles { role 'Developer Emeritus' } } developer { id 'blackdrag' name 'Jochen Theodorou' email 'blackdrag@gmx.org' roles { role 'Developer' role 'Despot' } } developer { id 'russel' name 'Russel Winder' email 'russel@russel.org.uk' organization 'Concertant LLP & It\'z Interactive Ltd' roles { role 'Developer' role 'Founder of Gant' } } developer { id 'phk' name 'Pilho Kim' email 'phkim@cluecom.co.kr' roles { role 'Developer Emeritus' } } developer { id 'cstein' name 'Christian Stein' email 'sormuras@gmx.de' organization 'CTSR.de' roles { role 'Developer Emeritus' } } developer { id 'mittie' name 'Dierk Koenig' email 'dierk.koenig@canoo.com' organization 'Canoo Engineering AG' roles { role 'Developer' } } developer { id 'paulk' name 'Paul King' email 'paulk@asert.com.au' organization 'ASERT, Australia' roles { role 'Developer' role 'Despot' } } developer { id 'galleon' name 'Guillaume Alleon' email 'guillaume.alleon@gmail.com' roles { role 'Developer Emeritus' } } developer { id 'user57' name 'Jason Dillon' email 'jason@planet57.com' roles { role 'Developer Emeritus' } } developer { id 'shemnon' name 'Danno Ferrin' roles { role 'Developer Emeritus' } } developer { id 'jwill' name 'James Williams' roles { role 'Developer Emeritus' } } developer { id 'timyates' name 'Tim Yates' roles { role 'Developer' } } developer { id 'aalmiray' name 'Andres Almiray' email 'aalmiray@users.sourceforge.net' roles { role 'Developer' } } developer { id 'mguillem' name 'Marc Guillemot' email 'mguillemot@yahoo.fr' roles { role 'Developer Emeritus' } } developer { id 'jimwhite' name 'Jim White' email 'jim@pagesmiths.com' organization 'IFCX.org' roles { role 'Developer' } } developer { id 'pniederw' name 'Peter Niederwieser' email 'pniederw@gmail.com' roles { role 'Developer Emeritus' } } developer { id 'andresteingress' name 'Andre Steingress' roles { role 'Developer' } } developer { id 'hamletdrc' name 'Hamlet D\'Arcy' email 'hamletdrc@gmail.com' roles { role 'Developer Emeritus' } } developer { id 'melix' name 'Cedric Champeau' email 'cedric.champeau@gmail.com' roles { role 'Developer' role 'Despot' } } developer { id 'pascalschumacher' name 'Pascal Schumacher' roles { role 'Developer' } } developer { id 'sunlan' name 'Daniel Sun' email 'realbluesun@hotmail.com' roles { role 'Developer' role 'Despot' } } } contributors { contributor { name 'Joern Eyrich' } contributor { name 'Robert Kuzelj' } contributor { name 'Rod Cope' } contributor { name 'Yuri Schimke' } contributor { name 'James Birchfield' } contributor { name 'Robert Fuller' } contributor { name 'Sergey Udovenko' } contributor { name 'Hallvard Traetteberg' } contributor { name 'Peter Reilly' } contributor { name 'Brian McCallister' } contributor { name 'Richard Monson-Haefel' } contributor { name 'Brian Larson' } contributor { name 'Artur Biesiadowski' email 'abies@pg.gda.pl' } contributor { name 'Ivan Z. Ganza' } contributor { name 'Arjun Nayyar' } contributor { name 'Mark Chu-Carroll' } contributor { name 'Mark Turansky' } contributor { name 'Jean-Louis Berliet' } contributor { name 'Graham Miller' } contributor { name 'Marc Palmer' } contributor { name 'Tugdual Grall' } contributor { name 'Edwin Tellman' } contributor { name 'Evan A Slatis' } contributor { name 'Mike Dillon' } contributor { name 'Bernhard Huber' } contributor { name 'Marc DeXeT' } contributor { name 'Dejan Bosanac' email 'dejan@nighttale.net' } contributor { name 'Denver Dino' } contributor { name 'Ted Naleid' } contributor { name 'Chanwit Kaewkasi' } contributor { name 'Brad Long' } contributor { name 'John Bito' } contributor { name 'Jim Jagielski' } contributor { name 'Rodolfo Velasco' } contributor { name 'John Hurst' } contributor { name 'Merlyn Albery-Speyer' } contributor { name 'jeremi Joslin' } contributor { name 'UEHARA Junji' } contributor { name 'NAKANO Yasuharu' } contributor { name 'Dinko Srkoc' } contributor { name 'Raffaele Cigni' } contributor { name 'Alberto Vilches Raton' } contributor { name 'Paulo Poiati' } contributor { name 'Alexander Klein' } contributor { name 'Adam Murdoch' } contributor { name 'David Durham' } contributor { name 'Daniel Henrique Alves Lima' } contributor { name 'John Wagenleitner' } contributor { name 'Colin Harrington' } contributor { name 'Brian Alexander' } contributor { name 'Jan Weitz' } contributor { name 'Joachim Baumann' } contributor { name 'David Sutherland' } contributor { name 'Mattias Reichel' } contributor { name 'David Lee' } contributor { name 'Sergei Egorov' } contributor { name 'Hein Meling' } contributor { name 'Michael Baehr' } contributor { name 'Craig Andrews' } contributor { name 'Peter Ledbrook' } contributor { name 'Thibault Kruse' } contributor { name 'Tim Tiemens' } contributor { name 'Mike Spille' } contributor { name 'Paolo Di Tommaso' } contributor { name 'Rene Scheibe' } contributor { name 'Matias Bjarland' } contributor { name 'Richard Hightower' } contributor { name 'Andrey Bloschetsov' } contributor { name 'Yu Kobayashi' } contributor { name 'Nick Grealy' } contributor { name 'Marcin Grzejszczak' } contributor { name 'Pap Lőrinc' } contributor { name 'Guillaume Balaine' } contributor { name 'Santhosh Kumar T' } contributor { name 'Alan Green' } contributor { name 'Alex Popescu' } contributor { name 'Martin Kempf' } contributor { name 'Stephane Landelle' } contributor { name 'Vladimir Vivien' } } mailingLists { mailingList { name 'Groovy Developer List' archive 'http://mail-archives.apache.org/mod_mbox/groovy-dev/' } mailingList { name 'Groovy User List' archive 'http://mail-archives.apache.org/mod_mbox/groovy-users/' } } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } issueManagement { system 'jira' url 'http://issues.apache.org/jira/browse/GROOVY' } scm { connection 'scm:git:https://github.com/apache/groovy.git' developerConnection 'scm:git:https://github.com/apache/groovy.git' url 'https://github.com/apache/groovy.git' } } } project.ext.pomConfigureClosure = { with pomConfigureClosureWithoutTweaks whenConfigured { pom -> project.ext.optionalDeps.each { dep -> pom.dependencies.find { it.artifactId == dep.name }?.optional = true } project.ext.providedDeps.each { dep -> pom.dependencies.find { it.artifactId == dep.name }?.scope = 'provided' } // eliminate test-scoped dependencies (no need in maven central poms) pom.dependencies.removeAll { dep -> dep.scope == 'test' } if (project == rootProject) { // make dependencies optional pom.dependencies.each { dep -> dep.optional = true } } // add 'packaging' node pom.withXml { xmlProvider -> def xml = xmlProvider.asString() def pomXml = new XmlParser().parse(new ByteArrayInputStream(xml.toString().bytes)) pomXml.version[0] + { packaging('jar') } def newXml = new StringWriter() def printer = new XmlNodePrinter(new PrintWriter(newXml)) printer.preserveWhitespace = true printer.print(pomXml) xml.setLength(0) xml.append(newXml.toString()) } } } groovy-2.4.17/gradle/publish.gradle000066400000000000000000000120641351304321600172170ustar00rootroot00000000000000/* * 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. */ import org.gradle.api.internal.artifacts.publish.DefaultPublishArtifact ext.artifactoryUser = project.hasProperty('artifactoryUser') ? project.artifactoryUser : System.getenv('ARTIFACTORY_USER') ext.artifactoryPassword = project.hasProperty('artifactoryPassword') ? project.artifactoryPassword : System.getenv('ARTIFACTORY_PASSWORD') if (!artifactoryUser) { // try to read from properties def artifactoryFile = file('artifactory.properties') if (artifactoryFile.exists()) { def props = new Properties() props.load(artifactoryFile.newReader()) ext.artifactoryUser = props.getProperty('artifactoryUser','') ext.artifactoryPassword = props.getProperty('artifactoryPassword','') } } allprojects { if (project == rootProject || rootProject.ext.modules().contains(project)) { apply plugin: 'com.jfrog.artifactory-upload' artifactory { contextUrl = project.hasProperty('artifactoryContext') ? project.artifactoryContext : 'https://oss.jfrog.org' resolve { repository { repoKey = 'libs-release' } } publish { excludePatterns = "org/codehaus/groovy/groovy/*/groovy-all-*,org/codehaus/groovy/groovy/*/groovy-backports-*,org/codehaus/groovy/groovy/*/groovy-binary-*" repository { repoKey = project.hasProperty('artifactoryRepoKey') ? project.artifactoryRepoKey : 'oss-snapshot-local' //The Artifactory repository key to publish to //when using oss.jfrog.org the credentials are from Bintray. For local build we expect them to be found in //~/.gradle/gradle.properties, otherwise to be set in the build server username = rootProject.artifactoryUser password = rootProject.artifactoryPassword } } } } } artifactoryPublish { def curDate = new Date() def pomSource = { a -> "$projectDir/target/poms/pom-${a.name - 'groovy-'}.xml" } def destBase = { a -> "org/codehaus/groovy/${a.name}/${version}/${a.name}-${version}${a.classifier ? '-' + a.classifier : ''}" } def newDetails = { orig, newFile, newExt, newType -> gradleDeployDetails(new DefaultPublishArtifact( orig.name, newExt, newType, orig.classifier, curDate, newFile), 'artifacts', destBase(orig) + '.' + newExt) } def makeTransformedDetails = { orig -> newDetails(orig, orig.file, orig.extension, orig.extension) } def makeTransformedPomDetails = { orig -> newDetails(orig, file(pomSource(orig)), 'pom', 'pom') } def makeTransformedPomSigDetails = { orig -> newDetails(orig, file(pomSource(orig) + '.asc'), 'pom.asc', 'asc') } mavenDescriptor = new File("$projectDir/target/poms/pom-groovy.xml") doFirst{ configurations.archives.artifacts.findAll{ it.name != project.name }.each { // the plugin we are using uses the project name rather than the artifact name // as the artifactId, so we add the transformed one ourselves // this also covers signatures which we already added during install deployDetails.add(makeTransformedDetails(it)) if (!it.classifier && (it.type == 'jar' || it.type == 'zip')) { // add the pom and its signature deployDetails.add(makeTransformedPomDetails(it)) if (isReleaseVersion) { deployDetails.add(makeTransformedPomSigDetails(it)) } } } if (isReleaseVersion) { allprojects { if (project == rootProject || rootProject.ext.modules().contains(project)) { configurations.archives.artifacts.findAll { it.name == project.name && it.type == 'jar' && it.extension == 'jar' && !it.classifier }.each { // add pom signatures def pomSigLocation = "$project.projectDir/target/poms/pom-${project == rootProject ? 'groovy' : 'default'}.xml.asc" deployDetails.add(newDetails(it, file(pomSigLocation), 'pom.asc', 'pom')) } } } } } } artifactoryPublish.dependsOn('backportJars')groovy-2.4.17/gradle/quality.gradle000066400000000000000000000173311351304321600172430ustar00rootroot00000000000000/* * 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. */ import groovy.text.markup.MarkupTemplateEngine import groovy.text.markup.TemplateConfiguration allprojects { apply plugin: "org.nosphere.apache.rat" //apply plugin: "com.github.hierynomus.license" apply plugin: 'checkstyle' apply plugin: 'codenarc' apply plugin: 'findbugs' configurations.codenarc { // because we will rely on the version we build // because version ranges are evil // and because it causes bnd to be brought transitively // I am unsure why; says it is required by groovy-ant but its pom.xml does not declare so exclude group:'org.codehaus.groovy' } // license { // header rootProject.file('config/licensing/HEADER.txt') // include "**/*.groovy" // include "**/*.java" // include "**/*.properties" // include "**/*.js" // include "**/*.css" // include "**/*.html" // include "**/*.gradle" // include "**/*.xml" // exclude "org/codehaus/groovy/antlr/**" // exclude 'reloading/**' // test resources for documentation of reloading // exclude 'includes/**' // documentation resources included as snippets of code // //dryRun = true // ignoreFailures = true // //skipExistingHeaders = true // //ext.year = Calendar.instance.get(Calendar.YEAR) // } // don't fail build on CodeNarc tasks tasks.withType(CodeNarc) { ignoreFailures = true configFile = file("$rootProject.projectDir/config/codenarc/codenarc.groovy") codenarcClasspath = rootProject.sourceSets.main.output + project(':groovy-templates').sourceSets.main.output + project(':groovy-xml').sourceSets.main.output + configurations.compile + files(configurations.codenarc.findAll { !(it.name =~ /groovy|junit/)}) } tasks.withType(Checkstyle) { showViolations = false ignoreFailures = true configFile = file("$rootProject.projectDir/config/checkstyle/checkstyle.xml") configProperties = ['rootProject.projectDir': rootProject.projectDir] def reportFile = file("${buildDir}/reports/checkstyle/${name}.xml") source = sourceSets.main.allJava.matching { // TODO why doesn't this exclusion work? exclude '**/generated-sources/**/*' } reports { include ( '**/*.java') xml { destination reportFile } } task("${name}Report") { def configDir = file("$rootProject.projectDir/config/checkstyle") def templateFile = 'checkstyle-report.groovy' def htmlReportFile = file("${buildDir}/reports/checkstyle/${name}.html") inputs.file file("$configDir/$templateFile") inputs.file reportFile outputs.file htmlReportFile doLast { if (reportFile.exists()) { def templateConfiguration = new TemplateConfiguration() templateConfiguration.with { autoIndent = true autoNewLine = true } def engine = new MarkupTemplateEngine(this.class.classLoader, configDir, templateConfiguration) def xml = new XmlSlurper().parse(reportFile.newReader('utf-8')) def files = [] xml.file.each { f -> // TODO remove generated-sources check once exclude above works if (f.error.size() && !f.@name.toString().contains('generated-sources')) { files << [ name: f.@name.toString(), errors: f.error.collect { e -> def rule = e.@source.toString() rule = rule.substring(rule.lastIndexOf('.')+1) [line: e.@line.toString(), column: e.@column.toString(), message: e.@message.toString(), source: rule, severity: e.@severity.toString()] }] } } def model = [ project: project, files: files ] htmlReportFile.withWriter('utf-8') { wrt -> engine.createTemplateByPath('checkstyle-report.groovy').make(model).writeTo(wrt) } } } } finalizedBy "${name}Report" } findbugs { // continue build despite findbug warnings ignoreFailures = true sourceSets = [sourceSets.main] } tasks.withType(FindBugs) { effort = 'max' reports { xml.enabled = false html.enabled = true } maxHeapSize = '2g' // hack to exclude html files since include by itself doesn't work def temp = classes temp.include '**/*.class' classes = temp } } subprojects { sp -> def extras = [] switch(sp.name) { case 'groovy-templates': extras = [ // test files 'src/spec/test-resources/*.txt', 'src/test/resources/includes/hello-escaped.txt', 'src/test/resources/includes/hello.html' ] break; case ['groovy-groovydoc', 'groovy-docgenerator']: extras = [ '**/stylesheet.css' // MIT license as per NOTICE/LICENSE files ] break; } rat { inputDir = sp.projectDir.absolutePath excludes = [ 'target/**', '.gradle/**', '*.iml', '.classpath', '.project', '.settings/**', 'bin/**' , *extras] } } rat { excludes = [ 'subprojects/**', // covered above 'benchmark/**', // benchmarking files excluded from src zip 'config/**', 'src/test/org/codehaus/groovy/ast/LineColumnCheck.txt', // test file 'security/groovykeys', // excluded from src zip '**/.gradle/**', '**/wrapper/**', 'gradlew*', // gradle wrapper files excluded from src zip 'gradle.properties', // artifactory release plugin removes header when bumping version '**/target/**', 'licenses/**', 'notices/**', 'out/**', '*.ipr', '**/*.iml', '*.iws', // Intellij files '**/style.css', // MIT license as per NOTICE/LICENSE files '**/jquery-2.1.1.min.js', // MIT license as per NOTICE/LICENSE files '.classpath', '.project', '.settings/**', 'bin/**', // Eclipse files ] } apply from: 'gradle/jacoco/jacoco.gradle' apply from: 'gradle/binarycompatibility.gradle' groovy-2.4.17/gradle/signing.gradle000066400000000000000000000067631351304321600172200ustar00rootroot00000000000000/* * 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. */ allprojects { apply plugin: 'signing' signing { required { rootProject.ext.isReleaseVersion && (gradle.taskGraph.hasTask(':artifactoryPublish') || rootProject.hasProperty('forceSign')) } } } gradle.taskGraph.whenReady { taskGraph -> if (project.ext.isReleaseVersion && (taskGraph.hasTask(':artifactoryPublish') || project.hasProperty('forceSign'))) { // Use Java 6's console or Swing to read input (not suitable for CI) if (!project.hasProperty('signing.keyId') || !project.hasProperty('signing.secretKeyRingFile') || !project.hasProperty('signing.password')) { printf "\n\nWe have to sign some things in this build." + "\n\nPlease enter your signing details.\n\n" System.out.flush() if (!project.hasProperty('signing.keyId')) { project.ext.'signing.keyId' = promptUser('PGP Key Id') } if (!project.hasProperty('signing.secretKeyRingFile')) { project.ext.'signing.secretKeyRingFile' = promptUser('PGP Secret Key Ring File (absolute path)') } if (!project.hasProperty('signing.password')) { project.ext.'signing.password' = promptUser('PGP Private Key Password') } printf "\nThanks.\n\n" System.out.flush() } allprojects { ext.'signing.keyId' = project.getProperty('signing.keyId') } allprojects { ext.'signing.secretKeyRingFile' = project.getProperty('signing.secretKeyRingFile') } allprojects { ext.'signing.password' = project.getProperty('signing.password') } } } def promptUser(String prompt) { def response = '' if (System.console() == null) { new groovy.swing.SwingBuilder().edt { dialog(modal: true, // pause build title: 'Reponse required', // dialog title alwaysOnTop: true, resizable: false, locationRelativeTo: null, // centered on screen pack: true, show: true ) { vbox { label(text: "$prompt:") input = passwordField() button(defaultButton: true, text: 'OK', actionPerformed: { response = new String(input.password) dispose() }) } } } } else { response = new String(System.console().readPassword("\n$prompt: ")) } if (!response) { throw new InvalidUserDataException("Null response detected!") } response } groovy-2.4.17/gradle/test.gradle000066400000000000000000000107471351304321600165360ustar00rootroot00000000000000/* * 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. */ import org.apache.tools.ant.taskdefs.condition.Os allprojects { test { if (JavaVersion.current().isJava8Compatible()) { jvmArgs '-ea', "-Xms${groovyJUnit_ms}", "-Xmx${groovyJUnit_mx}" } else { jvmArgs '-ea', "-Xms${groovyJUnit_ms}", "-Xmx${groovyJUnit_mx}", "-XX:PermSize=${groovyJUnit_permSize}", "-XX:MaxPermSize=${groovyJUnit_maxPermSize}" } def headless = System.properties['java.awt.headless'] if (headless == 'true') { systemProperties 'java.awt.headless': 'true' } forkEvery = 40 maxParallelForks = isRunningOnCI() ? 1 : Runtime.runtime.availableProcessors() scanForTestClasses = true ignoreFailures = false testLogging { exceptionFormat = 'full' // uncomment the following line if you need more logging // events "failed", "started" } } sourceSets { test { groovy { srcDirs += 'src/spec/test' } resources { srcDirs += 'src/spec/test-resources' } } } } test { def testdb = System.properties['groovy.testdb.props'] if (testdb) { systemProperties 'groovy.testdb.props': testdb } systemProperties 'apple.awt.UIElement': 'true', 'javadocAssertion.src.dir': './src/main' systemProperties 'gradle.home': gradle.gradleHomeDir // this is needed by the security.policy classpath = files('src/test') + classpath exclude buildExcludeFilter() ext.resultText = '' doLast { ant.delete { fileset(dir: '.', includes: '*.class') } } } boolean isRunningOnCI() { new File('.').absolutePath =~ /teamcity|jenkins|hudson|travis/ } logger.lifecycle "Detected ${isRunningOnCI() ? 'Continuous Integration environment' : 'development environment'}" tasks.addRule('Pattern: testSingle will test **/.class') { String taskName -> if (taskName.startsWith('testSingle')) { tasks.create(taskName).dependsOn(test) test.includes = ['**/' + taskName.substring(10) + '.class'] test.outputs.upToDateWhen { false } } } def buildExcludeFilter() { def excludes = [] // if not compiled with indy support, disable indy tests if (!rootProject.useIndy()) { excludes += ['indy', 'Indy'] } // if no network available, disable Grapes if (!System.properties['junit.network']) { excludes << 'groovy/grape/' } return { f -> excludes.any { f.file =~ it } } } // some tests require Jars, but those are not allowed in the source directory // by the Apache policy, so we need to build them and add them to the test // resources classpath ext.extModuleFixtureDir = file("$projectDir/src/test-fixtures/extmodule") ext.extModuleOutputDir = file("$buildDir/testFixtures/extmodule") ext.extModuleRepoDir = file("$extModuleOutputDir/repo") task compileTestExtensionModule(type:JavaCompile) { classpath = files(jar.archivePath) source fileTree("$extModuleFixtureDir/src/main/java") destinationDir = file("$extModuleOutputDir/classes") sourceCompatibility = 1.6 targetCompatibility = 1.6 } task testExtensionModuleJar(type:Jar) { description = 'Builds a sample extension module used in tests' dependsOn compileTestExtensionModule baseName = 'module-test' version = '1.3' from { compileTestExtensionModule.destinationDir } from files("$extModuleFixtureDir/src/main/resources") // emulate Maven repo format for output destinationDir = file("$extModuleRepoDir/jars/module-test/module-test/${version}") } test.dependsOn(testExtensionModuleJar) test.classpath += files(extModuleRepoDir) groovy-2.4.17/gradle/upload.gradle000066400000000000000000000251171351304321600170400ustar00rootroot00000000000000/* * 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. */ boolean isUsingArtifactory = rootProject.hasProperty('artifactoryUser') && rootProject.artifactoryUser && rootProject.hasProperty('artifactoryPassword') && rootProject.artifactoryPassword if (isUsingArtifactory) { logger.lifecycle 'Deployment environment set to Artifactory' } def embedded = ['asm', 'asm-util', 'asm-analysis', 'asm-tree', 'asm-commons', 'antlr', 'commons-cli', 'openbeans'] def removeJarjaredDependencies = { p -> p.dependencies.removeAll(p.dependencies.findAll { it.groupId == 'org.codehaus.groovy' || embedded.contains(it.artifactId) }) } allprojects { if (project == rootProject || modules().contains(project)) { apply plugin: 'maven' apply from: "${rootProject.projectDir}/gradle/pomconfigurer.gradle" install.dependsOn checkCompatibility } } apply from: 'gradle/backports.gradle' ext.basename = { String s -> s.take(s.lastIndexOf('.')) } ext.deriveFile = { File archive, String suffix -> new File(archive.parent, basename(archive.name) + "-${suffix}.jar") } allprojects { if (project == rootProject || modules().contains(project)) { ext.signWithClassifier = { String c, File f -> if (rootProject.isReleaseVersion) { signing.sign(c, f) def ascFile = new File(f.parent, f.name + '.asc') if (ascFile.exists()) { project.artifacts.add('archives', ascFile) { classifier = c type = 'asc' extension = 'jar.asc' } } } } ext.signArchiveTask = { archiveTask -> if (rootProject.isReleaseVersion) { signing.sign(archiveTask.classifier, archiveTask.archivePath) def ascFile = new File(archiveTask.destinationDir, archiveTask.archiveName + '.asc') if (ascFile.exists()) { project.artifacts.add('archives', ascFile) { name = archiveTask.baseName classifier = archiveTask.classifier type = 'asc' extension = archiveTask.extension + '.asc' } } } } uploadArchives { repositories { mavenDeployer { pom pomConfigureClosure beforeDeployment { MavenDeployment deployment -> if (rootProject.isReleaseVersion) signing.signPom(deployment) } } } } install { repositories { mavenInstaller { pom pomConfigureClosure beforeDeployment { MavenDeployment deployment -> if (rootProject.isReleaseVersion) signing.signPom(deployment) } } } } artifacts { archives jar archives sourceJar archives javadocJar archives groovydocJar } [uploadArchives, install]*.with { // dependency on jarAllAll should in theory be replaced with jar, jarWithIndy but // in practice, it is faster dependsOn([jarAllAll, sourceJar, javadocJar, groovydocJar]) doFirst { if (rootProject.useIndy()) { new GradleException('You cannot use uploadArchives or install task with the flag [indy] turned' + ' on because the build handles indy artifacts by itself in that case.') } def indyJar = rootProject.ext.deriveFile(jar.archivePath, 'indy') if (indyJar.exists()) { project.artifacts.add('archives', indyJar) } def grooidJar = rootProject.ext.deriveFile(jar.archivePath, 'grooid') if (grooidJar.exists()) { project.artifacts.add('archives', grooidJar) } } } install { doFirst { // gradle doesn't expect us to mutate configurations like we do here // so signing the configuration won't work and we do it manually here signArchiveTask(jar) signArchiveTask(sourceJar) signArchiveTask(javadocJar) signArchiveTask(groovydocJar) def indyJar = rootProject.ext.deriveFile(jar.archivePath, 'indy') if (indyJar.exists()) { signWithClassifier('indy', indyJar) } def grooidJar = rootProject.ext.deriveFile(jar.archivePath, 'grooid') if (grooidJar.exists()) { signWithClassifier('grooid', grooidJar) } } } } } // the root project generates several alternate artifacts, e.g. 'groovy-all' // we don't want them in the root project so add them as artifacts with a modified name // we'll exclude the original artifacts during publication with an exclude pattern [uploadArchives, install]*.with { dependsOn([sourceAllJar, javadocAllJar, groovydocAllJar, distBin, distDoc, dist, distBin]) doFirst { project.artifacts.add('archives', jarAll) { name = 'groovy-all' } project.artifacts.add('archives', sourceAllJar) { name = 'groovy-all' } project.artifacts.add('archives', javadocAllJar) { name = 'groovy-all' } project.artifacts.add('archives', groovydocAllJar) { name = 'groovy-all' } project.artifacts.add('archives', distBin) { name = 'groovy-binary' } signArchiveTask(jarAll) signArchiveTask(sourceAllJar) signArchiveTask(javadocAllJar) signArchiveTask(groovydocAllJar) // TODO rework these? if (isReleaseVersion) { signing.sign(distBin.archivePath) def ascFile = new File(distBin.destinationDir, distBin.archiveName + '.asc') if (ascFile.exists()) { project.artifacts.add('archives', ascFile) { name = 'groovy-binary' type = 'asc' extension = 'zip.asc' } } signing.sign(distSrc.archivePath) signing.sign(distDoc.archivePath) signing.sign(dist.archivePath) } tasks.withType(Jar).matching { it.name.startsWith('backport') }.each { t -> project.artifacts.add('archives', t.archivePath) { name = t.baseName type = 'jar' classifier = t.classifier } if (isReleaseVersion) { signing.sign(t.classifier, t.archivePath) def ascFile = new File(t.destinationDir, t.archiveName + '.asc') if (ascFile.exists()) { project.artifacts.add('archives', ascFile) { name = t.baseName classifier = t.classifier type = 'asc' extension = t.extension + '.asc' } } } } def indyJar = deriveFile(jarAll.archivePath, 'indy') if (indyJar.exists()) { project.artifacts.add('archives', indyJar) signWithClassifier('indy', indyJar) } def grooidJar = deriveFile(jarAll.archivePath, 'grooid') if (grooidJar.exists()) { project.artifacts.add('archives', grooidJar) signWithClassifier('grooid', grooidJar) } } } ext.pomAll = { addFilter('groovy') { artifact, file -> !(artifact.name.contains('groovy-all')) && !(artifact.name.contains('groovy-binary')) && !(artifact.name.contains('backport')) } addFilter('all') { artifact, file -> artifact.name.contains('groovy-all') } addFilter('binary') { artifact, file -> artifact.name.contains('groovy-binary') } project.backports.each { pkg, classes -> addFilter("backports-$pkg") { artifact, file -> artifact.name == "groovy-backports-$pkg" } } // regular pom def groovypom = pom('groovy', pomConfigureClosure) // pom for 'all' def allpom = pom('all', pomConfigureClosure) allpom.artifactId = 'groovy-all' // pom for binary zip def binarypom = pom('binary', pomConfigureClosureWithoutTweaks) binarypom.artifactId = 'groovy-binary' // poms for backports project.backports.each { pkg, classes -> String id = "backports-$pkg" def backportPom = pom(id, pomConfigureClosureWithoutTweaks) backportPom.artifactId = "groovy-$id" backportPom.whenConfigured { p -> p.dependencies.clear() } } modules().each { sp -> sp.install.repositories.mavenInstaller.pom.whenConfigured { subpom -> // add dependencies of other modules allpom.dependencies.addAll(subpom.dependencies) } sp.uploadArchives.repositories.mavenDeployer.pom.whenConfigured { subpom -> // add dependencies of other modules allpom.dependencies.addAll(subpom.dependencies) } } groovypom.whenConfigured(removeJarjaredDependencies) allpom.whenConfigured(removeJarjaredDependencies) binarypom.whenConfigured { p -> p.dependencies.clear() } beforeDeployment { MavenDeployment deployment -> if (isReleaseVersion) signing.signPom(deployment) } } install { // make sure dependencies poms are built *before* the all pom dependsOn(modules()*.install) repositories { mavenInstaller pomAll } } uploadArchives { // make sure dependencies poms are built *before* the all pom dependsOn(modules()*.uploadArchives) repositories { mavenDeployer pomAll } } groovy-2.4.17/gradle/utils.gradle000066400000000000000000000065251351304321600167160ustar00rootroot00000000000000/* * 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. */ import org.objectweb.asm.MethodVisitor import org.objectweb.asm.ClassWriter import org.objectweb.asm.Label import static org.objectweb.asm.Opcodes.ACC_PUBLIC import static org.objectweb.asm.Opcodes.ACC_STATIC import static org.objectweb.asm.Opcodes.ACC_SUPER import static org.objectweb.asm.Opcodes.ALOAD import static org.objectweb.asm.Opcodes.ATHROW import static org.objectweb.asm.Opcodes.INVOKESPECIAL import static org.objectweb.asm.Opcodes.RETURN import static org.objectweb.asm.Opcodes.V1_5 buildscript { repositories { mavenCentral() } dependencies { classpath "org.ow2.asm:asm:$asmVersion" } } /** * This tasks generates an utility class which allows sneaky throwing. */ task exceptionUtils { ext.classFiles = [ "${buildDir}/generated-classes/org/codehaus/groovy/runtime/ExceptionUtils.class", "${compileJava.destinationDir}/org/codehaus/groovy/runtime/ExceptionUtils.class"] outputs.files classFiles doLast { ClassWriter cw = new ClassWriter(0); MethodVisitor mv; cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, 'org/codehaus/groovy/runtime/ExceptionUtils', null, 'java/lang/Object', null); cw.visitSource('ExceptionUtils.java', null); mv = cw.visitMethod(ACC_PUBLIC, '', '()V', null, null); mv.visitCode(); Label l0 = new Label(); mv.visitLabel(l0); mv.visitLineNumber(18, l0); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, 'java/lang/Object', '', '()V', false); mv.visitInsn(RETURN); Label l1 = new Label(); mv.visitLabel(l1); mv.visitLocalVariable('this', 'Lorg/codehaus/groovy/runtime/ExceptionUtils;', null, l0, l1, 0); mv.visitMaxs(1, 1); mv.visitEnd(); mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, 'sneakyThrow', '(Ljava/lang/Throwable;)V', null, null); mv.visitCode(); Label l2 = new Label(); mv.visitLabel(l2); mv.visitLineNumber(20, l2); mv.visitVarInsn(ALOAD, 0); mv.visitInsn(ATHROW); Label l3 = new Label(); mv.visitLabel(l3); mv.visitLocalVariable('e', 'Ljava/lang/Throwable;', null, l2, l3, 0); mv.visitMaxs(1, 1); mv.visitEnd(); cw.visitEnd(); logger.lifecycle('Generating ExceptionUtils') classFiles.each { classFile -> def output = file(classFile) output.parentFile.mkdirs() output.withOutputStream { it << cw.toByteArray() } } } } groovy-2.4.17/jitpack.yml000066400000000000000000000015041351304321600153000ustar00rootroot00000000000000# 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. jdk: openjdk6 install: - ./gradlew install -x test groovy-2.4.17/licenses/000077500000000000000000000000001351304321600147355ustar00rootroot00000000000000groovy-2.4.17/licenses/LICENSE-ALLJARJAR000066400000000000000000000312131351304321600172420ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ------------------------------------------------------------------------ ANTLR 2 License Antlr2 is released in the public domain. See licenses/antlr2-license.txt for details. ------------------------------------------------------------------------ ASM 4 License ASM 4 uses a 3-clause BSD license. For details, see licenses/asm-license.txt. ------------------------------------------------------------------------ JLine2 Patch License The following class within this product: org.codehaus.groovy.tools.shell.completion.FileNameCompleter was derived from JLine 2.12, and the following patch: https://github.com/jline/jline2/issues/90 JLine2 is made available under a BSD License. For details, see licenses/jline2-license. ------------------------------------------------------------------------ JSR223 License The following classes within this product: org.codehaus.groovy.jsr223.GroovyCompiledScript org.codehaus.groovy.jsr223.GroovyScriptEngineFactory org.codehaus.groovy.jsr223.GroovyScriptEngineImpl were derived from reference implementation files developed by Sun in collaboration with the Groovy community. The reference implementation has a BSD-style license. Details can be found in: licenses/jsr223-license.txt ------------------------------------------------------------------------ normalize.css License The stylesheet.css file (originally normalize.css) is used by the groovydoc and docgenerator components for groovy-jdk/gapi documentation. It is made available under a MIT License. Details: licenses/normalize-stylesheet-license.txt groovy-2.4.17/licenses/LICENSE-BASE000066400000000000000000000261361351304321600164620ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. groovy-2.4.17/licenses/LICENSE-BINZIP000066400000000000000000000340021351304321600167320ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ------------------------------------------------------------------------ ANTLR 2 License Antlr2 is released in the public domain. See licenses/antlr2-license.txt for details. ------------------------------------------------------------------------ ASM 4 License ASM 4 uses a 3-clause BSD license. For details, see licenses/asm-license.txt. ------------------------------------------------------------------------ Hamcrest License (needed when using optional JUnit dependency) This product bundles the Hamcrest jar, which is available under a BSD license. For details, see licenses/hamcrest-license. ------------------------------------------------------------------------ JLine2 License (optional dependency used with groovysh) This product bundles the JLine2 jar, which is available under a BSD License. For details, see licenses/jline2-license. ------------------------------------------------------------------------ JLine2 Patch License The following class within this product: org.codehaus.groovy.tools.shell.completion.FileNameCompleter was derived from JLine 2.12, and the following patch: https://github.com/jline/jline2/issues/90 JLine2 is made available under a BSD License. For details, see licenses/jline2-license. ------------------------------------------------------------------------ JSR166y License (optionally used by the optional GPars dependency) This product bundles the jsr166y jar (containing works from the JSR-166 EG, Doug Lea, and Jason T. Greene) made available in the public domain. For details, see licenses/jsr166y-license. ------------------------------------------------------------------------ JSR223 License The following classes within this product: org.codehaus.groovy.jsr223.GroovyCompiledScript org.codehaus.groovy.jsr223.GroovyScriptEngineFactory org.codehaus.groovy.jsr223.GroovyScriptEngineImpl were derived from reference implementation files developed by Sun in collaboration with the Groovy community. The reference implementation has a BSD-style license. Details can be found in: licenses/jsr223-license.txt ------------------------------------------------------------------------ JUnit License (optional dependency when using Groovy for testing) This product bundles the JUnit jar, which is available under the Eclipse Public License v1.0. For details, see licenses/junit-license. ------------------------------------------------------------------------ normalize.css License The stylesheet.css file (originally normalize.css) is used by the groovydoc and docgenerator components for groovy-jdk/gapi documentation. It is made available under a MIT License. Details: licenses/normalize-stylesheet-license.txt ------------------------------------------------------------------------ XStream License (optional dependency when serializing AST as XML) This product bundles the XStream jar, which is available under a "3-clause BSD" license. For details, see licenses/xstream-license. groovy-2.4.17/licenses/LICENSE-DOC000066400000000000000000000277111351304321600163550ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ------------------------------------------------------------------------ Asciidoc License This product uses the style.css from asciidoctor.org within documentation. The file is available under the MIT License. For details, see licenses/asciidoc-style-license.txt. ------------------------------------------------------------------------ JQuery License The following file is used within documentation: src/spec/assets/css/jquery-2.1.1.min.js This file is made available under the following MIT license: licenses/jquery-js-license.txt ------------------------------------------------------------------------ normalize.css License The stylesheet.css file (originally normalize.css) is used by the groovydoc and docgenerator components for groovy-jdk/gapi documentation. It is made available under a MIT License. Details: licenses/normalize-stylesheet-license.txt groovy-2.4.17/licenses/LICENSE-JARJAR000066400000000000000000000266701351304321600167240ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ------------------------------------------------------------------------ ANTLR 2 License Antlr2 is released in the public domain. See licenses/antlr2-license.txt for details. ------------------------------------------------------------------------ ASM 4 License ASM 4 uses a 3-clause BSD license. For details, see licenses/asm-license.txt. groovy-2.4.17/licenses/LICENSE-SDK000066400000000000000000000343241351304321600163670ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ------------------------------------------------------------------------ ANTLR 2 License Antlr2 is released in the public domain. See licenses/antlr2-license.txt for details. ------------------------------------------------------------------------ ASM 4 License ASM 4 uses a 3-clause BSD license. For details, see licenses/asm-license.txt. ------------------------------------------------------------------------ Hamcrest License (needed when using optional JUnit dependency) This product bundles the Hamcrest jar, which is available under a BSD license. For details, see licenses/hamcrest-license. ------------------------------------------------------------------------ JLine2 License (optional dependency used with groovysh) This product bundles the JLine2 jar, which is available under a BSD License. For details, see licenses/jline2-license. ------------------------------------------------------------------------ JLine2 Patch License The following class within this product: org.codehaus.groovy.tools.shell.completion.FileNameCompleter was derived from JLine 2.12, and the following patch: https://github.com/jline/jline2/issues/90 JLine2 is made available under a BSD License. For details, see licenses/jline2-license. ------------------------------------------------------------------------ JSR166y License (optionally used by the optional GPars dependency) This product bundles the jsr166y jar (containing works from the JSR-166 EG, Doug Lea, and Jason T. Greene) made available in the public domain. For details, see licenses/jsr166y-license. ------------------------------------------------------------------------ JSR223 License The following classes within this product: org.codehaus.groovy.jsr223.GroovyCompiledScript org.codehaus.groovy.jsr223.GroovyScriptEngineFactory org.codehaus.groovy.jsr223.GroovyScriptEngineImpl were derived from reference implementation files developed by Sun in collaboration with the Groovy community. The reference implementation has a BSD-style license. Details can be found in: licenses/jsr223-license.txt ------------------------------------------------------------------------ JUnit License (optional dependency when using Groovy for testing) This product bundles the JUnit jar, which is available under the Eclipse Public License v1.0. For details, see licenses/junit-license. ------------------------------------------------------------------------ normalize.css License The stylesheet.css file (originally normalize.css) is used by the groovydoc and docgenerator components for groovy-jdk/gapi documentation. It is made available under a MIT License. Details: licenses/normalize-stylesheet-license.txt ------------------------------------------------------------------------ XStream License (optional dependency when serializing AST as XML) This product bundles the XStream jar, which is available under a "3-clause BSD" license. For details, see licenses/xstream-license. ------------------------------------------------------------------------ This convenience zip embeds Groovy's src and doc zips. See also src/LICENSE and doc/LICENSE files for additional license information. groovy-2.4.17/licenses/antlr2-JARJAR.txt000066400000000000000000000001461351304321600176500ustar00rootroot00000000000000ANTLR 2 License Antlr2 is released in the public domain. See licenses/antlr2-license.txt for details.groovy-2.4.17/licenses/antlr2-license.txt000066400000000000000000000031471351304321600203250ustar00rootroot00000000000000ANTLR 2 License We reserve no legal rights to the ANTLR--it is fully in the public domain. An individual or company may do whatever they wish with source code distributed with ANTLR or the code generated by ANTLR, including the incorporation of ANTLR, or its output, into commerical software. We encourage users to develop software with ANTLR. However, we do ask that credit is given to us for developing ANTLR. By "credit", we mean that if you use ANTLR or incorporate any source code into one of your programs (commercial product, research project, or otherwise) that you acknowledge this fact somewhere in the documentation, research report, etc... If you like ANTLR and have developed a nice tool with the output, please mention that you developed it using ANTLR. In addition, we ask that the headers remain intact in our source code. As long as these guidelines are kept, we expect to continue enhancing this system and expect to make other tools available as they are completed. In countries where the Public Domain status of the work may not be valid, the author grants a copyright licence to the general public to deal in the work without restriction and permission to sublicence derivates under the terms of any (OSI approved) Open Source licence. The Python parser generator code under antlr/actions/python/ is covered by the 3-clause BSD licence (this part is included in the binary JAR files); the run-time part under lib/python/ is covered by the GNU GPL, version 3 or later (this part is not included in the binary JAR files). See [1] for the full details. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=750643#80%22 groovy-2.4.17/licenses/asciidoc-style-SRC-DOC.txt000066400000000000000000000003001351304321600214330ustar00rootroot00000000000000Asciidoc License This product uses the style.css from asciidoctor.org within documentation. The file is available under the MIT License. For details, see licenses/asciidoc-style-license.txt. groovy-2.4.17/licenses/asciidoc-style-license.txt000066400000000000000000000021351351304321600220330ustar00rootroot00000000000000The MIT License Copyright (C) 2012-2015 Dan Allen, Ryan Waldron and the Asciidoctor Project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. groovy-2.4.17/licenses/asm-JARJAR.txt000066400000000000000000000001341351304321600172230ustar00rootroot00000000000000ASM 4 License ASM 4 uses a 3-clause BSD license. For details, see licenses/asm-license.txt.groovy-2.4.17/licenses/asm-license.txt000066400000000000000000000030641351304321600177010ustar00rootroot00000000000000ASM License ASM: a very small and fast Java bytecode manipulation framework Copyright (c) 2000-2011 INRIA, France Telecom All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. groovy-2.4.17/licenses/hamcrest-BINZIP.txt000066400000000000000000000002741351304321600203000ustar00rootroot00000000000000Hamcrest License (needed when using optional JUnit dependency) This product bundles the Hamcrest jar, which is available under a BSD license. For details, see licenses/hamcrest-license. groovy-2.4.17/licenses/hamcrest-license.txt000066400000000000000000000027111351304321600207250ustar00rootroot00000000000000BSD License Copyright (c) 2000-2015 www.hamcrest.org All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Hamcrest nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. groovy-2.4.17/licenses/jline2-BINZIP.txt000066400000000000000000000002611351304321600176510ustar00rootroot00000000000000JLine2 License (optional dependency used with groovysh) This product bundles the JLine2 jar, which is available under a BSD License. For details, see licenses/jline2-license. groovy-2.4.17/licenses/jline2-license.txt000066400000000000000000000027761351304321600203150ustar00rootroot00000000000000Copyright (c) 2002-2012, the original author or authors. All rights reserved. http://www.opensource.org/licenses/bsd-license.php Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of JLine nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. groovy-2.4.17/licenses/jline2-patch-ALLJARJAR-SRC.txt000066400000000000000000000004721351304321600217060ustar00rootroot00000000000000JLine2 Patch License The following class within this product: org.codehaus.groovy.tools.shell.completion.FileNameCompleter was derived from JLine 2.12, and the following patch: https://github.com/jline/jline2/issues/90 JLine2 is made available under a BSD License. For details, see licenses/jline2-license. groovy-2.4.17/licenses/jquery-js-DOC-SRC.txt000066400000000000000000000003121351304321600204530ustar00rootroot00000000000000JQuery License The following file is used within documentation: src/spec/assets/css/jquery-2.1.1.min.js This file is made available under the following MIT license: licenses/jquery-js-license.txtgroovy-2.4.17/licenses/jquery-js-license.txt000066400000000000000000000021101351304321600210410ustar00rootroot00000000000000Copyright jQuery Foundation and other contributors, https://jquery.org/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. groovy-2.4.17/licenses/jsr166y-BINZIP.txt000066400000000000000000000004001351304321600177050ustar00rootroot00000000000000JSR166y License (optionally used by the optional GPars dependency) This product bundles the jsr166y jar (containing works from the JSR-166 EG, Doug Lea, and Jason T. Greene) made available in the public domain. For details, see licenses/jsr166y-license. groovy-2.4.17/licenses/jsr166y-license.txt000066400000000000000000000030701351304321600203420ustar00rootroot00000000000000The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of his knowledge, the work of authorship identified is in the public domain of the country from which the work is published, or (b) hereby dedicates whatever copyright the dedicators holds in the work of authorship identified below (the "Work") to the public domain. A certifier, moreover, dedicates any copyright interest he may have in the associated work, and for these purposes, is described as a "dedicator" below. A certifier has taken reasonable steps to verify the copyright status of this work. Certifier recognizes that his good faith efforts may not shield him from liability if in fact the work certified is not in the public domain. Dedicator makes this dedication for the benefit of the public at large and to the detriment of the Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work. Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. groovy-2.4.17/licenses/jsr223-ALLJARJAR-SRC.txt000066400000000000000000000006711351304321600204540ustar00rootroot00000000000000JSR223 License The following classes within this product: org.codehaus.groovy.jsr223.GroovyCompiledScript org.codehaus.groovy.jsr223.GroovyScriptEngineFactory org.codehaus.groovy.jsr223.GroovyScriptEngineImpl were derived from reference implementation files developed by Sun in collaboration with the Groovy community. The reference implementation has a BSD-style license. Details can be found in: licenses/jsr223-license.txt groovy-2.4.17/licenses/jsr223-license.txt000066400000000000000000000027451351304321600201530ustar00rootroot00000000000000Copyright (c) 2006, Sun Microsystems, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Sun Microsystems, Inc. nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. groovy-2.4.17/licenses/junit-BINZIP.txt000066400000000000000000000003131351304321600176150ustar00rootroot00000000000000JUnit License (optional dependency when using Groovy for testing) This product bundles the JUnit jar, which is available under the Eclipse Public License v1.0. For details, see licenses/junit-license. groovy-2.4.17/licenses/junit-license.txt000066400000000000000000000270261351304321600202560ustar00rootroot00000000000000Eclipse Public License - v 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and b) in the case of each subsequent Contributor: i) changes to the Program, and ii) additions to the Program; where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. "Contributor" means any person or entity that distributes the Program. "Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. "Program" means the Contributions distributed in accordance with this Agreement. "Recipient" means anyone who receives the Program under this Agreement, including all Contributors. 2. GRANT OF RIGHTS a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 3. REQUIREMENTS A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: a) it complies with the terms and conditions of this Agreement; and b) its license agreement: i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. When the Program is made available in source code form: a) it must be made available under this Agreement; and b) a copy of this Agreement must be included with each copy of the Program. Contributors may not remove or alter any copyright notices contained within the Program. Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. 4. COMMERCIAL DISTRIBUTION Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. 5. NO WARRANTY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. groovy-2.4.17/licenses/normalize-stylesheet-ALLJARJAR-DOC-SRC.txt000066400000000000000000000003761351304321600242230ustar00rootroot00000000000000normalize.css License The stylesheet.css file (originally normalize.css) is used by the groovydoc and docgenerator components for groovy-jdk/gapi documentation. It is made available under a MIT License. Details: licenses/normalize-stylesheet-license.txtgroovy-2.4.17/licenses/normalize-stylesheet-groovy-docgenerator.txt000066400000000000000000000022461351304321600256660ustar00rootroot00000000000000NORMALIZE.CSS LICENSE The following file is used with documentation: org/codehaus/groovy/tools/stylesheet.css Copyright (c) Nicolas Gallagher and Jonathan Neal Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.groovy-2.4.17/licenses/normalize-stylesheet-groovy-groovydoc.txt000066400000000000000000000023121351304321600252170ustar00rootroot00000000000000NORMALIZE.CSS LICENSE The following file is used with documentation: org/codehaus/groovy/tools/groovydoc/gstringTemplates/topLevel/stylesheet.css Copyright (c) Nicolas Gallagher and Jonathan Neal Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.groovy-2.4.17/licenses/normalize-stylesheet-license.txt000066400000000000000000000020611351304321600233040ustar00rootroot00000000000000Copyright (c) Nicolas Gallagher and Jonathan Neal Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.groovy-2.4.17/licenses/readme.txt000066400000000000000000000011701351304321600167320ustar00rootroot00000000000000This directory contains generated LICENSE files and snippets used to generate those files. See the assemble.gradle file (updateLicenses task) for details on how this is done. Snippets have predefined suffix values in their name to determine which files they go into. LICENSE (the one for source), LICENSE-DOC and LICENSE-JARJAR get snippets containing SRC, DOC and JARJAR respectively. LICENSE-ALLJARJAR gets JARJAR and ALLJARJAR snippets. LICENSE-BINZIP gets JARJAR, ALLJARJAR and BINZIP snippets. In addition, LICENSE files are generated for these subprojects: groovy-docgenerator, groovy-groovydoc, groovy-groovysh, groovy-jsr223groovy-2.4.17/licenses/xstream-BINZIP.txt000066400000000000000000000003071351304321600201520ustar00rootroot00000000000000XStream License (optional dependency when serializing AST as XML) This product bundles the XStream jar, which is available under a "3-clause BSD" license. For details, see licenses/xstream-license.groovy-2.4.17/licenses/xstream-license.txt000066400000000000000000000027601351304321600206060ustar00rootroot00000000000000Copyright (c) 2003-2006, Joe Walnes Copyright (c) 2006-2009, 2011 XStream Committers All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of XStream nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.groovy-2.4.17/notices/000077500000000000000000000000001351304321600145745ustar00rootroot00000000000000groovy-2.4.17/notices/NOTICE-ALLJARJAR000066400000000000000000000007311351304321600170010ustar00rootroot00000000000000Apache Groovy Copyright 2003-2017 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product includes/uses ANTLR (http://www.antlr2.org/) developed by Terence Parr 1989-2006 This product bundles icons from the famfamfam.com silk icons set http://www.famfamfam.com/lab/icons/silk/ Licensed under the Creative Commons Attribution Licence v2.5 http://creativecommons.org/licenses/by/2.5/groovy-2.4.17/notices/NOTICE-BASE000066400000000000000000000002471351304321600162130ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). groovy-2.4.17/notices/NOTICE-BINZIP000066400000000000000000000022271351304321600164740ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product includes/uses ANTLR (http://www.antlr2.org/) developed by Terence Parr 1989-2006 This product bundles the JUnit jar (junit.org) which is available under the terms of the Eclipse Public License v1.0 This product embeds the OpenBeans jar within its grooid jar artifacts OpenBeans includes/uses files from Apache Harmony and the following notice applies Copyright 2006, 2010 The Apache Software Foundation. Portions of Apache Harmony were originally developed by Intel Corporation and are licensed to the Apache Software Foundation under the "Software Grant and Corporate Contribution License Agreement" and for which the following copyright notices apply (C) Copyright 2005 Intel Corporation (C) Copyright 2005-2006 Intel Corporation (C) Copyright 2006 Intel Corporation This product bundles icons from the famfamfam.com silk icons set http://www.famfamfam.com/lab/icons/silk/ Licensed under the Creative Commons Attribution Licence v2.5 http://creativecommons.org/licenses/by/2.5/groovy-2.4.17/notices/NOTICE-GROOID000066400000000000000000000013561351304321600164660ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product embeds the OpenBeans jar within its grooid jar artifacts OpenBeans includes/uses files from Apache Harmony and the following notice applies Copyright 2006, 2010 The Apache Software Foundation. Portions of Apache Harmony were originally developed by Intel Corporation and are licensed to the Apache Software Foundation under the "Software Grant and Corporate Contribution License Agreement" and for which the following copyright notices apply (C) Copyright 2005 Intel Corporation (C) Copyright 2005-2006 Intel Corporation (C) Copyright 2006 Intel Corporationgroovy-2.4.17/notices/NOTICE-GROOIDJARJAR000066400000000000000000000015151351304321600173550ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product includes/uses ANTLR (http://www.antlr2.org/) developed by Terence Parr 1989-2006 This product embeds the OpenBeans jar within its grooid jar artifacts OpenBeans includes/uses files from Apache Harmony and the following notice applies Copyright 2006, 2010 The Apache Software Foundation. Portions of Apache Harmony were originally developed by Intel Corporation and are licensed to the Apache Software Foundation under the "Software Grant and Corporate Contribution License Agreement" and for which the following copyright notices apply (C) Copyright 2005 Intel Corporation (C) Copyright 2005-2006 Intel Corporation (C) Copyright 2006 Intel Corporationgroovy-2.4.17/notices/NOTICE-JARJAR000066400000000000000000000004051351304321600164460ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product includes/uses ANTLR (http://www.antlr2.org/) developed by Terence Parr 1989-2006groovy-2.4.17/notices/NOTICE-SDK000066400000000000000000000024331351304321600161210ustar00rootroot00000000000000Apache Groovy Copyright 2003-2019 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product includes/uses ANTLR (http://www.antlr2.org/) developed by Terence Parr 1989-2006 This product bundles the JUnit jar (junit.org) which is available under the terms of the Eclipse Public License v1.0 This product embeds the OpenBeans jar within its grooid jar artifacts OpenBeans includes/uses files from Apache Harmony and the following notice applies Copyright 2006, 2010 The Apache Software Foundation. Portions of Apache Harmony were originally developed by Intel Corporation and are licensed to the Apache Software Foundation under the "Software Grant and Corporate Contribution License Agreement" and for which the following copyright notices apply (C) Copyright 2005 Intel Corporation (C) Copyright 2005-2006 Intel Corporation (C) Copyright 2006 Intel Corporation This product bundles icons from the famfamfam.com silk icons set http://www.famfamfam.com/lab/icons/silk/ Licensed under the Creative Commons Attribution Licence v2.5 http://creativecommons.org/licenses/by/2.5/ This convenience zip embeds Groovy's src and doc zips. See also src/NOTICE and doc/NOTICE files for additional notice information.groovy-2.4.17/notices/antl2-JARJAR.txt000066400000000000000000000001361351304321600173240ustar00rootroot00000000000000This product includes/uses ANTLR (http://www.antlr2.org/) developed by Terence Parr 1989-2006 groovy-2.4.17/notices/junit-BINZIP.txt000066400000000000000000000001651351304321600174610ustar00rootroot00000000000000This product bundles the JUnit jar (junit.org) which is available under the terms of the Eclipse Public License v1.0 groovy-2.4.17/notices/openbeans-GROOID.txt000066400000000000000000000011071351304321600202670ustar00rootroot00000000000000This product embeds the OpenBeans jar within its grooid jar artifacts OpenBeans includes/uses files from Apache Harmony and the following notice applies Copyright 2006, 2010 The Apache Software Foundation. Portions of Apache Harmony were originally developed by Intel Corporation and are licensed to the Apache Software Foundation under the "Software Grant and Corporate Contribution License Agreement" and for which the following copyright notices apply (C) Copyright 2005 Intel Corporation (C) Copyright 2005-2006 Intel Corporation (C) Copyright 2006 Intel Corporation groovy-2.4.17/notices/readme.txt000066400000000000000000000012151351304321600165710ustar00rootroot00000000000000This directory contains generated NOTICE files and snippets used to generate those files. See the assemble.gradle file (updateNotices task) for details on how this is done. Snippets have predefined suffix values in their name to determine which files they go into. NOTICE (the one for source), NOTICE-DOC, NOTICE-GROOID and NOTICE-JARJAR get snippets containing SRC, DOC, GROOID and JARJAR respectively. NOTICE-GROOIDJARJAR gets JARJAR and GROOID snippets. NOTICE-ALLJARJAR gets JARJAR and ALLJARJAR snippets. NOTICE-BINZIP gets GROOID, JARJAR, ALLJARJAR and BINZIP snippets. In addition, NOTICE files are generated for these subprojects: groovy-consolegroovy-2.4.17/notices/silkicons-ALLJARJAR-SRC.txt000066400000000000000000000003221351304321600212550ustar00rootroot00000000000000This product bundles icons from the famfamfam.com silk icons set http://www.famfamfam.com/lab/icons/silk/ Licensed under the Creative Commons Attribution Licence v2.5 http://creativecommons.org/licenses/by/2.5/groovy-2.4.17/security/000077500000000000000000000000001351304321600147775ustar00rootroot00000000000000groovy-2.4.17/security/groovy.policy000066400000000000000000000260751351304321600175570ustar00rootroot00000000000000/* * 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. */ /* Notes on the contents of this policy file: * * The following methods in groovy have privileged operations wrapping * setAccessible. If these wrappers are not provided, most codebases below * must have the following grant: * permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; * MetaMethod.createMetaMethod * MetaMethod.invoke(Object Object[]) * ReflectionMetaMethod.invoke(Object Object[]) * DefaultGoovyMethods.dump(Object) */ /* * This keystore contains the public key of the pair used to sign GroovyTestJar.jar * See SecurityTest.testReadSignedJar() */ keystore "file:${user.dir}/security/groovykeys"; /* * ================= Codebases requiring java.security.AllPermission =============== * The following codebases require java.security.AllPermission. They are considered trusted * for purposes of groovy security enforcement. In a deployed groovy environment, these classes * would all be in a set of jars. If these jars are signed, the grants could be strengthened to * by adding a signedBy clause to the grant. */ // Eclipse default output directory to allow running security tests in that IDE grant codeBase "file:${user.dir}/bin/-" { permission java.security.AllPermission; }; // IntelliJ IDEA default output directory to allow running security tests in that IDE grant codeBase "file:${user.dir}/out/-" { permission java.security.AllPermission; }; // Gradle build output directory grant codeBase "file:${user.dir}/target/-" { permission java.security.AllPermission; }; grant codeBase "file:${user.dir}/subprojects/groovy-test/target/-" { permission java.security.AllPermission; }; // Gradle dependency cache grant codeBase "file:${user.home}/.gradle/-" { permission java.security.AllPermission; }; grant codeBase "file:${groovy.lib}/-" { permission java.security.AllPermission; }; /* * When running from maven, this codebase is required. * If not running from maven, the codesource will not be found, but will not cause an error. */ grant codeBase "file:${maven.home}/-" { permission java.security.AllPermission; }; /* * When running from Gradle, this codebase is required. * If not running from Gradle, the codesource will not be found, but will not cause an error. */ grant codeBase "file:${gradle.home}/-" { permission java.security.AllPermission; }; grant codeBase "file:${gradle.junit}" { permission java.security.AllPermission; }; /* * When running the junit plugin from within eclipse, this codebase is required. * If not running from eclipse, the codesource will not be found, but will not cause an error. */ grant codeBase "file:${user.dir}/../../plugins/-" { permission java.security.AllPermission; }; /* * ================= Default codebases created by groovy. =============== * The following codebases are assigned when groovy parses a groovy script */ /* * GroovyShell.parse(InputStream,...) is given a codebase of "groovy.shell" because no actual * codebase can be determined. The other forms of parse(File) and parse(GroovyCodeSource) allow * for more control. These permission should be set to control scripts that are passed into * the shell in the form of a string or other groovy code of unknown provenance. */ grant codeBase "file:/groovy/shell" { permission java.lang.RuntimePermission "accessDeclaredMembers"; // For StreamClassloaderInScriptTest.groovy test permission java.io.FilePermission "${user.dir}${/}blahblah.dat", "read,write,delete"; }; /* * Similar to "file:/groovy/shell", but implying a direct call to GroovyClassLoader.parse() without * passing through GroovyShell. */ grant codeBase "file:/groovy/script" { permission java.lang.RuntimePermission "accessDeclaredMembers"; }; /* * The TestSupport class has a loadClass method that takes a ClassNode and runs it * through defineClass() of the class loader. The codebase for this operation is * set to "/groovy/testSupport". */ grant codeBase "file:/groovy/testSupport" { permission java.lang.RuntimePermission "accessDeclaredMembers"; }; /* * ================= SecurityTest codebases =============== * The following grants are for individual security test cases where the * codebase is explicitly specified (e.g. the script is a raw string rather * than read from a file). Note that even though the codebases conform to * the file URL syntax, they are not physical files: they represent virtual * codebases. * The permission grant that is commented out is the permission that is * expected to be missing by the test case. It is here as a comment for * information. */ //Since a codebase is a URL, we can make use of the natural hierarchy permission implications //to grant a 'global' accessDeclaredPermission here. grant codeBase "file:/groovy/security/-" { permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.lang.RuntimePermission "getClassLoader"; }; grant codeBase "file:/groovy/security/testForbiddenPackage" { //permission java.lang.RuntimePermission "accessClassInPackage.sun.*"; }; grant codeBase "file:/groovy/security/javax/print/deny" { //permission java.lang.RuntimePermission "accessClassInPackage.javax.print"; }; grant codeBase "file:/groovy/security/javax/print/allow" { permission java.lang.RuntimePermission "accessClassInPackage.javax.print"; }; /* * ================= .groovy script file codebases =============== * The following grants are for individual security test cases. * The permission grant that is commented out is the permission that is * expected to be missing by the test case. It is here as a comment for * information. */ grant codeBase "file:${user.dir}/src/test/-" { // Required by most groovy scripts during execution because of the heavy use of reflection/ // introspection. The groovy code could potentially be changed to eliminate this requirement // by adding privileged operations in many places. permission java.lang.RuntimePermission "accessDeclaredMembers"; }; grant codeBase "file:${user.dir}/src/test/groovy/security/forbiddenCodeBase.gvy" { //The following grant is commented out so that the test case will throw an AccessControlException //permission groovy.security.GroovyCodeSourcePermission "/groovy/security/forbiddenCodeBase"; }; // Grant permission to .groovy files extracted from a signed jar that has been signedBy "Groovy" grant signedBy "Groovy" { permission java.lang.RuntimePermission "accessDeclaredMembers"; permission java.util.PropertyPermission "user.home", "read"; }; grant codeBase "file:${user.dir}/src/test/groovy/bugs/BadScriptNameBug.groovy" { permission java.lang.RuntimePermission "createClassLoader"; permission java.util.PropertyPermission "groovy.compiler.strictNames", "read"; }; grant codeBase "file:${user.dir}/src/test/groovy/ClosureMethodTest.groovy" { permission java.lang.RuntimePermission "getClassLoader"; }; grant codeBase "file:${user.dir}/src/test/groovy/ClosureWithDefaultParamTest.groovy" { permission java.lang.RuntimePermission "getClassLoader"; permission java.io.FilePermission "src${/}test${/}-", "read"; // Required because test calls File.eachLine which eventually invokes // groovy.util.CharsetToolkit#getDefaultSystemCharset which does not wrap // the property access in a privileged block. permission java.util.PropertyPermission "file.encoding", "read"; }; grant codeBase "file:${user.dir}/src/test/groovy/bugs/ConstructorBug.groovy" { permission java.lang.RuntimePermission "createClassLoader"; // Required because GroovyCodeSource calls to File#getCanonicalPath (at least on the Windows FileSystem) permission java.util.PropertyPermission "user.dir", "read"; permission java.util.PropertyPermission "groovy.compiler.strictNames", "read"; permission java.io.FilePermission "src${/}test${/}groovy${/}bugs${/}TestBase.groovy", "read"; permission java.io.FilePermission "src${/}test${/}groovy${/}bugs${/}TestDerived.groovy", "read"; permission java.io.FilePermission "${user.dir}${/}target${/}classes${/}test${/}groovy${/}bugs${/}TestBase.class", "read"; permission java.io.FilePermission "${user.dir}${/}target${/}classes${/}test${/}groovy${/}bugs${/}TestDerived.class", "read"; }; grant codeBase "file:${user.dir}/src/test/groovy/script/ScriptTest.groovy" { permission java.io.FilePermission "src${/}test${/}groovy${/}-", "read"; permission groovy.security.GroovyCodeSourcePermission "/groovy/shell"; // Required because GroovyCodeSource calls to File#getCanonicalPath (at least on the Windows FileSystem) permission java.util.PropertyPermission "user.dir", "read"; // Required by MethodTestScript.groovy run as a script permission java.lang.RuntimePermission "accessClassInPackage.sun.reflect"; // Required by StreamClassloaderInScriptTest.groovy run as a script permission java.io.FilePermission "${user.dir}${/}blahblah.dat", "read,write,delete"; // Required for JUnit to report errors for scripts that are junit test cases permission java.util.PropertyPermission "user.home", "read"; permission java.io.FilePermission "${user.home}${/}junit.properties", "read"; }; grant codeBase "file:${user.dir}/src/test/groovy/script/EvalInScript.groovy" { permission java.io.FilePermission "src${/}test${/}groovy${/}script${/}HelloWorld.groovy", "read"; permission groovy.security.GroovyCodeSourcePermission "/groovy/shell"; // Required because GroovyCodeSource calls to File#getCanonicalPath (at least on the Windows FileSystem) permission java.util.PropertyPermission "user.dir", "read"; }; grant codeBase "file:${user.dir}/src/test/groovy/script/MethodTestScript.groovy" { permission java.lang.RuntimePermission "accessClassInPackage.sun.reflect"; }; grant codeBase "file:${user.dir}/src/test/groovy/script/StreamClassloaderInScriptTest.groovy" { permission groovy.security.GroovyCodeSourcePermission "/groovy/shell"; permission java.io.FilePermission "${user.dir}${/}blahblah.dat", "read,write,delete"; }; grant { // Required to load Global AST Transforms permission java.io.FilePermission "${user.dir}${/}target${/}resources${/}main${/}META-INF${/}services${/}-", "read"; permission java.io.FilePermission "${user.dir}${/}target${/}libs${/}-", "read"; // Required for StreamClassloaderInScriptTest permission java.io.FilePermission "${java.home}${/}-", "read"; }; groovy-2.4.17/settings.gradle000066400000000000000000000031101351304321600161430ustar00rootroot00000000000000/* * 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. */ def subprojects = ['groovy-ant', 'groovy-bsf', 'groovy-console', 'groovy-docgenerator', 'groovy-groovydoc', 'groovy-groovysh', 'groovy-jmx', 'groovy-json', 'groovy-jsr223', 'groovy-servlet', 'groovy-sql', 'groovy-swing', 'groovy-templates', 'groovy-test', 'groovy-testng', 'groovy-xml', 'tests-vm8' ] if(JavaVersion.current().isJava7Compatible()) { subprojects << 'groovy-nio' } if (hasProperty('stressTests')) { subprojects << 'stress' } include(subprojects as String[]) rootProject.children.each { prj -> prj.projectDir = new File("$rootDir/subprojects/$prj.name") } rootProject.name = 'groovy' // TODO should this be groovy-core? groovy-2.4.17/src/000077500000000000000000000000001351304321600137175ustar00rootroot00000000000000groovy-2.4.17/src/bin/000077500000000000000000000000001351304321600144675ustar00rootroot00000000000000groovy-2.4.17/src/bin/grape000066400000000000000000000036121351304321600155120ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy JVM Bootstrap for UN*X ## ## ## ## use -cp or -classpath just as in java to use a custom classpath ## ## ## ############################################################################## ## ## $Revision$ ## $Date$ ## GROOVY_APP_NAME=Grape # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy org.codehaus.groovy.tools.GrapeMain "$@" groovy-2.4.17/src/bin/grape.bat000066400000000000000000000026761351304321600162700ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ "%DIRNAME%\startGroovy.bat" "%DIRNAME%" org.codehaus.groovy.tools.GrapeMain %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/groovy000066400000000000000000000035741351304321600157500ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy JVM Bootstrap for UN*X ## ## ## ## use -cp or -classpath just as in java to use a custom classpath ## ## ## ############################################################################## ## ## $Revision$ ## $Date$ ## GROOVY_APP_NAME=Groovy # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy groovy.ui.GroovyMain "$@" groovy-2.4.17/src/bin/groovy.bat000066400000000000000000000026571351304321600165160ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ "%DIRNAME%\startGroovy.bat" "%DIRNAME%" groovy.ui.GroovyMain %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/groovy.icns000066400000000000000000003305731351304321600167050ustar00rootroot00000000000000icns{il32 Q S-  8U)G`qzsiH' %#EqD(8t?)wG)]Ƿ]*ldf-s|[U)Rq19Ƶ10EeɷĹ(4{ܶż-D Wț@ùqjruwȥwmid2vRWjsQU) H|D?K { D Uy24o Z X}g./ ` XzT,5 [ TuW+3A+\ N Dnyya))n~y?)[yzy6 /fttxm((Ed][ @@#SVX\`V@V`[XVW88$PQRTVTRQT://. MP00++,) >JIN)++,,-&8JFEHD-,-&+.:5,'&,-&&, S-  8U-RoyS) %#OźL( = ̮E)w )hd+loo.s|f^*Rq6X40Etμә(?缣4D gԢ?† }шy|~ׯ~tqk <[`rƀ }Z^1 TMHT Q f<>z l ir89 si]6> leb4;J4h ] Qk22yG2e @ 8yy00DeaL00mnA--VA--Edz~~o+E~E++K~~C ^ )mx|Y)N_~dT)5yyxx|S ]osrrvZ'8ntr : I% clmonG%Lrnm A@ *cfhjl`GHG`ligfh88+_accdccad ;//. $\[\`00++,* JXW]1++,,-&CXTSVQ5,-&46E@4.&,-& &,S-   8U$:N\cg]V;" $";^sv:'1b9'w )QzȀ9½R*lX·[,s|Oր׀÷L(Rq,rż,0ETпl(*d˭ü%D Do;~{~YRsujnpme`[|y'[tx{pHN_fHJzxvu 7`qsv85@i{utsrr6 Abnnud(*\|ututtsrtwtponF EajjsU$%vokklkj J D^ffpD#*wgfjpvwvuohf F BZbbkI!(tdbk5!Kib < 5U^^eQ [d^i3 Kf^ * $OZZ^Y1i\ZaIH7Q_ZZ[HUVVb.@cYVX[]^`m.]YVVUE@ORRVR2_[WTRSV[_27[R,^ FNVC:F]Z\J?%XQNNQS ?ADA?A 9//. <;<>//++,*  098<  ++,,-&+:675#,-&"#-*" &,-&&,l8mk8hN!%;-8<)%{ K-7+`yxY:&h: Z'n(/v1  o2 x[)  +g:+NʥuU7 it32psG=>@==nprF1#,DmD !%%&:nk&  $0S]`aegikmoprsqqomljgbJ3 +oN7O\`dgkmquwy{~}|ywusnkcK' =E /Q]afjorvz}~zxsofD! 8@ $F\aflpuy~{uq_6 8A (I_diou{{vj< 9޼g' +M`fmrxyo@O!5 "Dagnt{|g;3M 7`gou|…Ā~U,C: 0Vfnu}Àǀȅ}G:5\fq~Ж Հӄ ٰ$}Uŀ$fT_kv֚ Ёτ͚%~{:v݁!!/Ydpzؤ ̀̃ˀ.ڭ~|zy|¾l`̀)L]gs~Ӵ ɂȂƂ[~~|{{ywvtx2uKValv́|} ȀƁňnȆxwuusrp{¾Bb1Ycny̗stuxy{||~~ŁiʋqpomkwpRyM\gr|ƾiknoqrttvwwxcʅjigy¿.dXV_jt~ŋcehiklnopqrd×;V,%WcmwZ]^acdfhhjj~b`Il?@ABCD|}.HuI]fpxq88:;<=>?@?!AbS^hqyX677899:;,V`jry 10112 12BO)8'"X`jrxw01Y W&5"&Xbiqx~n./` Y"1"%Yajpx}m. /n ]!.!%Xaipv|l.m^ -!&Xahou{ k.-.-l z..//..-.-..-.- .--..lX+##X`gnuz~j-[z-%l~W*& X_gmsy~i,Sz,m}O'.W_flrx|o, ;y,m~}G$7V^elqw{},x,l~~|>#GV]djpuz}+vv+{~}|{2 $sU\binsx{}~+*+ _~~~t+~}|z$ #M[aglrvz|}~@* @~~}~~r*~}%||{{z" @Z`flquxz{|{|{{||}N* ~||{||{|{|{||}~|^_`acdN* 1~||{|{{zz"2Y_diosvyz|}b*)\}{z {|}c**))*?}{z{yzyg #W]cimruwxyzz{}|) 1|{yzyz {|~M)[}|zzyxyxyR!2V[afkosvwxy{~7( a|zyxxw xxzz|{}( `|zxxwwxwx<"gTZ`einqtv wwvvwxz{X(/|zxwvwwvwxxzz{{|}~ g( y}zxwvvwvw! BY^chkorttuvwwz|w( X|{xwwvvuvwxxyyz{}C(/~{xwvuvvu '|}.W]aejmpsststvwy|C' x}{xwvutuvwxy{}r'V|ywutssttuua)zz)VZ_chkoprstvwz|b'&' ;~{ywvttst uvwz{~B'i|zwutsrsu?)xwbQY]bfjloppq rssuwz}4& U|ywvussrqr tstvx{~o& -}zwutrrqrqrsvUVXYZZ[[\]\\]]^_abcehjkY4 *Sljhecba_^]]\ ]_bfj %JHG D7 UUTVVWXYZ[\^_abcegij\D4Sjhgeca`_^]\\[[Z\]`di1 HIED6/TUUWXWXWXWXYYZ[[\^^_abdeeghZGF(FFigfedcb`_^\\ZYZYXWXYZ^`eO!BCA@?:/ ;TTRSSTUUVVWXXYYZ[\]^_aabcdeffggYEFEYggfeeccba__]][[YYXXWWVWVWZ[_dc$ @A@>=<=5)ATRSRSSTUVW XXYZ[\\]^__`aacbccdcbccbbaa`__]]\[ZYXXWVUVWX[]bg,=><;: 7.#JSRSRSSTUTUVVWWXZ[\]]^_^ ]\\[ZZYXXWVUTUTUWY\`f/ ;:8784)#OSSRQRQRRSTSTTUTUVWXYZYZ[ZYZYXWXVUVVUTSTUVX[_e2 97 5456/%#TRQPQQRSTSTUUVWXXWVVUUVUTSRSUWZ_d3 7643+!#SSQPOPQPQRSTSRQSTVY^c35100.( #KRQPONO POPOPOPPOOPOPQQRQRQRQRQQRQRQPOPPOPOOPQQTVY^d/351. +% !CRQPNMNONOPOPOP OPPOOPOOPOPONO PQSUY^c,0351., )!=SQONMN ONOPSVZ^\+-1.,))**&0TQONMLMLMLMLMLLMLMLMLLMLMLMLMMLMMNNPSVZ_G+-1.,)(''($'TRPNMLKLKLKLKLLKLKLKLKLLKLLKLKL MOPSV[`5 )+-1.,*(%&#BSQOMLKKJJKJJKLMORTX]\, &)+-1.,*(%$#$$ 1TRPMLKIJIIJIIJIJIJIJIJIJIJKMNPRUY^C$&)+-1.,*(%#! ASQOMKJIHIHIHHIHIHIHI JKMOQTX\W- #$&)+-1.,*(%#  )SSPNLJJIHGHGHGH IJLNPRVZ^7 !#$&)+-1.,*(%#   3VRPNLKIHHGHGFGFGHIJKMORUY]F  "#$&)+-1 .,*(%#  3TSPOLKJIHGFGGEFEFEFGHIJLMNRUY\C  "#$&)+-1 .,*(%#   0STQONKJIHGGFEDEDEF GGHIJLNPSUX]= "#$&)+-1.,*(%#   $CUSQNMLJJIHHGFEEFEFEFGGHGHJKLNORTX[Q0  "#$&)+-1.,*(%#   -KUSRPNMKJJIHGGHFGGFGHHJJKLMNPRTWYV9"#$&)+-1.,*(%#   &@==nprF1#,DmD '+,:nk&  *8FUkmoqqsuvwvutraRB0 V7.Ibmprvx{}~{ytW; +oN@^lptx|}tV, =E 7^lrw|wN& 8@ )Qkqw}n= 8A -Tnt{Ã{D 9޼g' 2Yow~̇¿IO5 'Npw~ԅՀwB3 M ?nwځ܁a0C: 5bu~ނ߃ÿP:5Cp{l9^O.Wv¼MFA;pz¼ZB>Ct~q!B<KwŽ}HA;RyQ @;Y{ŽS!?<`|ǾT#C?X| U!BBS{OAQKy%CFx#}#T4;t*ȿi |:.q~ (ƼW6ހI Wy ƆĻG;ڀـ( At׀"WӀ!3 3p}ȅ*Ža%΀Y ^w ‰ ¹A6Ȁ+9q~Ƿ$ƽ|p€(9!kyֶ#¹O'ݽ)Iq迁#Ž GѴ'3*jw޴DŽ ^ ׯ&Rp~ԭͺû G܁7%ivΆ˷ýZ݁*No|˥ǟ$D"< huѡŀMS}Jlxٛ ⷀ)U߁"fdqࠗ ߄݁ բLCv!7jv㫏߀ހ݀܇܀.䵌_̀4[o{߽݀܀څ؀0ʌ~|2uڀ$Kfs؇ ڀف؃׈1ӏ}}|yxOb׀!??@@AA}96MJgr} <<=>?H2G6hs~;<=>S ->,$gt~:;L_)8')is~9 :ch&5"-it~z89ki"1"-it~ y78 9z n!.!-ht}y7y p -!-hs| w6x76{h+#)ir{ w6f 6 {i)&&iqzt6\655656z_'.hqy{5E5z$U%8gpx4 4yJ#Gfpx44 ; $senv}4i4* #\lt{I3I3" LkryX2 kklmmnoonnonW2:"vzxxvutssrqrrsux} RON C dffgikmnopq rsrtuvwxzS& Szwwvussqqpqqp qsvz= 'PLKLJ:3defgiklmnnoonnonno ppqrtsuvwmA% <: 7/#$Ycbcabdedefghhijjkjjijihgfedefhjnsy8 ;<:877885**_bba`cbbcdcddeedeefgfgfeededdccdcefjmrx< :7 65566.%)eba`_``aabcbcbcddeededededdcbbcbcehlqw= 67643 +!*cca_^_^_`a`abcbaba`a`aacdgkpw=4101-( *Zc``^]^ __``_``_``_` _``_`_``__`__`_``__`_``__`_`_`_`adgkqv8341. +% (Qca_]\]^^]^__^_^_^_^_acfjpv50341.,)!Ic`_]\\[\]\]]\]\]\]\ ]]^`cfkpn3,1/,)* '9da_]\Z[Z[[\[\\[\[\\[\[\\[\[\[\\[[\[\[]_`cfkqU%+,1/,)'(%.db_^\ZYZYZ[ ]^_cglr@ )+,1/,)'%%&%#$Nca^\ZYYXYXYZZY[\_behnm5 &)+,1/,)(%$# :db_\[ZXWXWXYYXY[]_bfkpP!$&)+,1/,)(&#! $Mca^\ZXWVWVWVWVWVWVUVUVX Y[^`dhmh6#$&)+,1/,)(&#!  0cc`][YYWVU VVWWYZ\_bfkqA !#$&)+,1/,)(&#!  =ec_]ZYXVUUVUSTSTSTSTUUVVWX[\^aejpT& !#$&)+,1 /,)(&#! =dc`][YWWVUTSSRSTUWX[\^beinP"  !#$&)+,1 /,)(&#!  9dca^\YXWVUUTTSTRQSRST UUWWYZ]`dfinI !#$&)+,1 /,)(&#!  *Pfc`]\ZYWWUTSRSTTVUWYY[\^adhkb9 !#$&)+,1/,)(&#!  6[fca^]\ZXWVUTUUTVUUWVWXY[\]`bdhjfD!#$&)+,1/,)(&#! .H`eca__]\[ZYZZYZ[\]]_abdfhiQ8!#$&)+,1/,)(&#! 2@S`feccbaabdegiiWH: !#$&)+,1/,)(&#! ,+=A@@TUFBAA/-!#$&)+,1/,)(&#! !#$&)+,1/,)(&#!  !#$&)+,1/,)(&#!   !#$&)+,1%/,)(&#!   !#$&)+,psG=>@==nprF1#,DmD :nk& '0:HJLMOPONMB9." V7 2BJLMQRTUWYY[\ZZYWVTSN<* +oN-@JMPSUX[^`acfghijhgecb`]\YVP=! =E (@KNRVY\_behjmoprstuvuusrpomkifc`\YS8 8@ :JOSWZ_bfimpruvyz|~}|{xwurpmigc_\M, 8A !;MQV[_dhmpswz|}zwsplie`V3 9޼g' %?OTY]chlquz}}yuqmhc[6O!5 8OTZ`ejpuy~~zuokfV23M /OU\aflsx}}xrmhH'C: )GT[ahntzztmg=:$53QY_gmtzzsnP/^O%@V^elt{zsg=F!A-RYbjqy!ypFB!>4U\env~€Á }uW!B#<9X`hr{ŀƉ$y`;A%;>Zcku}ʀˆ̀ˀʀ|iB @!;C[enẁρЀт΀sC!?"<I\fozЀӂԃՀҀ&wE"C(?B\eqzր׉؀.vE!B*C?[eq{ـۀ܃ہ.pA A(Q:Zdoz؀ۀ܀݈/f%C-6Xcny߇0`#T4-U`lxրހ/ÿ}Q |/:$Q\gs̀3¿zE6ހ/J ?Xbo{Ͻ4¿w9;ـ* 0S_jv˶,¿~_WҀ&3 'OZeq}Ͻ+¿xI%π&Y CT`kwз&~r26ɀ%)OYep{ջ%xXoÀ'9JS^iuƭ#|r; 'ݽ"3MWcnyԳ!¿vh Gѳ&4HQ\hq|̩!¾xpB ׯ&8KV`ktÁׂՀ˼ {sj G"7ENZdnwԽтЀԸĿ|vm=݁ 4IS]gpyҹʀε&þwqgD<DMV`jrzϾł ϲ%yrl7|!0GPZcmu| ɥ~{~zslaUŁ%f BJS]enu|Œ^ɽ~}|zxvs{tni-v!%FNW`iov|ř rǡ~~}|{yxxvtsqsztpjS_@ACEFHIJKS~|{zyyxxwwv@ABCEF{ ~}}{yxyxwvutsrpmjg> ?^#EMT\bgknqrstuuwy|5678:;==?@G}}|{{yxxwwvvuutsrqpnkgQ8S/FNV]bhkoqqrrsuvwzv023456789:k~}~}}||{{yzxwwvvuutsrqqpmkg`.Hu8GOV]bglnppqqrsuw{~_./01123456~}| {{zzyyxxwwvvuttsrqpnmkgd !Ab@HPW^bhknpqrtuy}H+,,-..001G~~|{|}|{zyxwwvuutsrqpomkgd;UbBIQX]cgknnoprvy}0* +,,-..`|zxyxwvutsrqponlihd%5MJ CJQX]cgjmnoonoqty|(()**+,,s~{ywuuvuvwvwvwxwvutsrqponmkigd/2G6CJRX]cfjlmnnqtv{s()**{xvssrrsrsttsttststuvuvwyxxwvwututsqpponmnmljigd5 ->,DKRX^bfiklmnprv{k''&&(('((6}yusqqpqrrqrsstuvvwxwvussrrqpoonmlkhgd=)8'EKRX]bfiklnruzc& 'J~zvspnmmn ooqqrsuvvwxxzyx vvutsrqonnllkihfcC&5"DKQW]aehjknpuy\%&P}xtqnmlmnoprsuwy{{|}}~~}~~}~}}||}||zzywvsqpnmlkkjigedD"1"DKRW\bdgijikmpsx~[$%]{wromkjkkjkjkjk mnprsuy{} ~|zwusqomkjihgecG!.!DKQW\`dfhjlnsw|Z$[zupnlji jklnortx{~ }{wtqomljihfdcI -!DKQV[_ceghiknqv{Z#[~xtpliihihijklnprub$#WvrpmkjihgfecbD+#DJPUZ_befhkmquzY#L}wsoligfgikmosvc#XwsqmkigfdcbD*&CJPUY]acefghlosyW#D}wrnkhgfefghilorwc#Yxtpljhgfeedba>'.CIOTX]`bdeehjnrw}]# 0|vrnjheedeed edegiknrvc#"# Yytoljgeddededca`7$8CIMSX\_acdefilpu{h"}}wrmigedefhkmpub"Zytoliedccba`0#F BIMRV[^abcbcehkntym"!!"c}vqmigecbcbc egilpta!""!"!"!" !fxrnkheccbcbcb`_' $sBGMQUY]_abdgimrww! N}wrmigdccbcdehjmr_!kwrmigdcba`a`_ #;GLPUX[^``a`acehkouz4! 4~xrnjfdca`a`acdeiko\!uuplieca`__^" 2FJOSWZ]_`abcfinry@!kysnjgda` acdfikdLNNPQRRS@!'zuokfda`__^_^"'EINRVY\^^_^_`bdhkqvQ! Lytokgcba__^_^^_^_ abcfgjmoqrtuvwvwyz|~R ! ! 3xrmheca__^_^__]^^P CHMQUWZ\]^__`ceinsh &uupkhdb`__^__``abdgijkmnnoopqrruwz|? Jvpkhda__^]^@!2CGKPSVY[\]_adgkpv, Pvqmheb`_]]\]]\ ]]_`aacdefghiijkmorvz|u Otnieb`^]\]\\]/"hAFJNQUXZ[\]_aeimsI &ssnieba^]\]]^_`abdefgilorwzUeplgc`^\[\[\\ 4FHLPTVYZZ[Z[\^_bfkpc Iupkgc`_]\[[ZZ[Z[[Z[]^_` abdfilpux7 %tnieb_][[ZZ[Z[ '}|$CHKORTWXYZ[\^adglr6drmhdb_]\[Z[[Z[\\[\]^`bcgkpt`Gqkgb`]\[ZYZZ[[K*zz)BFIMPSVXXYZ\^aeioQ 0tokfc`]\ZZYXYZ \\^`cgkpt6Wnhda]\ZYXY[1)wwb?EHLOQUVVW XYZ\^afkp) Fqlhda^]ZYYXWX YZ\]`cgkp] $pkea^\ZXXWXY[DGILOQSTTU TTUUVXZ]`ei] "_lieb_\[YXWVVUTU VVXYZ\_beimJ>kfa^ZYVU TUVWY %ol i'CFHJMORS TTUVXZ]aeiB "_kheb_\[YXWVUTSTU WWXZ\_adhlYagb_\YVUTS TTVWM 6li'BEGIKNPQRRSRRSRSTVXZ]aee'Rjfeb_\[ZXWWUUTST UUWWYZ]^acgkX"=hd_\ZVUSSRRSSRRSSTVX, 5jg _9CEGIMNPQ RRTTVWY]aeZAjgdb`]\ZZXWWVUTUV XZZ]^acgjL !cd_]ZWTSRRQ RSTUX  ggd bBDFHJMNOPQRTUWZ]aeJ+Zheb`^][ZYXWWVVUVVWWXYZ[]_acgj<Od`]YWTSRQPQSTV9 2ddaba B;CEGIKLO PQQSUWZ]`dD@hfca_]\[ZYXXWWXXW XYZ[]]`bdfZ+ 5d`\YWTRQPPOPQSTW 1aa_ ^ZBCEGILMMNO PQRTWY\`c9 Dgeba_^\\[ZYZ[\^_acfb:*d`\YVTRPO PSU; ^__\ Y4>CDFHJKM NNPPRTUX[_c9C\dca_^^]\]]^`abd\? %Z`\YUTRPPNNM NOPSV .\ZY Q !BBEGHJKKLLM NPPSUX[^a8)C[cbb`abceC. U_[XUSQPNM LMOQT= YWWV T(:BDEFHIKLLKL KLLMNNPRTWY]`<8BBZcAS^ZXTSPOMMLLKLLK LMORU WT K BBDEFHIIJJK LLNOQSVW[^I #V]ZVSQPNMLK NPS4 *UQ N2/BBCDFGHIJ KLMNOQTVY\Q( ,Z[XVSQNNLKJ IKLNQR QON OD ABBCDFGHIJ KKLNPRUX[]? >\ZVSQOMMLJJI JLOR' (OLKL J:!ABBCDEFGHJ KMNPSVXZS0 ,OZXURPOMKJJHGHIIKMQ: LMJIIJI@0AACCDEEFGH IKKMOQTVWZJ+ "EZXVSQOMKKIIHGHGHJLOR %JHGD7 ABCDEFGGIIKKMOQSUWXL7 *DYWUSQOLKJIHGFGIJMR& HID ==<<=5)2A@ABABCBBCCDEEGGHIJJLMNOOPQRSRSRQ PNOMLKKIIGGECBCCDFHLO#=><;:7.#:@@??@@?@ABABCE GGHIJJKKLLMMNMMLLKKJIIGGFEEDCBABCEGKO$ ;:874)>@@?>??@@?@ABBCCDDEFGGHIHGEDCCBBA@AACEGJN' 89756/%A@??>>??>?@?@ABBCDEEFEFEDCBAA@?@??@?@ADFJM( 743 +!@@?>=>?>?@AABCBABAA@?>?>@@BEIM'51011.' :@?>==><=>?>>?@?>?>?@CFIM%351/.,% 5@?>==<<=>=<= >?@BEIM#1341/, )"/@>==;<;<==<=< =<=>@BEHG",-1/,* )'%@?>=;:;<;;<;<;<;;<;;<;<;<<;<<;<=>@BFI7+,1/,*''((%A?>=<::;:; <=>@CGJ) ),1/,*'%#3@?=<:;9:9:99:;<=?ADHG" &),1/,*'%##$$ &A@><;:9:;<>@BEI4$'),1/,*'&#!!"! 2A?=<:989 :<<>AEGD#"$'),1/,*'&$! @A>=::9878877878 9:;<=@BFJ*""$'),1/,*'&$! (B@><::876676767 89:;=@BEH6""$'),1#/,*'&$!   'A@><;:98877656789;<=?BEH4  ""$'),1 /,*'&$!   %A@?><::98776565656567679;<>@BDH/ ""$'),1/,*'&$!   4B@>=<::98766565656767789:;<=?ADF?%  ""$'),1/,*'&$!   #;BA?>=<::998778789 :<<>@ACEC, ""$'),1/,*'&$!   .?A@?>><<;;: ;<<==?@ABCD4%""$'),1/,*'&$!   )6?BA@? @ABBDD8/%""$'),1/,*'&$!  '* 68-**+ ""$'),1/,*'&$!  ""$'),1/,*'&$!    ""$'),1/,*'&$!   ""$'),1/,*'&$!   ""$'),t8mk@ !%(+-L[]}_[W.+)%#  "(-2W˯g8.)$  %,1T͝h3.'"  $,3k}=-&   !(0Xm4*#  #*4B/&  #,9O0&  !,=W1'  )4B/$  %0t6,   ,Dh1'  %29+! *7V1%  !-`7)  $2<-!  &4A0#  (6I3%  *7`4&  )8n4&  (9d6&  &7V5$  $4H2#  !2E/  .A+ +a<'  %7t5"  2J0 *@' #B6! .K, &t?" 1i0  (D#  83 (G$ 85  (I#3}3  %E -i. "^A  )V(28#sK  )^,1;!bK &]*+q72E]R# !_, %m6(}@+I2R!MZ&`c,tk1q6x;|?BCEFEw߃DhڀAU}?8y<+r7)k2&d,#Z%jߒR;ˈH,|?'n5"sa* 9ːQ  +C $p5<͘\(  +J #nr82Ǘ\(  (G E֢l3 +T" "O۩w=-\(  "YܪzB-^*   Iڪ{B ,꺔\+ 8ͧw? 'xⴍW' 2뾝l7 !>ΫJ (o൐\+0缜m:9zG #C˯T'  (KԳ_0 -]ܷi9 3k޹p@4߻uF 6xܻwJ# 9kغxK% 8]ӸvJ% 7Z̶rG#  2UIJmC!  .Pf=  (Gmκ\8 #=_óvO-2Rw̻iC$ 'Ce|Y7 4SsķgF( &>]}ĸrQ4  -FdøxZ<#1IcvZ?( /F`zúsY>( ,AWoº~gO:% &7I^sĽmXC/  )9I[m}ʾxgWE5% '3@N[jx~tgYJ;/# '1:CISZbhnqtwzywtpmhaYQH?7.$ ic08r jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 ޅ(^Y&YNlT%ؾzv%Ԩ:^1QIxCtv:uRQ좄^ %ZeGk=@68őW¯rw]A_:{IHT5*(/~}p6L\>kIwUbxG.\躆Iq.fV[E^:9}' "( [@ɴNUU ȼ`jH'UmP ;Dɗ (#`.9]w:}m~"6xhXl1~}^mӮA@@|8R˜Ǿ;Nֿ."DJ-n!ѡe`qn^ -?%d/k&n3tur},7*3Q} {bY)Pa F]̾~e 7s},ԏo >fj4ߐR͘f#y0')HG|l䓲PUeS4KvdY#JY=j AΤ߼MXщco.BKCQ?^QĊpR`E]dGeeHX,rmzBx"Eٚ9p](S0=i:QrB|uOo``a-(p 8j4g S3ZZiLӠAfKiv5BL j骺0'DMO26 F Ln0h =f{[SԒ0D>z$Wv79XS'Nu;u*zKƥ9:T 4{tؿh^l" vQ0{jK9u4,hG}Rc;+Qk:7z&5;n(H-p@;Q|smG&t{kDT5Z$X}}fY0[Ō. #@_f\ uU)*98\ ^<~- I%E $%C0?n ObG6:~AV>IKٕ{SY;V~nOsPkʎ:;Cw嬞=B0=Or&55 :MUXg\#v=mߝ!A -eBd֎qn`aEė*3DV/2S,P=v5?f 4ެ~-܌zO{tt֞=kӰv߿$z`ֆ)Eοz^bpʧ2(W,6.SQ󱐎F)*ŝ C2%2Lh|~Ujwm<D9& ٛ$"p(t^d.H*v#~.J8d ~M Zw&x(_哴#M1uÅ a_%A,'E[{bcIA(V-vg{1ӱՍe ]k{S^~-mb+F6ʜcf%h&"h :ÆKɤ5U{?W󌶱Ou!0'e#l|~nV1O)0to{qۑFD,iH{;+ʌFBX( #Ci ^$pqJnwߣ$ocm?{( lh=LzOK`V؆1oݻ,J~,ۘm9VVauQCV(yWy<Ȳeb6;o_lB"Qy3| Vyb6 l.LyT@[1?I$-h$΍afqD-}Ӆ?#S!XOSpCԐ:E~ lS Sy&"b$!RX#]PşZ\mVa9 ⤓آk0>cPg = ^m)c=xx;Pm"UX#8+PJZTnDSD^o."GuE) ͡B *=Og!r| )}WJK( )v&mkIHArXǙy]7qT L${uUða11U? w&aUm iuB82 -exG֓Nf<.\@R50w­'pu0l_@ŤEׯb>?I3z W [-^Y#%7cG=[qXmFZ6}x9Jc\*\Gu$A9(1S@#-HBjBJYe nZujbq`45!f@!>q£0'kة}6`̖9'=dgbۢy0K;{jgOMԦJ NV< ԃ"?`e|q"=SVFt\ؿ Z,|Z0Ъ.aR:Qd~\T}`B_1ҒktP>p#*t׍PbEDF2NOL9DR`_p^@}דq>{Wb@[P#SMѴraWuOr"DLB1޹]|!+3 rz7R$j&Խ<OSAeڅ`?3עFL %.ђK0rIzWOM"eU{V!.$JTPAFh3Oa {h=o\eے@}Ǭ ] ^yȗ 6emPyQtB|.)C*'R']tq R%S= h*t#,|Ca?q.җq=" 1yhÑ f(A~0M/t#-S mi Hԋ5ϏPQ!YTZ9OXzګcF7{5T0+`=@n`|4J3GEsLkH Yff"xlVH£#% $S 7j"n-HȄKktћ ҋN,1"J0x"-›&+"/?87j; k Ub\(bdž1Ⱦ,(^!^2}'(mҁAHMm!6Ce% l+yb#0Pn؞|q`-[-$L1+X'HsQ]!k.ȺKhjJ# ķh B %~W&dA(jh3BA.∍{D.K8Լ9!\W-)ݷ\/y-f2&OI3, J*kG.VvhV?QL1nęԒ@հ8^d !1dda {Dҧad}ӿ;ܵYF&Tf?/L4}Tm tWr6`PG+O–Uu }CELd`1BĥN͆? ޯsx6Ii\\3&:$ӭ~RkUtï ~iVs ;)]WhJCeڨpX!=9z/[XwԶD ]#Tm pƩ~!tOi1ehs u*h YDpޜ~vP-]xցJڸȤ]K $uJTZ!-ěoVaS]>t՜T[~sG|>V'}9m+|VsF;(cO5 g_{ڦRE@T۴*/)uD#"^ 2mݣY2=IoȠc_535B$$f7#[ʨ黰4'yB#1YyHH[!zgHupM9MqO})kQȴTpL#̲W,f ݅B>عs.0N0?h]%ot|:90`5඀_p/V.,pqc"E]ܞ2.%ɨWO_̐B!( tOUDm tr"MmAbP_<8>Ѯz+Y/YmWKu6(O^TAaQf'K%ymlTW#A(\Cf1D䔪<B;t7U=4M^E#λct$1PX`}5k=9TG r%' M*mW?zQm=) RM#dg?9I7BIW}yBg73)% u+uا͒(烫C's7B8 Nm%m1Ő,p]pׁW:e/kz}/ϲ`2*h5Pl8 ƔLU2*v.Lk%k *%zw6 ť#.RNIY]3yl B}1, wչ3Gc}'q] 8!1n̔qoch-&rFDѢyVFi;tShL#FL8J-P~Z]KQ:#NH;9D0:AD(|/ʶ ul%tWԾMvd 3V.IV.%V+)Oy ̖/ޏ{Lߒ:}t;Vc~b,Š*>6} +1N<^gCt[5 i_xg2&`T.rP",_D9Ww-X/jtY-4ZF75_CCY]m Zca`.{@b\!ͺ 4Q%>GE'uomja$%عC M9j \& T Bȟa"0O gu7X!eBE?u~9vOCuVYm?/uyWx}?Zɔ/tb_>ʝhYIr32!4uE'JvGrOu1Z JɃ"ݣ`×hB;ҙvjlT6 τ7f7W k> > c}:;i Qndc?kxA}g`a,^:/ yu| v*qi% aClg!v>urOjk1r$z9aoSyJ{#G8dL&?>33Q΅'OێCQrʮs; on埥AaKfq8v$ͷϚ Ϲmb,bYxsӹ8k*"}w~;zs,BnV'63Z1o_񞠳mz'F^`ͮȒ`79M$͎j (!E[ntSbDJInfmES,x( Ҕe3C9*X/?&q%^Un!U~ cӬ : - @?胅Xh8qA%#D zMvg5'7bL-Ip@-B)~+_خ2y3zs݂Wpp<x״n&m^%ŶLK})Z3 @"0R4<@(MekВp+7Rw TO{ $\p[?tR^\V$pVPƉi^BA.aB%ތ<$#]tFuG?QJ_khR.ǜh_ l ẋ$ʭ`%zA*40Aǔ,|urpPe`5+M^Q`ꌒrvF?)BFTIڽo։U,鏱hIk?ÀH YX^+\ \Ɓ?>"Oyb,o^Rtj|CF{sϫ T>zaUY<%>ak8w0}R=]T|Nsc3Rf<=xwgylc"i@P\^մN̓ ;FPZLx!o&-ӡ›eFλJ7S#ًP#݌wT|)[S[ K͜Hh%?s r~/a5' *r+N~AliFhHp%pw,B,v)@q C\8C??f]r`bj6Zpɮ\8JQxwS(wӋABϥe$-/p4^72%{o-&gvq"G\} W'{^7*5a9doGsr a03Fa 23'OnIWw/Yf@qA9Ѽ/Ġ<&.hčU>L$;h0kC_3ЄʱZ蝅vcaGEݐwvG Y쵰 #liqe.搈fLpqmVUQ , jO=;¨DV8> ?(-(7/^9ClT-+=km( *t i4" ,cEcD2-R?E#[Gq&}q[.iXDNk*\i`ɢكi :ԣSϩ\ E,<PȼL#oˢEHG$ρ)?GJ(Fb91}[$xdsj:8;EҌd[?|$LI5e(k܌ysT ҔjhآH?+:j542~7n핟${U+B#IIm<.w[P7p6!ք 's')\O/`w_Ox,4M]1 zٔ_y"uZ^rl`;srܲắ:pC0 ů4Uſws׬6')ҝKsA^ jʑP傂}S;C,ޒ.b~㥅FRa>~-`m(gLCww[)-|vīyÑf,5}#o^? e]G뼃.0ѹQN:gmWWb Uܼs^BщxѾ]v) I"/E㾵^_B|7S+aa;f >ה3K@"&z`y_cLwuGXqj ƀ:'ƺ/HzP,zU+x$`^BL8Á Ů p9hj'UNؓ),M v Mh,LXmbFaD AM4C-\· Aĭd(w[h>Gjz؜ L3wqѣp `O "bhytYԽKvAb?I#p-Di98mMcU^H'8Eݎ([Fh )Uǯ^ޭ@q%@NFK2/CIl@SzJ8\_BX>t$SSoµu?XbY9t/3tt4bmm7/fX]1Ye'3udK_P,ǁ3X%1_M! H6,1 ÂsRyHdWH497n8|Ftmn3Ղ!vC8jXQ?ޑdgK oYY;&m-߼h7/D$o.eVOB*-KH*E\LRnsH:l mlM 7b?n>s%.z\\ex1$!4nU$Nl4[yq}^q&6kP瀗IT =6xk\{rsB䍔a؇q:*8I^.$&U'z[fi&.ZR픻4PHhA6i8NLNX >_y 5B[No&4[ɠXA"wϊ)H ݺ}1;+pX1,Y2ID/rP&gQ'#+6c};BzS!t'<,i$Gn:/'!խc5i;8f*WH1tmce2;ORu.T+Qܵ0&֑V̩A`/H$pA})"oBq&.N!%I.ko%#MN]#vl9}S1J_%? p1* XF?mȶ Vķ( uxBfL&D~9FnU|mAՅ[Dc9}GgylOj7J7/'\+U z Z{ /f7my^$ٶOo"a)"P_ |w qLM"-'Pqb qY|g00j@=vl6G^iz/]?ٮ~"d^G<9-T[|*#GW ߜ?=k6TQ:%~w*P뷹r 5Hն rPn⮗X3<}Y ظq޾_uOH2[DfAґlJq8CSI]@^mZQNz"@]*n8G%8BҬ -5fQMs*6%I.;K }ȉSK $oo4hnf5j [i!mQTyֹely6ϗZ_Q+74|s;KIls5T8"kADJ,@d sWgQė'4/}kYgBa?\$ToB:@Bl!s Ʒ~r஀xj1Xf ۜ=?%S(r$?{g=.~iw'k/t@^""6vo1xK۹[>'n K]ޝKC|_b"oǟvSqA'\~kqU>?AOR%\fק^w>+&LضPD w2Ɇ})Dr*S\>٣'xe F[/[ӎwP[3*,fh` BѸLPg|n{e<0{cP$އV,{Myr%{p%qw ]qw;[ 01i<I D zBЅ2R L^,`u'G^LN0[E- )n6Y6@!*8Tf k?4HOӝd“)8,#nH3;rmCYYyۣUa%\$͉R"QJq09?1}9oKb k7`&x59!Q~%A!1 ;Kxu;S*ծ|>O{p'8k>d}y\":[$?P0-w'\ғORE3 ,ijbP`"<7;=[? Aa>s]!WKjw9M3q):/X >}9i y.b0jl*MbC h )% kwj!&?)EʠV[$yOYxع$֕3u 3&n&a1/Jy-YE+8@DŽΒÉԮA|Rd [^j49F[I&H3ʇˆ:6%ӑhV؆*yMx:DIm'cٱ3s(fiH"Bʢ땫4'@]$oUeѵQO PJ-<6kγ!U(V?@anI&aHDioAg ZOD%O|h%AuapnQ%lh} ]"A1sF`9:WNr,k5=]G$NwxRe}h[hg?}Ek#la|i%%[H2<)Nw : ϏB&kj XAA{l7/(K=PjU6P2 = auxK# ;|')io? Xr3^ |J.! +kk+sZ-b:Z\OJCs?~+lT88JF#d08@VXhK;B^oMfgBNUh8XML rt Cr)jnpl칓^Ƴ 3HCfX bNketg{s௫nBLP`p4o<>0f*Ňu7HjߡnBȼDruxBfTT]{I|7h5*XsXPT>ILޱ&tY$rL4e$5O`9jX9~ R֩RchZDcKvv,~{3C]0cwM| B %-ŒR1?Qv=e8 .3 }JA1 @(U=zri/|5~ ī; -o0~u5賁Ylf$l Ѧ&H$dâm-5ԮU%xy}DPz@nvE}$"7f|OeYffwT)g,G>Ԅ^ ݆(a>.fezk۲AjW@ ѬN}O+5~#')DN^Ukhj6㽝Q&1:hRN ôFA`߹n6 J:(x9lpm! I c"}#y$Mʚ㸑kx'.Jr"EVlt‰gάu!<9Hf6FA=R-6P['#ſy1O'vk+/>".kswĤ՞V+y9~=88 0-}2*.ͺvKU ȄJ=z.svE{.u>Rit+1 _l7%,sܝ dN(ɹNuı }wye\SosaI Q26^}gQcze+h9JiHdvQ-F}_ |6]-~"_M l_&rEK(Uv7~7Kka[)]Ϸ\Mk3)>KkPJ%TڊugHy'1-cˠwJ:_ge2>zzŜ8I?Z;4r~ S:-mгݱ:ޭөEWdA*z S^>ϡsT*4ae` &YJ;zڭ< 2H:AJ8l'{E{hDE>'=@f:uGm>w`z]{]-dI|Ak*FDvd8rHxplrO~[~AZ4SctrL,oVjS 걉?oas$쾋dbGd-BHOJmƝO/]u8'\kQ3oȑI5͞TڶɅo_ldu~>@DԼv" :gx<-TIT*QAfe8nXmO,odT: ˠn@DeD20t:> 7S\E2è(H;"2.p}i1.߲{Im[@[hF$QDbvX3*yWap &՘'@KzE@օĿZ=ndK'8oE1t2Η48St,84MGX_&YR\mYœ ˂R5ExPO,a~rn*ssIĀ9q̹^GAڟz~G\7$Az$bW,׺Ncǻ^|+t|t g :IzhL/bxVֵ U6 [ą4N!ά*߉ep[cCrQ =ѹc4~/(X?) nRo=zBkCKS ]bVcOЯGW!'l6/ʻit#ܟgdƾ%sxG3]zx)R.y-h+Aa~A&mJXE|{gK$cTnG5ddlcx}h#5k<7`pJVAn;x}092Yצ-mA>:[ G ͢O$-f=#di-j*9nr5[%2.jp &"; %! o;M}YSnz'\%&S䀹.+D*?+{H I[)*;ïO20cA` uViE~/J3&A B({Ͻq䏧*cP~^c F!>8,q2Bk۟iW_ӾsB oʒ?Պ>y0yP|x鴎r`d )z*D4  pAKCyFWe. m#FRgQ&l\%EV[}#"{?r;r}~bl&1W<{Jp)n|l-R,VC/* Oڇ|oeS.oyDe]ݚw ?r>} Iue*E:^bRѨR;5Ӈ{aɈxi:6dJ8;IES:Ѱ1˼sx}ORwDy[8)iI8ؠ4!#e}]~/z}]ϫhCNN,BnZ9|器) v. j)ZSigD H0%W_$ޟ.j5')i/;}7+lx%w^Q}2 7ڤe`dW`GNʡ15󝗽dYW2o[`,oUcή=?Clؚ@- P?ch}V }'u IXt{$ɴ[ jsC(.*! Ӏq-(EI`2XlQ#&7r[Bv~|i,*i_~tݯ_RQ|N39 4iuPZ64(9;G5׻^w.Lld 3#6(#Xeފݡ6hM-EeEA!՟)L]c0Yaڥ0Wp?([=t{Ln”5'=wC8 NJHVJ'y8x&uSFi3?"pyﴇ(Uv?<1Y9+L6Ui^XAVl0h r(QTJ Ҿu_]Inl2x]y(jJ䵈0%d,#NAL @=w}˾xH㩹=I2O\K;tRjw`]`םbܿv]=xW~4:FVHAy}H[c&a ᜣ4$If{KauW}!xBZn͖HnI3S݄)= %41\1藎Q5XZ+} lDs)95n&Q g-D8r\\,:}%`YSP2ž=8NzK+A] r njS0_}X{ `ޱ cRh-XbnEao3$ fV5Y{j$>AP.w,˵zj_ EVMR|CFAFXX9_FCY{hOePzfTWado } W coxa! I1ILkϪõy h% {*b InJ \lh=?qMУ/.AfQRk`lٺ[n7mp³wb}L$ہTp+o8I?͞fz'~ycHV$xvʻA4]D5r(hRPi鱕+9#ٙ-X&T?B%!>L1jUY2s;IrMpi@ޒG9yIuנ2W@+AdR˙C-Cpv]FsnT؁я+LGV!iE+hn,`3'~Zq[䟡WP M*q` N 3n?Ol/p7=NPjQ{j9% peǨCcqe4g|Y7֢9F3HiX\4h#ŵ-,[#/HwD Ezopټk<>ֶWB`t bVbZ:DFl ich*C?~cajԒx'@#W%}'!i8? #s3ikǢM ZT=p$[Ĵ'+3=͌1 2cj gY]^ c9狞zO~s YwMj^t\Ma6AUzdOZwh-՟yyq)5V'tO:HTka!3dAOT߅ct]yk)ۜ˔"CL]sQ!{$ʴ3nȦr |EKsG|dͤA]&E"3Ld=Le ~.d|~HcK`oH|A-{|7D2fkѲcyխ7[H#t'_S{=Q~3|7V֑KgxB'qSa]GZ⺑,*2Nuu^l2blY祙Za#={_[c,)Os1*Jk z>l/qEmnӞ+wXLC`bt-#+5m!մw{}ذJ@[m$}SOEJ1 ieį$բ`ȀiH'-G[i['.EfF@"|PJM~`Cbm`^J~IT=='{o,Ci`tq|ҳ9<"H?U6J>%WO&?3k!mX(Ec^f(\-hb9y~>Z!%B s} $r]%o0Hcܿ_B; YQJG . 0[A: 2{ ~x.ziđCBj[ݟG/q'C.qUdgCKVS ܄ݔ3#_ }-5o#S;Oⲅ=*]r(]^ `뉗HSP)E_kࠕcM\;EmglQ|e\%vI[X~{ >ej0"zsʆ6|=7 AeA[k]MN%[jfM5_dʷ&=$uH`"= U :Q?";o?o̹m),/&9&LzC=~, [^}i?>\{Lh,EX}/>cx,LD5 -}עNt1ua= Q:7z,K(-(fI;Jӝr1烠[@aR13ij4QGZY=jMJatnqL><9Fa-M=R_6hP|o{x)YsBp)qS>OHa r2!3IOPM}D\:*B,'-7~X˒Ӡ\u~|r7| U0b8+GWe+sdʆEC:W<L]֮JxCljW!XT,Q,l9p{=h ql 4)Ob@ #X|,YsVK>1YbVgUIYy?k MhUsSaj}@ `oe*~Q goq)K Tjfp(j J v][x!7!%u ph=X~t[8jpUa:ӹ4&Ͷj h0ZdIa@rVZ^X}ΊQ Q8,ͪճAeŋNw[x[&Pg ;Ŕ?)S <&G3pbEMP3O˝*Elox_kކtРj`8]O} :jHK;45pO VZahusmd%0m֝V:"-qQO}0U)  PJyK|7%93B֮&Кe@Kp\Yh]aXϗ`܃UGIzfd?ڮr]bnOފG?B%]}dķmz ?ڨ;fx`M[lfl#%K6 UV $07 QUta(4b(A;cbF`ÇĜ~/yxJ~JQeDUGe3F@r;ܙQ@(*̶QTf6^nU2MƐv|駂7!s"J!أku"Oo2S vk=IL7QZ~̂ 0MOiՏۚ'NRA|/!g6_DG>YUT <5zf%;etƣ,cl$'0D#G,D@6~~z*aSN lT*,beY(xO,Tq". d_%lceeh(9ΐךkA dvAyL[En TlLX-õb‚ ]:Lh47['ÈDV, ژ*L%|@%c-dJK azA-#;o1AGM_ { ;Xbuh}l!C,^ 582A~L*Qɗ}o羫AB= B vrQ')h2QCWqj#@Jխy<HjGJU^3œS[ Bp&tO M_4^*0̈́~!xf;}&_ zplizݵe48H6RVQOyhoR^9Czg)߇YsE#iޱ\"ls{ >Mb9QYP:xnzZDƑ:R\ɲPNh_ ޝӴ]<jۦyaQqCvh˝p}g} lâ?cçfpu:Ḇ hKa7"^OG7z6&r3J b0B>;|qͱ)7F3rO@I<]cߪ LXnxը;U|" fbi7u&TV;_=ǖpSjM]&$xh*d&oU2 ZX7Jl;PDXTO̓#Y#1-ȕ.Ҩ3pnAce6]bk՚oN|^ E, !s۸WdZ?\đ\sGZa";IH ) I%ٔ"Ic{NOx4&e„d'S Й>:t5 A0EV/?N)[[2mg@n;Ӳ `T=¹hkݸ&FF2h~o;ev9g]u0=y;Y4 :y`j.FhMQnNMzҸ`gyK#莊C1*(ʆBZԤ\`!RC%ݘDolicnZHnawcUG'zWs`su1fmWJ5-^[Uj\6ɳr%G ,cCn.1qu rٰ!EUX 17)~PX+]! +Ĺ:3`wQEaa^ݤ\oxgD<ռ :u_W:u9d[QtT0x[W7#}>qN~"iEH'K-W@\~s?Y#d0yK^VFO" s֯#I‡_v#MoGhg^'gGܨz/c?9Jg) yǣELK8ܣƏ' CTxh>mҳ$v]Qf$;}TP?^eJ,o)BZx/}kN\/Đp@m!cdREǬ=%}a7ۡ?r4 r:^GB46)i7]BBxEPƸ J2ʻ:8@R@B*!3ZZilW4AtjPT励+=BjN5_!2jofoO)3ly GDV5c+1͘#7֞/ !}M^8Ii)xN09~G^/Do14XY h=C #3hȴ}63 jC9sgKiq$;7zG%RyuWSf[#e`,~5Bҙuv iqd-S:u(D,)U=w$ Lϯ{'9!zpkhv620+-t4f0_2.W}ގ\k§mX73Z~n*MܧZ%<^tه9&PzZ3'}#ܪ(3g7w5 oFV 9YdXpx#~`PBݵ sop4cYdzd>r[mMO0IKi@Qhjّ̐gߜra&$@+YdؔQ}Z[[]+uMuA0wSXӦ7,ko7uM2\NJIӱWdEj΀royT'(O=*$BCƌ>)2S4;f؍>v4\(r*X n}H7`H LY;-k# ~@ {BBgaᱷ 8jW>^ s33͢>W5EyQd5k=El 5gXނ{xc嚿׃w52dYCTo>ۊqYUk1sNeRnYW̒3KqC&ΉxA1۔lmП3GA I 7nZa{Y S_{%\kc]+_aE]OQ9xH~m5+Dgrrp4>Qf";&5Z>Ar[]'Iח>>NݦZk䆠~RU.DdXgp—ϵ̔,нO덎_Mju?㢖\p֙VgH45ڳ}jlk}Y }.6{!Lޏֶ Vշz%u>NГMp2L\hQnPK]͸ݡBβ1bHO,*> A`gg]jR%TF- Z/CP GWD_Ί9[k ݶӒ^ h <: $<xt}\6O YUὴrjhtR6q]e*V.2=tH.w n>{O?mx nxˣ-M1[D}3n!Miսz=bJ\A8uQcef8RC7) I5hҳl$Q s jJW0Ʊ,Um|=J1+%ȧ%Aŗ8F>/bYuvK [HKq<$kMCPi l` Ɋ'U?ǯ] 뿆*TƑAfo=W $!dvh ]ƜaQmc&FZ ~N~fZᄡN f  aHtMPR"->l |\˳mP/`-7SBpcD T/b`;ݔZ/xY/߫4?ZӾ/WHCiYn,z54SNkUYvɩˢ6x2\ eנ*Ho9$d {04D Jf1c$Ӧyy޳ pڬ6S/j5_/D5t-ȭ9oe^Mz_4;a= ezh_ 7V8Nsr\z'.۸\PsPgEKN*MzPaѨ%mi٦G SWN|S;$Oz0@\]L]k2vF ۬?/ \~soa|??~hssΌIa?.>!#)jщ >g*!Go~'})`ش! pom*\9y[d(Ǫm{`Wrٮ/-{sY><7/vRSE@p'ߓ%%lnvW&FcΔ=хFu0BPqiYTj}t:jYa 7y y:v8o~0- Z,R%g^M?-V¼˙6آn*7F7A*5Ao\1 QwuxHN_vpJGC pD2$l+Cwu@Z4;Mx f >Gs|L);>,wD{K"XˈV[5בEn1M `T(70:3p⑤.-D6:/$/Yᒱ^M94T8b9K=EjJ Bsn⿋Y$B؅u΍("p CY0b["XNS^TV~ih:ڠ}:!=u2ڮ pgdDD.t96.}i<)י;E.Y{Y&Tn++X,7P "%ҩDW>ۓ"rZz/k ~oHԋyt0QF)`o#Ə0w5ElK:2‹:"*7 A qJGˋ~a}\.]_gJ7$wvN{hPt8\ aܓƘ,_?UG*՜Q\VnQPeW^pCuT)=!=Ƃ=e&fY E2>~.FŃ%Da=nmTbuU*WI ~ Z>ɷtj&AMZ$V(yLVy( CYE۬[-䳤~HMºiIY c"B}<ܑ ~ukHSAH.V&WQV]"׋b3ϥ0qD%؅!|.q?^Փ?$Awq%>GCP{|u]@B곉,0/I炣#[gQhbjMLК^[B3w!bijl aQ/./-.ύC[boXßZ@V偨9UR!ᑴ= 5xp{Y0P61hI1j˜*x*^NOzdD z7;N4y̠Dwu04l8fq9t<w3w` VK6/ ji~5I,vǏVc4s:O6]ٴrUOrT艴IP֤vhF6oeoIxM+V$[:`C^6W),RVZ=j%;qD'^\ZЌ:BG43ɃT ͬ}jRUלY\i߻<1.Gծ1FER[5 S7B@]:V4F |n$h=Zs=:ik~v*a YT =/{-na` a5vqfMxQ3J^/2.hdCue̠$jw/ bI[#{a=ؖ @Ҩ _Y=BM<7C{ xYQGҰ}o:<CsUJSˊ jڠȝ4v9 C `YaLgIڍYb-~:LVVb6']PL*l$-5&ĖȌfZSE)Y*(l9Jclz1QoTLv1+Ol_:hҟ7v]̍TcہB{?,A.k]BhM7#LppZxt~ 8ʋ;Jw8b*܉gQR9} 70ꗖ`'j-,+4\.Y)퀳Ѹ{2]LY2i(0sM { 8M!T<,t}lj],J'c7!jKS;aҢT<ޒ0 *~a 2! ,NH {l8#(;6X Mx Ro>G awv3I ‹ڈV_K;'UV W}"I䐫1;ҹˑmjshyrcj-H*j }ױ݋w. f~ 7+ {槹 %${0#W\2UvǫSdѪer){%66Dkeh8u cKd Ͻ_X߉">eA@=Ѐ灦6k+hFR7&)&P(q3O bm!:CNOyԸ27y)zP *8>3DdBNK6w" "Sŕ7Wk2c+q>;,pnKX:?gw:<:Lt;'Ȼ^r$|ə}K0@o i?-Q97Ԁ?|8Dz/jA-zJh%9U-s*,zf3h[לxxBTs NULf7Yd#/ Eք V~}?!n|&kVR%Ě݁ bJ!&9ɵ}65@ZN"#&Q4%ls͊Ł IguGfTWr|քfzlT'%JO#Mkךb/P}&4R*c*]4؜?:n=jaʺyܞ4V`'\ð{,,2=>! ztPIq65杵/pA`4‘]D=e] D,&<9ڣ|Haj1ݠ!%Y2T 8HS_0zEY\8 $:A+pD3kX+T 5//%X!C]U^07So#Ώ lcGcm=\iMcj͈YFy0MmGnB f浳ׂp"xCa6cΏrFtU1y9H\azgƅu3Q2IG$Y_E{3ՀMҢyu<ݢn+|۳1M|e|ܓs$*ۮ8 aZk ^M5+P_+G~jz$JAuJG.~cwԬ1[\ȊA`1I:VXzH`Q`j#`ʌIaI-鶷wڒ ,p3# ` G& 0#WiRĐeLsn!܂T ,[̢?(]F'ry-/T*,^>f~ /GJ1L@ڛ/Տ ,L`}YU%: q([d.˰2USIrq~o~W:KZJ7)GD-C64 ڤQ2"pX&Y0d/׊偬I eꊊiu\Sׂh$k||YE6ZəVZdf{')y]*ܵNc[|F{#vqpAZgWJYPL!N䞅͒~)Vp]"$sehMD+ިSV ZH B\T5-K5 r{jS%#fAn.<"ur^W,]IG5gd'£)j9 AB-;AV@.%n:gvZɩMV]pjpq!F5.PP5ads2 X>p!-r0Z-=\#<(ޣ|}mes;Y/2ǡQDBvlED8'khpdmvψB &!a$7> t Ȼ,P¯ELG"Hv%%GhqX]_BIt|b;JE%F_֎g۽we$Le틌06P[Uÿs|9N2O@ם;oTUlUc`=li{7C5c0¹W 須ikڒ[?q8iLJvIpOdNRYM9N_a.@QS[F-2ld\_h@,W^B 0;PSeܢ=% * Ɯm* !5*x_eoa)Wl/5 'DPo=\wt˹C)k EN'В&+lIU!x6B\Q{b+/~jю}y1q{9'wAeo^g76SW $ahCXCLɉǺ2T4RNԃ?ʷ=6&BCwȯc -e"[h-@KWkQQ aP"plOa9*O0 /e.OYI=UFڬaھ`|Zrh 5-jnk-aJB{i^@UxSCpj6Y׹苑X z Z1,x$wp6@dˡH_ቄk4UY u _Ap"4 Uh)^ǘx _qpۖ4,GG#B84 NYqYOz4Qjυ4cf-1]Ati1 LbUux~_Y i{;0v]wHH3ջPb3応o,,QJ8%Po1P!,[yuR1eR2BhtWtayI+H#{bl.HwC?j꽦 A{`\B.ߺ_h]`I*t*ػ:k)Gr(2?k\>EUԯp1óE-^P3qD]5qf*:w+w}d R(bT$he5:n'.e8=ωt*`0v1yË1r+RmJ4vѮB$|RVv/hk-4#c$D{x J(|hKߔ<ުѳBd!w8(=rf*ʞoa<+DNdue׾xVtܘsCXX @歙5W@1G삘WW@EC e~1 YKGΈxx %VƝI|fLz7CA!UOS]fmjz(}ۃFmֲZxFn}X_fNW|92<OXj$ Cj6ߙ*= Wk)F N9`EtQX|by@n<:)XuІ ,#U齍y*1/oؔ6*?ڑh1 L(e$e0`C))Zb{> 5(,stqcj&@Oϩ>X“y(K-L>^O$o{'0;K#m`A3%)WF„ ׈+-CEvQ֞ a"\:VtJ}\%9| +&gy9>Ϗ#bJ!/jA[:nrttWha{GkŁ8jnbIedP2 9a|h6qVxf ‚OO G@uuOa0h-B`?HںLwB:ya-x;[^ȡ$N+5  KA,6ͷhmu- "w0{4Dg,\|6n_F$sԦeHSZ`tL ]DzZ?y=tm(^ꈓ8N($p|L_'F wI<{ znkNf> I,J3.p$%Y 8<-%: 1D=XY1>e&W%iW6l͆>PN+U[BCqh'Or=+܏&](`YR~O__ׯ=~Ocߓڗ9=`/{x'%Z u$(ӻ^-g!Tl~\@{ h y*L\ 1D vS( J3Baސ9QdzwMT-R5qb&{z%^q"K8֡\ѫ `5,2} -: Go3 q2Et9QtCzx`*KGFs`bͳyML(lRFOXT]5la>5hz~ws:Y a a3 )׊)';(7R-iwYVKMȆ Î1\1U p!q% \ cwrmMf8ဗWj|;ΘDaf %9,%XN{S{e0vMJ&Dҹȥ҅CkUj Q$&qh2gLn xN<ڀ&uqCzhӈ ab0+8 AҭtYބ>BN3.KR7ygB␝?4IʖVBJχAvW@PPt`$2/kLV<LD6=X#e`UKml8ĕ5&$ 'e˝l 0*h iLM:<&0QZvBYK@6#{L"@,ў%Gh]8&lpOģ=|:t#\o>*y:E$瓗!stH-t( ڳi5_$>RZX7X^K;u50,5|KXqj̮Ll$6QcULI +fP3"QĀ>!췙i`; dW!8L4bPJ""9L*7㝀8+%a!y4X҄&w|) :fhwsDo]n Lb Q Qߪ$A؋DkM~+,}Ͻ75Tjaʭr=Gi(Uf:p԰i '.ojx3ik :4^M#Ɛ-菃8B^bOuw=No2dyKD% h%23>>zzcgͫhV:Vf25h\y΂f _t=3\J+[[dFH"R=f4SJe5^7: sB\"HJ\'bflSXhU 9\hq3P&I$C 8kX_ޝ7`H$*{ ݬΙZHqpzqsYLPY<;XQ(KNc35xfM+JJrڦUBoΠsbٞx"r@Ӕ3 q˅r&6[i1dAy ;_fg J#3]*#c_fCasOg oZ wͶ dYaik_cE%>׺nєf ~1;l?@jn K^MGO a*u#YFi^g@ӥ%;۴ EMTaձ8a8]*x]AT҅6N ~I9ׅ_hBI/ԶB{HU6tΎx.f/ۉ-=[Oxb;Jz?J~,)H,',iEvC5eKh#ZΦ21}vxiwrQVJKP UUW8oe8͸(KSB?d7[ WWm ̺k i2nW|@Yunnp0XidYEQG;嘄4ga҆]ZyT%cKY5nF%Y/),H~0l骉TXGh/MgFq S 2T i6)Ly8gm1Cb^kr ww/.L$Q}^uJ {:A[hfx-DvMpl~~XCN/HC^x5,XIBڈxҪR,KzH5| +6{꒸a.S6런X YnjQG5 " Ř0cTpH,%QS1!oѳj<zVE]n&]ϕ!ا3bN~~8~Fi4e1ANk/fAX\ W+~|( hPj70IO.Cn : 'j D;j iC͹¨e' &X o[Bּ,.߁{XC>uy!zIz2-:O/<)M :rD ( ٢NVw>s* P݌GbYOnإ\ " kbܲf~&g65FD4-1 !X_\@1D7CU kb|'ǰ6cH^iSʉxN+G`%x ۑ~MɊУU3meZP}DT1BFԐ Po*BӖ٤D*>7< лt GA8&.d,bT( a nHmFuAJ~A:1x B5  !RA%'H]^ a{HRDj?Q\צd{vyjz77|8NpzڅЖ/ v2@a♺um?*StO&]IƘuVϺ ni*%;0gba.Sl邁#Lx>FJoq| y2(NO !n =Ӆ7ue==e5uJbGY* m];j_HR&OOẮ/\lIJ{GB)k%<#@(녪J{:sa Wntf~2"s /Jl?W>؅XIɬ8#J$֘ maabqB}q W %5HFTBЇv/ FzOcF|' r 0MKL$H̗3I[ʄӒd pHa2,3jTnj[gV$A6 8 T2rjWӏ8mF3L`/,AŠ Fv8KfY``?fD.s߱@J_#*CXm$"X4$q&}:7E=bx *tCb;? +؍^/DVD1z0fv?O*S,33j3#eʐO>WiYPz 2d ʅ숫3va##$9fC<ěSf(* Vg^ [Ñ5 Ai3kȣ7elӱi&qUza?|m~ 0蚺J"lP@dt3}L[4vkYEJ;]z(sRUe7RR*m',Y̜җQ8l/=rLOځ 唋1"8`tSvך4oich*a)g#i e_/$9~ў楅v#LIY+#xQxޜ(QP44EbFՇIyX#!KڴDH@ω*NYAZ9`{-ouLQ^;fpY:.S]^ewȐNqa9*box5BZj }^QO@л9C [c Y 0X.M{7VB*?H/F'l}BrFNnȪt T ޶fq*Ʋ1 jmt bވp8Ea~vfRSBh8Ib$6L**Ϙm-A,Tѝ8vzorBBTZHL|>x~|`)^|E|?ᑫZ'HoAxp=Qa um!-rtMQN2DrrhώnUծ(f0̪}gsH_(BFL^HT' u[gI ^ :(JnF\D+J]TrS72+G A&?ջ $+34A(1tA"ɷTx}2(jrٻOc2V"xI7wOπcQX;Wt"ch/:녃ЛJ!zmrRYr1״-^㟺ŐH%~f rxgת8{M/$ dVД"a p~SUqO UI êc<ب.7WI s5wpco/mW?KaF7΁*;+>`SV(@գc4ˑc"Ir 21Rx{jq*cGZ2je3ћ nRAgFxV 698>rZq|x#7 Ynbb,#jB?DC15JrHۏMiJ鹵x;zϛЉر ? Q`bWt" VKLqf˦ +xқzǕ)8 Tx.]E*u~N gb3҅q윞ĠQcuҿ/X{wTv`K%E~Q~$-$"c,Iپ^ 8Pi.-5PDR<~*pc~XUTK:Ge7z6쇾Dc 9v0yc~k#y.M )qb׷3qFxY?v}`T"&C|:܆ъY3@'7򷀑ɞo" ` Ѕ{Y4P8&=dq(DXJC+[bwIR2ɫzc`M6'u$m~ג<DL92eo+Fs;b-Zfh!ԿOrmQIÌY:^'4%!$$ʧЀEے,X Xܒ#z]0bx{5wq kL[PN~prAԉ :XD$*.]b:E\Y󘡛U>7iFՅчgvPP4 مUϠ?Y9ӓ@kL;yyV 乃ÙvVY!Y׏9{^4w⛶/n.[;owX){fI%,T<d!={y[ 9~q̼: !"fHW2: j%Y~R^|J;g4f5 ҷ+"3ɕ7FEsC,HDck^QoJZk/xc q= l)l I!~1[qLX%po ݑ(eݑrm `z@sˈ`$ ^7v@I'Zpn0&ӨxuČz$ڡ4 hnTdA<ʭ*m< dcO/ 8cW2ru>% Ɍx@#K^"qj^nٖ{Aj$Q9kCjz)ULocOUGUߋ8r?U񶻸=Ƙ mͣ,+Cb/m>.zGGC=ufhggD-=oM^s/ g>aFbԣƼ>؊!\ϥ\;c䫳hPy$_ÊH y2#Zŏe #K@y-^?D'be|`3;״8s~pz qk2[$i06_7C=௤^{OC˷5ڷP׾i;tg-P2ԩ0AޅY:oN m⛉A/{MCed!й9I4_Ԩ޳ >cyq%H2hrj'WAs=PJ#K~ dj"s0clFeaw(n5N9c~)`~҆0T;/M5/2oY9 ZZFS {S֛dtU*'2הAy]jy? OCZ TzOEI:R-M t+:ȉ:Ϯ?#9hiҬKSuҪp?)x3\.ɫ;&-$m␞T`9XBI:Y7tDN\k Ѕ^|]+<%Vbl.~PK*DѱH0p~[VY?"ƚ{[=p֗NA4&"sic- MxfT2_ 4Cه'8, 1$&[aY;N9MlG11ǿL_O$};Ѷ_73وhFtm3n2+5$XFuu*~$dނߖF?z Ql5٭5H~Ks(mU>h؉1RrZ#subAe='-僂{!;X2@& fGoARZZ/i!^$;O,xX9-2ꇸ\/;O=8_Km^H#Q8]G[ I*gaq]i ="=r._etYqs6bp +{xڃC>ϟvx? '^z7.еkYTnue-[m͒E$yuJ)h$I z's32yJ ^ƹTDQ^99v6r:#sR| Q-xAWfY3L61a5s}i+dryj5;i< @Yjg,jыl~.i}Z>~t%h:~_C6q̩_noJVGre$;`JIk^C- Kta#Ch0l?,څ 6_' %%WQ  PϩэҔdbљ變H-;g;W wS}@ wR>eQDAzU:ɵFp{ie>u|ћ5((2ТO.aB|1,+oNL|v+^\~\R(QVj,dnYZFS-B'Ki^$u'vB昻7F?Rt4QXYk.g>QIH~9גLJY/ՂИk;M#\7Y[ [B\ Ya>hH~'3羾8@ CvקB'؝ٗZds /I({*Ս3Mz1?6ǧyKX; Q:Y!ƩZLGv4I(,aWaa#T.'Z-f؍ge#2 WqJp%w죔jVeOЯ *ۼ)S‚}ÊtY^`] gAKjvx`!$#+bq!XrT犑렗sPbPw>h @خ U3W1L2nq-GsMx &.v84"AL"p9f|d>BW{˾`!g(!>g<Z)6Yϝڒ<@|/W(>&'Kd{<5FU[עϽd1WyCrs]@y`3>HE.qWbacv䣚΋ϭo$uwy NJ묺HMĈʣSҾ>wa>v5F]+h%'U]Mm8;1T DZ8RCI O-9dMΞm$~H> ZX3qI.>IqC= ew|DKU((.{IEW va<Z,pad NŅL?αX. R47̫;:ÏlgD.Y{ݡmnCZG㒩|dO쒙nz`l̹A J)H( ^)kM b<>O#KnmEnM{Aa` V d wvbg*e2Ӕ.+coUZ7H,{-{Fkhl-9zÌW\+j(sF"-FǯkO?&"`cL'pnX)UCcn(TndUn FK6;>d0|Z-`(dc+y7||27wH>%A%>IgRqt{,v1pGo B:s82w*[`e nuK9̐{-\_т"FcP{Efaw7kc,&eEMUBų>s c!eE%Qo.KrWqT^-&OKOB9([jW$DWy>R. @M_ƑP #'+jb*ޖJH;(zR D)Э.GSf`6}7sS#ӤA^m ^+MiƉW5'Z"8-sa꜅|lr PFl<(WO[ڃDr?J3 ۲Y&Q%񞇹?*I.L]ꕹwOA8dp9|5ftDMطc9fb_Pb "dH %W/4hMR*8Dm=YdvEc>kkꮻX_L/.qMA*gK0Эx:ZhfI4R_Y'OX46ē)L7IcQ~ɘ0;n\S7 L>^0iԬ\Sh"ƶDKeOFc'<R+(˒ |LE:uR# 6igkAjSRC;4ݔ@u(4Ury_Vo4{\{'sG+g:< Tq e:E:=6%%[䑇z_g?vCwWSʺ?\4VQou$&a;l0\YP#QDymv涖мq]h~`GhkFpep˜iXvʦ(W!YDv ioa$ .^έ-blחRwCE+匮ɈW6+MoY^I,=:Hfd|e\% gS堃8yy F[ݳW>gM 6޿/'ջ %ߝa*T2B |_ 2/;T$C>_zGrЋ 7}^CpKnu5`K_qq32WN=ciPaV^?W!XmSicnV Bffgroovy-2.4.17/src/bin/groovyConsole000066400000000000000000000033421351304321600172640ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy Console script for UN*X ## ## ## ############################################################################## ## ## $Revision$ ## $Date$ ## GROOVY_APP_NAME=GroovyConsole # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy groovy.ui.Console "$@" groovy-2.4.17/src/bin/groovyConsole.bat000066400000000000000000000026541351304321600200360ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ "%DIRNAME%\startGroovy.bat" "%DIRNAME%" groovy.ui.Console %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/groovyc000066400000000000000000000033671351304321600161130ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy JVM Bootstrap for UN*X ## ## ## ############################################################################## ## ## $Revision$ ## $Date$ ## GROOVY_APP_NAME=GroovyC # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy org.codehaus.groovy.tools.FileSystemCompiler "$@" groovy-2.4.17/src/bin/groovyc.bat000066400000000000000000000027071351304321600166550ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ "%DIRNAME%\startGroovy.bat" "%DIRNAME%" org.codehaus.groovy.tools.FileSystemCompiler %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/groovydoc000066400000000000000000000033651351304321600164340ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy JVM Bootstrap for UN*X ## ## ## ############################################################################## ## ## $Revision$ ## $Date$ ## GROOVY_APP_NAME=GroovyDoc # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy org.codehaus.groovy.tools.groovydoc.Main "$@" groovy-2.4.17/src/bin/groovydoc.bat000066400000000000000000000027031351304321600171740ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ "%DIRNAME%\startGroovy.bat" "%DIRNAME%" org.codehaus.groovy.tools.groovydoc.Main %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/groovysh000066400000000000000000000033241351304321600162740ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy Shell script for UN*X ## ## ## ############################################################################## GROOVY_APP_NAME=GroovyShell # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy org.codehaus.groovy.tools.shell.Main "$@" groovy-2.4.17/src/bin/groovysh.bat000066400000000000000000000027311351304321600170420ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ set CLASSNAME=org.codehaus.groovy.tools.shell.Main "%DIRNAME%\startGroovy.bat" "%DIRNAME%" %CLASSNAME% %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/java2groovy000066400000000000000000000034631351304321600166710ustar00rootroot00000000000000#!/bin/sh # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy JVM Bootstrap for UN*X ## ## ## ############################################################################## ## ## $Revision: 4241 $ ## $Date: 2006-11-16 17:30:40 +0000 (Thu, 16 Nov 2006) $ ## GROOVY_APP_NAME=Java2Groovy # resolve links - $0 may be a soft-link PRG="$0" 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 DIRNAME=`dirname "$PRG"` . "$DIRNAME/startGroovy" startGroovy org.codehaus.groovy.antlr.java.Java2GroovyMain "$@" groovy-2.4.17/src/bin/java2groovy.bat000066400000000000000000000027771351304321600174450ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem @rem $Revision: 2770 $ $Date: 2005-08-29 11:49:42 +0100 (Mon, 29 Aug 2005) $ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal :begin @rem Determine what directory it is in. set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=.\ "%DIRNAME%\startGroovy.bat" "%DIRNAME%" org.codehaus.groovy.antlr.java.Java2GroovyMain %* @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal %COMSPEC% /C exit /B %ERRORLEVEL%groovy-2.4.17/src/bin/startGroovy000066400000000000000000000224501351304321600167600ustar00rootroot00000000000000# -*- mode:sh -*- # ---------------------------------------------------------------------------- # 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. # ---------------------------------------------------------------------------- ############################################################################## ## ## ## Groovy JVM Bootstrap for UN*X ## ## ## ############################################################################## ## ## $Revision$ ## $Date$ ## PROGNAME=`basename "$0"` #DIRNAME=`dirname "$0"` SCRIPT_PATH="$0" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" warn ( ) { echo "${PROGNAME}: $*" } die ( ) { warn "$*" exit 1 } earlyInit ( ) { return } lateInit ( ) { return } GROOVY_STARTUP="$HOME/.groovy/startup" if [ -r "$GROOVY_STARTUP" ] ; then . "$GROOVY_STARTUP" fi earlyInit # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "`uname`" in CYGWIN* ) cygwin=true ;; Darwin* ) darwin=true ;; MINGW* ) msys=true ;; NONSTOP* ) nonstop=true ;; esac if [ "$1" = "-cp" -o "$1" = "-classpath" -o "$1" = "--classpath" ] ; then CP=$2 shift 2 fi # Attempt to set JAVA_HOME if it's not already set. if [ -z "$JAVA_HOME" ] ; then if $darwin ; then [ -z "$JAVA_HOME" -a -f "/usr/libexec/java_home" ] && export JAVA_HOME=`/usr/libexec/java_home` [ -z "$JAVA_HOME" -a -d "/Library/Java/Home" ] && export JAVA_HOME="/Library/Java/Home" [ -z "$JAVA_HOME" -a -d "/System/Library/Frameworks/JavaVM.framework/Home" ] && export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Home" else javaExecutable="`which javac`" [ -z "$javaExecutable" -o "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ] && die "JAVA_HOME not set and cannot find javac to deduce location, please set JAVA_HOME." # readlink(1) is not available as standard on Solaris 10. readLink=`which readlink` [ `expr "$readLink" : '\([^ ]*\)'` = "no" ] && die "JAVA_HOME not set and readlink not available, please set JAVA_HOME." javaExecutable="`readlink -f \"$javaExecutable\"`" javaHome="`dirname \"$javaExecutable\"`" javaHome=`expr "$javaHome" : '\(.*\)/bin'` JAVA_HOME="$javaHome" export JAVA_HOME fi fi # For Cygwin, ensure paths are in UNIX format before anything is touched. if $cygwin ; then [ -n "$GROOVY_HOME" ] && GROOVY_HOME=`cygpath --unix "$GROOVY_HOME"` [ -n "$JAVACMD" ] && JAVACMD=`cygpath --unix "$JAVACMD"` [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` [ -n "$CP" ] && CP=`cygpath --path --unix "$CP"` else if [ -n "$GROOVY_HOME" -a "`expr "$GROOVY_HOME":'\/$'`" ] ; then GROOVY_HOME=`echo $GROOVY_HOME | sed -e 's/\/$//'` fi fi # For MSYS, ensure paths are in appropriate format. if $msys then [ -n "$JAVA_HOME" ] && JAVA_HOME=`( cd "$JAVA_HOME" ; pwd )` fi # Attempt to set GROOVY_HOME if it is not already set. if [ -z "$GROOVY_HOME" -o ! -d "$GROOVY_HOME" ] ; then # Resolve links: $0 may be a link to groovy's home. 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\"`/.." GROOVY_HOME="`pwd -P`" cd "$SAVED" fi # Set the default Groovy config if no specific one is mentioned. if [ -z "$GROOVY_CONF" ] ; then GROOVY_CONF="$GROOVY_HOME/conf/groovy-starter.conf" fi STARTER_CLASSPATH="$GROOVY_HOME/lib/@GROOVYJAR@" # Create the final classpath. Setting a classpath using the -cp or -classpath option means not to use the # global classpath. Groovy behaves then the same as the java interpreter if [ -n "$CP" ] ; then CP="$CP":. elif [ -n "$CLASSPATH" ] ; then CP="$CLASSPATH":. else CP=. fi # Determine the Java command to use to start the JVM. if [ -z "$JAVACMD" ] ; then 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 else JAVACMD="java" fi fi if [ ! -x "$JAVACMD" ] ; then die "JAVA_HOME is not defined correctly, can not execute: $JAVACMD" fi if [ -z "$JAVA_HOME" ] ; then warn "JAVA_HOME environment variable is not set" fi # Increase the maximum file descriptors if we can. if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "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 businessSystem maximum file descriptor limit: $MAX_FD_LIMIT" fi fi # Setup Profiler useprofiler=false if [ "$PROFILER" != "" ] ; then if [ -r "$PROFILER" ] ; then . $PROFILER useprofiler=true else die "Profiler file not found: $PROFILER" fi fi # For Darwin, use classes.jar for TOOLS_JAR TOOLS_JAR="$JAVA_HOME/lib/tools.jar" #if $darwin; then # TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar" #fi # For Darwin, add GROOVY_APP_NAME to the JAVA_OPTS as -Xdock:name if $darwin; then JAVA_OPTS="$JAVA_OPTS -Xdock:name=$GROOVY_APP_NAME -Xdock:icon=$GROOVY_HOME/lib/groovy.icns" fi # For Cygwin, switch paths to Windows format before running java if $cygwin ; then GROOVY_HOME=`cygpath --mixed "$GROOVY_HOME"` JAVA_HOME=`cygpath --mixed "$JAVA_HOME"` GROOVY_CONF=`cygpath --mixed "$GROOVY_CONF"` CP=`cygpath --path --mixed "$CP"` TOOLS_JAR=`cygpath --mixed "$TOOLS_JAR"` STARTER_CLASSPATH=`cygpath --path --mixed "$STARTER_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 [ "$GROOVY_CYGPATTERN" != "" ] ; then OURCYGPATTERN="$OURCYGPATTERN|($GROOVY_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" -` if [ $CHECK -ne 0 ] ; then patched=`cygpath --path --ignore --mixed "$arg"` else patched="$arg" fi if [ x"$BASH" = x ]; then eval `echo args$i`="\"$arg\"" else args[$i]="$patched" fi i=`expr $i + 1` done if [ x"$BASH" = x ]; then 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 else set -- "${args[@]}" fi fi startGroovy ( ) { CLASS=$1 shift # Start the Profiler or the JVM if $useprofiler ; then runProfiler else eval exec "\"\$JAVACMD\"" $JAVA_OPTS \ -classpath "\"\$STARTER_CLASSPATH\"" \ -Dscript.name="\"\$SCRIPT_PATH\"" \ -Dprogram.name="\"\$PROGNAME\"" \ -Dgroovy.starter.conf="\"\$GROOVY_CONF\"" \ -Dgroovy.home="\"\$GROOVY_HOME\"" \ -Dtools.jar="\"\$TOOLS_JAR\"" \ $STARTER_MAIN_CLASS \ --main $CLASS \ --conf "\"\$GROOVY_CONF\"" \ --classpath "\"\$CP\"" \ "\"\$@\"" fi } STARTER_MAIN_CLASS=org.codehaus.groovy.tools.GroovyStarter lateInit groovy-2.4.17/src/bin/startGroovy.bat000066400000000000000000000203631351304321600175260ustar00rootroot00000000000000@REM ---------------------------------------------------------------------------- @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License. @REM ---------------------------------------------------------------------------- @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem ## @rem Groovy JVM Bootstrap for Windows ## @rem ## @rem ########################################################################## @rem @rem $Revision$ $Date$ @rem @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal enabledelayedexpansion set DIRNAME=%~1 shift set CLASS=%~1 shift if exist "%USERPROFILE%/.groovy/preinit.bat" call "%USERPROFILE%/.groovy/preinit.bat" @rem Determine the command interpreter to execute the "CD" later set COMMAND_COM="cmd.exe" if exist "%SystemRoot%\system32\cmd.exe" set COMMAND_COM="%SystemRoot%\system32\cmd.exe" if exist "%SystemRoot%\command.com" set COMMAND_COM="%SystemRoot%\command.com" @rem Use explicit find.exe to prevent cygwin and others find.exe from being used set FIND_EXE="find.exe" if exist "%SystemRoot%\system32\find.exe" set FIND_EXE="%SystemRoot%\system32\find.exe" if exist "%SystemRoot%\command\find.exe" set FIND_EXE="%SystemRoot%\command\find.exe" :check_JAVA_HOME @rem Make sure we have a valid JAVA_HOME if not "%JAVA_HOME%" == "" goto have_JAVA_HOME set PATHTMP=%PATH% :loop for /f "delims=; tokens=1*" %%i in ("!PATHTMP!") do ( if exist "%%i\..\bin\java.exe" ( set "JAVA_HOME=%%i\.." goto found_JAVA_HOME ) set PATHTMP=%%j goto loop ) goto check_default_JAVA_EXE :found_JAVA_HOME @rem Remove trailing \bin\.. from JAVA_HOME if "%JAVA_HOME:~-7%"=="\bin\.." SET "JAVA_HOME=%JAVA_HOME:~0,-7%" set JAVA_EXE=%JAVA_HOME%\bin\java.exe :check_default_JAVA_EXE if not "%JAVA_HOME%" == "" goto valid_JAVA_HOME java -version 2>NUL if not ERRORLEVEL 1 goto default_JAVA_EXE echo. echo ERROR: Environment variable JAVA_HOME has not been set. echo Attempting to find JAVA_HOME from PATH also failed. goto common_error :have_JAVA_HOME @rem Remove trailing slash from JAVA_HOME if found if "%JAVA_HOME:~-1%"=="\" SET JAVA_HOME=%JAVA_HOME:~0,-1% @rem Validate JAVA_HOME %COMMAND_COM% /C DIR "%JAVA_HOME%" 2>&1 | %FIND_EXE% /I /C "%JAVA_HOME%" >nul if not errorlevel 1 goto valid_JAVA_HOME_DIR echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% :common_error echo Please set the JAVA_HOME variable in your environment echo to match the location of your Java installation. goto end :default_JAVA_EXE set JAVA_EXE=java.exe goto check_GROOVY_HOME :valid_JAVA_HOME_DIR set JAVA_EXE=%JAVA_HOME%\bin\java.exe if exist "%JAVA_EXE%" goto valid_JAVA_HOME echo. echo ERROR: No java.exe found at: %JAVA_EXE% goto common_error :valid_JAVA_HOME if exist "%JAVA_HOME%\lib\tools.jar" set TOOLS_JAR=%JAVA_HOME%\lib\tools.jar :check_GROOVY_HOME @rem Define GROOVY_HOME if not set if "%GROOVY_HOME%" == "" set GROOVY_HOME=%DIRNAME%.. @rem Remove trailing slash from GROOVY_HOME if found if "%GROOVY_HOME:~-1%"=="\" SET GROOVY_HOME=%GROOVY_HOME:~0,-1% @rem classpath handling set _SKIP=2 set CP= if "x%~1" == "x-cp" set CP=%~2 if "x%~1" == "x-classpath" set CP=%~2 if "x%~1" == "x--classpath" set CP=%~2 if "x" == "x%CP%" goto init set _SKIP=4 shift shift :init @rem get name of script to launch with full path set GROOVY_SCRIPT_NAME=%~f1 @rem Get command-line arguments, handling Windows 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= :win9xME_args_slurp if "x%~1" == "x" goto execute rem horrible roll your own arg processing inspired by jruby equivalent rem escape minus (-d), quotes (-q), star (-s). set _ARGS=%* if not defined _ARGS goto execute set _ARGS=%_ARGS:-=-d% set _ARGS=%_ARGS:"=-q% set _ARGS=%_ARGS:?=-n% rem Windows will try to match * with files so we escape it here rem but it is also a meta char for env var string substitution rem so it can't be first char here, hack just for common cases. rem If in doubt use a space or bracket before * if using -e. set _ARGS=%_ARGS: *= -s% set _ARGS=%_ARGS:)*=)-s% set _ARGS=%_ARGS:0*=0-s% set _ARGS=%_ARGS:1*=1-s% set _ARGS=%_ARGS:2*=2-s% set _ARGS=%_ARGS:3*=3-s% set _ARGS=%_ARGS:4*=4-s% set _ARGS=%_ARGS:5*=5-s% set _ARGS=%_ARGS:6*=6-s% set _ARGS=%_ARGS:7*=7-s% set _ARGS=%_ARGS:8*=8-s% set _ARGS=%_ARGS:9*=9-s% rem prequote all args for 'for' statement set _ARGS="%_ARGS%" set _ARG= :win9xME_args_loop rem split args by spaces into first and rest for /f "tokens=1,*" %%i in (%_ARGS%) do call :get_arg "%%i" "%%j" goto process_arg :get_arg rem remove quotes around first arg and don't expand wildcards for /f %%i in (%1) do set _ARG=%_ARG% %%~i rem set the remaining args set _ARGS=%2 rem remove the leading space we'll add the first time if "x%_ARG:~0,1%" == "x " set _ARG=%_ARG:~1% rem return goto :EOF :process_arg if "%_ARG%" == "" goto execute rem collect all parts of a quoted argument containing spaces if not "%_ARG:~0,2%" == "-q" goto :argIsComplete if "%_ARG:~-2%" == "-q" goto :argIsComplete rem _ARG starts with a quote but does not end with one: rem add the next part to _ARG until the matching quote is found goto :win9xME_args_loop :argIsComplete if "x4" == "x%_SKIP%" goto skip_4 if "x3" == "x%_SKIP%" goto skip_3 if "x2" == "x%_SKIP%" goto skip_2 if "x1" == "x%_SKIP%" goto skip_1 rem now unescape -s, -q, -n, -d rem -d must be the last to be unescaped set _ARG=%_ARG:-s=*% set _ARG=%_ARG:-q="% set _ARG=%_ARG:-n=?% set _ARG=%_ARG:-d=-% set CMD_LINE_ARGS=%CMD_LINE_ARGS% %_ARG% set _ARG= goto win9xME_args_loop :skip_4 set _ARG= set _SKIP=3 goto win9xME_args_loop :skip_3 set _ARG= set _SKIP=2 goto win9xME_args_loop :skip_2 set _ARG= set _SKIP=1 goto win9xME_args_loop :skip_1 set _ARG= set _SKIP=0 goto win9xME_args_loop :4NT_args @rem Get arguments from the 4NT Shell from JP Software set CMD_LINE_ARGS=%$ :execute @rem Setup the command line set STARTER_CLASSPATH=%GROOVY_HOME%\lib\@GROOVYJAR@ if exist "%USERPROFILE%/.groovy/init.bat" call "%USERPROFILE%/.groovy/init.bat" @rem Setting a classpath using the -cp or -classpath option means not to use @rem the global classpath. Groovy behaves then the same as the java @rem interpreter if "x" == "x%CP%" goto empty_cp :non_empty_cp set CP=%CP%;. goto after_cp :empty_cp set CP=. if "x" == "x%CLASSPATH%" goto after_cp set CP=%CLASSPATH%;%CP% :after_cp set STARTER_MAIN_CLASS=org.codehaus.groovy.tools.GroovyStarter set STARTER_CONF=%GROOVY_HOME%\conf\groovy-starter.conf set GROOVY_OPTS="-Xmx128m" set GROOVY_OPTS=%GROOVY_OPTS% -Dprogram.name="%PROGNAME%" set GROOVY_OPTS=%GROOVY_OPTS% -Dgroovy.home="%GROOVY_HOME%" if not "%TOOLS_JAR%" == "" set GROOVY_OPTS=%GROOVY_OPTS% -Dtools.jar="%TOOLS_JAR%" set GROOVY_OPTS=%GROOVY_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%" set GROOVY_OPTS=%GROOVY_OPTS% -Dscript.name="%GROOVY_SCRIPT_NAME%" if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat" @rem Execute Groovy "%JAVA_EXE%" %GROOVY_OPTS% %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" endlocal @rem Optional pause the batch file if "%GROOVY_BATCH_PAUSE%" == "on" pause %COMSPEC% /C exit /B %ERRORLEVEL% groovy-2.4.17/src/conf/000077500000000000000000000000001351304321600146445ustar00rootroot00000000000000groovy-2.4.17/src/conf/groovy-starter.conf000066400000000000000000000031271351304321600205250ustar00rootroot00000000000000## 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. ############################################################################## ## ## ## Groovy Classloading Configuration ## ## ## ############################################################################## ## Note: do not add classes from java.lang here. No rt.jar and on some ## platforms no tools.jar ## ## See http://docs.groovy-lang.org/docs/latest/html/api/org/codehaus/groovy/tools/LoaderConfiguration.html ## for the file format # load required libraries load !{groovy.home}/lib/*.jar # load user specific libraries load !{user.home}/.groovy/lib/*.jar # tools.jar for ant tasks load ${tools.jar} groovy-2.4.17/src/examples/000077500000000000000000000000001351304321600155355ustar00rootroot00000000000000groovy-2.4.17/src/examples/astbuilder/000077500000000000000000000000001351304321600176735ustar00rootroot00000000000000groovy-2.4.17/src/examples/astbuilder/Main.groovy000066400000000000000000000026321351304321600220310ustar00rootroot00000000000000/* * 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 examples.astbuilder import org.codehaus.groovy.transform.GroovyASTTransformationClass import java.lang.annotation.ElementType import java.lang.annotation.Target import java.lang.annotation.RetentionPolicy import java.lang.annotation.Retention /** * Marker interface to mark a method as something that should be invokable * as a main() method. An AST transformation will later wire this together. * * @author Hamlet D'Arcy */ @Retention (RetentionPolicy.SOURCE) @Target ([ElementType.METHOD]) @GroovyASTTransformationClass (["examples.astbuilder.MainTransformation"]) public @interface Main { } groovy-2.4.17/src/examples/astbuilder/MainExample.groovy000066400000000000000000000023241351304321600233430ustar00rootroot00000000000000/* * 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 examples.astbuilder /** * Exists to test the @Main annotation. At compile time, there will be a main() * method added to this class that has the same body as the greet() method. * It can be invoked either by using either Java or Groovy to run the class. * * @author Hamlet D'Arcy */ class MainExample { @Main public void greet() { println "Hello from the greet() method!" } } groovy-2.4.17/src/examples/astbuilder/MainIntegrationTest.groovy000066400000000000000000000030721351304321600250740ustar00rootroot00000000000000/* * 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 examples.astbuilder import org.codehaus.groovy.tools.ast.TransformTestHelper import org.codehaus.groovy.control.CompilePhase /** * * This TestCase shows how to invoke an AST Transformation from a unit test. * An IDE will let you step through the AST Transformation using this approach. * * @author Hamlet D'Arcy */ class MainIntegrationTest extends GroovyTestCase { public void testInvokeUnitTest() { def invoker = new TransformTestHelper(new MainTransformation(), CompilePhase.CANONICALIZATION) def file = new File('./MainExample.groovy') assert file.exists() def clazz = invoker.parse(file) def tester = clazz.newInstance() tester.main(null) // main method added with AST transform } } groovy-2.4.17/src/examples/astbuilder/MainTransformation.groovy000066400000000000000000000062051351304321600247600ustar00rootroot00000000000000/* * 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 examples.astbuilder import org.codehaus.groovy.ast.* import org.codehaus.groovy.control.CompilePhase import org.codehaus.groovy.transform.GroovyASTTransformation import org.codehaus.groovy.transform.ASTTransformation import org.codehaus.groovy.control.SourceUnit import org.codehaus.groovy.ast.builder.AstBuilder /** * If there is a method in a class with the @Main annotation on it, then this * transformation adds a real main(String[]) method to the class with the same * method body as the annotated class. * * @author Hamlet D'Arcy */ @GroovyASTTransformation(phase = CompilePhase.INSTRUCTION_SELECTION) public class MainTransformation implements ASTTransformation { // normally defined in org.objectweb.asm.Opcodes, but there duplicated // here to make the build script simpler. static int PUBLIC = 1 static int STATIC = 8 void visit(ASTNode[] astNodes, SourceUnit sourceUnit) { // use guard clauses as a form of defensive programming. if (!astNodes) return if (!astNodes[0]) return if (!astNodes[1]) return if (!(astNodes[0] instanceof AnnotationNode)) return if (astNodes[0].classNode?.name != Main.class.name) return if (!(astNodes[1] instanceof MethodNode)) return MethodNode annotatedMethod = astNodes[1] ClassNode declaringClass = annotatedMethod.declaringClass MethodNode mainMethod = makeMainMethod(annotatedMethod) declaringClass.addMethod(mainMethod) } /** * Uses the AstBuilder to synthesize a main method, and then sets the body of * the method to that of the source method. Notice how Void.TYPE is used as * a return value instead of Void.class. This is required so that resulting method * is void and not Void. */ MethodNode makeMainMethod(MethodNode source) { def className = source.declaringClass.name def methodName = source.name def ast = new AstBuilder().buildFromString(CompilePhase.INSTRUCTION_SELECTION, false, """ package $source.declaringClass.packageName class $source.declaringClass.nameWithoutPackage { public static void main(String[] args) { new $className().$methodName() } } """) ast[1].methods.find { it.name == 'main' } } } groovy-2.4.17/src/examples/astbuilder/build.xml000066400000000000000000000032261351304321600215170ustar00rootroot00000000000000 You can now run "groovy MainExample.groovy", "groovyc MainExample.groovy", or "groovy MainIntegrationTest.groovy" to see that the transformation worked. groovy-2.4.17/src/examples/astbuilder/readme.txt000066400000000000000000000032331351304321600216720ustar00rootroot00000000000000==== 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. ==== AstBuilder and AST Transformation Example This example shows how to use the AstBuilder to add a public static void main(String[]) method to a class. The example requires ant in your path and the Groovy 1.7 (or greater) Jar in your classpath. To build the example run "ant" from the current directory. The default target will compile the classes needed. The last step of the build script prints out the command needed to run the example. To run the example perform either of the following from the command lines: groovy MainExample.groovy groovyc MainExample.groovy (and then invoke with java or view with javap) The example should print: Hello from the greet() method! No exceptions should occur. The MainIntegrationTest.groovy file shows how to invoke an ASTTransformation from a unit test. An IDE should be able to debug this. groovy-2.4.17/src/examples/commandLineTools/000077500000000000000000000000001351304321600210045ustar00rootroot00000000000000groovy-2.4.17/src/examples/commandLineTools/AntMap.groovy000066400000000000000000000052561351304321600234430ustar00rootroot00000000000000#!/bin/env groovy /* * 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. */ // // convert an ant build file into a format suitable for http://sf.net/projects/freemind // // by Jeremy Rayner - 2 Dec 2004 // inspired by Sam Newman ( http://www.magpiebrain.com/archives/2004/12/02/antgui ) // // usage: groovy AntMap > build.mm buildFileName = "build.xml" // default // handle command line params if (args.length > 0) { buildFileName = args[0] } // header println "" project = new XmlParser().parse(buildFileName) name = project['@name'] println "" level = 0 printChildren(project,level) def void printChildren(node,level) { level++ node.each { name = huntForName(it) if (name != null) { if (level > 1) { println "" } else if (it.name() == 'property' || it.name() == 'path' ) { if (it.children().size() > 0) { println "" } else { println "" } } else if (it.children().size() > 0) { println "" } else { println "" } } if (it.children().size() > 0) printChildren(it,level) if (name!=null) println "" } } // footer println "" def String huntForName(node) { preferNodeNames = ["junitreport"] if (node == null) return null if (preferNodeNames.contains(node.name())) return node.name() if (node['@name'] != null) return node['@name'] if (node['@todir'] != null) return node['@todir'] if (node['@dir'] != null) return node['@dir'] if (node['@refid'] != null) return node['@refid'] return node.name() } groovy-2.4.17/src/examples/commandLineTools/BigTests.groovy000066400000000000000000000031231351304321600237760ustar00rootroot00000000000000#!/bin/env groovy /* * 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. */ // // output tests in a junit xml report that took greater than specified time // // by Jeremy Rayner - 15 Dec 2004 // // usage: groovy BigTests.groovy