camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cmoulliard <cmoulli...@gmail.com>
Subject Re: Advise on @Annotation & Reflection !!
Date Tue, 06 Jan 2009 14:17:58 GMT

What do you mean ?


James.Strachan wrote:
> 
> 2009/1/6 cmoulliard <cmoulliard@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.


Mime
View raw message