"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 <[email protected]>:
>>
>> 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.