Jongjin,

Am all for it. Please open a bug report with the "cvs diff -u" before Ias 
commits the code to the
Axis code base.

thanks,
dims

--- gunsnroz <[EMAIL PROTECTED]> wrote:
> Hi, ews and axis people!
> 
> After comparing the codes in EWS and AXIS, I found that many of them are
> duplicated.
> Specially, the following codes are very similar.
> 
>   - J2eeEmitter <--> org.apache.axis.wsdl.tojava.Emitter
>   - J2eeGeneratorFactory <-->
> org.apache.axis.wsdl.tojava.JavaGeneratorFactory
> 
> The other codes such as J2eexxxWriter are deprecated in EWS because the
> equivalent ones in Axis 
> can be used. Like this, some modification in the axis Emitter and
> JavaGeneratorFactory
> makes the Axis code reusable and ews code simpler.
> 
> The basic idea is adding some codes that override the Axis' default Java
> <--> wsdl nampping in derived classes.
> Here is the example, (details omitted for brevity)
> 
> JavaGeneratorFactory.java from Axis
> 
> protected void determineInterfaceName(SymbolTable symbolTable) {
>       // ...
>       if (entry instanceof BindingEntry) {
> 
>               PortTypeEntry = ...
>               seiName = ptEntry.getName();
>               bEntry.setDynamicVar(JavaBindingWriter.INTERFACE_NAME,
> seiName);
>       }
>       // ...
> }
> 
> If we add some way to override Axis' default name mapping (ptEntry.getName()
> in above example) like this:
> 
> 
> ///////////////////// JavaGeneratorFactory in Axis
> protected void determineInterfaceName(SymbolTable symbolTable) {
>       // ...
>       if (entry instanceof BindingEntry) {
> 
>               PortTypeEntry = ...
>               seiName = getServiceEndpointInterfaceJavaNameHook(ptEntry,
> bEntry);
>               if (seiName == null) {
>                       seiName = ptEntry.getName();
>               }
>               bEntry.setDynamicVar(JavaBindingWriter.INTERFACE_NAME,
> seiName);
>       }
>       // ...
> }     
> 
> protected String getServiceEndpointInterfaceJavaNameHook(PortTypeEntry
> ptEntry, BindingEntry bEntry) {
>       return null;
> }
> 
> The J2eeGeneratorFactory in ews look like this:
> 
> /////////////////////// J2eeGeneratorFactory in EWS
> 
> class J2eeGeneratorFactory extends
> org.apache.axis.wsdl.tojava.JavaGeneratorFactory {
> // determinedInterfaceName() : no more needed.
> 
> // add new method
> protected String getServiceEndpointInterfaceJavaNameHook(PortTypeEntry
> ptEntry, BindingEntry bEntry) {
>       if (mapper == null)
>               return null;
>       return mapper.getServiceEndpointInterfaceName(ptEntry, bEntry);
> }
> // ...
> }
> 
> I have modified the codes in ews and axis and 
> it seems that almost duplicate codes in J2eeEmitter and J2eeGeneratorFactory
> can be removed.
> 
> Uhm... I think there are pros and cons in this way.
> The cons:
>   - Tightly coupling in the Axis code and ews (or other) codes
>  
> The pros:
>   - Simpler ews codes
>   - The Axis code can be reused in other Java <--> WSDL mapping case (like
> JSR-181)
> 
> I will discuss it more with Ias who is the Axis and ews committer. (He and I
> are working in the same company)
> I think that the code change in Axis like this should be with the consent of
> other Axis committers.
> 
> Any comment?
> 
> Jongjin/
> 
> ---------------------------------------------------
> Webservices Team in Tmax Soft.
> JSR-208 EG member.
> ---------------------------------------------------


=====
Davanum Srinivas - http://webservices.apache.org/~dims/

Reply via email to