[
https://issues.apache.org/jira/browse/AXIS2-6033?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17523867#comment-17523867
]
Raj K commented on AXIS2-6033:
------------------------------
My suggestion is to adjust the imports on parent definition. The method -
{color:#ff8b00}changeImportAndIncludeLocations {color}is already taking care of
adjusting imports on all child/referenced xsd, wsdl files . So we can call this
method with parent definition
In axis2-kernel-1.8.0 - AxisService.java . Highlighted added code in orange
public void printUserWSDL(OutputStream out, String wsdlName, String ip)
throws AxisFault {
Definition definition = null;
// first find the correct wsdl definition
Parameter wsdlParameter = getParameter(WSDLConstants.WSDL_4_J_DEFINITION);
if (wsdlParameter != null) {
definition = (Definition) wsdlParameter.getValue(); {color:#c1c7d0}// This is
parent definition{color}
}
{color:#ff8b00} if (!wsdlImportLocationAdjusted) {{color}
{color:#ff8b00} changeImportAndIncludeLocations(definition);
{color:#c1c7d0}//Adjust imports on parent definition and all included xsd, wsdl
files in parent definition{color}{color}
{color:#ff8b00} wsdlImportLocationAdjusted = true;{color}
{color:#ff8b00} }{color}
if (definition != null) {
try {
printDefinitionObject(getWSDLDefinition(definition, wsdlName),
out, ip); {color:#c1c7d0}// Currently we are adjusting imports on child
definition if child wsdl file is accessed first{color}
} catch (WSDLException e) {
throw AxisFault.makeFault(e);
}
} else {
printWSDLError(out);
}
}
I need to verify scenarios and run some more tests. But please review above and
let me know if you see any concerns
> wsdl import locations are not getting updated correctly if wsdl is we are
> importing .wsdl file in wsdl file
> -----------------------------------------------------------------------------------------------------------
>
> Key: AXIS2-6033
> URL: https://issues.apache.org/jira/browse/AXIS2-6033
> Project: Axis2
> Issue Type: Bug
> Components: wsdl
> Affects Versions: 1.7.9, 1.8.0
> Reporter: Raj K
> Priority: Major
>
> In org.apache.axis2.description.AxisService#changeImportAndIncludeLocations
> we are updating import locations in wsdl file and any files being imported in
> the wsdl and marking the service as wsdlImportLocationAdjusted=true when the
> service/wsdl is first loaded. This is having issue if we are importing a
> .wsdl file in parent wsdl file.
> We have below structure of wsdl
> Main wsdl file - imports 2 files - bindings.wsdl and types.xsd
> If main wsdl is accessed first then the import locations are getting adjusted
> in all files and marking the axisservice as wsdlImportLocationAdjusted=true
> But if bindings.wsdl is accessed first then the import locations in parent
> are not updated. Only import location in bindings.wsdl and any imported files
> in this wsdl are getting adjusted. And still the service is getting marked as
> wsdlImportLocationAdjusted=true. So the parent is never processed for
> location adjustments as wsdlImportLocationAdjusted is set to true
>
> Refer below from AxisService
> private synchronized void printDefinitionObject(Definition definition,
> OutputStream out, String requestIP) throws AxisFault, WSDLException {
> if (this.isModifyUserWSDLPortAddress()) {
> this.setPortAddress(definition, requestIP);
> }
> *if (!this.wsdlImportLocationAdjusted) {*
> this.changeImportAndIncludeLocations(definition);
> this.wsdlImportLocationAdjusted = true;
> }
> WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
> writer.writeWSDL(definition, out);
> }
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]