Skip to content

Conversation

@silverwind85
Copy link

I am using gradle plugin wsdl2java to generated java classes by file wsdl. I need change name packages

"<xs:extension xmlns:java="java:com.test.example.mw" base="java:MiddlewareException">" 

for

"com.test.example.mw" 

so I am using for it file binding.xml

gradle.build



plugins {
    id "java"
    id "io.spring.dependency-management" version "1.1.0"
    id "com.yupzip.wsdl2java" version "3.0.0"


}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
	mavenCentral()
}


compileJava {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
    options.compilerArgs << '-parameters'
}




dependencies {
    implementation 'org.springframework.ws:spring-ws-support:4.0.0'
    // your project dependencies

    implementation 'com.sun.xml.bind:jaxb-impl:4.0.1'
    implementation 'com.sun.xml.messaging.saaj:saaj-impl:3.0.0'
    implementation 'com.sun.xml.ws:jaxws-ri:4.0.0'

    implementation 'io.swagger.core.v3:swagger-jaxrs2-jakarta:2.2.7'

    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0'
    implementation 'jakarta.xml.soap:jakarta.xml.soap-api:3.0.0'
    implementation 'jakarta.xml.ws:jakarta.xml.ws-api:4.0.0'

    implementation 'org.jvnet.jaxb2_commons:jaxb2-namespace-prefix:2.0'
    implementation 'codes.rafael.jaxb2_commons:jaxb2-basics:3.0.0'
    implementation 'codes.rafael.jaxb2_commons:jaxb2-basics-runtime:3.0.0'

    implementation 'org.apache.cxf.xjc-utils:cxf-xjc-runtime:4.0.0'
    implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.1'

}




sourceSets.main.java.srcDirs "src/generated-sources/java"
configurations {
    wsdl2java
}

dependencies {
    wsdl2java (
            'com.sun.xml.bind:jaxb-impl:4.0.1',
            'org.apache.cxf.xjc-utils:cxf-xjc-runtime:4.0.0',
            'jakarta.xml.ws:jakarta.xml.ws-api:4.0.0',
            'com.sun.xml.ws:rt:4.0.0',
            'org.jvnet.jaxb2_commons:jaxb2-namespace-prefix:2.0',
            'codes.rafael.jaxb2_commons:jaxb2-basics-runtime:3.0.0',
            'codes.rafael.jaxb2_commons:jaxb2-basics:3.0.0'
    )
}

wsdl2java {
    wsdlDir = file("$projectDir/src/main/resources/test")
    stabilizeAndMergeObjectFactory = true
    includeJava8XmlDependencies = false
    cxfVersion = "4.0.0"
    cxfPluginVersion = "4.0.0"
    wsdlsToGenerate = [
            ['-xjc',
             '-xjc-Xnamespace-prefix',
             '-b',"$wsdlDir/binding.xml",
             '-autoNameResolution',
             '-verbose',
             "$wsdlDir/example.wsdl",

            ],
    ]
    generatedWsdlDir = file("src/generated/wsdl2java")
}

example.wsdl

<s0:definitions xmlns:s0="http://schemas.xmlsoap.org/wsdl/"
                xmlns:s2="java:com.test.example.mw"
                xmlns:s1="http://com/test/example/security/service"
                xmlns:s3="http://schemas.xmlsoap.org/wsdl/soap/"
                name="CommonSecurityConfidentialServiceDefinitions"
                targetNamespace="http://com/test/example/security/service">
    <s0:types>
        <xs:schema  xmlns:s1="java:com.test.example.mw"
                   xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   attributeFormDefault="unqualified" elementFormDefault="qualified"
                   targetNamespace="java:com.test.example.mw" >
            <xs:complexType name="MWException">
                <xs:annotation>
                    <xs:documentation/>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension xmlns:java="java:com.test.example.mw" base="java:MiddlewareExceptionEx">
                        <xs:sequence>
                            <xs:element minOccurs="0" name="ErrorCode" type="xs:string"/>
                            <xs:element minOccurs="0" name="ErrorCategory" type="xs:string"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="MiddlewareExceptionEx">
                <xs:annotation>
                    <xs:documentation/>
                </xs:annotation>
                <xs:complexContent>
                    <xs:extension xmlns:java="java:com.test.example.mw" base="java:MiddlewareException">
                        <xs:sequence>
                            <xs:element minOccurs="0" name="Subsystem" type="xs:string"/>
                            <xs:element minOccurs="0" name="EdifactRequest" type="xs:string"/>
                            <xs:element minOccurs="0" name="EdifactResponse" type="xs:string"/>
                            <xs:element minOccurs="0" name="AdditionalInfo" type="xs:string"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:complexType name="MiddlewareException">
                <xs:annotation>
                    <xs:documentation/>
                </xs:annotation>
                <xs:sequence>
                    <xs:element minOccurs="0" name="OriginalExceptionName" type="xs:string"/>
                    <xs:element minOccurs="0" name="LocalizedMessage" type="xs:string"/>
                    <xs:element minOccurs="0" name="ErrorType" type="xs:string"/>
                    <xs:element minOccurs="0" name="ErrorDescription" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
            <xs:complexType name="MWExceptionControl">
                <xs:complexContent>
                    <xs:extension xmlns:java="java:com.test.example.mw" base="java:MWException">
                        <xs:sequence>
                            <xs:element minOccurs="1" name="UciAction" type="xs:int"/>
                            <xs:element minOccurs="1" name="UcmAction" type="xs:int"/>
                            <xs:element minOccurs="1" name="SyntaxError" type="xs:int"/>
                            <xs:element minOccurs="0" name="UciInterChangeCtrlRef" type="xs:string"/>
                            <xs:element minOccurs="0" name="UciSenderIdentification" type="xs:string"/>
                            <xs:element minOccurs="0" name="UciRecipientIdentification" type="xs:string"/>
                            <xs:element minOccurs="1" name="Origin" type="xs:int"/>
                            <xs:element minOccurs="1" name="OpenFailed" type="xs:boolean"/>
                            <xs:element minOccurs="1" name="Inactive" type="xs:boolean"/>
                            <xs:element minOccurs="1" name="Duplicate" type="xs:boolean"/>
                        </xs:sequence>
                    </xs:extension>
                </xs:complexContent>
            </xs:complexType>
            <xs:element xmlns:java="java:com.test.example.mw" name="MWExceptionControl" type="java:MWExceptionControl"/>
            <xs:element xmlns:java="java:com.test.example.mw" name="MWException" type="java:MWException"/>
        </xs:schema>
    </s0:types>
</s0:definitions>

binding.xml

<?xml version="1.0"?>
<jaxws:bindings
  wsdlLocation="CSC.wsdl"
  xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <!-- https://stackoverflow.com/a/43560882/49489 -->
  <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
  <jaxws:bindings node="xs:schema[@targetNamespace='java:com.test.example.mw']">
    <jaxb:schemaBindings>
      <jaxb:package name="com.test.example.mw" />
    </jaxb:schemaBindings>
  </jaxws:bindings>
</jaxws:bindings>

Maybe someone know what is wrong in my configuration
enter image description here

It should generated packages like that enter image description here

pvermes and others added 30 commits May 1, 2021 15:03
Fixes the following error when referencing the `wsdl2java` task:

Could not determine the dependencies of task ':compileJava'.
> Cannot convert extension 'wsdl2java' to a task.
  The following types/formats are supported:
    - A String or CharSequence task name or path
    - A Task instance
    - A TaskReference instance
    - A Buildable instance
    - A TaskDependency instance
    - A Provider that represents a task output
    - A Provider instance that returns any of these types
    - A Closure instance that returns any of these types
    - A Callable instance that returns any of these types
    - An Iterable, Collection, Map or array instance that contains any of these types

 And enables us to do things like:

 dependsOn wsdl2javaTask
Add a flag to exclude java 8 xml dependencies during runtime
yupzip and others added 10 commits June 24, 2022 20:10
…issue

MISC: Updated plugin to reference ArrayList .size() instead of .size …
Add lineEnding extension property to configure generated files line endings
The current default value allows the plugin to grab an arbitrary version
of CXF. It is a time bomb for people who don't read the docs too
closely, have missed what the default is and didn't override it with a
specific version. Ideally, people should read the documentation, but the
reality is a touch different.

It seems that gradle automatically treats `@Input`s as non-nullable and
complains if any of them don't have a value, which is nice.

This is a breaking change for those who haven't specified these
parameters before. I don't think the breakage will be much worse than
what the release of CXF 4.0.0 at 22nd of December has done.

Alternatives: emphasize the danger of the default value in the README,
pick some fixed version arbitrarily. The former would help but still
leaves the human factor very relevant. The latter feels wrong, it's
probably not the choice the plugin should make. It also can lead to the
same kind of breakage as a CXF release now.
Require the user to specify cxfVersion and cxfPluginVersion
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants