« Return to Thread: GORM outside Grails

Re: GORM outside Grails

by Gregory W. Bond :: Rate this Message:

Reply to Author | View in Thread

i can't get your approach to work unless the grails-app directory (and
the underlying domain class groovy files) are present in the same
directory i invoke java from - i tried to add the grails-app dir and
underlying groovy files to the jar file but that didn't work

greg

On Sun, Sep 7, 2008 at 2:12 AM, Burt Beckwith <burt@...> wrote:

> Sorry, I missed the part about running 'grails compile' in your previous
> email. It's working fine now - cool stuff.
>
> Here's a reworked version of buildApplication that discovers files:
>
>   private static void buildApplication() {
>      def groovyFiles = new
> PathMatchingResourcePatternResolver().getResources(
>            'classpath*:**grails-app/**/*.groovy')
>      def domainClasses = []
>      for (file in groovyFiles) {
>         String className = GrailsResourceUtils.getClassName(file)
>         domainClasses << GormHelper.classLoader.loadClass(className)
>      }
>
>      application = new DefaultGrailsApplication(
>            domainClasses as Class[],
>            new GroovyClassLoader(GormHelper.classLoader))
>      application.initialise()
>   }
>
> Burt
>
> On Sunday 07 September 2008 12:22:01 am Burt Beckwith wrote:
>> Interesting progress. I couldn't get it to run - are you running from the
>> commandline using Ant? I'm not seeing how the classloader will find the
>> classes if they're not under src/groovy.
>>
>> Btw - the array problem is due to Groovy thinking you're defining a
>> closure, but this will work:
>>
>>    def domainClasses = [bookClass, carClass, personClass, songClass]
>>    application = new DefaultGrailsApplication(domainClasses as Class[],
>>          new GroovyClassLoader(GormHelper.classLoader))
>>
>> Burt
>>
>> On Saturday 06 September 2008 11:37:17 pm Gregory Bond wrote:
>> > playing around some more i've managed to get burt's entire example to
>> > run in a jar file without any groovy scripts in the jar (!) -
>> > unfortunately it's not a general solution but perhaps what i've done
>> > will help achieve one
>> >
>> > the major change i made is to explicitly load the domain classes into
>> > the application - i've attached a zip with the updated code but here's
>> > a quick overview of what i've done (it's not much really):
>> >
>> > 1) i moved Main.groovy from the scripts dir to src/groovy in order to
>> > get it to be compiled
>> >
>> > 2) i've replaced occurrences of classLoader.getResource(...groovy
>> > files...) with appropriate variations on classLoader.loadClass()
>> >
>> > 3) instead of creating the application this way:
>> >
>> > application = new DefaultGrailsApplication(groovyFiles)
>> >
>> > i'm using this (cumbersome, non-general, but working) approach:
>> >
>> >        Class bookClass =
>> > GormHelper.classLoader.loadClass("com.burtbeckwith.gorm.domain.Book")
>> >        Class carClass =
>> > GormHelper.classLoader.loadClass("com.burtbeckwith.gorm.domain.Car")
>> >        Class personClass =
>> > GormHelper.classLoader.loadClass("com.burtbeckwith.gorm.domain.Person")
>> >        Class songClass =
>> > GormHelper.classLoader.loadClass("com.burtbeckwith.gorm.domain.Song")
>> >        Class[] domainClasses = new Class[4]
>> >        domainClasses[0] = bookClass
>> >        domainClasses[1] = carClass
>> >        domainClasses[2] = personClass
>> >        domainClasses[3] = songClass
>> >                application = new DefaultGrailsApplication(domainClasses,
>> > new GroovyClassLoader(GormHelper.classLoader))
>> >
>> > (as a sidenote that probably highlights my ignorance of grails and
>> > groovy: i kept getting compilation errors when i tried to initialize
>> > the domain class array when i declared it e.g. using syntax 'Class[]
>> > domainClasses = new Class[] { bookClass, .... }')
>> >
>> > greg
>> >
>> > On Tue, Sep 2, 2008 at 12:05 PM, Burt Beckwith <burt@...>
>>
>> wrote:
>> > > Right, I mentioned the problem with the metaclass methods in the blog
>> > > post. I won't have time today to look at this but I'll take a look this
>> > > evening.
>> > >
>> > > Burt
>> > >
>> > > On Tuesday 02 September 2008 11:03:52 am Gregory W. Bond wrote:
>> > >> i've been playing around with this code for a couple of days now
>> > >> trying to get it to work in a self-contained jar file (since i
>> > >> eventually want to use the code to access gorm from java) - the
>> > >> problem i run into is that the dynamic gorm 'save()' method isn't
>> > >> found at runtime (see stack trace below) - the problem disappears if i
>> > >> include the 'grails-app' directory containing the domain class
>> > >> definitions in the same directory as the jar file containing the
>> > >> compiled class files
>> > >>
>> > >> my jar file ('beckwith.jar') includes all the class files generated by
>> > >> 'grails compile' as well as the 'grails-app' directory contents and
>> > >> the 'application.properties' file - at the moment i have to include
>> > >> the file 'scripts/Main.groovy' in the same directory as the jar file
>> > >> until i figure out how to load it as a resource from the jar file
>> > >>
>> > >> here's the command i'm using to run the program
>> > >>
>> > >> java -classpath
>> > >> beckwith.jar:$GRAILS_HOME/lib/groovy-all-1.5.6.jar:$GRAILS_HOME/lib/sp
>> > >>ri ng-
>> > >> 2.5.4.jar:$GRAILS_HOME/lib/commons-logging-1.1.jar:$GRAILS_HOME/dist/g
>> > >>ra ils-
>> > >> core-1.0.3.jar:$GRAILS_HOME/lib/javaee.jar:$GRAILS_HOME/dist/grails-sp
>> > >>ri ng-1
>> > >> .0.3.jar:$GRAILS_HOME/dist/grails-gorm-1.0.3.jar:$GRAILS_HOME/lib/hibe
>> > >>rn ate-
>> > >> annotations.jar:$GRAILS_HOME/lib/hibernate3.jar:$GRAILS_HOME/lib/dom4j
>> > >>-1 .6.1
>> > >> .jar:$GRAILS_HOME/lib/hibernate-commons-annotations.jar:.:$GRAILS_HOME
>> > >>/l ib/c
>> > >> ommons-lang-2.1.jar:$GRAILS_HOME/lib/commons-collections-3.2.jar:lib/m
>> > >>ys ql-c
>> > >> onnector-java-5.0.8-bin.jar:$GRAILS_HOME/lib/cglib-nodep-2.1_3.jar
>> > >> Tester
>> > >>
>> > >> here's the exception i get - any idea how to get around this?
>> > >>
>> > >> Exception in thread "main" groovy.lang.MissingMethodException: No
>> > >> signature of method: com.burtbeckwith.gorm.domain.Book.save() is
>> > >> applicable for argument types: () values: {}
>> > >>         at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecod
>> > >>eA dap ter.java:55) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecod
>> > >>eA dap ter.java:60) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(Script
>> > >>By tec odeAdapter.java:172) at
>> > >> com.burtbeckwith.gorm.domain.Book.invokeMethod(Book.groovy) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelp
>> > >>er .ja va:784) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.j
>> > >>av a:7 58) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(Script
>> > >>By tec odeAdapter.java:170) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethod0(Script
>> > >>By tec odeAdapter.java:198) at Main.run(Main.groovy:7)
>> > >>         at groovy.lang.GroovyShell.evaluate(GroovyShell.java:473)
>> > >>         at groovy.lang.GroovyShell.evaluate(GroovyShell.java:508)
>> > >>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > >>         at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> > >>av a:3 9) at
>> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> > >>or Imp l.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
>> > >> at
>> > >> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:8
>> > >>6) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230) at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912) at
>> > >> groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:946)
>> > >>         at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:756) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelp
>> > >>er .ja va:778) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.j
>> > >>av a:7 58) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(Script
>> > >>By tec odeAdapter.java:170) at
>> > >> Tester$_main_closure1.doCall(Tester.groovy:12) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> > >>av a:3 9) at
>> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> > >>or Imp l.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
>> > >> at
>> > >> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:8
>> > >>6) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230) at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912) at
>> > >> groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:946)
>> > >>         at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:756) at
>> > >> groovy.lang.Closure.call(Closure.java:292)
>> > >>         at groovy.lang.Closure.call(Closure.java:305)
>> > >>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> > >>         at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> > >>av a:3 9) at
>> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> > >>or Imp l.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
>> > >> at
>> > >> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:8
>> > >>6) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230) at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912) at
>> > >> groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:946)
>> > >>         at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:756) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelp
>> > >>er .ja va:778) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.j
>> > >>av a:7 58) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(Script
>> > >>By tec odeAdapter.java:170) at
>> > >> com.burtbeckwith.gorm.GormHelper$_withTransaction_closure1.doCall(Gorm
>> > >>He lpe r.groovy:133) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> > >>av a:3 9) at
>> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> > >>or Imp l.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
>> > >> at
>> > >> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:8
>> > >>6) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230) at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912) at
>> > >> groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:946)
>> > >>         at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:756) at
>> > >> groovy.lang.Closure.call(Closure.java:292)
>> > >>         at
>> > >> org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClo
>> > >>su re. java:48) at
>> > >> org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler
>> > >>.j ava
>> > >>
>> > >>:72) at $Proxy0.doInTransaction(Unknown Source)
>> > >>
>> > >>         at
>> > >> org.springframework.transaction.support.TransactionTemplate.execute(Tr
>> > >>an sac tionTemplate.java:128) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> > >>av a:3 9) at
>> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> > >>or Imp l.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
>> > >> at
>> > >> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:8
>> > >>6) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230) at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:912) at
>> > >> groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:946)
>> > >>         at
>> > >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:756) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokePojoMethod(InvokerHelp
>> > >>er .ja va:766) at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.j
>> > >>av a:7 54) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(Script
>> > >>By tec odeAdapter.java:170) at
>> > >> com.burtbeckwith.gorm.GormHelper.withTransaction(GormHelper.groovy:132
>> > >>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
>> > >>av a:3 9) at
>> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
>> > >>or Imp l.java:25) at java.lang.reflect.Method.invoke(Method.java:585)
>> > >> at
>> > >> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:8
>> > >>6) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:230) at
>> > >> groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1105)
>> > >>         at
>> > >> org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.j
>> > >>av a:7 49) at
>> > >> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(Script
>> > >>By tec odeAdapter.java:170) at Tester.main(Tester.groovy:10)
>> > >>
>> > >> burtbeckwith wrote:
>> > >> > I spent some time on this and got it working. I've posted a writeup
>> > >> > and a zip
>> > >> > file here: http://burtbeckwith.com/blog/?p=66
>> > >> >
>> > >> > Burt
>> > >> >
>> > >> > On Saturday 23 August 2008 3:59:22 pm Christopher Mason wrote:
>> > >> >> Clarifying:
>> > >> >>
>> > >> >> So there are two projects that purport to allow one to use grails
>> > >> >> without having a web server around:
>> > >> >>
>> > >> >> http://docs.codehaus.org/display/GRAILS/GORM+-+StandAlone+Gorm
>> > >> >> which is based on:
>> > >> >> http://jweldin.com/blog/?p=6
>> > >> >>
>> > >> >> However, both are over a year old and don't compile.  Both use this
>> > >> >> constructor:
>> > >> >>
>> > >> >>        application =
>> > >> >>           new DefaultGrailsApplication( groovyFiles, new
>> > >> >> GormInjectionOperation() )
>> > >> >>
>> > >> >> which, it seems, no longer exists.
>> > >> >>
>> > >> >> My suspicion is that this configuration is all done now via Spring.
>> > >> >> Is this true?
>> > >> >>
>> > >> >> I'm trying to read through the grails Gant scripts source to figure
>> > >> >> out how grails starts up, but it's not clear yet.  I've tried
>> > >> >> various methods on GrailsUtil like:
>> > >> >>
>> > >> >>    GrailsUtil.bootstrapGrailsFromApplication(grailsApplication)
>> > >> >> or
>> > >> >>    ApplicationContext appContext = GrailsUtil
>> > >> >>    .bootstrapGrailsFromClassPath()
>> > >> >>    DefaultGrailsApplication grailsApplication =
>> > >> >>         (DefaultGrailsApplication)appContext
>> > >> >>            .getBean("grailsApplication", D
>> > >> >>              efaultGrailsApplication.class);
>> > >> >>
>> > >> >> but this seems to result in class not found errors, I assume
>> > >> >> because the Gant scripts are responsible for classpathy stuff that
>> > >> >> I'm not yet doing (eg Init.groovy:setClasspath()). Am I headed in
>> > >> >> the right direction?
>> > >> >>
>> > >> >> If I simply omit the GormInjectionOperation from the code posted
>> > >> >> above, obviously, none of the GORM methods are available on doman
>> > >> >> objects.
>> > >> >>
>> > >> >> Any hints would be most appreciated.  My goal is something I can
>> > >> >> run via java -jar that will execute a groovy script using GORM
>> > >> >> domain classes.
>> > >> >>
>> > >> >> I offer beer to anyone who can help me get this working!  And I
>> > >> >> promise to post it somewhere for all to read!
>> > >> >>
>> > >> >> -c
>> > >> >>
>> > >> >> Christopher Mason wrote:
>> > >> >> > Can anyone help update this code for grails 1.0.3?
>> > >> >> >
>> > >> >> > http://jweldin.com/blog/?p=6
>> > >> >> >
>> > >> >> > Does anyone have this working?  (I see several posts but none of
>> > >> >> > them seem to have successful resolutions.)
>> > >> >> >
>> > >> >> > Thanks so much!
>> > >> >> >
>> > >> >> > -c
>> > >> >> >
>> > >> >> >
>> > >> >> > import groovy.lang.GroovyClassLoader;
>> > >> >> > import groovy.lang.GroovyObject;
>> > >> >> > import org.codehaus.groovy.grails.commons.*;
>> > >> >> > import org.codehaus.groovy.grails.orm.hibernate.cfg.*;
>> > >> >> > import org.hibernate.SessionFactory;
>> > >> >> > import org.springframework.core.io.*;
>> > >> >> > import org.springframework.core.io.support.*
>> > >> >> > import
>> > >> >> > org.codehaus.groovy.grails.compiler.injection.GrailsAwareClassLoa
>> > >> >> >de r import
>> > >> >> > org.codehaus.groovy.grails.compiler.injection.ClassInjector;
>> > >> >> >
>> > >> >> > class RunScript
>> > >> >> > {
>> > >> >> >     public static void main(String[] args)
>> > >> >> >     {
>> > >> >> >
>> > >> >> >         if (args.length < 2) {
>> > >> >> >             println "Usage: java -jar profiler-script.jar
>> > >> >> > <db.props> <script name> <script args>"
>> > >> >> >         }
>> > >> >> >
>> > >> >> >         GrailsApplication grailsApplication = null;
>> > >> >> >         SessionFactory sessionFactory = null;
>> > >> >> >
>> > >> >> >         PathMatchingResourcePatternResolver resolver = new
>> > >> >> > PathMatchingResourcePatternResolver();
>> > >> >> >
>> > >> >> >         Resource[] groovyFiles =
>> > >> >> > resolver.getResources("classpath*:**grails-app/**/*.groovy");
>> > >> >> >
>> > >> >> >         grailsApplication = new
>> > >> >> > DefaultGrailsApplication(groovyFiles);
>> > >> >> >
>> > >> >> >         GrailsAwareClassLoader gcl = new GrailsAwareClassLoader()
>> > >> >> >         gcl.setClassInjectors([ new
>> > >> >> > DefaultGrailsDomainClassInjector()
>> > >> >>
>> > >> >> ]
>> > >> >>
>> > >> >> > as ClassInjector[])
>> > >> >> >
>> > >> >> >         DefaultGrailsDomainConfiguration config = new
>> > >> >> > DefaultGrailsDomainConfiguration();
>> > >> >> >         config.setGrailsApplication(grailsApplication);
>> > >> >> >
>> > >> >> >         Properties props = new Properties();
>> > >> >> >         props.load(new FileInputStream(args[0]));
>> > >> >> >         config.setProperties(props);
>> > >> >> >
>> > >> >> >         sessionFactory = config.buildSessionFactory();
>> > >> >> >
>> > >> >> >
>> > >> >> > GrailsHibernateUtil.configureDynamicMethods(sessionFactory,
>> > >> >> > grailsApplication);
>> > >> >> >
>> > >> >> >         GroovyClassLoader cl = gcl
>> > >> >> > //grailsApplication.getClassLoader()
>> > >> >> >
>> > >> >> >         println "\n-----------\nBefore Main\n-----------\n"
>> > >> >> >
>> > >> >> >         Binding b = new Binding(args[3..args.length-1] as
>> > >> >> > String[]) def TestDomainScript =
>> > >> >> > (Script)cl.loadClass(args[1],false,true).newInstance(b)
>> > >> >> >         TestDomainScript.run()
>> > >> >> >
>> > >> >> >         println "\n-----------\nAfter Main\n-----------\n"
>> > >> >> >         println "\nDone";
>> > >> >> >
>> > >> >> >     }
>> > >> >> > }
>> > >> >> >
>> > >> >> >
>> > >> >> > import
>> > >> >> > org.codehaus.groovy.grails.compiler.injection.GrailsInjectionOper
>> > >> >> >at ion ; import org.codehaus.groovy.grails.compiler.injection.*;
>> > >> >> > import org.apache.commons.logging.Log;
>> > >> >> > import org.apache.commons.logging.LogFactory;
>> > >> >> > import org.codehaus.groovy.ast.ClassNode;
>> > >> >> > import org.codehaus.groovy.classgen.GeneratorContext;
>> > >> >> > import org.codehaus.groovy.control.CompilationFailedException;
>> > >> >> > import org.codehaus.groovy.control.CompilationUnit;
>> > >> >> > import org.codehaus.groovy.control.Phases;
>> > >> >> > import org.codehaus.groovy.control.SourceUnit;
>> > >> >> > import
>> > >> >>
>> > >> >> org.codehaus.groovy.grails.compiler.support.GrailsResourceLoader;
>> > >> >>
>> > >> >> > import org.codehaus.groovy.grails.commons.GrailsResourceUtils
>> > >> >> > import org.codehaus.groovy.grails.compiler.GrailsClassLoader;
>> > >> >> >
>> > >> >> > public class MyInjectionOperation extends
>> > >> >> > GrailsInjectionOperation {
>> > >> >> >
>> > >> >> >         private static GrailsDomainClassInjector injector = new
>> > >> >> > DefaultGrailsDomainClassInjector();;
>> > >> >> >     private GrailsResourceLoader resourceLoader;
>> > >> >> >
>> > >> >> >     public void call(SourceUnit source, GeneratorContext context,
>> > >> >> > ClassNode classNode) throws CompilationFailedException
>> > >> >> >         {
>> > >> >> >
>> > >> >> >                 if(resourceLoader != null)
>> > >> >> >                 {
>> > >> >> >             try {
>> > >> >> >                 URL url;
>> > >> >> >
>> > >> >> > if(GrailsResourceUtils.isGrailsPath(source.getName())) {
>> > >> >> >                     url =
>> > >> >>
>> > >> >> resourceLoader.loadGroovySource(GrailsResourceUtils.getClassName(so
>> > >> >>ur ce. g
>> > >> >>
>> > >> >> >etName()));
>> > >> >> >
>> > >> >> >                 }
>> > >> >> >                 else
>> > >> >> >                                 {
>> > >> >> >                     url =
>> > >> >> > resourceLoader.loadGroovySource(source.getName());
>> > >> >> >                 }
>> > >> >> >                 if(GrailsResourceUtils.isDomainClass(url))
>> > >> >> >                                 {
>> > >> >> >
>> > >> >> > this.injector.performInjection(source,context,classNode);
>> > >> >> >                 }
>> > >> >> >
>> > >> >> >             }
>> > >> >> >                         catch (MalformedURLException e)
>> > >> >> >                         {
>> > >> >> >                 println("Error loading URL during addition of
>> > >> >> > compile time properties: " + e.getMessage(),e);
>> > >> >> >                 throw new
>> > >> >> > CompilationFailedException(Phases.CONVERSION,source,e);
>> > >> >> >             }
>> > >> >> >         }
>> > >> >> >     }
>> > >> >> >
>> > >> >> >     public void setResourceLoader(GrailsResourceLoader
>> > >> >> > resourceLoader) {
>> > >> >> >         this.resourceLoader = resourceLoader;
>> > >> >> >     }
>> > >> >> > }
>> > >> >> >
>> > >> >> >
>> > >> >> >
>> > >> >> >
>> > >> >> > -----------------------------------------------------------------
>> > >> >> >-- -- To unsubscribe from this list, please visit:
>> > >> >> >
>> > >> >> >    http://xircles.codehaus.org/manage_email
>> > >> >>
>> > >> >> -------------------------------------------------------------------
>> > >> >>-- To unsubscribe from this list, please visit:
>> > >> >>
>> > >> >>     http://xircles.codehaus.org/manage_email
>> > >> >
>> > >> > --------------------------------------------------------------------
>> > >> >- To unsubscribe from this list, please visit:
>> > >> >
>> > >> >     http://xircles.codehaus.org/manage_email
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe from this list, please visit:
>> > >
>> > >    http://xircles.codehaus.org/manage_email
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>
>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


 « Return to Thread: GORM outside Grails