So, to summarize: You are happy with most of the JavaBeans <-> XML
mapping rules, but you want to customize some of them (e.g.
java.util.Date/java.util.Calendar <-> xsd:date/xsd:dateTime mapping or
the way arrays are mapped), without modifying Axis2 code (or creating
a fork of it). Is that correct?

I think that is a valid use case that we should support, but we need
to do that in a proper way without degrading the architecture.

Andreas

On Fri, Jun 19, 2009 at 10:29, Pétur Runólfsson<pe...@betware.com> wrote:
> Hi Sanjiva,
>
>> I guess your point is that RPCMessageReceiver does everything you want 
>> except do the JavaBeans <-> XML mapping the way you want?
>
> Exactly.
>
>> In that case, can you not subclass the message receiver and redirect some 
>> code?
>
> That's what I would like to do, but it's currently not possible because all 
> the interesting methods are static and can't be overridden. That's why the 
> original patch changed some of those methods to be instance methods instead.
>
> Regards,
>
> Pétur Runólfsson
> Betware
> ________________________________________
> From: Sanjiva Weerawarana [sanj...@opensource.lk]
> Sent: Friday, June 19, 2009 02:48
> To: axis-dev
> Subject: Re: [Axis2] Make RPCUtil more flexible
>
> Hi ... I'm a bit confused. Do you want to modify the behavior of ADB or the 
> behavior of JavaBeans <-> XML mapping? The follow-up email proposal suggests 
> the latter.
>
> If its the latter, the design approach in Axis2 was that you'd have your own 
> message receiver that did whatever you want. I guess your point is that 
> RPCMessageReceiver does everything you want except do the JavaBeans <-> XML 
> mapping the way you want? In that case, can you not subclass the message 
> receiver and redirect some code?
>
> Sanjiva.
>
> 2009/6/18 Pétur Runólfsson <pe...@betware.com<mailto:pe...@betware.com>>
> Hi Andreas,
>
> I agree that just taking RPCUtil and making the methods non-static doesn't 
> result in a great design. On the other hand it's a quick way to get some more 
> flexibility without changing much code.
>
> Anyway, in order to get started on an API, here are the things called by 
> RPCMessageReceiver I think are most important to be customizable:
>
> * Conversion from OMElement to Object (approximately 
> BeanUtil.processObject(OMElement omElement, Class classType, MultirefHelper 
> helper, boolean isArrayType, ObjectSupplier objectSupplier), or maybe 
> BeanUtil.deserialize(OMElement response, Object [] javaTypes, ObjectSupplier 
> objectSupplier, String[] parameterNames), depending on how arrays should be 
> treated)
> * Conversion from Object to OMElement (most of 
> RPCUtil.processResponse(SOAPFactory fac, Object resObject, OMElement 
> bodyContent, OMNamespace ns, SOAPEnvelope envelope, Method method, boolean 
> qualified, TypeTable typeTable), also BeanUtil.getPullParser(Object 
> beanObject, QName beanName, TypeTable typeTable, boolean qualified, boolean 
> processingDocLitBare), the interface here might be more convenient to extend 
> if the XMLStreamReader was dropped and objects converted directly to 
> OMElement instead)
>
> This might result in an interface like:
>
> public interface BeanConverter {
>  Object deserialize(OMElement omElement, Class targetType);
>  OMElement serialize(Object object, QName name);
> }
>
> OMElement could maybe be replaced with XMLStreamReader, but I think the 
> interface is much nicer if the same type is used in both directions. Note 
> that ObjectSupplier, MultirefHelper, SOAPEnvelope, TypeTable, SOAPFactory, 
> qualified and processingDocLitBare don't need to be parameters on the 
> (de)serialize methods in this interface, since implementations will be 
> stateful. There should probably be setters for them in the interface.
>
> There are other things that could be interesting extension points (for 
> example handling errors from the service method, or looking up the service 
> method), but I think the above two would be a good start.
>
> Regards,
>
> Pétur Runólfsson
> Betware
> ________________________________________
> From: Andreas Veithen 
> [andreas.veit...@gmail.com<mailto:andreas.veit...@gmail.com>]
> Sent: Thursday, June 18, 2009 14:14
> To: axis-dev@ws.apache.org<mailto:axis-dev@ws.apache.org>
> Subject: Re: [Axis2] Make RPCUtil more flexible
>
> Pétur,
>
> I didn't look in detail at your suggestion, but I have some doubts
> from an architecture point of view. I don't think that taking an
> existing utility class and promote that to an API or extension point
> will improve the quality of the Axis2 architecture. If there are
> aspects that need to be configurable or extensible, than we should
> define a proper API for that.
>
> Andreas
>
> On Thu, Jun 18, 2009 at 13:19, Pétur 
> Runólfsson<pe...@betware.com<mailto:pe...@betware.com>> wrote:
>> Hi,
>>
>> For various reasons, I have on several occasions wanted to modify the 
>> behavior of ADB. Unfortunately, in many cases the only way to do this is to 
>> change the ADB source code and recompile, because most of the relevant bits 
>> of ADB is composed of static methods that can't be overridden.
>>
>> Here is a patch to convert some of the static methods to instance methods. 
>> The patch removes the static qualifier from all methods in RPCUtil. A 
>> protected RPCUtil member is added to the classes that use RPCUtil 
>> (RPCMessageReceiver and JavaTransportSender). This makes it possible to 
>> customize RPCUtil by extending those classes and setting the RPCUtil member 
>> to a subclass of RPCUtil.
>>
>> Because this patch removes static qualifiers from public methods, the change 
>> is neither source nor binary compatible. If this is a problem, it is 
>> possible instead to move the code to a new class (maybe named RPCInvoker?), 
>> and have RPCMessageReceiver and JavaTransportSender use that class. RPCUtil 
>> would have a static instance of new new class and forward all calls to that. 
>> If keeping compatibility is preferred, I can make a new patch that does this.
>>
>> Regards,
>>
>> Pétur Runólfsson
>> Betware
>
> The content of this e-mail, together with any of its attachments, is for the 
> exclusive and confidential use of the named addressee(s) and it may contain 
> legally privileged and confidential information and/or copyrighted material. 
> Any other distribution, use or reproduction without the sender's prior 
> consent is unauthorized and strictly prohibited. If you have by coincidence, 
> mistake or without specific authorization received this e-mail in error, 
> please notify the sender by e-mail immediately, uphold strict confidentiality 
> and neither read, copy, transfer, disseminate, disclose nor otherwise make 
> use of its content in any way and delete the material from your computer.
>
> The content of the e-mail and its attachments is the liability of the 
> individual sender, if it does not relate to the affairs of Betware.
> Betware does not assume any civil or criminal liability should the e-mail or 
> it´s attachments be virus infected.
>
>
>
> --
> Sanjiva Weerawarana, Ph.D.
> Founder, Director & Chief Scientist; Lanka Software Foundation; 
> http://www.opensource.lk/
> Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
> Member; Apache Software Foundation; http://www.apache.org/
> Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
>
> Blog: http://sanjiva.weerawarana.org/
>
> The content of this e-mail, together with any of its attachments, is for the 
> exclusive and confidential use of the named addressee(s) and it may contain 
> legally privileged and confidential information and/or copyrighted material. 
> Any other distribution, use or reproduction without the sender's prior 
> consent is unauthorized and strictly prohibited. If you have by coincidence, 
> mistake or without specific authorization received this e-mail in error, 
> please notify the sender by e-mail immediately, uphold strict confidentiality 
> and neither read, copy, transfer, disseminate, disclose nor otherwise make 
> use of its content in any way and delete the material from your computer.
>
> The content of the e-mail and its attachments is the liability of the 
> individual sender, if it does not relate to the affairs of Betware.
> Betware does not assume any civil or criminal liability should the e-mail or 
> it´s attachments be virus infected.
>

Reply via email to