2009/1/6 cmoulliard <cmoulli...@gmail.com>:
>
> What do you mean ?

That you don't have to specify the position / formatType parameters on
the annotation - and your reflection/introspection code could figure
those out from the types of the fields/properties and their position
in the class definition

>
>
> James.Strachan wrote:
>>
>> 2009/1/6 cmoulliard <cmoulli...@gmail.com>:
>>>
>>> "In your case, I'd add the hooks to scan packages/classes for
>>> annotations to your custom DataFormat? Rather like with JAXB or
>>> XStream you can configure a list of classes/packages, you'd be doing
>>> something similar right?"
>>>
>>> This is exactly what I have done. The name of the package is provided as
>>> parameter to the DataFormat class. Next, using reflection/introspection
>>> the
>>> classes of the model are retrieved. I have implemented something simple
>>> but
>>> we can bind one or several classes to a CSV record.
>>>
>>> ex :
>>>
>>> public class Client {
>>>
>>>        @DataField(name = "ClientNumber", pos = 1, formatType =
>>> "java.lang.String")
>>>        public String clientNr;
>>>
>>>        @DataField(name = "firstName", pos = 2, formatType =
>>> "java.lang.String")
>>>        public String FirstName;
>>>
>>>        @DataField(name = "lastName", pos = 3, formatType =
>>> "java.lang.String")
>>>        public String LastName;
>>>
>>> @Record(separator =",", name = "Order")
>>> public class Order {
>>>
>>>        @DataField(name = "Number", pos = 0, formatType =
>>> "java.lang.Integer")
>>>        public int orderNr;
>>>
>>>        @LinkField( from = "com.xpectis.csv.model.Order", to =
>>> "com.xpectis.csv.model.Client", linkType = LinkType.OneToOne)
>>>        public Client client;
>>>
>>>        @DataField(name = "ISIN", pos = 4, formatType =
>>> "java.lang.String")
>>>        public String ISIN_Code;
>>>
>>>        @DataField(name = "Name", pos = 5, formatType =
>>> "java.lang.String")
>>>        public String Instrument_Name;
>>>
>>>        @DataField(name = "Quantity", pos = 6, formatType =
>>> "java.lang.String")
>>>        public String Quantity;
>>>
>>>        @DataField(name = "Cur", pos = 7, formatType = "java.lang.String")
>>>        public String Currency;
>>>
>>> Remark : It is also possible to link class together (but only One to One
>>> relation is supported) using the annotation @LinkField and makes sense
>>> because I don't want to support nested CSV.
>>
>> Great stuff!
>>
>> BTW could the pos & formatType be inferred from the
>> reflection/introspection?
>>
>> --
>> James
>> -------
>> http://macstrac.blogspot.com/
>>
>> Open Source Integration
>> http://fusesource.com/
>>
>>
>
>
> -----
> Charles Moulliard
> SOA Architect
>
> My Blog :  http://cmoulliard.blogspot.com/ http://cmoulliard.blogspot.com/
> --
> View this message in context: 
> http://www.nabble.com/Advise-on-%40Annotation---Reflection-%21%21-tp21141422s22882p21311190.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Reply via email to