I recently migrated my Gradle Plugin from Groovy to Kotlin. It was essentially a four step process:
- Update the build.gradle file
- Modify the Project Structure
- Convert Groovy code to Kotlin
- Migrate the JUnit tests
Let’s walk through each step…
Davis Technology Consulting
by Annyce Davis
I recently migrated my Gradle Plugin from Groovy to Kotlin. It was essentially a four step process:
Let’s walk through each step…
by Annyce Davis
If you would like to store JSON data in an external EhCache Server you would need to use either REST or SOAP calls. The below example uses REST calls and the HTTPBuilder library. It assumes that you have your EhCache Server running at the following location:
http://localhost:8080/ehcache/rest.
The name of the cache that I’m using in this example is just sampleCache.
def getCachedItem(key) {
def uri = "http://localhost:8080/ehcache/rest/sampleCache/"
def restClient = new RESTClient(uri)
def res
try {
res = restClient.get(path:key)
}
catch (Exception e) {
log.error("Error retrieving item from cache for this key: $key")
}
return res?.data
}
def putCachedItem(key, html) {
def url = "http://localhost:8080/ehcache/rest/sampleCache/"
try {
def json = html as grails.converters.JSON
def http = new HTTPBuilder(url)
http.request(Method.PUT) { req ->
uri.path = key
send('application/json', grails.converters.JSON.parse(json?.toString()))
response.'201' = { resp ->
log.info("success in adding item to cache: ${resp.status}")
}
response.success = { resp, object ->
log.info("success in adding item to cache: ${resp.status}")
}
response.failure = { resp ->
log.error("error adding item to cache: ${resp.statusLine}")
}
}
}
catch (Exception e) {
log.error("Error setting the cache for this key: $key")
}
}
by Annyce Davis
Testing is always a sore spot in many applications, and Grails is no exception, but mocking objects and methods is actually not as bad as you think. Here is a simple way to mock the Hibernate Criteria object that is available from Grails domain classes.
Example:
If this is the code that you want to test, and for this particular test you want to have no results, this how you would mock it out.
Code:
Test Code:
The key piece of code is the creation of the bookCriteria object, in this case it is a member of the test class that is why it is not declared locally in the function. However, you will notice that the bookCriteria is simply a HashMap that returns a empty list for the ‘list’ parameter. This way when testing ‘c.list’ a empty list will be returned. Simple hunh!
by Annyce Davis
In Java .properties files are used to configure an application. You can use similar notation to configure Grails applications as well.
A sample appName-config.groovy file that sets up the configuration items that we need.
abtesting {
amazon = new Double(0.5)
ebay = new Double(0.5)
}
A sample function in a controller that will access the configuration properties and modify them.
def abtesting = {
def propValue = grailsApplication.config.abtesting.amazon
println propValue
grailsApplication.config.abtesting.amazon = new Double(1.0)
println grailsApplication.config.abtesting.amazon
}
This code produces the following output:
>> 0.5
>> 1.0