You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Marco Gattei <ma...@gmail.com> on 2010/02/26 17:40:34 UTC

cgen task

Hi everyone,
    i'm trying to play a bit with CAyenne cgen task, to see if i can
automate the geration of pojo counterparts to my data objects, to use as 
dto in a JAX-WS service.

i've created mi pojo.vm template file and placed it  in same directory 
with the ant script

project
    +---- generate_pojo.xml
     |
    +---- pojo.vm
    |
    +---- src


generate_pojo.xml looks like :

<?xml version="1.0" encoding="UTF-8"?>
<project name="changeme" default="all" basedir=".">
  
<target name="generate pojos" >
 <path id="classpath">
      <!-- my local cayenne directory -->
        <fileset dir="D:/java/cayenne-3.0RC2-win/lib" >
            <include name="cayenne-tools-3.0RC2.jar" />
            <include name="cayenne-server-3.0RC2.jar" />
            <include name="third-party/ashwood-2.0.jar" />
            <include name="third-party/commons-collections-3.1.jar" />
            <include name="third-party/commons-logging-1.1.jar" />
            <include name="third-party/velocity-1.3.jar" />
            <include name="third-party/vpp-2.2.1.jar" />

        </fileset>
    </path>

    <echo message="classpath setup " />

    <typedef resource="org/apache/cayenne/tools/antlib.xml">
        <classpath refid="classpath"/>
    </typedef>

        <echo message="task inited" />


        <delete dir="src/com/sapidata/piemme/pojo" />

        <mkdir dir="src/com/sapidata/piemme/pojo" />


        <cgen map="src/PMMap.map.xml"
              destDir="src/com/sapidata/piemme/pojo"
              makepairs="false"
              usepkgpath="false"
              includeEntities="*"
              template="pojo.vm"
              outputPattern="*.java"/>

    </target>
</project>


but executing results in


D:\java\click-click\clickclick\pm-test\GeneraPojo.xml:39:
org.apache.velocity.exception.ResourceNotFoundException: Unable to find 
resource 'pojo.vm'
        at 
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:501)
        at 
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:384)
        at 
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:814)
        at 
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:796)
        at 
org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:512)
        at 
org.apache.cayenne.gen.ClassGenerationAction.getTemplate(ClassGenerationAction.java:275)
        at 
org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:241)
        at 
org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:213)
        at 
org.apache.cayenne.tools.CayenneGeneratorTask.execute(CayenneGeneratorTask.java:163)



removing the attributes template="pojo.vm"  generates the classes, but 
using default templates.

Where should  be put pojo.vm ?

Marco


Re: cgen task

Posted by Mike Kienenberger <mk...@gmail.com>.
That looks right to me when I compare it to my Cayenne 1.2 templates.

As a test, try specifying an absolute path of
\java\click-click\clickclick\pm-test\pojo.vm and see what it does.
Maybe for 3.0 it is now looking in the classpath instead of relative
to the ant task base.

Another good general-purpose way to track these kinds of things down
is to install ProcessMonitor and see where Windows is actually trying
to read the file from.

ProcessMonitor
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

You might also be able to run ant in debug mode and get more
information that way.


On Fri, Feb 26, 2010 at 11:40 AM, Marco Gattei <ma...@gmail.com> wrote:
> Hi everyone,
>   i'm trying to play a bit with CAyenne cgen task, to see if i can
> automate the geration of pojo counterparts to my data objects, to use as dto
> in a JAX-WS service.
>
> i've created mi pojo.vm template file and placed it  in same directory with
> the ant script
>
> project
>   +---- generate_pojo.xml
>    |
>   +---- pojo.vm
>   |
>   +---- src
>
>
> generate_pojo.xml looks like :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project name="changeme" default="all" basedir=".">
>  <target name="generate pojos" >
> <path id="classpath">
>     <!-- my local cayenne directory -->
>       <fileset dir="D:/java/cayenne-3.0RC2-win/lib" >
>           <include name="cayenne-tools-3.0RC2.jar" />
>           <include name="cayenne-server-3.0RC2.jar" />
>           <include name="third-party/ashwood-2.0.jar" />
>           <include name="third-party/commons-collections-3.1.jar" />
>           <include name="third-party/commons-logging-1.1.jar" />
>           <include name="third-party/velocity-1.3.jar" />
>           <include name="third-party/vpp-2.2.1.jar" />
>
>       </fileset>
>   </path>
>
>   <echo message="classpath setup " />
>
>   <typedef resource="org/apache/cayenne/tools/antlib.xml">
>       <classpath refid="classpath"/>
>   </typedef>
>
>       <echo message="task inited" />
>
>
>       <delete dir="src/com/sapidata/piemme/pojo" />
>
>       <mkdir dir="src/com/sapidata/piemme/pojo" />
>
>
>       <cgen map="src/PMMap.map.xml"
>             destDir="src/com/sapidata/piemme/pojo"
>             makepairs="false"
>             usepkgpath="false"
>             includeEntities="*"
>             template="pojo.vm"
>             outputPattern="*.java"/>
>
>   </target>
> </project>
>
>
> but executing results in
>
>
> D:\java\click-click\clickclick\pm-test\GeneraPojo.xml:39:
> org.apache.velocity.exception.ResourceNotFoundException: Unable to find
> resource 'pojo.vm'
>       at
> org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:501)
>       at
> org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:384)
>       at
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:814)
>       at
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:796)
>       at
> org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:512)
>       at
> org.apache.cayenne.gen.ClassGenerationAction.getTemplate(ClassGenerationAction.java:275)
>       at
> org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:241)
>       at
> org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:213)
>       at
> org.apache.cayenne.tools.CayenneGeneratorTask.execute(CayenneGeneratorTask.java:163)
>
>
>
> removing the attributes template="pojo.vm"  generates the classes, but using
> default templates.
>
> Where should  be put pojo.vm ?
>
> Marco
>
>

Re: cgen task

Posted by Marco Gattei <ma...@gmail.com>.
Aboslute path in template attribute did the job ....
thank you !

Marco

Marco Gattei ha scritto:
> Hi everyone,
>    i'm trying to play a bit with CAyenne cgen task, to see if i can
> automate the geration of pojo counterparts to my data objects, to use 
> as dto in a JAX-WS service.
>
> i've created mi pojo.vm template file and placed it  in same directory 
> with the ant script
>
> project
>    +---- generate_pojo.xml
>     |
>    +---- pojo.vm
>    |
>    +---- src
>
>
> generate_pojo.xml looks like :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project name="changeme" default="all" basedir=".">
>  
> <target name="generate pojos" >
> <path id="classpath">
>      <!-- my local cayenne directory -->
>        <fileset dir="D:/java/cayenne-3.0RC2-win/lib" >
>            <include name="cayenne-tools-3.0RC2.jar" />
>            <include name="cayenne-server-3.0RC2.jar" />
>            <include name="third-party/ashwood-2.0.jar" />
>            <include name="third-party/commons-collections-3.1.jar" />
>            <include name="third-party/commons-logging-1.1.jar" />
>            <include name="third-party/velocity-1.3.jar" />
>            <include name="third-party/vpp-2.2.1.jar" />
>
>        </fileset>
>    </path>
>
>    <echo message="classpath setup " />
>
>    <typedef resource="org/apache/cayenne/tools/antlib.xml">
>        <classpath refid="classpath"/>
>    </typedef>
>
>        <echo message="task inited" />
>
>
>        <delete dir="src/com/sapidata/piemme/pojo" />
>
>        <mkdir dir="src/com/sapidata/piemme/pojo" />
>
>
>        <cgen map="src/PMMap.map.xml"
>              destDir="src/com/sapidata/piemme/pojo"
>              makepairs="false"
>              usepkgpath="false"
>              includeEntities="*"
>              template="pojo.vm"
>              outputPattern="*.java"/>
>
>    </target>
> </project>
>
>
> but executing results in
>
>
> D:\java\click-click\clickclick\pm-test\GeneraPojo.xml:39:
> org.apache.velocity.exception.ResourceNotFoundException: Unable to 
> find resource 'pojo.vm'
>        at 
> org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:501) 
>
>        at 
> org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:384) 
>
>        at 
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:814) 
>
>        at 
> org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:796) 
>
>        at 
> org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:512) 
>
>        at 
> org.apache.cayenne.gen.ClassGenerationAction.getTemplate(ClassGenerationAction.java:275) 
>
>        at 
> org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:241) 
>
>        at 
> org.apache.cayenne.gen.ClassGenerationAction.execute(ClassGenerationAction.java:213) 
>
>        at 
> org.apache.cayenne.tools.CayenneGeneratorTask.execute(CayenneGeneratorTask.java:163) 
>
>
>
>
> removing the attributes template="pojo.vm"  generates the classes, but 
> using default templates.
>
> Where should  be put pojo.vm ?
>
> Marco
>
>