[ 
https://issues.apache.org/jira/browse/AXIS2-3618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12598383#action_12598383
 ] 

pgauriar edited comment on AXIS2-3618 at 5/20/08 11:38 AM:
-----------------------------------------------------------------

I ran into the same problem today. There appear to be two problems with the 
generated populateFault method.

1. For each fault, the same three Map put statements are called. These could be 
factored out into a method as follows:
    private void populateFault(String namespace, String localName, String name, 
String instantiatableType) {
        faultExceptionNameMap.put(new javax.xml.namespace.QName(namespace, 
localName), name);
        faultExceptionClassNameMap.put(new javax.xml.namespace.QName(namespace, 
localName), name);
        faultMessageMap.put(new javax.xml.namespace.QName(namespace, 
localName), instantiatableType);
    }

This significantly simplifies populateFaults(), since instead of having three 
constructor calls and three method calls for each fault, we have just one 
method call. This change can be made easily by modifying 
modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl.
 

2. Even after modifying that method, there are a lot of redundant calls to the 
new populateFault method. For example, using the WSDL files attached to this 
bug with the fix from #1, there are 982 calls to populateFault() in the new 
populateFaults() method. The number of unique calls is only 58! Given that 
populateFault() only puts objects into several maps, multiple calls with the 
same parameters have no real effect. Unfortunately, I don't know XSL well 
enough to fix this problem.

I'm attaching my patch for InterfaceImplementationTemplate.xsl. This will at 
least allow the generated code for the provided WSDL files to compile.

      was (Author: pgauriar):
    I ran into the same problem today. There appear to be two problems with the 
generated populateFault method.

1. For each fault, the same three Map put statements are called. These could be 
factored out into a method as follows:
    private void populateFault(String namespace, String localName, String name, 
String instantiatableType) {
        faultExceptionNameMap.put(new javax.xml.namespace.QName(namespace, 
localName), name);
        faultExceptionClassNameMap.put(new javax.xml.namespace.QName(namespace, 
localName), name);
        faultMessageMap.put(new javax.xml.namespace.QName(namespace, 
localName), instantiatableType);
    }

This significantly simplifies populateFaults(), since instead of having three 
constructor calls and three method calls for each fault, we have just one 
method call. This change can be made easily by modifying 
modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl.
 

2. Even after modifying that method, there are a lot of redundant calls to the 
new populateFault method. For example, using WSDL files provided with the fix 
from #1, there are 982 calls to populateFault() in the new populateFaults() 
method. The number of unique calls is only 58! Given that populateFault() only 
puts objects into several maps, multiple calls with the same parameters have no 
real effect. Unfortunately, I don't know XSL well enough to fix this problem.

I'm attaching my patch for InterfaceImplementationTemplate.xsl. This will at 
least allow the generated code for the provided WSDL files to compile.
  
> WSDL2Java produces code that causes javac to fail with "code to large"
> ----------------------------------------------------------------------
>
>                 Key: AXIS2-3618
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3618
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.3
>         Environment: We have encountered this problem both on linux using jdk 
> 1.6 and on Windows using jdk 1.5.
>            Reporter: Peter Canning
>            Priority: Critical
>         Attachments: Axis2Patch, vim.wsdl, vimService.wsdl
>
>
> When generating stubs from a large WSDL document using either the ADB or 
> XMLBeans databindings, the generated code causes javac to fail with the 
> following error
>     [javac] 
> /exit26/home/pcanning/visdk_clients/2.5/axis2-1.3/axis_stubs/src/com/vmware/vim/VimServiceStub.java:3090:
>  code too large
>     [javac]     private void populateFaults() {
>     [javac]                  ^
> FYI: In order to successfully run the Axis2-1.3 stub generator, I had to 
> modify axis2.sh to add -Xmx512M to increase the maximum heap size.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to