Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Groovy / Grails - How to get class instance from String?

I'm trying to derive the class instance of a groovy class from the name of string.

For example, I'd like to do some code along these lines:

def domainName

domainName = "Patient"

// but following line doesn't work, domainName is a String
def domainInstance = domainName.get(1);  
like image 387
Jack BeNimble Avatar asked Jan 13 '10 15:01

Jack BeNimble


1 Answers

The Grails way would be to use GrailsApplication#getArtefact. e.g.,

def domainInstance = grailsApplication.getArtefact("Domain",domainName)?.
        getClazz()?.get(1)

The advantage of doing it this way as opposed to Class.forName is that if there is no domain class with that name, getArtefact just returns null instead of throwing an exception.

like image 194
noah Avatar answered Oct 23 '22 09:10

noah