Hi Alex,

Alex Thieme wrote:
> 
> Werner,
> 
> Thanks for the answers. Perhaps this is what you mean by not having any
> "entry points"; but, is there any way to change the velocity templates
> that are in use? 
Not currently. But it should not be too hard to have this configurable.
Why not raise a feature request, and we will look into to.

Cheers
Werner

> I'm guessing not. And, with that said, do you know of
> any well maintain open source projects that might be applicable (ones
> that you think are worthy)?
> 
> Alex
> 
> On Sep 6, 2009, at 3:30 PM, Werner Guttmann wrote:
> 
>> Hi Alex,
>>
>> that is a hard question to answer, as the answer i snot a simpe yes
>> and/or no. But let me try .....
>>
>> Regards
>> Werner
>>
>> Alex Thieme wrote:
>>>
>>> I know that castor can generate Java classes (what I would consider
>>> POJOs); but, is there an option to generate a file or files from any
>>> arbitrary template and XSD? I'll provide examples in case my explanation
>>> is not clear.
>>>
>>> In the example below, there's an Adjustment.xsd, containing three
>>> attributes. The generator writes out a class header (package and import
>>> statements of my choosing), then writes a statement representing the
>>> "singleton" instance. Then, a "format" method is generated. Again,
>>> AdjustmentNativeFormatter (below) is the result of applying the
>>> Adjustment.xsd to a generator, say "FormatterGenerator" because this
>>> generator generates "Formatter" objects.
>>>
>>> What I can't find in castor is the piece of code that I could write,
>>> either in XML or more likely Java code, which has access to the metadata
>>> in the XSD (the root elements, nested elements, attributes, whether
>>> something is a simple type or complex type, XML Schema type, etc). From
>>> that, I would write code to iterate over the elements and attributes,
>>> write out statements that will be written to a file on disk.
>> It's not as easy as you think. Internally, Castor converts your XML
>> schemas and the types/elements defined therein into a set of in-memory
>> Java objects that represent your XML schema definitions.
>> It's those object instances that classes such as Source-/MemberFactory
>> will use to traverse these schema objects and build J* instances from;
>> eventually, the Castor XML code generator will serialize those J*
>> instances (such as JClass, JField, .....) to files on your file system.
>>
>> In other words, most of what you need is in place; but on the other
>> hand, none of these classes expose any entry points fro you to use to
>> implement your own code fragments.
>>
>> Does this answer your question ?
>>
>>> As you can see, this is different from generating simply POJOs. I'd like
>>> to be able to generate any arbitrary code from XSD.
>> I do appreciate your needs here, but Castor's code generator will
>> generate POJOs only and the corresponding descriptor classes for XML
>> data binding and JDO persistence.
>>
>>> And, dare I ask, if castor does not have this feature, can you recommend
>>> other open source projects that do have this feature?
>>>
>>> Thanks in advance,
>>>
>>> Alex
>>>
>>> Generated code:
>>> package com.athieme.KToW.formatters;
>>>
>>> import org.apache.log4j.Logger;
>>> import java.math.BigInteger;
>>> import java.util.Calendar;
>>> import com.athieme.AbstractFormatter;
>>> import com.athieme.interfaces.IAdjustment;
>>>
>>> public class AdjustmentFormatter extends
>>> AbstractFormatter<IAdjustment> {
>>>
>>>    public static final AdjustmentFormatter singleton = new
>>> AdjustmentFormatter();
>>>
>>>    public String format(final IAdjustment obj) {
>>>        final StringBuffer sb = new StringBuffer();
>>>        sb.append(obj.company());
>>>        sb.append(obj.userId());
>>>        sb.append(obj.dateStamp());
>>>        sb.append(obj.timeStamp());
>>>        return sb.toString();
>>>    }
>>> }
>>>
>>> XSD:
>>>
>>> <?xml version="1.0" encoding="iso-8859-1"?>
>>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
>>>           xmlns:fd="http://athieme/FieldDef";
>>>           xmlns:common="http://athieme/Common";
>>>           targetNamespace="http://athieme/KToW";
>>>           elementFormDefault="qualified">
>>>
>>>    <xs:import namespace="http://athieme/FieldDef"; schemaLocation="../
>>> FieldDef.xsd"/>
>>>    <xs:import namespace="http://athieme/Common"; schemaLocation="../
>>> Common.xsd"/>
>>>
>>>    <xs:complexType name="Adjustment">
>>>
>>>        <xs:attribute name="company"
>>>                      type="fd:fixedString10"
>>>                      fd:externalName="LDCO"
>>>                      fd:internalName="Company"/>
>>>
>>>        <xs:attribute name="userId"
>>>                      type="fd:fixedString10"
>>>                      fd:externalName="PLUSER"
>>>                      fd:internalName="user_id"/>
>>>
>>>        <xs:attribute name="dateStamp"
>>>                      type="fd:fixedInt8"
>>>                      fd:externalName="DateStamp"
>>>                      fd:internalName="DateStamp"
>>>                      fd:fieldDefType="int"/>
>>>
>>>    </xs:complexType>
>>> </xs:schema>
>>
>> ---------------------------------------------------------------------
>> 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


Reply via email to