What the difference of writing a MR and a serializer/deserializer ?, I
do not see a big difference.

Deepal

On Fri, Jun 19, 2009 at 7:41 AM, Davanum Srinivas<dava...@gmail.com> wrote:
> Guess it's time to port the pluggable serializer/deserializer mechanism from
> Axis1 :)
>
> -- dims
>
> On 06/19/2009 06:33 AM, Andreas Veithen wrote:
>>
>> 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