Re: WOLips Velocity Engine

From: David Avendasora (webobject..vendasora.com)
Date: Fri Feb 08 2008 - 13:08:57 EST

  • Next message: Chuck Hill: "Re: WOLips Velocity Engine"

    The Java Annotation Processing Tool (apt) looks cool, but what I need
    to do is insert a portion of one java file into another. apt looks
    like it would do a fine job of creating entirely new files, but I
    don't see how it can insert into an existing file.

    I still need to generate the client-side classes from the model, and
    then insert some more stuff in. What I was hoping to do was make
    Velocity treat a "source" java file similar to how it treats a model,
    and then grab things out of it and put them into the "target" java file.

    Dave

    On Feb 8, 2008, at 12:45 PM, Chuck Hill wrote:

    >
    > On Feb 8, 2008, at 9:37 AM, David Avendasora wrote:
    >
    >>
    >> On Feb 8, 2008, at 11:43 AM, Mike Schrag wrote:
    >>
    >>>> Is the Velocity engine in WOLips accessible, possibly via Ant?
    >>>>
    >>>> Here's what I'm trying to do: I am working on a Java Client
    >>>> project where the client-side classes have several methods that
    >>>> are exactly the same as the server-side version (Validation,
    >>>> Defaults, etc) and I don't want to maintain them in two places,
    >>>> and using a common subclass for both is not viable because I
    >>>> have to have the client-side and server-side classes need to
    >>>> extend different superclasses.
    >>>>
    >>>> So that leaves me with either duplicating code (and bugs) and
    >>>> dealing with keeping them in sync, or figuring out a way to have
    >>>> the methods automatically synced. This is where velocity comes in.
    >>>>
    >>>> I'd like to flag each "common" method as needing to be copied to
    >>>> the client-side class and then have a Velocity template that
    >>>> would read them out of the server-side and copy them into the
    >>>> client-side _Entity class. I would want to execute this step
    >>>> following any EOGeneration of my client-side .eotemplate files.
    >>>>
    >>>> Again, the end goal is to maintain "common" methods in one
    >>>> location and have them automatically propagated as part of a build.
    >>> It's not accessible from ant, you'd have to wrap it in an ant
    >>> task or something if you want to do that.
    >>>
    >>> However, you can have multiple .eogen files for a single model --
    >>> you could maybe create a server.eogen and a client.eogen that use
    >>> different templates to do what it is you're trying to do (which
    >>> I'm not sure I exactly follow). Are these common things you're
    >>> copying generated, or are you writing common methods that they
    >>> share? Do server and client share a single _Parent? Can you set
    >>> this up with inheritance hierarchy like the current eogen files
    >>> do, just introducing a third inheritance level with your own
    >>> custom templates?
    >>
    >> These are not generated methods that I want to copy down to the
    >> client classes, They are ones that I write containing specific
    >> validation code, or setting defaults. Potentially I could set
    >> validation rules and defaults in the UserInfo dictionary and then
    >> generate the validation and defaults methods off that, I'll look
    >> into it.
    >>
    >> I already have server-side and client-side EOGen files for my
    >> project and they work well for most typical EOGenerator-type
    >> functions.
    >>
    >> A common class that they both inherit from won't work as the
    >> client classes have to inherit from the JBND EOGenericRecord
    >> class. Besides, I posted questions regarding this in a different
    >> thread (Possible Feature Request...) a couple days ago with no
    >> response from anyone, so I took that as "Nobody's ever done it
    >> before. You're on your own." I since figured out that a common
    >> class really won't work in the first place.
    >
    > I don't think that Velocity is what you want. It just merges a
    > data (e.g. an EOModel) and templates and produces new files. Take
    > a look at Java's Annotation Processing Tool: http://java.sun.com/
    > j2se/1.5.0/docs/guide/apt/GettingStarted.html
    >
    > I think that putting annotations on the comment methods and getting
    > this tool to extract them into another class for you might be a
    > more productive path to wander down.
    >
    > Chuck
    >
    > --
    >
    > Practical WebObjects - for developers who want to increase their
    > overall knowledge of WebObjects or who are trying to solve specific
    > problems.
    > http://www.global-village.net/products/practical_webobjects
    >
    >
    >
    >
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Fri Feb 08 2008 - 13:09:49 EST