You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Scott Pedigo (JIRA)" <ji...@apache.org> on 2016/04/19 18:18:25 UTC

[jira] [Created] (CXF-6874) NPE During Code Generation By Maven Plug-In If Name Collision

Scott Pedigo created CXF-6874:
---------------------------------

             Summary: NPE During Code Generation By Maven Plug-In If Name Collision
                 Key: CXF-6874
                 URL: https://issues.apache.org/jira/browse/CXF-6874
             Project: CXF
          Issue Type: Bug
          Components: Build system
    Affects Versions: 3.1.6
            Reporter: Scott Pedigo


NPE if, in an XSD for a web service, types for the input and the output have elements with the same name and base type, but not the same restrictions (e.g. string type, but with min and max length defined for the input element, whereas just plain string for the output element).

See the elements {{businessRelationshipId}}, {{title}}, and {{sourceSessionId}} for example, in the following:
{code:title=Example XSD Which Causes NPE}
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema 
	xmlns:xsd				= "http://www.w3.org/2001/XMLSchema"
	xmlns:tns				= "http://www.ubs.com/PrinterBasket/V1"
	targetNamespace			= "http://www.ubs.com/PrinterBasket/V1"
	>
	<!-- PrinterBasket v1.1.5 WSDL - 25.02.2013 -->

	<xsd:include schemaLocation="ReturnCode.xsd" />
	
	<xsd:complexType name="GetBasketItemInformation">
        <xsd:sequence>    
			<xsd:element name="businessRelationshipId" minOccurs="1" maxOccurs="1">
                <xsd:annotation>
                    <xsd:documentation>Standard UBS identifier for a business relationship. Alphanumeric.</xsd:documentation>
                </xsd:annotation>
                <xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:minLength value="0" />
						<xsd:maxLength value="16" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element> 
			<xsd:element name="title" minOccurs="1" maxOccurs="1">
		          <xsd:annotation>
		              <xsd:documentation></xsd:documentation>
		          </xsd:annotation>
		          <xsd:simpleType>
		              <xsd:restriction base="xsd:string">
		                  <xsd:minLength value="1" />
		                  <xsd:maxLength value="100" />
		              </xsd:restriction>
		          </xsd:simpleType>
		      </xsd:element>
			  <xsd:element name="sourceProcess" minOccurs="1" maxOccurs="1">
		          <xsd:simpleType>
		              <xsd:restriction base="xsd:string">
		                  <xsd:minLength value="1" />
		                  <xsd:maxLength value="100" />
		              </xsd:restriction>
		          </xsd:simpleType>
		      </xsd:element>
			  <xsd:element name="sourceBusinessSessionId" minOccurs="0" maxOccurs="1">
		          <xsd:simpleType>
		              <xsd:restriction base="xsd:string">
		                  <xsd:minLength value="1" />
		                  <xsd:maxLength value="50" />
		              </xsd:restriction>
		          </xsd:simpleType>
		      </xsd:element>		           
        </xsd:sequence>
	</xsd:complexType>

	<xsd:element name="getBasketItemInformation" type="tns:GetBasketItemInformation" />


	<xsd:complexType name="GetBasketItemInformationResponse">
		<xsd:annotation>
			<xsd:documentation>
				<![CDATA[
<p><b>ReturnCodes:</b>
</p>
<p>Type I (Information):
</p>
<p>Type W (Warning):
</p>
<p>Type E (Error):
</p>
<p>Type S (Severe):
</p>
				]]>
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="businessRelationshipId" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="title" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="sourceBusinessSessionId" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="dispatchStatus" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="dispatchCount" type="xsd:int" minOccurs="1" maxOccurs="1" />
			<xsd:element name="dispatchDate" type="xsd:date" minOccurs="1" maxOccurs="1" />
			<xsd:element name="dispatchGPN" type="xsd:string" minOccurs="1" maxOccurs="1" />
			<xsd:element name="purpose" type="xsd:string" minOccurs="1" maxOccurs="1" />
			
            <xsd:element name="rc" type="tns:ReturnCode" minOccurs="0" maxOccurs="10" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:element name="getBasketItemInformationResponse" type="tns:GetBasketItemInformationResponse" />

</xsd:schema>
{code}

{code:title=Console Output From Maven Build With NPE}
[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.1.6:wsdl2java (genContractWS) on project HPC_IMCLocalAdapterCHDocBasket: Execution genContractWS of goal org.apache.cxf:cxf-codegen-plugin:3.1.6:wsdl2java failed: java.lang.NullPointerException -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.cxf:cxf-codegen-plugin:3.1.6:wsdl2java (genContractWS) on project HPC_IMCLocalAdapterCHDocBasket: Execution genContractWS of goal org.apache.cxf:cxf-codegen-plugin:3.1.6:wsdl2java failed: java.lang.NullPointerException 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution genContractWS of goal org.apache.cxf:cxf-codegen-plugin:3.1.6:wsdl2java failed: java.lang.NullPointerException 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110) 
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
... 19 more 
Caused by: org.apache.cxf.tools.common.ToolException: java.lang.NullPointerException 
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:424) 
at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103) 
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113) 
at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86) 
at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.generate(WSDL2JavaMojo.java:415) 
at org.apache.cxf.maven_plugin.AbstractCodegenMoho.execute(AbstractCodegenMoho.java:260) 
at org.apache.cxf.maven_plugin.wsdl2java.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:512) 
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
... 20 more 
Caused by: java.lang.NullPointerException 
at org.apache.cxf.tools.wsdlto.frontend.jaxws.validator.WrapperStyleNameCollisionValidator.isValidOperation(WrapperStyleNameCollisionValidator.java:170) 
at org.apache.cxf.tools.wsdlto.frontend.jaxws.validator.WrapperStyleNameCollisionValidator.checkNameCollision(WrapperStyleNameCollisionValidator.java:62) 
at org.apache.cxf.tools.wsdlto.frontend.jaxws.validator.WrapperStyleNameCollisionValidator.isValid(WrapperStyleNameCollisionValidator.java:55) 
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.validate(WSDLToJavaContainer.java:738) 
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:280) 
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:165) 
at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:416) 
... 27 more 
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :HPC_IMCLocalAdapterCHDocBasket 
{code}

{code:title=public class WrapperStyleNameCollisionValidator}
            if (output != null) {
                List<WrapperElement> els = ProcessorUtil.getWrappedElement(context, output.getElementQName());
                if (els.size() > 1) {
                    for (WrapperElement element : els) {
                        String mappedName = mapElementName(operation,
                                                           operation.getUnwrappedOperation().getOutput(),
                                                           element);
*mappedName is null here*
===>               if (names.containsKey(mappedName)
                            &&  !(names.get(mappedName) == element.getSchemaTypeName()
                                || names.get(mappedName).equals(element.getSchemaTypeName()))) {
                            handleErrors(names.get(mappedName), element);
                            return false;
                        } else {
                            names.put(mappedName, element.getSchemaTypeName());
                        }
                    }
                }
            }
{code}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)