Skip to content
Browse files

next 1.0 try

git-svn-id: http://svn.codehaus.org/groovy/tags/GROOVY_1_0@4677 a5544e8c-8a19-0410-ba12-f9af4593a198
  • Loading branch information...
1 parent d391c26 commit dcb82c7c34f42c41df451e4cf2d83e7e1835ca17 @blackdrag blackdrag committed
Showing with 9,893 additions and 0 deletions.
  1. +39 −0 groovy-core/.classpath
  2. +12 −0 groovy-core/.cvsignore
  3. +18 −0 groovy-core/.project
  4. +1 −0 groovy-core/.settings/.cvsignore
  5. +3 −0 groovy-core/.settings/org.eclipse.core.resources.prefs
  6. +57 −0 groovy-core/.settings/org.eclipse.jdt.core.prefs
  7. +31 −0 groovy-core/ASM-LICENSE.txt
  8. +47 −0 groovy-core/LICENSE.txt
  9. +372 −0 groovy-core/TODO.txt
  10. +121 −0 groovy-core/build.gant
  11. +24 −0 groovy-core/build.xml
  12. +52 −0 groovy-core/cruise/build.xml
  13. +100 −0 groovy-core/cruise/buildstatus.xsl
  14. +380 −0 groovy-core/cruise/cc.xsl
  15. +9 −0 groovy-core/cruise/emailmap.properties
  16. +16 −0 groovy-core/cruise/htmlmail.xsl
  17. +52 −0 groovy-core/cruise/project.xml
  18. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/BuildInfo.class
  19. BIN ...vy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/BuildInfoSummary.class
  20. BIN ...se/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/CruiseControlWebAppException.class
  21. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/StatusHelper.class
  22. BIN ...ting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/chart/AbstractCruiseControlChartData.class
  23. BIN ...-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/chart/PieChartData.class
  24. BIN ...core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/chart/TimeChartData.class
  25. BIN ...core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/servlet/FileServlet.class
  26. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/servlet/WebFile.class
  27. BIN .../cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/ArtifactsLinkTag.class
  28. BIN ...eporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/ArtifactsLinkTagExtraInfo.class
  29. BIN ...core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/BuildInfoTag.class
  30. BIN ...se/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/BuildInfoTagExtraInfo.class
  31. BIN ...orting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlBodyTagSupport.class
  32. BIN ...porting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlLogFileFilter.class
  33. BIN ...eporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlTagSupport$1.class
  34. BIN .../reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlTagSupport.class
  35. BIN ...se/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CurrentBuildStatusTag.class
  36. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/LinkTag.class
  37. BIN .../cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/LinkTagExtraInfo.class
  38. BIN ...ore/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/NavigationTag.class
  39. BIN ...e/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/NavigationTagExtraInfo.class
  40. BIN ...ruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/ReversedComparator.class
  41. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/Tab.class
  42. BIN ...-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/TabSheetTag.class
  43. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/TabTag.class
  44. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/XSLTag$1.class
  45. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/XSLTag.class
  46. BIN groovy-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/util/DateUtil.class
  47. BIN ...re/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/util/TimeNumberFormat.class
  48. +150 −0 groovy-core/cruise/reporting-app/WEB-INF/cruisecontrol-jsp11.tld
  49. +145 −0 groovy-core/cruise/reporting-app/WEB-INF/cruisecontrol-jsp12.tld
  50. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/batik-awt-util.jar
  51. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/batik-svggen.jar
  52. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/batik-util.jar
  53. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/cewolf.jar
  54. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/commons-logging.jar
  55. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/jcommon-0.8.0.jar
  56. BIN groovy-core/cruise/reporting-app/WEB-INF/lib/jfreechart-0.9.8.jar
  57. +139 −0 groovy-core/cruise/reporting-app/WEB-INF/web.xml
  58. +58 −0 groovy-core/cruise/reporting-app/buildresults.jsp
  59. +86 −0 groovy-core/cruise/reporting-app/checkstyle.xml
  60. +63 −0 groovy-core/cruise/reporting-app/controlpanel.jsp
  61. +36 −0 groovy-core/cruise/reporting-app/cruisecontrol.header
  62. +135 −0 groovy-core/cruise/reporting-app/css/cruisecontrol.css
  63. BIN groovy-core/cruise/reporting-app/images/backhead2.png
  64. BIN groovy-core/cruise/reporting-app/images/blank35.gif
  65. BIN groovy-core/cruise/reporting-app/images/blank8.gif
  66. BIN groovy-core/cruise/reporting-app/images/bluebg.gif
  67. BIN groovy-core/cruise/reporting-app/images/bluestripesbottom.gif
  68. BIN groovy-core/cruise/reporting-app/images/bluestripestop.gif
  69. BIN groovy-core/cruise/reporting-app/images/buildResultsTab-off.gif
  70. BIN groovy-core/cruise/reporting-app/images/buildResultsTab-on.gif
  71. BIN groovy-core/cruise/reporting-app/images/canoo_rgb_pos.gif
  72. BIN groovy-core/cruise/reporting-app/images/continuousintegration.gif
  73. BIN groovy-core/cruise/reporting-app/images/controlPanelTab-off.gif
  74. BIN groovy-core/cruise/reporting-app/images/controlPanelTab-on.gif
  75. BIN groovy-core/cruise/reporting-app/images/logo.gif
  76. BIN groovy-core/cruise/reporting-app/images/testResultsTab-off.gif
  77. BIN groovy-core/cruise/reporting-app/images/testResultsTab-on.gif
  78. BIN groovy-core/cruise/reporting-app/images/xmlLogFileTab-off.gif
  79. BIN groovy-core/cruise/reporting-app/images/xmlLogFileTab-on.gif
  80. BIN groovy-core/cruise/reporting-app/images/yellowGreenBack.png
  81. +155 −0 groovy-core/cruise/reporting-app/index.jsp
  82. +85 −0 groovy-core/cruise/reporting-app/main.jsp
  83. +35 −0 groovy-core/cruise/reporting-app/metrics.jsp
  84. +57 −0 groovy-core/cruise/reporting-app/navigation.jsp
  85. +39 −0 groovy-core/cruise/reporting-app/testdetails.jsp
  86. +38 −0 groovy-core/cruise/reporting-app/xmllog.jsp
  87. +84 −0 groovy-core/cruise/reporting-app/xsl/changelists/header.xsl
  88. +68 −0 groovy-core/cruise/reporting-app/xsl/checkstyle.xsl
  89. +119 −0 groovy-core/cruise/reporting-app/xsl/compile.xsl
  90. +77 −0 groovy-core/cruise/reporting-app/xsl/distributables.xsl
  91. +90 −0 groovy-core/cruise/reporting-app/xsl/header.xsl
  92. +98 −0 groovy-core/cruise/reporting-app/xsl/javadoc.xsl
  93. +313 −0 groovy-core/cruise/reporting-app/xsl/logfile.xsl
  94. +101 −0 groovy-core/cruise/reporting-app/xsl/maven.xsl
  95. +205 −0 groovy-core/cruise/reporting-app/xsl/modifications.xsl
  96. +313 −0 groovy-core/cruise/reporting-app/xsl/testdetails.xsl
  97. +243 −0 groovy-core/cruise/reporting-app/xsl/unittests.xsl
  98. +80 −0 groovy-core/experimental/TestMeta.java
  99. +166 −0 groovy-core/experimental/groovy/lang/MOP.java
  100. +341 −0 groovy-core/experimental/groovy/lang/NewMetaClass.java
  101. +32 −0 groovy-core/experimental/org/codehaus/groovy/runtime/MetaClassActions.java
  102. +382 −0 groovy-core/experimental/org/codehaus/groovy/runtime/MetaClassActionsGenerator.java
  103. +70 −0 ...ntal/org/codehaus/groovy/runtimemetaclassactionssupport/DefaultGroovyInstanceMethodGenerator.java
  104. +41 −0 ...mental/org/codehaus/groovy/runtimemetaclassactionssupport/DefaultGroovyStaticMethodGenerator.java
  105. +35 −0 ...core/experimental/org/codehaus/groovy/runtimemetaclassactionssupport/InstanceMethodGenerator.java
  106. +193 −0 groovy-core/experimental/org/codehaus/groovy/runtimemetaclassactionssupport/MethodGenerator.java
  107. +198 −0 ...e/experimental/org/codehaus/groovy/runtimemetaclassactionssupport/OverloadedMethodsGenerator.java
  108. +106 −0 ...re/experimental/org/codehaus/groovy/runtimemetaclassactionssupport/ReflectionMethodGenerator.java
  109. +38 −0 ...y-core/experimental/org/codehaus/groovy/runtimemetaclassactionssupport/StaticMethodGenerator.java
  110. +686 −0 groovy-core/maven.xml
  111. +814 −0 groovy-core/pom.xml
  112. +94 −0 groovy-core/project.properties
  113. +810 −0 groovy-core/project.xml
  114. BIN groovy-core/security/GroovyJarTest.jar
  115. +234 −0 groovy-core/security/groovy.policy
  116. BIN groovy-core/security/groovykeys
  117. +18 −0 groovy-core/src/bin/grok
  118. +18 −0 groovy-core/src/bin/grok.bat
  119. +19 −0 groovy-core/src/bin/groovy
  120. +18 −0 groovy-core/src/bin/groovy.bat
  121. +15 −0 groovy-core/src/bin/groovyConsole
  122. +18 −0 groovy-core/src/bin/groovyConsole.bat
  123. +17 −0 groovy-core/src/bin/groovyc
  124. +18 −0 groovy-core/src/bin/groovyc.bat
  125. +17 −0 groovy-core/src/bin/groovysh
  126. +18 −0 groovy-core/src/bin/groovysh.bat
  127. +17 −0 groovy-core/src/bin/java2groovy
  128. +18 −0 groovy-core/src/bin/java2groovy.bat
  129. +245 −0 groovy-core/src/bin/startGroovy
  130. +131 −0 groovy-core/src/bin/startGroovy.bat
  131. +46 −0 groovy-core/src/bin/startGroovy_cygwin
  132. +23 −0 groovy-core/src/conf/groovy-starter.conf
  133. +67 −0 groovy-core/src/examples/commandLineTools/AntMap.groovy
  134. +36 −0 groovy-core/src/examples/commandLineTools/BigTests.groovy
  135. +27 −0 groovy-core/src/examples/commandLineTools/ListFiles.groovy
  136. +18 −0 groovy-core/src/examples/commandLineTools/Reflections.groovy
  137. +74 −0 groovy-core/src/examples/commandLineTools/SimpleWebServer.groovy
  138. +77 −0 groovy-core/src/examples/console/MortgageCalculator.groovy
  139. +16 −0 groovy-core/src/examples/console/knowYourTables.groovy
  140. +21 −0 groovy-core/src/examples/console/thinkOfANumber.groovy
  141. +49 −0 groovy-core/src/examples/groovy2d/paintingByNumbers.groovy
  142. +61 −0 groovy-core/src/examples/searchEngine/Indexer.groovy
  143. +38 −0 groovy-core/src/examples/searchEngine/Searcher.groovy
  144. +167 −0 groovy-core/src/examples/swing/BloglinesClient.groovy
Sorry, we could not display the entire diff because too many files (1,199) changed.
View
39 groovy-core/.classpath
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main"/>
+ <classpathentry excluding="**/.cvsignore" kind="src" path="src/test"/>
+ <classpathentry kind="lib" path="target/test-classes"/>
+ <classpathentry kind="var" path="MAVEN_REPO/ant/jars/ant-1.6.5.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/ant/jars/ant-junit-1.6.5.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/ant/jars/ant-launcher-1.6.5.jar"/>
+ <classpathentry exported="true" kind="var" path="MAVEN_REPO/antlr/jars/antlr-2.7.5.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-2.2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-analysis-2.2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-attrs-2.2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-tree-2.2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-util-2.2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/axion/jars/axion-1.0-M3-dev.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/bsf/jars/bsf-2.4.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/commons-cli/jars/commons-cli-1.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/commons-collections/jars/commons-collections-3.2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/commons-logging/jars/commons-logging-1.0.3.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/jmock/jars/jmock-cglib-1.1.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/jmock/jars/jmock-1.1.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/mockobjects/jars/mockobjects-core-0.09.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/mx4j/jars/mx4j-3.0.1.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/nekohtml/jars/nekohtml-0.9.5.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/openejb/jars/openejb-loader-1.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/qdox/jars/qdox-1.5.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/radeox/jars/radeox-0.9.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/radeox/jars/radeox-oro-0.9.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/regexp/jars/regexp-1.3.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/xerces/jars/xerces-2.4.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/xml-apis/jars/xml-apis-1.0.b2.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/xstream/jars/xstream-1.2.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="lib" path="security/GroovyJarTest.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/javax.servlet/jars/servlet-api-2.4.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/javax.servlet/jars/jsp-api-2.0.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
View
12 groovy-core/.cvsignore
@@ -0,0 +1,12 @@
+maven.log
+bin
+target
+*.properties
+velocity.log
+logs
+dist
+.externalToolBuilders
+groovy.iml
+groovy.ipr
+groovy.iws
+.DS_Store
View
18 groovy-core/.project
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<projectDescription>
+ <name>groovy</name>
+ <comment>a powerful and dynamic scripting language for the JVM</comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
View
1 groovy-core/.settings/.cvsignore
@@ -0,0 +1 @@
+org.eclipse.jdt.ui.*
View
3 groovy-core/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Tue Jun 06 17:51:41 BST 2006
+eclipse.preferences.version=1
+encoding//src/test/groovy/Base64Test.groovy=UTF-8
View
57 groovy-core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Sat Jun 11 03:45:36 CEST 2005
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.4
View
31 groovy-core/ASM-LICENSE.txt
@@ -0,0 +1,31 @@
+/***
+ * http://asm.objectweb.org/
+ *
+ * ASM: a very small and fast Java bytecode manipulation framework
+ * Copyright (c) 2000,2002,2003 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.
+ */
View
47 groovy-core/LICENSE.txt
@@ -0,0 +1,47 @@
+
+
+/*
+ $Id$
+
+ Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
+
+ Redistribution and use of this software and associated documentation
+ ("Software"), with or without modification, are permitted provided
+ that the following conditions are met:
+
+ 1. Redistributions of source code must retain copyright
+ statements and notices. Redistributions must also contain a
+ copy of this document.
+
+ 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. The name "groovy" must not be used to endorse or promote
+ products derived from this Software without prior written
+ permission of The Codehaus. For written permission,
+ please contact info@codehaus.org.
+
+ 4. Products derived from this Software may not be called "groovy"
+ nor may "groovy" appear in their names without prior written
+ permission of The Codehaus. "groovy" is a registered
+ trademark of The Codehaus.
+
+ 5. Due credit should be given to The Codehaus -
+ http://groovy.codehaus.org/
+
+ THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESSED 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 CODEHAUS OR ITS 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.
+
+ */
View
372 groovy-core/TODO.txt
@@ -0,0 +1,372 @@
+Things to Test
+==============
+
+* test synchronized statement
+
+* test compiler errors when
+ - duplicate methods testno
+ - duplicate class in module
+
+* test Button(actionPerformed:{event| event.println() }
+
+
+Core Groovy Tasks
+=================
+
+* allow maps to be created using identifiers?
+ {name:'James', address:'London'}
+
+ only issue is the identifiers could conflict.
+
+ Could use a helper method?
+
+* handling sequences (0-n, 1-n)
+ they are Lists & behave like lists, any methods on the items will
+ be called etc.
+
+ however how are they assigned / modified.
+
+ foo.customers += customer
+
+ foo.customers = [customer1, customer2]
+
+ so assignment of sequence fields don't really do an assign; they do a set(List) instead
+
+ - should we allow real assignments. e.g.
+
+ Address* foo = ...;
+ foo = [1, 2, 3]
+
+ foo keeps its type so its not a List
+
+ how about handling mandatory values -
+ the set we overload to do the non-null checks?
+ this must be a type. e.g.
+
+ String! x = "hello"
+ x = null // error
+
+* new GroovyMethods to be added
+ - File.grep(pattern) -> List
+ - File.grep(pattern) { closure }
+ allow iteration through a file for each line matching a regex pattern
+
+ - List.first(), List.last(), pop()
+ - Collection.removeIf { x | x > 0 }
+ - List.eachWithindex { item, idx | ... }
+ - List.reverseEach { ... }
+ - Collection.count(foo) -> returns number of objects that equal foo
+ - Collection.countIf { it > 5 } -> returns number of objects that match closure predicate
+
+ - Map.get(key, defaultValue)
+ - Map.setDefault(key, defaultValue) for things like
+ map.setDefault(key, []).add(newValue)
+
+ - Object.getMetaClass()
+ - Object.eachProperty
+ - Object.eachPropertyName { object.getProperty(it) }
+ - Object.setProperties(foo:'abc', x:123)
+
+ - Map.eachKey, eachValue
+ - Map.index, Map.indexes
+ - configure method on beans?
+ bean.setProperties(name:'James', location:'London')
+ - some kind of Regexp iterator of strings like Ruby's scan
+ - maybe support Pythons' zip and reduce functions?
+
+ maybe add the various readonly List APIs to Object[] and *[] types
+ if we ever support the DTD / Xed style type*, type+ then we can do the same
+ there too
+
+* add doesNotUnderstand() method for catching & handling unknown methods
+
+* is there a better way to add listeners in Groovy. e.g. how to remove added listeners
+
+ listener = bean.property + { some closure }
+ bean.property - listener
+
+* BeanBuilder - builder which creates a tree of beans
+ builder.bean(class:SomeClass, x:123, b:'hello') {
+ nestedProperty(a:123)
+ nestedProperty2(class:DerivedClass, b:43)
+ }
+ using adder method as well as setter methods
+
+* MBeanBuilder?
+ builder.mlet {
+ mbean(class:SomeClass) {
+ someAttribute(value)
+ }
+ mbean(class:SomeClass, someAttribute:value) {
+ operation(1, 2)
+ }
+ }
+
+* templating - allow looping & conditionals?
+
+text = "
+<table>
+#for (f in foo)
+<tr>
+<td>${f.name}
+</tr>
+#end
+</table>
+"
+
+* allow if/switch to be the and of a function. i.e.
+ foo() {
+ if (x > 1) {
+ "hello"
+ }
+ else {
+ "cheese"
+ }
+ }
+ ditto for switch? i.e. make return statement optional.
+
+
+* SQL builder
+
+sql.table("users") {
+��� column('user-id') { autoinc(), primaryKey(), references('foo'), initialValue(1234) }
+��� column('nickname') { varchar(200) }
+ column(name:'foo', type:'varchar(200)', references:['a', 'b'], initialValue:1234)
+ }
+}
+
+* using mixin for adding using style behaviour to any object??
+
+ mixin Using {
+
+ static using(yield) {
+ object = this.newInstance()
+ try {
+ yield(object)
+ object.close()
+ }
+ catch (Exception e) {
+ try {
+ object.close()
+ }
+ catch (Exception e2)
+ // ignore e2
+ throw e
+ }
+ }
+ }
+
+ or
+
+ using(yield) {
+ try {
+ yield(this)
+ close()
+ }
+ catch (Exception e) {
+ try {
+ close()
+ }
+ catch (Exception e2)
+ // ignore e2
+ throw e
+ }
+ }
+ }
+ }
+
+ then use it as
+
+ new FileInputStream().using { in |
+ ...
+ }
+
+* looks like a bug on generated methods, should use param name over any field name
+ - also it looks like there's various unnecessary stuff (creation of tuples) when invoking
+ methods
+
+* groovy thread...
+ foo = new GroovyThread(args) { closure }
+
+* MetaClass -> add getPropertyDescriptor which has methods
+ - get(), set(), type(), cardinality() etc
+
+ could use naming conventions to detect cardinality - e.g. addFoo(), getFoos()
+
+* generate property change listener stuff on properties
+
+* test identity -> hashCode + equals methods
+
+* support for property converters, based on type
+
+* go through all not-working @todo tests in src/test
+
+* to support dynamic mixins we should use dynamic proxies to allow
+ a groovy object to change metaclass at runtime
+
+* groovy dynamic proxy of any Java object in Java-land?
+ NullObject pattern
+
+* immutable bean
+
+* MetaClass.deriveMetaClass()
+ MetaClass.addMixin(mixin)
+
+* constructors with map / tuple expressions, named parameter calling
+
+* default values for parameters
+
+* test try / catch with multiple exception types
+
+* * support static newInstance() method for constructors
+
+* maybe split up ClassGenerator - do code gen & class gen separately
+
+* mixin support...
+
+ SomeClass.addMixin(Foo);
+
+ MetaClass.addInterceptor( new Interceptor() {
+ filter(method) {
+ return method.isPublic();
+ }
+ invoke(method, args) {
+ // do something
+ method.invoke(args);
+ }
+ });
+
+ * allow meta classes to be added dynamically using closure syntax?
+ e.g. Map?
+
+
+STUFF TO PONDER
+===============
+
+* if we allow statements in class declarations, then we could disallow the syntax sugar
+ for method invocation with closures. i.e. foo { code } would have to be foo ({code})
+ otherwise it'd be interpeted as a method declaration.
+
+ e.g.
+
+ module MyValidatingModule
+
+ class Cheese {
+ readOnlyProperty('hello')
+ validatingProperty('name', { it.length > 0 } )
+
+ lazilyCreatedProperty(:cheese, { new MySpecialCheese() })
+
+ public(:methodA, :methodB, :methodC)
+ }
+
+ for now we could argue that only methods are allowed to be invoked inside the class declaration.
+ We could still do markup but just not as nice
+
+ class Whatnot {
+ table( {
+ foo {
+ }
+ whatnot {
+ }
+ })
+
+ blah = {
+ a(x:1234, b:942) {
+ d()
+ }
+ }
+
+
+* Support multiple return values...
+
+ String, Number cheese() {
+ "hello", 7
+ }
+
+ a, b = cheese()
+
+ also if we do this we should do assignment / swapping
+
+ a, b = 1, 2
+ a, b = b, a
+
+* maybe use syntax #[1, 2] to create arrays which behave just like immutable lists?
+
+* using macros to avoid dependencies on logging stuff (say)
+
+ class GroovyLog {
+ switch (System.getProperty('groovy.log.impl', 'useCommonsLogging')) {
+ case 'useCommonsLogging': {
+ // lets define the new instance method
+ newInstance() {
+ return new CommonsLoggingThingy()
+ }
+ }
+ default {
+ newInstance() {
+ return new SimpleGroovyLog()
+ }
+ }
+ }
+ }
+
+ doing things like this at compile time means no runtime dependencies. Ditto to do JDK based compiles
+
+
+
+UI WORK
+=======
+
+* tree demo...
+
+* when named method calls are supported with default values, refactor SwingBuilder
+ so that all the creations of widgets occur with SwingFactory which would be
+ useful in and of itself
+ - plus we should be using normal method call mechanism & for groovy to do the rest to avoid
+ the long laborious Map coding
+
+* add table layout cell spacing thingy
+
+* FormModel.addPropertyModel(property)
+ FormModel.addClosureModel(readClosure, writeClosure)
+
+* ListModel is-a List but delegates to an underlying list and has events
+
+* rename tableLayout -> table and table -> grid
+
+* add sortableGrid
+
+* create a GroovyUI
+ -> interactive script + allows scripts to be run & objects explored
+
+
+
+
+ECLIPSE WORK
+============
+
+* Run as JUnit support for Groovy!
+
+* Refactoring support for Groovy and tie it into the Java refactoring
+
+
+JUNIT WORK
+==========
+
+* patch GroovyTestCase so that methods which return Object are included in the test. This avoids us having to
+specify void for method return types.This requires a clever static method when we generate the
+ bytecode which can instantiate a special kind of TestSuite
+ unless there's another way?
+
+
+OPTIMISATIONS
+=============
+* method invocations - if foo instanceof GroovyObject
+then generate bytecode
+
+foo.invokeMethod(method, args);
+
+* could code generate the MetaClass with very efficient dynamic dispatch
+ e.g. could switch() on the method name & then use real method invocation
+ on the method instance
View
121 groovy-core/build.gant
@@ -0,0 +1,121 @@
+// A Gant script for building the Groovy system.
+//
+// Copyright © 2006 Russel Winder <russel@russel.org.uk>
+//
+// 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.
+//
+// Author : Russel Winder
+// $Revision$
+// $Date$
+
+sourceDirectory = 'src'
+mainSourceDirectory = sourceDirectory + '/main'
+testsSourceDirectory = sourceDirectory + '/test'
+targetDirectory = 'target'
+mainClassesDirectory = targetDirectory + '/classes'
+testsClassesDirectory = targetDirectory + '/test-classes'
+reportsDirectory = targetDirectory + '/test-reports'
+
+antlrDirectory = mainSourceDirectory + '/org/codehaus/groovy/antlr'
+parserDirectory = antlrDirectory + '/parser'
+
+javaVersion = '1.4'
+
+includeTargets << gant.targets.Clean
+cleanDirectory << targetDirectory
+cleanPattern << [ '**.*~' , parserDirectory + '/Groovy*.*' ]
+
+dependencies = 'dependencies'
+Ant.path ( id : dependencies ) {
+ fileset ( dir : System.properties.'groovy.home' + '/lib' , includes : '*.jar' , excludes : 'gant*.jar,*groovy*.jar' )
+}
+
+Ant.taskdef ( name : 'groovyc' , classname : 'org.codehaus.groovy.ant.Groovyc' , classpath : mainClassesDirectory )
+
+task ( ensureAntlr : 'Ensure all the files generated from the Antlr grammar are up to date.' ) {
+ Ant.mkdir ( dir : parserDirectory )
+ // Need a way of getting this path in a platform independent way. This is fine fo Ubuntu (and Debian?) but likely fails for all other OSs.
+ def antAntlrJar = '/usr/share/java/ant-antlr.jar'
+ Ant.taskdef ( name : 'antlr' , classname : 'org.apache.tools.ant.taskdefs.optional.ANTLR' , classpath : antAntlrJar )
+ Ant.antlr ( target : antlrDirectory + '/groovy.g' , outputdirectory : parserDirectory ) {
+ classpath ( refid : dependencies )
+ }
+}
+
+task ( compileMain : 'Compile the Java and Groovy code in the main source.' ) {
+ depends ( ensureAntlr )
+ Ant.mkdir ( dir : mainClassesDirectory )
+ Ant.javac ( srcdir : mainSourceDirectory , destdir : mainClassesDirectory , debug : 'yes' , source : javaVersion , target : javaVersion , classpathref : dependencies , fork : 'true' )
+ Ant.groovyc ( srcdir : mainSourceDirectory , destdir : mainClassesDirectory ) { // , fork : 'true' ) {
+ classpath {
+ pathelement ( location : mainClassesDirectory )
+ path ( refid : dependencies )
+ }
+ }
+}
+
+task ( compileTest : 'Compile the Java and Groovy code in the test source.' ) {
+ depends ( compileMain )
+ Ant.mkdir ( dir : testsClassesDirectory )
+ Ant.javac ( srcdir : testsSourceDirectory , destdir : testsClassesDirectory , debug : 'yes' , source : javaVersion , target : javaVersion , excludes : 'UberTestCase*.java' , fork : 'true' ) {
+ classpath {
+ pathelement ( location : mainClassesDirectory )
+ path ( refid : dependencies )
+ }
+ }
+ /*
+ * Compiling the tests appears to require 128M of heap space. Since the Groovy compiler Ant task doesn't
+ * yet understand the fork and maxmemory attributes, we have to do things a bit more explicitly so as to
+ * avoid having to use JAVA_OPTS=-Xmx128M gant on the command line.
+ *
+ Ant.groovyc ( srcdir : testsSourceDirectory , destdir : testsClassesDirectory ) { // , fork : 'true', maxmemory : '128M' ) {
+ classpath {
+ pathelement ( location : mainClassesDirectory )
+ pathelement ( location : testsClassesDirectory )
+ path ( refid : dependencies )
+ }
+ }
+ */
+ Ant.java ( classname : 'org.codehaus.groovy.ant.Groovyc' , fork : 'yes' , maxmemory : '128M' ) {
+ arg ( value : testsClassesDirectory )
+ arg ( value : testsSourceDirectory )
+ classpath {
+ pathelement ( location : mainClassesDirectory )
+ pathelement ( location : testsClassesDirectory )
+ path ( refid : dependencies )
+ }
+ }
+ Ant.javac ( srcdir : testsSourceDirectory , destdir : testsClassesDirectory , debug : 'yes' , source : javaVersion , target : javaVersion , includes : 'UberTestCase*.java' , fork : 'true' ) {
+ classpath {
+ pathelement ( location : mainClassesDirectory )
+ pathelement ( location : testsClassesDirectory )
+ path ( refid : dependencies )
+ }
+ }
+}
+
+task ( test : 'Test a build.' ) {
+ depends ( compileTest )
+ Ant.mkdir ( dir : reportsDirectory )
+ Ant.junit ( printsummary : 'true' , fork : 'true' , forkmode : 'once' ) {
+ formatter ( type : 'plain' )
+ batchtest ( todir : reportsDirectory ) {
+ fileset ( dir : testsClassesDirectory , includes : 'UberTest*.class' )
+ }
+ classpath {
+ pathelement ( location : mainClassesDirectory )
+ pathelement ( location : testsClassesDirectory )
+ path ( refid : dependencies )
+ }
+ }
+}
+
+task ( 'default' : 'Default action is currently test.' ) { test ( ) }
View
24 groovy-core/build.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<project name="tck" default="pretty-test">
+ <!-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
+ <!-- directories -->
+ <!-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
+ <property name="test.reports.dir" value="target/test-reports"/>
+
+ <target name="cruise" description="to be started by the CruiseControl build server">
+ <echo message="hook for your build"/>
+ </target>
+
+ <target name="pretty-test"
+ description="HTML output of test cases">
+
+ <junitreport todir="${test.reports.dir}">
+ <fileset dir="${test.reports.dir}">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report format="frames" todir="${test.reports.dir}"/>
+ </junitreport>
+ </target>
+
+
+</project>
View
52 groovy-core/cruise/build.xml
@@ -0,0 +1,52 @@
+<project name="groovy-cruisecontrol-starter" default="cruise">
+
+
+ <property name="svn.tag" value="https://svn.codehaus.org/groovy/tags/cc"/>
+ <property name="dir.checkout" value=".."/>
+ <property name="svn.user" value="dierk"/>
+
+ <target name="cruise" depends="update, copy-reporting-app, delegate, tagLastBuild"/>
+
+ <!--
+ label is given by CruiseControl, provides a default value here for the case where
+ the admin starts this script manually.
+ -->
+ <property name="label" value="manualBuild"/>
+
+ <target name="update">
+ <echo message="Getting the detected modifications...."/>
+ <exec executable="svn">
+ <arg line="--username ${svn.user} --non-interactive"/>
+ <arg line="update ${dir.checkout}"/>
+ </exec>
+ </target>
+ <target name="delegate">
+ <echo message="*** Starting the groovy specific build parts ***"/>
+ <ant dir=".." antfile="build.xml" target="cruise">
+ <property name="buildnumber" value="${label}"/>
+ </ant>
+ <echo message="*** groovy build successfully ended ***"/>
+ </target>
+
+ <target name="tagLastBuild">
+ <exec executable="svn" failonerror="true">
+ <arg line="--username ${svn.user} --non-interactive"/>
+ <arg line="copy -m '' ${dir.checkout} ${svn.tag}/${label}"/>
+ </exec>
+ <exec executable="svn" failonerror="true">
+ <arg line="--username ${svn.user} --non-interactive"/>
+ <arg line="rm -m '' ${svn.tag}/LAST_BUILD"/>
+ </exec>
+ <exec executable="svn" failonerror="true">
+ <arg line="--username ${svn.user} --non-interactive"/>
+ <arg line="copy -m '' ${svn.tag}/${label} ${svn.tag}/LAST_BUILD"/>
+ </exec>
+ </target>
+
+ <target name="copy-reporting-app">
+ <fail unless="reporting-app-dir" message="The property reporting-app-dir must be set from outside!" />
+ <copy todir="${reporting-app-dir}" > <!-- overwrite="true" can be needed occasionally -->
+ <fileset dir="reporting-app" /> <!-- only changes to web.xml need context reload -->
+ </copy>
+ </target>
+</project>
View
100 groovy-core/cruise/buildstatus.xsl
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="us-ascii" ?>
+<!--
+ Excerpted from the book, "Pragmatic Project Automation"
+ ISBN 0-9745140-3-9
+ Copyright 2004 The Pragmatic Programmers, LLC. All Rights Reserved.
+ Visit www.PragmaticProgrammer.com
+ -->
+
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:template match="/">
+
+ <rss version="2.0">
+ <channel>
+
+ <title>groovy Build Status</title>
+
+ <link>http://build.canooo.com/groovy/</link>
+
+ <description>CruiseControl build status feed for the groovy project.</description>
+
+ <item>
+
+ <xsl:variable name="project.name"
+ select="cruisecontrol/info/property[@name='projectname']/@value"/>
+ <xsl:variable name="build.date"
+ select="cruisecontrol/info/property[@name='builddate']/@value"/>
+ <xsl:variable name="build.time"
+ select="cruisecontrol/build/@time"/>
+ <xsl:variable name="modification.list"
+ select="cruisecontrol/modifications/modification"/>
+
+ <xsl:variable name="testsuite.list" select="//testsuite"/>
+ <xsl:variable name="testcase.list" select="$testsuite.list/testcase"/>
+ <title>
+ <xsl:choose>
+ <xsl:when test="cruisecontrol/build/@error">BUILD FAILED</xsl:when>
+ <xsl:otherwise>Build Succeeded</xsl:otherwise>
+ </xsl:choose>
+ </title>
+ <link>http://build.canoo.com/groovy/</link>
+ <description>
+ <xsl:choose>
+ <xsl:when test="cruisecontrol/build/@error">
+ <xsl:text>&lt;b&gt;Ant Error Message:&lt;/b&gt;&lt;br/&gt;</xsl:text>
+ <xsl:value-of select="cruisecontrol/build/@error"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&lt;b&gt;Build:&lt;/b&gt;</xsl:text>
+ <xsl:value-of select="cruisecontrol/info/property[@name='label']/@value"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ &lt;br/&gt;
+ &lt;br/&gt;
+
+ &lt;b&gt;Date of build:&lt;/b&gt;
+ <xsl:value-of select="$build.date"/>&lt;br/&gt;
+
+ &lt;b&gt;Time to build:&lt;/b&gt;
+ <xsl:value-of select="$build.time"/>&lt;br/&gt;
+
+ <xsl:apply-templates select="$modification.list">
+ <xsl:sort select="date" order="descending" data-type="text"/>
+ </xsl:apply-templates>
+
+ &lt;br/&gt;
+
+ &lt;b&gt;Unit Tests:&lt;/b&gt;
+ <xsl:value-of select="count($testcase.list)"/>
+
+ </description>
+ </item>
+ </channel>
+ </rss>
+ </xsl:template>
+
+ <xsl:template match="modification">
+ <xsl:if test="position() = 1">
+
+ &lt;br/&gt;
+
+ &lt;b&gt;Last changed:&lt;/b&gt;
+ <xsl:value-of select="date"/>&lt;br/&gt;
+
+ &lt;b&gt;Last changed by:&lt;/b&gt;
+ <xsl:value-of select="user"/>&lt;br/&gt;
+
+ &lt;b&gt;Last log entry:&lt;/b&gt;
+ <xsl:value-of select="comment"/>&lt;br/&gt;
+
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
View
380 groovy-core/cruise/cc.xsl
@@ -0,0 +1,380 @@
+<?xml version="1.0"?>
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY space "&#32;">
+ <!ENTITY nbsp "&#160;">
+ <!ENTITY bullet "&#8226;">]>
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+ xmlns:xslt="http://xml.apache.org/xslt"
+ >
+ <xsl:output method="html"/>
+
+ <!-- collects all task nodes with parent target into the variable $tasklist -->
+ <xsl:variable name="tasklist" select="//task"/>
+
+ <!-- collects all task nodes from $tasklist with attribute name="Javac" etc. -->
+ <xsl:variable name="javac.tasklist" select="$tasklist[@name='javac']"/>
+ <xsl:variable name="ejbjar.tasklist" select="$tasklist[@name='ejbjar']"/>
+ <xsl:variable name="jar.tasklist" select="$tasklist[@name='jar']"/>
+ <xsl:variable name="war.tasklist" select="$tasklist[@name='war']"/>
+
+ <!-- count elements in sublists -->
+ <xsl:variable name="dist.count" select="count($jar.tasklist) + count($war.tasklist)"/>
+
+ <!-- collect all testsuite nodes in build, regardless of depth -->
+ <xsl:variable name="testsuite.list" select="//testsuite"/>
+ <!-- count error nodes directly under testsuite -->
+ <xsl:variable name="testsuite.error.count" select="count($testsuite.list/error)"/>
+
+ <xsl:variable name="testcase.list" select="$testsuite.list/testcase"/>
+ <xsl:variable name="testcase.error.list" select="$testcase.list/error"/>
+ <xsl:variable name="testcase.failure.list" select="$testcase.list/failure"/>
+ <xsl:variable name="totalErrorsAndFailures" select="count($testcase.error.list) + count($testcase.failure.list)"/>
+
+ <!-- 1: /build/modifications, 2: /cruisecontrol/modifications -->
+ <xsl:variable name="modification.list" select="//modifications/modification"/>
+ <!-- collects all the modification sets -->
+ <xsl:key name="modificationSet" match="//modifications/modification" use="concat(user,':',comment)"/>
+
+ <!-- long template for the whole page, this ensures sequence -->
+ <xsl:template match="/">
+ <!-- Header Part -->
+
+ <xsl:choose>
+ <xsl:when test="//build/@error"> <!-- build tag contains attribute error -->
+ <h1>BUILD FAILED</h1>
+ </xsl:when>
+ <xsl:otherwise>
+ <h1>
+ <xsl:text>BUILD COMPLETE -&space;</xsl:text>
+ <!-- support CruiseControl 1.0 and 2.0 -->
+ <xsl:value-of select="build/label | //info/property[@name='label']/@value"/>
+ </h1>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <table>
+ <tr>
+ <th>Date of build</th>
+ <td>
+ <!-- support CruiseControl 1.0 and 2.0 -->
+ <xsl:value-of select="build/today | //info/property[@name='builddate']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Time to build</th>
+ <td>
+ <xsl:value-of select="//build/@time"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Last changed</th>
+ <td>
+ <xsl:value-of select="//modifications/modification/date"/>
+ </td>
+ </tr>
+ <tr>
+ <th>Last log entry</th>
+ <td>
+ <xsl:value-of select="//modifications/modification/comment"/>
+ </td>
+ </tr>
+ </table>
+
+ <xsl:if test="//build/@error">
+ <h2>Ant Error Message</h2>
+ <pre>
+ <xsl:value-of select="//build/@error"/>
+ </pre>
+ <pre>
+ <xsl:value-of select="//stacktrace"/>
+ </pre>
+ </xsl:if>
+
+ <!-- Compilation Messages -->
+
+ <xsl:variable name="javac.warn.messages" select="$javac.tasklist/message[@priority='warn']"/>
+ <xsl:variable name="ejbjar.warn.messages" select="$ejbjar.tasklist/message[@priority='warn']"/>
+ <xsl:variable name="total.errorMessage.count"
+ select="count($javac.warn.messages) + count($ejbjar.warn.messages)"/>
+
+ <!-- NOTE: total.errorMessage.count is actually the number of lines of error
+ messages. This accurately represents the number of errors ONLY if the Ant property
+ build.compiler.emacs is set to "true" -->
+ <xsl:if test="$total.errorMessage.count > 0">
+ <h2>
+ <xsl:text>Error-/Warning- Lines:&space;</xsl:text>
+ <xsl:value-of select="$total.errorMessage.count"/>
+ </h2>
+
+ <pre>
+ <xsl:apply-templates select="$javac.warn.messages"/>
+ </pre>
+ </xsl:if>
+
+ <!-- Unit Tests -->
+ <xsl:variable name="unit.passed" select="count($testcase.list)-$totalErrorsAndFailures"/>
+
+ <h2>Unit Tests</h2>
+ <p>
+ <xsl:text>Test cases:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($testcase.list)"/>
+ </b>
+ <xsl:text>, passed:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="$unit.passed"/>
+ </b>
+ <xsl:text>, failures:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($testcase.failure.list)"/>
+ </b>
+ <xsl:text>, errors:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($testcase.error.list)"/>
+ </b>
+ <xsl:text>.</xsl:text>
+ </p>
+
+ <xsl:call-template name="colorBar">
+ <xsl:with-param name="success.count" select="$unit.passed"/>
+ <xsl:with-param name="failed.count" select="$totalErrorsAndFailures"/>
+ <xsl:with-param name="total.count" select="count($testcase.list)"/>
+ <xsl:with-param name="tableID">utests</xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="count($testcase.error.list) > 0">
+ <h3>Errors</h3>
+ <ul>
+ <xsl:apply-templates select="$testcase.error.list"/>
+ </ul>
+ </xsl:if>
+
+ <xsl:if test="count($testcase.failure.list) > 0">
+ <h3>Failures</h3>
+ <ul>
+ <xsl:apply-templates select="$testcase.failure.list"/>
+ </ul>
+ </xsl:if>
+
+ <xsl:if test="$totalErrorsAndFailures > 0">
+ <h3>
+ <xsl:text>Unit Test Error Details:&space;(</xsl:text>
+ <xsl:value-of select="$totalErrorsAndFailures"/>
+ <xsl:text>)</xsl:text>
+ </h3>
+ <xsl:apply-templates select="//testsuite/testcase[.//error]"/>
+ <xsl:apply-templates select="//testsuite/testcase[.//failure]"/>
+ </xsl:if>
+
+ <!-- Functional Tests -->
+
+ <!-- functional testing vars -->
+ <xsl:variable name="cases" select="//summary/testresult"/>
+ <xsl:variable name="steps" select="//summary/testresult/results/step"/>
+ <xsl:variable name="passed" select="$cases[@successful='yes']"/>
+ <xsl:variable name="failed" select="$cases[@successful='no']"/>
+
+ <h2>Functional Tests</h2>
+ <p>
+ <xsl:text>Szenarios:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($cases)"/>
+ </b>
+ <xsl:text>, passed:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($passed)"/>
+ </b>
+ <xsl:text>, failed:&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($failed)"/>
+ </b>
+ <xsl:text>, including&space;</xsl:text>
+ <b>
+ <xsl:value-of select="count($steps)"/>
+ </b>
+ <xsl:text>&space;single steps.</xsl:text>
+ </p>
+
+ <xsl:call-template name="colorBar">
+ <xsl:with-param name="success.count" select="count($passed)"/>
+ <xsl:with-param name="failed.count" select="count($failed)"/>
+ <xsl:with-param name="total.count" select="count($cases)"/>
+ <xsl:with-param name="tableID">ftests</xsl:with-param>
+ </xsl:call-template>
+
+ <h2>Modifications</h2>
+ <p>
+ <xsl:value-of select="count($modification.list)"/>
+ <xsl:text>&space;modifications since last build.</xsl:text>
+ </p>
+
+ <xsl:for-each select="$modification.list[count(.|key('modificationSet',concat(user,':',comment))[1])=1]">
+ <h3>
+ <xsl:value-of select="user"/>
+ <xsl:text>:&space;</xsl:text>
+ <xsl:value-of select="comment"/>
+ <xsl:text>&space;(</xsl:text>
+ <xsl:value-of select="date"/>
+ <xsl:text>)</xsl:text>
+ </h3>
+ <ul>
+ <xsl:apply-templates select="key('modificationSet',concat(user,':',comment))"/>
+ </ul>
+ </xsl:for-each>
+
+
+ <xsl:if test="$dist.count > 0">
+ <h2>Deployments</h2>
+ <p>
+ <xsl:value-of select="$dist.count"/>
+ <xsl:text>&space;files deployed by this build.</xsl:text>
+ </p>
+
+ <ul>
+ <xsl:apply-templates select="$jar.tasklist | $war.tasklist"/>
+ </ul>
+ </xsl:if>
+
+ </xsl:template>
+
+ <xsl:template name="colorBar">
+ <xsl:param name="success.count"/>
+ <xsl:param name="failed.count"/>
+ <xsl:param name="total.count"/>
+ <xsl:param name="tableID"/>
+
+ <table bgcolor="white" cellspacing="0" cellpadding="0">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$tableID"/>
+ </xsl:attribute>
+ <tr>
+ <xsl:if test="$success.count > 0">
+ <td bgcolor="green">
+ <xsl:attribute name="width">
+ <xsl:value-of select="concat($success.count * 100 div $total.count, '%')"/>
+ </xsl:attribute>
+ &nbsp;
+ </td>
+ </xsl:if>
+
+ <xsl:if test="$failed.count > 0">
+ <td bgcolor="#FFFFA0">
+ <xsl:attribute name="width">
+ <xsl:value-of select="concat($failed.count * 100 div $total.count, '%')"/>
+ </xsl:attribute>
+ &nbsp;
+ </td>
+ </xsl:if>
+
+ <xsl:if test="($total.count = 0) or ($total.count > ($success.count + $failed.count))">
+ <td>&nbsp;</td>
+ </xsl:if>
+ </tr>
+ </table>
+ </xsl:template>
+
+
+ <!-- UnitTest Errors/Failures -->
+ <xsl:template match="error|failure">
+ <li>
+ <xsl:call-template name="colorOddEvenRow"/>
+ <xsl:value-of select="../@name"/>
+ </li>
+ </xsl:template>
+
+ <!-- UnitTest Errors And Failures Detail Template -->
+ <xsl:template match="//testsuite/testcase">
+ <h4>
+ <xsl:text>Test:&space;</xsl:text>
+ <xsl:value-of select="@name"/>
+ </h4>
+
+ <p>
+ <xsl:text>Type:</xsl:text>
+ <xsl:value-of select="node()/@type"/>
+ </p>
+ <p>
+ <xsl:text>Message:</xsl:text>
+ <xsl:value-of select="node()/@message"/>
+ </p>
+
+ <PRE>
+ <xsl:value-of select="node()"/>
+ </PRE>
+ </xsl:template>
+
+ <!-- Compilation Error Details -->
+ <xsl:template match="message[@priority='warn']">
+ <xsl:value-of select="text()"/>
+ <br/>
+ </xsl:template>
+ <!-- Test Execution Stacktrace -->
+ <xsl:template match="stacktrace">
+ <pre>
+ <xsl:value-of select="text()"/>
+ </pre>
+ </xsl:template>
+
+ <!-- Modifications template -->
+ <xsl:template match="modification[file/filename]">
+ <!-- CC 2.0 -->
+ <li>
+ <xsl:call-template name="colorOddEvenRow"/>
+ <xsl:call-template name="modificationType">
+ <xsl:with-param name="type" select="file/@action"/>
+ </xsl:call-template>
+
+ <xsl:value-of select="file/project"/>
+ <xsl:if test="string-length(normalize-space(file/project))">
+ <xsl:text>/</xsl:text>
+ </xsl:if>
+ <xsl:value-of select="file/filename"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template match="modification">
+ <!-- CC 1.0 -->
+ <li>
+ <xsl:call-template name="colorOddEvenRow"/>
+ <xsl:call-template name="modificationType">
+ <xsl:with-param name="type" select="@type"/>
+ </xsl:call-template>
+
+ <xsl:value-of select="filename"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template name="modificationType">
+ <xsl:param name="type"/>
+
+ <span class="modifificationType">
+ <xsl:choose>
+ <xsl:when test="$type='modified'">&gt;</xsl:when>
+ <xsl:when test="$type='added'">+</xsl:when>
+ <xsl:when test="$type='deleted'">-</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
+ </xsl:choose>
+ </span>
+
+ &nbsp;
+ </xsl:template>
+
+ <!-- jar and war template -->
+ <xsl:template match="task[translate(string(@name),'jJwW','')='ar']">
+ <li>
+ <xsl:call-template name="colorOddEvenRow"/>
+ <xsl:value-of select="message"/>
+ </li>
+ </xsl:template>
+
+ <xsl:template name="colorOddEvenRow">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="position() mod 2 = 0">evenrow</xsl:when>
+ <xsl:otherwise>oddrow</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:template>
+</xsl:stylesheet>
View
9 groovy-core/cruise/emailmap.properties
@@ -0,0 +1,9 @@
+#
+# Maps cvs user id to e-mail adress.
+#
+# these team members get notified on builds
+# of what they have commited to the CVS
+#
+
+dierk=dierk.koenig@canoo.com
+graeme=graemerocher@yahoo.co.uk
View
16 groovy-core/cruise/htmlmail.xsl
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="us-ascii" ?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:import href="cc.xsl"/>
+ <xsl:output method="html"/>
+
+ <xsl:template match="/">
+ <html>
+ <head>
+ <title>CruiseControl Build Result</title>
+ </head>
+ <body>
+ <xsl:apply-imports/>
+ </body>
+ </html>
+ </xsl:template>
+</xsl:stylesheet>
View
52 groovy-core/cruise/project.xml
@@ -0,0 +1,52 @@
+<!--
+This file is referenced from cruisecontrol's config.xml and contains the project definition.
+
+Available entities are:
+basedir
+hostname
+defaultmailhost
+-->
+
+
+<project name="groovy" buildafterfailed="false">
+ <modificationset quietperiod="120">
+ <svn localworkingcopy="&basedir;/groovy/cruisecontrol/checkout"/>
+ </modificationset>
+ <schedule>
+ <!-- buildfile is relative to checkout dir -->
+ <ant
+ buildfile="&basedir;/groovy/cruisecontrol/checkout/cruise/build.xml"
+ antWorkingDir="&basedir;/groovy/cruisecontrol/checkout"
+ usedebug="false"
+ uselogger="true"
+ >
+ <property name="reporting-app-dir" value="&basedir;/groovy/&hostname;/groovy/"/>
+ </ant>
+ </schedule>
+ <listeners>
+ <currentbuildstatuslistener file="&basedir;/groovy/cruisecontrol/logs/status.txt"/>
+ </listeners>
+ <log dir="&basedir;/groovy/cruisecontrol/logs">
+ <!--merge dir="&basedir;/groovy/cruisecontrol/checkout/target/test-reports/"/-->
+ </log>
+ <publishers>
+ <!-- htmlemail is used only for explicit subscribers -->
+ <htmlemail
+ buildresultsurl="http://&hostname;/groovy/"
+ mailhost="&defaultmailhost;"
+ returnaddress="build-support@canoo.com"
+ spamwhilebroken="false"
+ skipusers="true"
+ logdir="&basedir;/groovy/cruisecontrol/logs"
+ xslfile="&basedir;/groovy/cruisecontrol/checkout/cruise/htmlmail.xsl"
+ >
+ <!--propertiesmapper file="&basedir;/groovy/cruisecontrol/checkout/cruise/emailmap.properties"/-->
+ <always address="dierk.koenig@canoo.com"/>
+ </htmlemail>
+ <XSLTLogPublisher
+ directory="&basedir;/groovy/&hostname;/groovy/"
+ outfilename="buildstatus.rss"
+ xsltfile="&basedir;/groovy/cruisecontrol/checkout/cruise/buildstatus.xsl"
+ />
+ </publishers>
+</project>
View
BIN ...y-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/BuildInfo.class
Binary file not shown.
View
BIN ...cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/BuildInfoSummary.class
Binary file not shown.
View
BIN ...ting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/CruiseControlWebAppException.class
Binary file not shown.
View
BIN ...ore/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/StatusHelper.class
Binary file not shown.
View
BIN .../WEB-INF/classes/net/sourceforge/cruisecontrol/chart/AbstractCruiseControlChartData.class
Binary file not shown.
View
BIN ...uise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/chart/PieChartData.class
Binary file not shown.
View
BIN ...ise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/chart/TimeChartData.class
Binary file not shown.
View
BIN ...ise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/servlet/FileServlet.class
Binary file not shown.
View
BIN .../cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/servlet/WebFile.class
Binary file not shown.
View
BIN ...reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/ArtifactsLinkTag.class
Binary file not shown.
View
BIN ...-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/ArtifactsLinkTagExtraInfo.class
Binary file not shown.
View
BIN ...ise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/BuildInfoTag.class
Binary file not shown.
View
BIN ...ting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/BuildInfoTagExtraInfo.class
Binary file not shown.
View
BIN ...pp/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlBodyTagSupport.class
Binary file not shown.
View
BIN ...app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlLogFileFilter.class
Binary file not shown.
View
BIN ...-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlTagSupport$1.class
Binary file not shown.
View
BIN ...ng-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CruiseControlTagSupport.class
Binary file not shown.
View
BIN ...ting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/CurrentBuildStatusTag.class
Binary file not shown.
View
BIN ...e/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/LinkTag.class
Binary file not shown.
View
BIN ...reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/LinkTagExtraInfo.class
Binary file not shown.
View
BIN ...se/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/NavigationTag.class
Binary file not shown.
View
BIN ...ing-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/NavigationTagExtraInfo.class
Binary file not shown.
View
BIN ...porting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/ReversedComparator.class
Binary file not shown.
View
BIN ...-core/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/Tab.class
Binary file not shown.
View
BIN ...uise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/TabSheetTag.class
Binary file not shown.
View
BIN ...re/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/TabTag.class
Binary file not shown.
View
BIN .../cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/XSLTag$1.class
Binary file not shown.
View
BIN ...re/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/taglib/XSLTag.class
Binary file not shown.
View
BIN ...re/cruise/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/util/DateUtil.class
Binary file not shown.
View
BIN ...e/reporting-app/WEB-INF/classes/net/sourceforge/cruisecontrol/util/TimeNumberFormat.class
Binary file not shown.
View
150 groovy-core/cruise/reporting-app/WEB-INF/cruisecontrol-jsp11.tld
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib
+ PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
+ "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
+
+<!--********************************************************************************
+ * CruiseControl, a Continuous Integration Toolkit
+ * Copyright (c) 2001, ThoughtWorks, Inc.
+ * 651 W Washington Ave. Suite 600
+ * Chicago, IL 60661 USA
+ * 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 ThoughtWorks, Inc., CruiseControl, 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 REGENTS 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.
+ ********************************************************************************-->
+<taglib>
+ <tlibversion>1.0</tlibversion>
+ <jspversion>1.1</jspversion>
+ <shortname>simple</shortname>
+ <uri></uri>
+ <info>
+ A simple tab library for the examples
+ </info>
+ <tag>
+ <name>xsl</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.XSLTag</tagclass>
+ <bodycontent>JSP</bodycontent>
+ <info>
+ Transforms the xml build log using XSL.
+ </info>
+ <attribute>
+ <name>xslFile</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>xslRootContext</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>currentbuildstatus</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.CurrentBuildStatusTag</tagclass>
+ <bodycontent>empty</bodycontent>
+ <info>
+ Report when the build started, or when it will start again.
+ </info>
+ </tag>
+ <tag>
+ <name>nav</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.NavigationTag</tagclass>
+ <teiclass>net.sourceforge.cruisecontrol.taglib.NavigationTagExtraInfo</teiclass>
+ <bodycontent>JSP</bodycontent>
+ <info>
+ Builds the navigation
+ </info>
+ <attribute>
+ <name>dateFormat</name>
+ <required>false</required>
+ </attribute>
+ <attribute>
+ <name>startingBuildNumber</name>
+ <required>false</required>
+ </attribute>
+ <attribute>
+ <name>finalBuildNumber</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>artifactsLink</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.ArtifactsLinkTag</tagclass>
+ <teiclass>net.sourceforge.cruisecontrol.taglib.ArtifactsLinkTagExtraInfo</teiclass>
+ <bodycontent>JSP</bodycontent>
+ <info>
+ Inserts link to the artifacts FileServlet
+ </info>
+ </tag>
+ <tag>
+ <name>buildInfo</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.BuildInfoTag</tagclass>
+ <teiclass>net.sourceforge.cruisecontrol.taglib.BuildInfoTagExtraInfo</teiclass>
+ <bodycontent>empty</bodycontent>
+ <info>
+ Inserts information about the various builds into the page scope.
+ </info>
+ </tag>
+ <tag>
+ <name>tabsheet</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.TabSheetTag</tagclass>
+ <bodycontent>JSP</bodycontent>
+ <info>
+ Creates a tab sheet that tabs can be placed into.
+ </info>
+ </tag>
+ <tag>
+ <name>tab</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.TabTag</tagclass>
+ <bodycontent>JSP</bodycontent>
+ <info>Creates a tab that selected content gets put into.</info>
+ <attribute>
+ <name>name</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>label</name>
+ <required>true</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>link</name>
+ <tagclass>net.sourceforge.cruisecontrol.taglib.LinkTag</tagclass>
+ <teiclass>net.sourceforge.cruisecontrol.taglib.LinkTagExtraInfo</teiclass>
+ <bodycontent>empty</bodycontent>
+ <info>Builds up a link URL</info>
+ <attribute>
+ <name>id</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>exclude</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+</taglib>
View
145 groovy-core/cruise/reporting-app/WEB-INF/cruisecontrol-jsp12.tld
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE taglib
+ PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+ "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+
+<!--********************************************************************************
+ * CruiseControl, a Continuous Integration Toolkit
+ * Copyright (c) 2001, ThoughtWorks, Inc.
+ * 651 W Washington Ave. Suite 600
+ * Chicago, IL 60661 USA
+ * 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 ThoughtWorks, Inc., CruiseControl, 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 REGENTS 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.
+ ********************************************************************************-->
+<taglib>
+ <tlib-version>1.0</tlib-version>
+ <jsp-version>1.2</jsp-version>
+ <short-name>cruisecontrol</short-name>
+ <uri>http://cruisecontrol.sourceforge.net/taglibs/cruisecontrol-1.0</uri>
+ <tag>
+ <name>xsl</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.XSLTag</tag-class>
+ <body-content>JSP</body-content>
+ <description>
+ Transforms the xml build log using XSL.
+ </description>
+ <attribute>
+ <name>xslFile</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>xslRootContext</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>currentbuildstatus</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.CurrentBuildStatusTag</tag-class>
+ <body-content>empty</body-content>
+ <description>
+ Report when the build started, or when it will start again.
+ </description>
+ </tag>
+ <tag>
+ <name>nav</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.NavigationTag</tag-class>
+ <tei-class>net.sourceforge.cruisecontrol.taglib.NavigationTagExtraInfo</tei-class>
+ <body-content>JSP</body-content>
+ <description>
+ Builds the navigation
+ </description>
+ <attribute>
+ <name>dateFormat</name>
+ <required>false</required>
+ </attribute>
+ <attribute>
+ <name>startingBuildNumber</name>
+ <required>false</required>
+ </attribute>
+ <attribute>
+ <name>finalBuildNumber</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>artifactsLink</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.ArtifactsLinkTag</tag-class>
+ <tei-class>net.sourceforge.cruisecontrol.taglib.ArtifactsLinkTagExtraInfo</tei-class>
+ <body-content>JSP</body-content>
+ <description>
+ Inserts link to the artifacts FileServlet
+ </description>
+ </tag>
+ <tag>
+ <name>buildInfo</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.BuildInfoTag</tag-class>
+ <tei-class>net.sourceforge.cruisecontrol.taglib.BuildInfoTagExtraInfo</tei-class>
+ <body-content>empty</body-content>
+ <description>
+ Inserts information about the various builds into the page scope.
+ </description>
+ </tag>
+ <tag>
+ <name>tabsheet</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.TabSheetTag</tag-class>
+ <body-content>JSP</body-content>
+ <description>Creates a tab sheet that tabs can be placed into.</description>
+ </tag>
+ <tag>
+ <name>tab</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.TabTag</tag-class>
+ <body-content>JSP</body-content>
+ <description>Creates a tab that selected content gets put into.</description>
+ <attribute>
+ <name>name</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>label</name>
+ <required>true</required>
+ </attribute>
+ </tag>
+ <tag>
+ <name>link</name>
+ <tag-class>net.sourceforge.cruisecontrol.taglib.LinkTag</tag-class>
+ <tei-class>net.sourceforge.cruisecontrol.taglib.LinkTagExtraInfo</tei-class>
+ <body-content>empty</body-content>
+ <description>Builds up a link URL</description>
+ <attribute>
+ <name>id</name>
+ <required>true</required>
+ </attribute>
+ <attribute>
+ <name>exclude</name>
+ <required>false</required>
+ </attribute>
+ </tag>
+</taglib>
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/batik-awt-util.jar
Binary file not shown.
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/batik-svggen.jar
Binary file not shown.
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/batik-util.jar
Binary file not shown.
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/cewolf.jar
Binary file not shown.
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/commons-logging.jar
Binary file not shown.
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/jcommon-0.8.0.jar
Binary file not shown.
View
BIN groovy-core/cruise/reporting-app/WEB-INF/lib/jfreechart-0.9.8.jar
Binary file not shown.
View
139 groovy-core/cruise/reporting-app/WEB-INF/web.xml
@@ -0,0 +1,139 @@
+<!DOCTYPE web-app
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
+ "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
+
+<!--********************************************************************************
+ * CruiseControl, a Continuous Integration Toolkit
+ * Copyright (c) 2001, ThoughtWorks, Inc.
+ * 651 W Washington Ave. Suite 600
+ * Chicago, IL 60661 USA
+ * 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 ThoughtWorks, Inc., CruiseControl, 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 REGENTS 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.
+ ********************************************************************************-->
+<web-app>
+ <display-name>groovy CruiseControl Reporting App</display-name>
+ <description>The reporting application for CruiseControl. Provides a simple but rich
+ interface for viewing CruiseControl build reports.
+ </description>
+
+ <context-param>
+ <param-name>singleProject</param-name>
+ <param-value>true</param-value>
+ <description>Indicates if the CruiseControl instance is to report on only one project.
+ If it is, then you should set this to true.
+ </description>
+ </context-param>
+
+ <context-param>
+ <!-- You can set this value via the user.log.dir property in Ant, when building the WAR file. -->
+ <param-name>logDir</param-name>
+ <param-value>/opt/groovy/cruisecontrol/logs/</param-value>
+ <description> This should be the full path to your CruiseControl log directory. If you
+ are in single project mode, this will contain only the logs for your project. If you
+ are in multi-project mode, it is expected that you will have multiple sub-directories
+ inside this log directory, one for each project.
+ </description>
+ </context-param>
+
+ <context-param>
+ <!-- You can set this value via the user.build.status.file property in Ant, when building the WAR file. -->
+ <param-name>currentBuildStatusFile</param-name>
+ <param-value>status.txt</param-value>
+ <description>This should be the path to your current build status file, which is relative
+ to the log directory (or, in single-project mode, relative to the project's log
+ directory)
+ </description>
+ </context-param>
+
+ <servlet>
+ <servlet-name>buildresults</servlet-name>
+ <display-name>Build Result Reporter</display-name>
+ <description>Presents build results in a human-readable and intuitive format.</description>
+ <jsp-file>/main.jsp</jsp-file>
+ </servlet>
+
+ <servlet>
+ <servlet-name>index</servlet-name>
+ <display-name>Index/Summary page</display-name>
+ <description>Presents a summary of all projects, allowing easy navigation to each.</description>
+ <jsp-file>/index.jsp</jsp-file>
+ </servlet>
+
+ <servlet>
+ <servlet-name>ArtifactServlet</servlet-name>
+ <servlet-class>net.sourceforge.cruisecontrol.servlet.FileServlet</servlet-class>
+ <init-param>
+ <param-name>rootDir</param-name>
+ <param-value>/opt/groovy/cruisecontrol/checkout/dist/</param-value>
+ </init-param>
+ </servlet>
+
+ <servlet>
+ <servlet-name>LogServlet</servlet-name>
+ <servlet-class>net.sourceforge.cruisecontrol.servlet.FileServlet</servlet-class>
+ </servlet>
+
+ <!-- Used for charting... -->
+ <servlet>
+ <servlet-name>CewolfServlet</servlet-name>
+ <servlet-class>de.laures.cewolf.CewolfRenderer</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>CewolfServlet</servlet-name>
+ <url-pattern>/cewolf/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>LogServlet</servlet-name>
+ <url-pattern>/logs/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ArtifactServlet</servlet-name>
+ <url-pattern>/artifacts/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>buildresults</servlet-name>
+ <!-- Strictly speaking, this should be /buildresults for single-project mode. But it works anyway. -->
+ <url-pattern>/buildresults/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>index</servlet-name>
+ <url-pattern>/index</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
View
58 groovy-core/cruise/reporting-app/buildresults.jsp
@@ -0,0 +1,58 @@
+<%--********************************************************************************
+* CruiseControl, a Continuous Integration Toolkit
+* Copyright (c) 2001, ThoughtWorks, Inc.
+* 651 W Washington Ave. Suite 600
+* Chicago, IL 60661 USA
+* 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 ThoughtWorks, Inc., CruiseControl, 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 REGENTS 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.
+********************************************************************************--%>
+<%@ taglib uri="/WEB-INF/cruisecontrol-jsp11.tld" prefix="cruisecontrol"%>
+<cruisecontrol:xsl xslFile="/xsl/header.xsl"/>
+
+<cruisecontrol:artifactsLink>
+ <table width="98%" border="0" cellspacing="0" cellpadding="2" align="center">
+ <tr><td class="header-label"><!--<a href="<%= artifacts_url %>">--><a href="http://build.canoo.com/groovy/artifacts/">Build Artifacts</a></td></tr>
+ </table>
+</cruisecontrol:artifactsLink>
+
+<cruisecontrol:xsl xslFile="/xsl/maven.xsl"/>
+<p>
+<cruisecontrol:xsl xslFile="/xsl/checkstyle.xsl"/>
+<p>
+<cruisecontrol:xsl xslFile="/xsl/compile.xsl"/>
+<p>
+<cruisecontrol:xsl xslFile="/xsl/javadoc.xsl"/>
+<p>
+<cruisecontrol:xsl xslFile="/xsl/unittests.xsl"/>
+<p>
+<cruisecontrol:xsl xslFile="/xsl/modifications.xsl"/>
+<p>
+<cruisecontrol:xsl xslFile="/xsl/distributables.xsl"/>
View
86 groovy-core/cruise/reporting-app/checkstyle.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+ "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
+ "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
+
+<module name="Checker">
+ <module name="Translation"/>
+ <module name="TreeWalker">
+ <property name="cacheFile" value="target/checkstyle.cache"/>
+ <property name="tabWidth" value="4"/>
+
+ <!-- Naming conventions -->
+ <module name="ConstantName"/>
+ <module name="LocalFinalVariableName"/>
+ <module name="LocalVariableName"/>
+ <module name="MemberName"/>
+ <module name="MethodName"/>
+ <module name="PackageName">
+ <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
+ </module>
+ <module name="ParameterName"/>
+ <module name="StaticVariableName"/>
+ <module name="TypeName"/>
+
+ <!-- Imports -->
+ <module name="AvoidStarImport"/>
+ <module name="IllegalImport"/>
+ <module name="RedundantImport"/>
+ <module name="UnusedImports"/>
+
+ <!-- Size violations -->
+ <module name="FileLength"/>
+ <module name="LineLength">
+ <property name="max" value="120"/>
+ </module>