Groovy 2.0 modularization Add comment to Wiki View in Wiki Edit Wiki page Printable Version

Rationale

Groovy has become a pretty complete package with more than just the language itself, but also with several useful APIs and wrappers to simplify the life of developers, dealing with Ant, Swing, XML, JDBC, command-line, and more. The main groovy-all JAR has reached over 4MB, preventing, for example, usage in an applet, as the time to load the JAR is too long. Recognizing that nobody needs everything in Groovy, it is time we rework the Groovy source organization, deliverables, project build, and more. However, this is a "big bang" kind of change that needs a good level of discipline to get through properly, as several key steps will have to be made.

Key steps

Having a modular system means that:

  • sources will have to be reorganized: this is where a DVCS system will be especially useful
  • modules will have to be created: as source code is being reorganized, modules will be created, but will need to be built using a multi-module approach

A good approach will be to follow some baby steps:

  • providing a new build which will support multiple modules in the future
  • migrating to a DVCS system to ease the migration
  • progressively migrate one module at a time, to avoid any breakage

Build System

The major options for modular build systems are:

  • gradle
  • mvn (+gmaven)

A concensus is emerging that Gradle should be our new build infrastructure. A Gradle replacement for the current Ant build will be created over the next few weeks. This can then be evolved into a multi-project build once the module structure is decided.

We'll also need to ensure that our toolset will properly support a Gradle build infrastructure:

  • IDEs: IntelliJ IDEA supports Gradle out of the box, for instance
  • CI: continuous integration servers should be able to build a Gradle-poweed build of Groovy

Source reorganization and repository

Move to a DVCS system: Git

To help with external contributions, and also to ease the work of source code reorganization, it'll be interesting to move to a different source code repository, moving from Subversion to a distributed source control system. Git is the choice made for DVCS at Codehaus, so we'll migrate to Git as part of the process.

Here again, we need to ensure that tool support is okay with Git:

  • IDEs: IntelliJ IDEA offers a great support of Git, the command-line is also usable, of course. Eclipse has some support for Git.
  • FishEye: FishEye is pretty handy for navigating in the source's history. We need to check that the issues of FishEye support for Git are fixed.
  • CI: the continuous integration servers should be able to checkout the source code from Git. Codehaus' Bamboo already has suypport for Git.

Base structure

The current SVN structure does not really follow standards. For example, groovy-core, a separately release component (at the moment, hope to change), is located at: http://svn.codehaus.org/groovy/trunk/groovy/groovy-core/

This should really be something like:

The modules listed above would be listed under: http://svn.codehaus.org/groovy/core/trunk/<module>

And they would be release together. Completely optional projects, like the native support, ide support, etc. should be located at: http://svn.codehaus.org/groovy/<project>/trunk

Such a structure will ensure the core modules follow the same lifecycle as groovy-core, whereas external modules cans still be evolved independently, and don't need to be released alongside Groovy releases.

There should perhaps be three levels of module:

  1. Core
  2. Non-core, centrally supported
  3. Others

Core modules are those needed for the core set of functionality to work. Whether these are shipped as a single jar or a set of jars is up for debate. Everything in this category should be held in the central Git master repository.

Non-core, centrally supported should be in separate Git repositories, not in the Groovy master. They should though be managed from Codehaus in tight-knit collaboration with the master core repository.

Others are modules held by whom and wherever they are held. These might be managed using Bazaar, Mercurial, or Git – there is no need to impose Git as a tool unless they are to migrate into one of the two above centrally managed in which case they must migrate to use Git.

There should be a central index of core modules, non-core centrally managed modules and of any other modules people care to register with the index.

Other considerations

OSGi

Since we've made Groovy's deliverables be proper OSGi bundles, we need to persue our efforts, and make sure the core modules are also valid OSGi bundles, also marking dependencies between core modules, and external dependencies.

DefaultGroovyMethods registration

Some modules (swing, sql) also provide their own DefaultGroovyMethods. We'll need to figure out a way for these modules to register their own DGM methods, such as a META-INF/services technique.

Capabilities support

An old JIRA issue we may consider: http://jira.codehaus.org/browse/GROOVY-2422

The idea is to provide a "capabilities" mechanism to Groovy, to know which features are supported in the current Groovy version.

Inspired by this issue, we could at least provide some utility class (for instance in GroovySystem) where we could discover the existing modules available on the classpath.

Modules

Proposed structure

Here's a module structure we could follow. We shouldn't multiplicate the number of modules to a useless high number, but focus on core functionality, and ensure a pure core will be small enough to be easily embeddable and downloadable (for applets, mobile devices such as Android, etc.)

  • groovy-core
  • modules
    • test
    • jmx
    • swing
    • xml
    • sql
    • web
    • template
    • integration
      • bean-scripting-framework
      • javax.script
    • tools
      • groovydoc
      • shell
      • console
      • java2groovy

Issues to be aware of

Certain classes would naturally belong to certain modules, but are sometimes used in core, etc.

A good example of this is GroovyTestCase and GroovyShellTestCase. These two classes would naturally go into the test module, but it means the core module would depend on test, but test would already depend on core. So, so far, in the following approach, I've kept these base classes (not very heavyweight anyway) in core, but we'll have to figure out a good way to migrate them in their respective module.

Another example is the java2groovy tool (not very much used, may perhaps be discarded at some point). It belongs to its own module, under some tools meta-module, but the trick with this tool is that it also contributes some batch scripts so one can run the tool from the command-line easily. For the normal distribution, anyway, we can embed those scripts, so that shouldn't be critical.

An important thing to consider is DefaultGroovyMethods. There are already some work done in that area to split methods related to SQL/JDBC and for Swing. So these additional DGM methods will naturally go in their respective modules (ie. sql and swing), but that means we need to provide a mechanism for discovering and registering such methods, for example with some META-INF/services discovery mechanism.

The modules proposed here are more or less coarse-grained modules, in order to keep things simple, and to try to regroup things by big functionality. But some things may be split furthermore. For instance, we could put CliBuilder into its own class, and the same for AntBuilder (although those two are really just one class each!). It may be interesting to do so, also because these classes need additional dependencies (respectively commons-cli and ant). Speaking of splitting those builders into their respective modules, we could even regroup such builders into some meta-builder module.

The groupings below are done per functionality, so even if some utility class like groovy.util.GroovyMBean is in groovy.util, I moved it to the jmx module. Ultimately, it'd certainly be nicer to move such classes into their proper packages, following a deprecation strategy.

More detailed regroupment of classes into each module

I've created a little Groovy script to list / group all the Java and Groovy classes per package. Afterwards, I've moved the packages and some individual classes to form modules according to their respective feature set.


Module: groovy-core

Package: groovy.beans
  • Bindable.java
  • BindableASTTransformation.java
  • Vetoable.java
  • VetoableASTTransformation.java
Package: groovy.grape
  • GrabAnnotationTransformation.java
  • Grape.java
  • GrapeEngine.java
  • GrapeIvy.groovy
Package: groovy.io
  • EncodingAwareBufferedWriter.java
  • GroovyPrintStream.java
  • GroovyPrintWriter.java
  • PlatformLineWriter.java
Package: groovy.lang
  • AdaptingMetaClass.java
  • BenchmarkInterceptor.java
  • Binding.java
  • Buildable.java
  • Category.java
  • Closure.java
  • ClosureException.java
  • ClosureInvokingMethod.java
  • Delegate.java
  • DelegatingMetaClass.java
  • DeprecationException.java
  • EmptyRange.java
  • ExpandoMetaClass.java
  • ExpandoMetaClassCreationHandle.java
  • Grab.java
  • GrabConfig.java
  • GrabExclude.java
  • GrabResolver.java
  • Grapes.java
  • GroovyClassLoader.java
  • GroovyCodeSource.java
  • GroovyInterceptable.java
  • GroovyLogTestCase.groovy
  • GroovyObject.java
  • GroovyObjectSupport.java
  • GroovyResourceLoader.java
  • GroovyRuntimeException.java
  • GroovyShell.java
  • GroovySystem.java
  • GString.java
  • IllegalPropertyAccessException.java
  • Immutable.java
  • IncorrectClosureArgumentsException.java
  • Interceptor.java
  • IntRange.java
  • Lazy.java
  • MetaArrayLengthProperty.java
  • MetaBeanProperty.java
  • MetaClass.java
  • MetaClassImpl.java
  • MetaClassRegistry.java
  • MetaClassRegistryChangeEvent.java
  • MetaClassRegistryChangeEventListener.java
  • MetaExpandoProperty.java
  • MetaMethod.java
  • MetaObjectProtocol.java
  • MetaProperty.java
  • MissingClassException.java
  • MissingFieldException.java
  • MissingMethodException.java
  • MissingPropertyException.java
  • Mixin.java
  • MutableMetaClass.java
  • Newify.java
  • NonEmptySequence.java
  • ObjectRange.java
  • PackageScope.java
  • ParameterArray.java
  • PropertyAccessInterceptor.java
  • PropertyValue.java
  • ProxyMetaClass.java
  • Range.java
  • ReadOnlyPropertyException.java
  • Reference.java
  • Script.java
  • Sequence.java
  • Singleton.java
  • SpreadListEvaluatingException.java
  • SpreadMap.java
  • SpreadMapEvaluatingException.java
  • StringWriterIOException.java
  • TracingInterceptor.java
  • Tuple.java
  • Writable.java
Package: groovy.security
  • GroovyCodeSourcePermission.java
Package: groovy.time
  • BaseDuration.java
  • DatumDependentDuration.java
  • Duration.java
  • TimeCategory.java
  • TimeDatumDependentDuration.java
  • TimeDuration.java
Package: org.codehaus.groovy.ant
  • AntProjectPropertiesDelegate.java
  • CompileTaskSupport.java
  • FileIterator.java
  • FileScanner.java
  • GenerateStubsTask.java
  • Groovy.java
  • Groovyc.java
  • GroovycTask.java
  • Groovydoc.java
  • LoggingHelper.java
  • RootLoaderRef.java
  • UberCompileTask.java
  • VerifyClass.java
Package: org.codehaus.groovy.antlr
  • AntlrASTProcessor.java
  • AntlrASTProcessSnippets.java
  • AntlrParserPlugin.java
  • AntlrParserPluginFactory.java
  • ASTParserException.java
  • ASTRuntimeException.java
  • EnumHelper.java
  • GroovySourceAST.java
  • GroovySourceToken.java
Package: org.codehaus.groovy.antlr.parser
  • GroovyLexer.java
  • GroovyRecognizer.java
  • GroovyTokenTypes.java
  • SourceBuffer.java
  • SourceInfo.java
Package: org.codehaus.groovy.antlr.treewalker
  • CompositeVisitor.java
  • FlatNodeListTraversal.java
  • MindMapPrinter.java
  • NodeAsHTMLPrinter.java
  • NodeCollector.java
  • NodePrinter.java
  • PreOrderTraversal.java
  • SourceCodeTraversal.java
  • SourcePrinter.java
  • TraversalHelper.java
  • Visitor.java
  • VisitorAdapter.java
  • UnicodeEscapingReader.java
Package: org.codehaus.groovy.ast
  • AnnotatedNode.java
  • AnnotationNode.java
  • ASTNode.java
Package: org.codehaus.groovy.ast.builder
  • AstBuilder.groovy
  • AstBuilderTransformation.groovy
  • AstSpecificationCompiler.groovy
  • AstStringCompiler.groovy
  • ClassCodeExpressionTransformer.java
  • ClassCodeVisitorSupport.java
  • ClassHelper.java
  • ClassNode.java
  • CodeVisitorSupport.java
  • CompileUnit.java
  • ConstructorNode.java
  • DynamicVariable.java
Package: org.codehaus.groovy.ast.expr
  • AnnotationConstantExpression.java
  • ArgumentListExpression.java
  • ArrayExpression.java
  • AttributeExpression.java
  • BinaryExpression.java
  • BitwiseNegationExpression.java
  • BooleanExpression.java
  • CastExpression.java
  • ClassExpression.java
  • ClosureExpression.java
  • ClosureListExpression.java
  • ConstantExpression.java
  • ConstructorCallExpression.java
  • DeclarationExpression.java
  • ElvisOperatorExpression.java
  • EmptyExpression.java
  • Expression.java
  • ExpressionTransformer.java
  • FieldExpression.java
  • GStringExpression.java
  • ListExpression.java
  • MapEntryExpression.java
  • MapExpression.java
  • MethodCallExpression.java
  • MethodPointerExpression.java
  • NamedArgumentListExpression.java
  • NotExpression.java
  • PostfixExpression.java
  • PrefixExpression.java
  • PropertyExpression.java
  • RangeExpression.java
  • RegexExpression.java
  • SpreadExpression.java
  • SpreadMapExpression.java
  • StaticMethodCallExpression.java
  • TernaryExpression.java
  • TupleExpression.java
  • UnaryMinusExpression.java
  • UnaryPlusExpression.java
  • VariableExpression.java
  • FieldNode.java
  • GenericsType.java
  • GroovyClassVisitor.java
  • GroovyCodeVisitor.java
  • ImportNode.java
  • InnerClassNode.java
  • InterfaceHelperClassNode.java
  • MethodNode.java
  • MixinASTTransformation.java
  • MixinNode.java
  • ModuleNode.java
  • PackageNode.java
  • Parameter.java
  • PropertyNode.java
Package: org.codehaus.groovy.ast.stmt
  • AssertStatement.java
  • BlockStatement.java
  • BreakStatement.java
  • CaseStatement.java
  • CatchStatement.java
  • ContinueStatement.java
  • DoWhileStatement.java
  • EmptyStatement.java
  • ExpressionStatement.java
  • ForStatement.java
  • IfStatement.java
  • ReturnStatement.java
  • Statement.java
  • SwitchStatement.java
  • SynchronizedStatement.java
  • ThrowStatement.java
  • TryCatchStatement.java
  • WhileStatement.java
  • Variable.java
  • VariableScope.java
Package: org.codehaus.groovy.binding
  • AbstractFullBinding.java
  • AggregateBinding.java
  • BindingProxy.java
  • BindingUpdatable.java
  • BindPath.java
  • ClosureSourceBinding.java
  • ClosureTriggerBinding.java
  • EventTriggerBinding.java
  • FullBinding.java
  • MutualPropertyBinding.java
  • PropertyBinding.java
  • PropertyChangeProxyTargetBinding.java
  • PropertyPathFullBinding.java
  • SourceBinding.java
  • SwingTimerTriggerBinding.java
  • TargetBinding.java
  • TriggerBinding.java
Package: org.codehaus.groovy.classgen
  • AnnotationVisitor.java
  • AsmClassGenerator.java
  • BytecodeExpression.java
  • BytecodeHelper.java
  • BytecodeInstruction.java
  • BytecodeSequence.java
  • ClassCompletionVerifier.java
  • ClassGenerator.java
  • ClassGeneratorException.java
  • CompileStack.java
  • DummyClassGenerator.java
  • EnumVisitor.java
  • ExtendedVerifier.java
  • genArrayAccess.groovy
  • genArrays.groovy
  • genDgmMath.groovy
  • GeneratorContext.java
  • genMathModification.groovy
  • GroovyCompilerVersion.java
  • InnerClassVisitor.java
  • MethodCaller.java
  • MethodCallerMultiAdapter.java
  • ReturnAdder.java
  • RuntimeIncompleteClassException.java
  • Variable.java
  • VariableScopeVisitor.java
  • Verifier.java
  • VerifierCodeVisitor.java
Package: org.codehaus.groovy.control
  • CompilationFailedException.java
  • CompilationUnit.java
  • CompilePhase.java
  • CompilerConfiguration.java
  • ConfigurationException.java
  • ErrorCollector.java
  • GenericsVisitor.java
  • HasCleanup.java
Package: org.codehaus.groovy.control.io
  • AbstractReaderSource.java
  • FileReaderSource.java
  • InputStreamReaderSource.java
  • NullWriter.java
  • ReaderSource.java
  • StringReaderSource.java
  • URLReaderSource.java
  • Janitor.java
  • LabelVerifier.java
Package: org.codehaus.groovy.control.messages
  • ExceptionMessage.java
  • LocatedMessage.java
  • Message.java
  • SimpleMessage.java
  • SyntaxErrorMessage.java
  • WarningMessage.java
  • MultipleCompilationErrorsException.java
  • OptimizerVisitor.java
  • ParserPlugin.java
  • ParserPluginFactory.java
  • Phases.java
  • ProcessingUnit.java
  • ResolveVisitor.java
  • SourceUnit.java
  • StaticImportVisitor.java
  • GroovyBugError.java
Package: org.codehaus.groovy.tools.ast
  • TranformTestHelper.groovy
  • Compiler.java
  • DgmConverter.java
  • ErrorReporter.java
  • FileSystemCompiler.java
  • GrapeMain.groovy
  • GroovyClass.java
Package: org.codehaus.groovy.tools.gse
  • DependencyTracker.java
  • StringSetMap.java
Package: org.codehaus.groovy.tools.javac
  • JavaAwareCompilationUnit.java
  • JavaAwareResolveVisitor.java
  • JavacCompilerFactory.java
  • JavacJavaCompiler.java
  • JavaCompiler.java
  • JavaCompilerFactory.java
  • JavaStubCompilationUnit.java
  • JavaStubGenerator.java
  • LoaderConfiguration.java
  • RootLoader.java
Package: org.codehaus.groovy.transform
  • ASTTransformation.java
  • ASTTransformationCollectorCodeVisitor.java
  • ASTTransformationVisitor.java
  • CategoryASTTransformation.java
  • DelegateASTTransformation.java
  • GroovyASTTransformation.java
  • GroovyASTTransformationClass.java
  • ImmutableASTTransformation.java
  • LazyASTTransformation.java
  • NewifyASTTransformation.java
  • PackageScopeASTTransformation.java
Package: org.codehaus.groovy.transform.powerassert
  • AssertionRenderer.java
  • AssertionRewriter.java
  • AssertionTransformation.java
  • AssertionVerifier.java
  • PowerAssertionError.java
  • SourceText.java
  • SourceTextNotAvailableException.java
  • StatementReplacingVisitorSupport.java
  • TruthExpressionRewriter.java
  • Value.java
  • ValueRecorder.java
  • SingletonASTTransformation.java
Package: org.codehaus.groovy.util
  • AbstractConcurrentDoubleKeyMap.java
  • AbstractConcurrentMap.java
  • AbstractConcurrentMapBase.java
  • ComplexKeyHashMap.java
  • DoubleKeyHashMap.java
  • FastArray.java
  • Finalizable.java
  • HashCodeHelper.java
  • LazyReference.java
  • LockableObject.java
  • ManagedConcurrentMap.java
  • ManagedDoubleKeyMap.java
  • ManagedLinkedList.java
  • ManagedReference.java
  • Reference.java
  • ReferenceBundle.java
  • ReferenceManager.java
  • ReferenceType.java
  • ReleaseInfo.java
  • SingleKeyHashMap.java
  • TripleKeyHashMap.java
Package: org.codehaus.groovy.runtime.typehandling
  • BigDecimalMath.java
  • BigIntegerMath.java
  • ClassDistance.java
  • DefaultTypeTransformation.java
  • FloatingPointMath.java
  • GroovyCastException.java
  • IntegerMath.java
  • LongMath.java
  • NumberMath.java
  • NumberMathModificationInfo.java
Package: org.codehaus.groovy.runtime.wrappers
  • BooleanWrapper.java
  • ByteWrapper.java
  • CharWrapper.java
  • DoubleWrapper.java
  • FloatWrapper.java
  • GroovyObjectWrapper.java
  • IntWrapper.java
  • LongWrapper.java
  • PojoWrapper.java
  • ShortWrapper.java
  • Wrapper.java
  • WritableFile.java
  • XmlGroovyMethods.java
Package: org.codehaus.groovy.syntax
  • ASTHelper.java
  • CSTNode.java
  • Numbers.java
  • ParserException.java
  • ReadException.java
  • Reduction.java
  • RuntimeParserException.java
  • SyntaxException.java
  • Token.java
  • TokenException.java
  • TokenMismatchException.java
  • Types.java
Package: org.codehaus.groovy.reflection
  • CachedClass.java
  • CachedConstructor.java
  • CachedField.java
  • CachedMethod.java
  • ClassInfo.java
  • ClassLoaderForClassArtifacts.java
  • GeneratedMetaMethod.java
  • handlegen.groovy
  • MethodHandle.java
  • MethodHandleFactory.java
  • MixinInMetaClass.java
  • ParameterTypes.java
  • ReflectionCache.java
  • ReflectionUtils.java
Package: org.codehaus.groovy.reflection.stdclasses
  • ArrayCachedClass.java
  • BigDecimalCachedClass.java
  • BigIntegerCachedClass.java
  • BooleanCachedClass.java
  • ByteCachedClass.java
  • CachedClosureClass.java
  • CharacterCachedClass.java
  • DoubleCachedClass.java
  • FloatCachedClass.java
  • IntegerCachedClass.java
  • LongCachedClass.java
  • NumberCachedClass.java
  • ObjectCachedClass.java
  • ShortCachedClass.java
  • StringCachedClass.java
  • SunClassLoader.java
Package: org.codehaus.groovy.runtime
  • ArrayUtil.java
Package: org.codehaus.groovy.runtime.callsite
  • AbstractCallSite.java
  • CallSite.java
  • CallSiteArray.java
  • CallSiteAwareMetaMethod.java
  • CallSiteClassLoader.java
  • CallSiteGenerator.java
  • ClassMetaClassGetPropertySite.java
  • ConstructorMetaClassSite.java
  • ConstructorMetaMethodSite.java
  • ConstructorSite.java
  • DummyCallSite.java
  • GetEffectivePogoFieldSite.java
  • GetEffectivePogoPropertySite.java
  • GetEffectivePojoFieldSite.java
  • GetEffectivePojoPropertySite.java
  • GroovySunClassLoader.java
  • MetaClassConstructorSite.java
  • MetaClassSite.java
  • MetaMethodSite.java
  • NullCallSite.java
  • PerInstancePojoMetaClassSite.java
  • PogoGetPropertySite.java
  • PogoInterceptableSite.java
  • PogoMetaClassGetPropertySite.java
  • PogoMetaClassSite.java
  • PogoMetaMethodSite.java
  • PojoMetaClassGetPropertySite.java
  • PojoMetaClassSite.java
  • PojoMetaMethodSite.java
  • StaticMetaClassSite.java
  • StaticMetaMethodSite.java
  • ClassExtender.java
  • ConversionHandler.java
  • ConvertedClosure.java
  • ConvertedMap.java
  • CurriedClosure.java
  • DefaultCachedMethodKey.java
  • DefaultGroovyMethods.java
  • DefaultGroovyMethodsSupport.java
  • DefaultGroovyStaticMethods.java
  • DefaultMethodKey.java
Package: org.codehaus.groovy.runtime.dgmimpl.arrays
  • ArrayGetAtMetaMethod.java
  • ArrayMetaMethod.java
  • ArrayPutAtMetaMethod.java
  • BooleanArrayGetAtMetaMethod.java
  • BooleanArrayPutAtMetaMethod.java
  • ByteArrayGetAtMetaMethod.java
  • ByteArrayPutAtMetaMethod.java
  • CharacterArrayGetAtMetaMethod.java
  • CharacterArrayPutAtMetaMethod.java
  • DoubleArrayGetAtMetaMethod.java
  • DoubleArrayPutAtMetaMethod.java
  • FloatArrayGetAtMetaMethod.java
  • FloatArrayPutAtMetaMethod.java
  • IntegerArrayGetAtMetaMethod.java
  • IntegerArrayPutAtMetaMethod.java
  • LongArrayGetAtMetaMethod.java
  • LongArrayPutAtMetaMethod.java
  • ObjectArrayGetAtMetaMethod.java
  • ObjectArrayPutAtMetaMethod.java
  • ShortArrayGetAtMetaMethod.java
  • ShortArrayPutAtMetaMethod.java
  • NumberNumberDiv.java
  • NumberNumberMetaMethod.java
  • NumberNumberMinus.java
  • NumberNumberMultiply.java
  • NumberNumberPlus.java
  • FlushingStreamWriter.java
  • GeneratedClosure.java
  • GroovyCategorySupport.java
  • GStringImpl.java
  • HandleMetaClass.java
  • InvokerHelper.java
  • InvokerInvocationException.java
  • IteratorClosureAdapter.java
Package: org.codehaus.groovy.runtime.metaclass
  • ClosureMetaClass.java
  • ClosureMetaMethod.java
  • ClosureStaticMetaMethod.java
  • ConcurrentReaderHashMap.java
  • MemoryAwareConcurrentReadMap.java
  • MetaClassRegistryImpl.java
  • MetaMethodIndex.java
  • MethodHelper.java
  • MethodSelectionException.java
  • MissingMethodExceptionNoStack.java
  • MissingMethodExecutionFailed.java
  • MissingPropertyExceptionNoStack.java
  • MixedInMetaClass.java
  • MixinInstanceMetaMethod.java
  • MixinInstanceMetaProperty.java
  • NewInstanceMetaMethod.java
  • NewMetaMethod.java
  • NewStaticMetaMethod.java
  • OwnedMetaClass.java
  • ReflectionMetaMethod.java
  • ReflectorLoader.java
  • TemporaryMethodKey.java
  • ThreadManagedMetaBeanProperty.java
  • TransformMetaMethod.java
  • MetaClassHelper.java
  • MethodClosure.java
  • MethodKey.java
  • MethodRankHelper.java
  • NullObject.java
  • ReflectionMethodInvoker.java
  • Reflector.java
  • RegexSupport.java
  • ReverseListIterator.java
  • ScriptBytecodeAdapter.java
  • ScriptReference.java
  • ScriptTestAdapter.java
  • StackTraceUtils.java
  • StringBufferWriter.java
  • TimeCategory.java
Package: groovy.util
  • AbstractFactory.java
  • AllTestSuite.java
  • AntBuilder.java
  • BuilderSupport.java
  • CharsetToolkit.java
  • CliBuilder.groovy
  • ClosureComparator.java
  • ConfigObject.groovy
  • ConfigSlurper.groovy
  • Eval.java
  • Expando.java
  • Factory.java
  • FactoryBuilderSupport.java
  • FileNameByRegexFinder.groovy
  • FileNameFinder.groovy
  • GroovyCollections.java
  • GroovyLog.java
  • GroovyScriptEngine.java
  • GroovyShellTestCase.groovy
  • GroovyTestCase.java
  • GroovyTestSuite.java
  • IFileNameFinder.java
  • IndentPrinter.java
  • MapEntry.java
  • Node.java
  • NodeBuilder.java
  • NodeList.java
  • NodePrinter.java
  • ObjectGraphBuilder.java
  • ObservableList.java
  • ObservableMap.java
  • OrderBy.java
  • PermutationGenerator.java
  • Proxy.java
  • ProxyGenerator.java
  • ResourceConnector.java
  • ResourceException.java
  • ScriptException.java
Package: org.codehaus.groovy.vmplugin.v4
  • Java4.java
Package: org.codehaus.groovy.vmplugin.v5
  • Java5.java
  • JUnit4Utils.java
  • PluginDefaultGroovyMethods.java
  • TestNgUtils.java
  • VMPlugin.java
  • VMPluginFactory.java

Module: test

Package: groovy.mock
Package: groovy.mock.interceptor
  • Demand.groovy
  • LooseExpectation.groovy
  • MockFor.groovy
  • MockInterceptor.groovy
  • MockProxyMetaClass.java
  • StrictExpectation.groovy
  • StubFor.groovy

Module: jmx

Package: groovy.jmx
Package: groovy.jmx.builder
  • JmxAttributeInfoManager.groovy
  • JmxBeanExportFactory.groovy
  • JmxBeanFactory.groovy
  • JmxBeanInfoManager.groovy
  • JmxBeansFactory.groovy
  • JmxBuilder.groovy
  • JmxBuilderException.java
  • JmxBuilderModelMBean.java
  • JmxBuilderTools.groovy
  • JmxClientConnectorFactory.groovy
  • JmxEmitterFactory.groovy
  • JmxEventEmitter.java
  • JmxEventEmitterMBean.java
  • JmxEventListener.java
  • JmxListenerFactory.groovy
  • JmxMetaMapBuilder.groovy
  • JmxOperationInfoManager.groovy
  • JmxServerConnectorFactory.groovy
  • JmxTimerFactory.groovy
Package: groovy.util
  • GroovyMBean.java

Module: swing

Package: groovy.model
  • ClosureModel.java
  • DefaultTableColumn.java
  • DefaultTableModel.java
  • FormModel.java
  • NestedValueModel.java
  • PropertyModel.java
  • ValueHolder.java
  • ValueModel.java
Package: groovy.swing
Package: groovy.swing.binding
  • AbstractButtonProperties.java
  • AbstractSyntheticBinding.java
  • AbstractSyntheticMetaMethods.groovy
  • JComboBoxMetaMethods.groovy
  • JComboBoxProperties.java
  • JComponentProperties.java
  • JScrollBarProperties.java
  • JSliderProperties.java
  • JSpinnerProperties.java
  • JTableMetaMethods.groovy
  • JTableProperties.java
  • JTextComponentProperties.java
Package: groovy.swing.factory
  • ActionFactory.groovy
  • BeanFactory.groovy
  • BevelBorderFactory.groovy
  • BindFactory.groovy
  • BindGroupFactory.groovy
  • BindProxyFactory.groovy
  • BoxFactory.groovy
  • BoxLayoutFactory.groovy
  • ButtonGroupFactory.groovy
  • CollectionFactory.groovy
  • ComboBoxFactory.groovy
  • ComponentFactory.groovy
  • CompoundBorderFactory.groovy
  • DialogFactory.groovy
  • EmptyBorderFactory.groovy
  • EtchedBorderFactory.groovy
  • FormattedTextFactory.groovy
  • FrameFactory.groovy
  • GridBagFactory.groovy
  • ImageIconFactory.groovy
  • InternalFrameFactory.groovy
  • LayoutFactory.groovy
  • LineBorderFactory.groovy
  • ListFactory.groovy
  • MapFactory.groovy
  • MatteBorderFactory.groovy
  • RendererFactory.groovy
  • RichActionWidgetFactory.groovy
  • RootPaneContainerFactory.groovy
  • ScrollPaneFactory.groovy
  • SeparatorFactory.groovy
  • SplitPaneFactory.groovy
  • SwingBorderFactory.groovy
  • TabbedPaneFactory.groovy
  • TableFactory.groovy
  • TableLayoutFactory.groovy
  • TableModelFactory.groovy
  • TextArgWidgetFactory.groovy
  • TitledBorderFactory.groovy
  • WidgetFactory.groovy
  • WindowFactory.groovy
Package: groovy.swing.impl
  • ClosureRenderer.java
  • ComponentFacade.java
  • ContainerFacade.java
  • DefaultAction.java
  • Startable.java
  • TableLayout.java
  • TableLayoutCell.java
  • TableLayoutRow.java
  • LookAndFeelHelper.groovy
  • SwingBuilder.groovy
Package: org.codehaus.groovy.runtime.metaclass
  • SwingGroovyMethods.java

Module: xml

Package: groovy.util.slurpersupport
  • Attribute.java
  • Attributes.java
  • FilteredAttributes.java
  • FilteredNodeChildren.java
  • GPathResult.java
  • NoChildren.java
  • Node.java
  • NodeChild.java
  • NodeChildren.java
  • NodeIterator.java
  • ReplacementNode.java
  • XmlNodePrinter.java
  • XmlParser.java
  • XmlSlurper.java
Package: groovy.xml
Package: groovy.xml.dom
  • DOMCategory.java
  • DOMUtil.java
  • DOMBuilder.java
  • Entity.groovy
  • FactorySupport.java
  • MarkupBuilder.java
  • MarkupBuilderHelper.java
  • Namespace.java
  • NamespaceBuilder.java
  • NamespaceBuilderSupport.java
  • QName.java
  • SAXBuilder.java
  • StaxBuilder.groovy
  • StreamingDOMBuilder.groovy
  • StreamingMarkupBuilder.groovy
Package: groovy.xml.streamingmarkupsupport
  • AbstractStreamingBuilder.groovy
  • BaseMarkupBuilder.java
  • Builder.java
  • StreamingMarkupWriter.java
  • StreamingSAXBuilder.groovy
  • XmlUtil.java
Package: org.codehaus.groovy.tools.xml
  • DomToGroovy.java

Module: sql

Package: groovy.sql
  • CallResultSet.java
  • DataSet.java
  • ExpandedVariable.java
  • GroovyResultSet.java
  • GroovyResultSetExtension.java
  • GroovyResultSetProxy.java
  • GroovyRowResult.java
  • InOutParameter.java
  • InParameter.java
  • OutParameter.java
  • ResultSetMetaDataWrapper.java
  • ResultSetOutParameter.java
  • Sql.java
  • SqlOrderByVisitor.java
  • SqlWhereVisitor.java
Package: org.codehaus.groovy.runtime.metaclass
  • SqlGroovyMethods.java

Module: web

Package: groovy.servlet
  • AbstractHttpServlet.java
  • GroovyServlet.java
  • ServletBinding.java
  • ServletCategory.java
  • TemplateServlet.java

Module: template-engine

Package: groovy.text
  • GStringTemplateEngine.java
  • SimpleTemplateEngine.java
  • Template.java
  • TemplateEngine.java
  • XmlTemplateEngine.java

Module: bean-scripting-framework

Package: org.codehaus.groovy.bsf
  • CachingGroovyEngine.java
  • GroovyEngine.java

Module: javax.script (jsr-223)

Package: org.codehaus.groovy.jsr223
  • GroovyCompiledScript.java
  • GroovyScriptEngineFactory.java
  • GroovyScriptEngineImpl.java

Module: groovydoc

Package: org.codehaus.groovy.tools.groovydoc
  • ClasspathResourceManager.java
  • ExternalGroovyClassDoc.java
  • FileOutputTool.java
  • FileSystemResourceManager.java
  • GroovyDocTemplateEngine.java
  • GroovyDocTool.java
  • GroovyDocWriter.java
  • GroovyRootDocBuilder.java
Package: org.codehaus.groovy.tools.groovydoc.gstringTemplates.topLevel
  • LinkArgument.java
  • MockOutputTool.java
  • OutputTool.java
  • ResourceManager.java
  • SimpleGroovyAnnotationRef.java
  • SimpleGroovyClassDoc.java
  • SimpleGroovyClassDocAssembler.java
  • SimpleGroovyConstructorDoc.java
  • SimpleGroovyDoc.java
  • SimpleGroovyExecutableMemberDoc.java
  • SimpleGroovyFieldDoc.java
  • SimpleGroovyMemberDoc.java
  • SimpleGroovyMethodDoc.java
  • SimpleGroovyPackageDoc.java
  • SimpleGroovyParameter.java
  • SimpleGroovyProgramElementDoc.java
  • SimpleGroovyRootDoc.java
  • SimpleGroovyTag.java
  • SimpleGroovyType.java
  • GroovyStarter.java
Package: org.codehaus.groovy.groovydoc
  • GroovyAnnotationRef.java
  • GroovyClassDoc.java
  • GroovyConstructorDoc.java
  • GroovyDoc.java
  • GroovyDocErrorReporter.java
  • GroovyExecutableMemberDoc.java
  • GroovyFieldDoc.java
  • GroovyMemberDoc.java
  • GroovyMethodDoc.java
  • GroovyPackageDoc.java
  • GroovyParameter.java
  • GroovyProgramElementDoc.java
  • GroovyRootDoc.java
  • GroovyTag.java
  • GroovyType.java
  • GroovyException.java
  • GroovyExceptionInterface.java

Module: shell

Package: org.codehaus.groovy.tools.shell
  • BufferManager.groovy
  • Command.groovy
  • CommandAlias.groovy
  • CommandRegistry.groovy
  • CommandSupport.groovy
  • ComplexCommandSupport.groovy
  • ExitNotification.groovy
  • Groovysh.groovy
  • InteractiveShellRunner.groovy
  • Interpreter.groovy
  • IO.java
  • Main.groovy
  • Parser.groovy
  • Shell.groovy
  • ShellRunner.groovy
Package: org.codehaus.groovy.tools.shell.commands
  • AliasCommand.groovy
  • ClearCommand.groovy
  • DisplayCommand.groovy
  • EditCommand.groovy
  • ExitCommand.groovy
  • HelpCommand.groovy
  • HistoryCommand.groovy
  • ImportCommand.groovy
  • InspectCommand.groovy
  • LoadCommand.groovy
  • PurgeCommand.groovy
  • RecordCommand.groovy
  • RegisterCommand.groovy
  • SaveCommand.groovy
  • SetCommand.groovy
  • ShadowCommand.groovy
  • ShowCommand.groovy
Package: org.codehaus.groovy.tools.shell.util
  • ClassNameCompletor.groovy
  • HelpFormatter.groovy
  • Logger.java
  • MessageSource.java
  • NoExitSecurityManager.java
  • Preferences.java
  • SimpleCompletor.java
  • XmlCommandRegistrar.groovy

Module: console

Package: groovy.inspect
  • Inspector.java
Package: groovy.inspect.swingui
  • AstBrowser.groovy
  • AstBrowserProperties.groovy
  • ObjectBrowser.groovy
  • ScriptToTreeNodeAdapter.groovy
  • TableMap.java
  • TableSorter.java
Package: groovy.ui
  • Console.groovy
  • ConsoleActions.groovy
  • ConsoleApplet.groovy
  • ConsoleSupport.java
  • ConsoleTextEditor.java
  • ConsoleView.groovy
  • GroovyMain.java
  • GroovySocketServer.java
  • HistoryRecord.groovy
Package: groovy.ui.icons
  • InteractiveShell.java
  • OutputTransforms.groovy
  • SystemOutputInterceptor.java
Package: groovy.ui.text
  • AutoIndentAction.groovy
  • FindReplaceUtility.java
  • GroovyFilter.java
  • StructuredSyntaxDocumentFilter.java
  • StructuredSyntaxHandler.java
  • StructuredSyntaxResources.java
  • TextEditor.java
  • TextUndoManager.java
Package: groovy.ui.view
  • BasicContentPane.groovy
  • BasicMenuBar.groovy
  • BasicStatusBar.groovy
  • BasicToolBar.groovy
  • Defaults.groovy
  • GTKDefaults.groovy
  • MacOSXDefaults.groovy
  • MacOSXMenuBar.groovy
  • WindowsDefaults.groovy

Module: java2groovy

Package: org.codehaus.groovy.antlr.java
  • Groovifier.java
  • Java2GroovyConverter.java
  • Java2GroovyMain.java
  • JavaLexer.java
  • JavaRecognizer.java
  • JavaTokenTypes.java
  • PreJava2GroovyConverter.java
  • LexerFrame.java
  • LineColumn.java
  • Main.java

 

Search

Results of your search request can come from various sources: the Groovy website itself, the JIRA issues, the API documentation, as well as a few other interesting Groovy-related blogs.

  By  -  pages  -  views  - last modified