"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.

Charles


James.Strachan wrote:
> 
> 2008/12/23 cmoulliard <cmoulli...@gmail.com>:
>>
>> I have started to understand how the BeanInfo and MethodInfoCache classes
>> works.
>>
>> I see that the ProxyHelper will call MethodInfoCache
>>
>>    public static <T> T createProxy(Endpoint endpoint, ClassLoader cl,
>> Class<T>... interfaceClasses) throws Exception {
>>        return (T) createProxy(endpoint, cl, interfaceClasses,
>> createMethodInfoCache(endpoint));
>>    }
>>
>> in order to create the cache for the method and class but I don't see
>> how/who is calling the ProxyHelper class and How the classes (to be
>> scanned)
>> are passed ?
> 
> There are a few different entry points for this code based on use case
> (using proxies / spring remoting versus invoking a bean in the DSL or
> via annotations etc).
> 
> 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?
> 
> -- 
> 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-tp21141422s22882p21310909.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to