« Return to Thread: GORM outside Grails

GORM outside Grails

by cjmason :: Rate this Message:

Reply to Author | View in Thread


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.GrailsAwareClassLoader
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.GrailsInjectionOperation;
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(source.getName()));
                                }
                                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


 « Return to Thread: GORM outside Grails