• Stars
    star
    159
  • Rank 235,916 (Top 5 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 13 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The AEM Groovy Console provides an interface for running Groovy scripts in the AEM container. Scripts can be created to manipulate content in the JCR, call OSGi services, or execute arbitrary code using the CQ, Sling, or JCR APIs.

AEM Groovy Console

This project has moved to https://github.com/CID15/aem-groovy-console and will no longer be maintained in this repository.

Overview

The AEM Groovy Console provides an interface for running Groovy scripts in Adobe Experience Manager. Scripts can be created to manipulate content in the JCR, call OSGi services, or execute arbitrary code using the AEM, Sling, or JCR APIs. After ainstalling the package in AEM (instructions below), see the console page for documentation on the available bindings and methods. Sample scripts are included in the package for reference.

Screenshot

Requirements

Compatibility

Groovy Console Version(s) AEM Version(s)
15.x.x, 14.x.x, 13.x.x 6.3, 6.4, 6.5
12.x.x 6.4
11.x.x 6.3
10.x.x, 9.x.x 6.2
8.x.x 6.1
7.x.x 6.0
6.x.x, 5.x.x 5.6 (CQ)
3.x.x 5.5, 5.4 (CQ)

Installation

  1. Download the console package. For previous versions, tags can be checked out from GitHub and built directly from the source (e.g. mvn install).

  2. Verify the installation.

Additional build profiles may be added in the project's pom.xml to support deployment to non-localhost AEM servers.

To enable access to the Groovy Console from /groovyconsole, update the Groovy Console Configuration Service via the OSGi console configuration page to enable the vanity path.

Building From Source

To build and install the latest development version of the Groovy Console (or if you've made source modifications), run the following Maven command.

mvn install -P local

Excluding the Groovy OSGi Bundle

If your AEM instance has multiple applications using Groovy and the groovy-all bundle is already deployed, you can exclude this bundle from the Groovy Console package build with the exclude-groovy-bundle Maven profile. This should prevent issues with conflicting Groovy versions at runtime.

mvn install -P local,exclude-groovy-bundle

Context Path Support

If you are running AEM with a context path, set the Maven property aem.context.path during installation.

mvn install -P local -Daem.context.path=/context

OSGi Configuration

Navigate to the OSGi console configuration page and select the Groovy Console Configuration Service.

Property Description Default Value
Email Enabled? Check to enable email notification on completion of script execution. false
Email Recipients Email addresses to receive notification. []
Script Execution Allowed Groups List of group names that are authorized to use the console. By default, only the 'admin' user has permission to execute scripts. []
Scheduled Jobs Allowed Groups List of group names that are authorized to schedule jobs. By default, only the 'admin' user has permission to schedule jobs. []
Vanity Path Enabled? Enables /groovyconsole vanity path. false
Audit Disabled? Disables auditing of script execution history. false
Display All Audit Records? If enabled, all audit records (including records for other users) will be displayed in the console history. false
Thread Timeout Time in seconds that scripts are allowed to execute before being interrupted. If 0, no timeout is enforced. 0

Batch Script Execution

Saved scripts can be remotely executed by sending a POST request to the console servlet with either the scriptPath or scriptPaths query parameter.

Single Script

curl -d "scriptPath=/var/groovyconsole/scripts/samples/JcrSearch.groovy" -X POST -u admin:admin http://localhost:4502/bin/groovyconsole/post.json

Multiple Scripts

curl -d "scriptPaths=/var/groovyconsole/scripts/samples/JcrSearch.groovy&scriptPaths=/var/groovyconsole/scripts/samples/FulltextQuery.groovy" -X POST -u admin:admin http://localhost:4502/bin/groovyconsole/post.json

Extensions

The Groovy Console provides extension hooks to further customize script execution. The console provides an API containing extension provider interfaces that can be implemented as OSGi services in any bundle deployed to an AEM instance. See the default extension providers in the com.icfolson.aem.groovy.console.extension.impl package for examples of how a bundle can implement these services to supply additional script bindings, compilation customizers, metaclasses, and star imports.

Service Interface Description
com.icfolson.aem.groovy.console.api.BindingExtensionProvider Customize the bindings that are provided for each script execution.
com.icfolson.aem.groovy.console.api.CompilationCustomizerExtensionProvider Restrict language features (via blacklist or whitelist) or provide AST transformations within the Groovy script compilation.
com.icfolson.aem.groovy.console.api.ScriptMetaClassExtensionProvider Add runtime metaclasses (i.e. new methods) to the underlying script class.
com.icfolson.aem.groovy.console.api.StarImportExtensionProvider Supply additional star imports that are added to the compiler configuration for each script execution.

Notifications

To provide custom notifications for script executions, bundles may implement the com.icfolson.aem.groovy.console.notification.NotificationService interface (see the com.icfolson.aem.groovy.console.notification.impl.EmailNotificationService class for an example). These services will be dynamically bound by the Groovy Console service and all registered notification services will be called for each script execution.

Scheduler

The Scheduler allows for immediate (asynchronous) or Cron-based script execution. Scripts are executed as Sling Jobs and are audited in the same manner as scripts executed in the console.

Scheduled Job Event Handling

Bundles may implement services extending com.icfolson.aem.groovy.console.job.event.AbstractGroovyConsoleScheduledJobEventHandler to provide additional post-processing or notifications for completed Groovy Console jobs. See com.icfolson.aem.groovy.console.job.event.DefaultGroovyConsoleEmailNotificationEventHandler for an example of the required annotations to register a custom event handler.

Sample Scripts

Sample scripts can be found in the src/main/scripts directory.

Versioning

Follows Semantic Versioning guidelines.

More Repositories

1

prosper

A Spock-based integration testing library for prosperous AEM development.
Groovy
28
star
2

iron

Iron (Fe) is an opinionated yet flexible FrontEnd development framework
JavaScript
26
star
3

cq-component-maven-plugin

Java
22
star
4

aem-library

The AEM Library provides a sturdy foundation for bootstrapping and simplifying for Adobe Experience Manager projects.
Groovy
22
star
5

gulp-slang

A Gulp plugin for curling files to JCR / Sling
JavaScript
20
star
6

grunt-slang

Sling files to Sling
JavaScript
14
star
7

storybook-aem

CSS
10
star
8

harbor

Harbor is a collection of content and page components, services, and patterns constituting a common starting point for projects embodying a consistent philosophy of development.
Java
10
star
9

osgi-bundle-status-maven-plugin

Remote bundle status checker for OSGi containers.
Groovy
8
star
10

aws-lambda-toolkit

A small library of AWS Lambda tools to help make Node JS lambda development more efficient.
JavaScript
6
star
11

aem-monitoring

AEM Monitoring is an integrated software analytics solution for AEM applications.
Java
6
star
12

akamai-purge-replication-event-handler

OSGi bundle for Adobe Experience Manager (AEM) providing a replication event handler and Akamai Fast Purge API client to purge content from Akamai when content is replicated.
Java
4
star
13

ionic-aem-apps

A Library enabling the creation of Ionic based single-page applications using the AEM Apps product
JavaScript
4
star
14

multicomposite-addon

JavaScript
4
star
15

aem-parent

Maven parent POM for AEM (Adobe CQ) projects that defines a dependency management section containing all of the available dependencies that are provided by the OSGi container.
4
star
16

aem-groovy-extension

OSGi bundle containing Groovy builders and metaclasses for Adobe Experience Manager.
Groovy
4
star
17

aem-archetype

Maven archetype for AEM projects that utilize the ICF Next AEM Library.
CSS
2
star
18

aem-patterns

CSS
2
star
19

aem-clippy-feature

JavaScript
1
star
20

aem-package-maven-plugin

Uploads, installs, and/or replicates the package artifact for a Maven project to AEM Package Manager.
Java
1
star
21

ionic-aem-mobile-todo-app

Example implementation using the Ionic AEM Apps library and associated Archetype
CSS
1
star
22

auth0-aem-cloudservice

JavaScript
1
star
23

generator-simple-aws-lambda

Yeoman generator for a simple AWS Lambda using Mocha for automated testing and the aws-lambda-toolkit for deployment.
JavaScript
1
star
24

dotnet-test-automation

Some Extensions to xUnit and Selenium
C#
1
star