DZone
Java Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > Java Zone > Groovy Goodness: BaseScript with Abstract Run Script Method

Groovy Goodness: BaseScript with Abstract Run Script Method

Hubert Klein Ikkink user avatar by
Hubert Klein Ikkink
·
May. 11, 14 · Java Zone · Interview
Like (0)
Save
Tweet
7.78K Views

Join the DZone community and get the full member experience.

Join For Free

In a previous blog post we have seen how we can use a BaseScript AST transformation to set a base script class for running scripts. Since Groovy 2.3 we can apply the @BaseScript annotation on package and import statements. Also we can implement a run method in our Script class in which we call an abstract method. The abstract method will actually run the script, so we can execute code before and after the script code runs by implementing logic in the run method.

In the following sample we create a Script class CustomScript. We implement the run method and add the abstract method runCode:

// File: CustomScript.groovy
package com.mrhaki.groovy.blog

abstract class CustomScript extends Script {

    def run() {
        before()
        try {

            // Run actually script code.
            final result = runCode()

            println "Script says $result"
        } finally {
            println 'Script ended'
        }
    }

    private void before() {
        println 'Script starts'
    }

    // Abstract method as placeholder for
    // the actual script code to run.
    abstract def runCode()
}

Next we create a Groovy script where we use our new CustomScript class.

// File: Sample.groovy
// Since Groovy 2.3 we can apply the
// @BaseScript annotation on package
// and import statement.
@groovy.transform.BaseScript(com.mrhaki.groovy.blog.CustomScript)
package com.mrhaki.groovy.blog

// Script code:
final String value = 'Groovy rules'
assert value.size() == 12

// Return value
value

When we run our script we see the following output:

Before script runs
Script says Groovy rules
Script ended

Code written with Groovy 2.3.

Groovy (programming language)

Published at DZone with permission of Hubert Klein Ikkink, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Password Authentication. How to Correctly Do It.
  • Exporting and Importing Projects in Eclipse
  • The Most Popular Technologies for Java Microservices Right Now
  • Simulators vs. Emulators: What's the Difference

Comments

Java Partner Resources

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo