Skip to content

Instantly share code, notes, and snippets.

Object.metaClass.miau = {-> println "Miau!!!"}
"String".miau()
145.miau()
public interface GroovyObject {
Object invokeMethod(String name, Object args);
Object getProperty(String property);
void setProperty(String property, Object newValue);
MetaClass getMetaClass();
void setMetaClass(MetaClass metaClass);
}
class DemoController implements DatabaseExceptionHandler {
// todos os métodos de manipuação de exceção são definidos
// em DatabaseExceptionHandler serão adicionados
// nesta classe em tempo de execução
}
package com.demo
trait DatabaseExceptionHandler {
def handleSQLException(SQLException e) {
// manipular SQLException
}
def handleBatchUpdateException(BatchUpdateException e) {
// manipular BatchUpdateException
}
}
package demo
class DemoController {
def someAction() {
// do some work
}
def handleSQLException(SQLException e) {
render 'A SQLException Was Handled'
}
def handleBatchUpdateException(BatchUpdateException e) {
redirect controller: 'logging', action: 'batchProblem'
class ComponenteCustomizado implements WebAttributes {
def meuMetodo() {
println "params: " + params
}
}
trait Controller implements ResponseRenderer,
ResponseRedirector,
RequestForwarder,
DataBinder,
WebAttributes,
ServletAttributes {
//...
}
@luksrn
luksrn / C.groovy
Created April 29, 2016 02:12
C.groovy
class C implements A,B {
String exec() { A.super.exec() }
}
@luksrn
luksrn / traitAB.groovy
Created April 29, 2016 02:11
traitAB.groovy
trait A {
String exec() { 'A' }
}
trait B {
String exec() { 'B' }
}
class C implements A,B {}
def c = new C()
println c.exec()
@luksrn
luksrn / GrapeLogger.groovy
Created April 29, 2016 02:10
GrapeLogger.groovy
@Grapes(
@Grab(group='log4j', module='log4j', version='1.2.16')
)
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
trait Loggable {
private Log logger
Log getLog() {
if( !logger )
logger = LogFactory.getLog( this.getClass() )