2 * Copyright 2004-2005 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * Gant script that loads the Grails interactive shell
20 * @author Graeme Rocher
25 import org
.codehaus
.groovy
.grails
.commons
.GrailsClassUtils as GCU
26 import groovy
.text
.SimpleTemplateEngine
27 import org
.codehaus
.groovy
.grails
.support
.*
28 import org
.codehaus
.groovy
.tools
.shell
.*
30 Ant
.property(environment
:"env")
31 grailsHome
= Ant
.antProject
.properties
."env.GRAILS_HOME"
33 includeTargets
<< new File ( "${grailsHome}/scripts/Bootstrap.groovy" )
35 target ('default': "Load the Grails interactive shell") {
36 depends( configureProxy
, packageApp
, classpath
)
40 target(shell
:"The shell implementation target") {
42 classLoader
= new URLClassLoader([classesDir
.toURI().toURL()] as URL
[], rootLoader
)
43 Thread
.currentThread().setContextClassLoader(classLoader
)
48 b
.grailsApplication
= grailsApp
50 def original
= Groovysh
.metaClass
.getMetaMethod("execute", [String
] as Object
[])
51 Groovysh
.metaClass
.execute
= { String line
->
53 def listeners
= appCtx
.getBeansOfType(PersistenceContextInterceptor
)
54 listeners
.each
{ k
,v
->
58 original
.invoke(delegate
, line
)
59 listeners
.each
{ k
,v
->
64 listeners
.each
{ k
,v
->
70 shell
= new Groovysh(classLoader
,b
, new IO(System
.in
, System
.out
, System
.err
))
71 shell
.run([] as String
[])