[SWS-844] WebServiceTemplate(Marshaller marshaller) constructor doesn't call initDefaultStrategies() Created: 02/Aug/13  Updated: 19/Aug/13  Resolved: 19/Aug/13

Status: Resolved
Project: Spring Web Services
Component/s: None
Affects Version/s: None
Fix Version/s: 2.1.4

Type: Bug Priority: Minor
Reporter: Patrick Grimard Assignee: Arjen Poutsma
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

I noticed this morning that when creating a new WebServiceTemplate using the default no arg constructor, the behaviour is different compared to using the constructor that accepts a Marshaller arg. The constructor with the Marshaller arg doesn't call the initDefaultStrategies() method, and therefore calling methods on the template throws exceptions that you don't get if using the no arg constructor and just call the setMarshaller() and setUnmarshaller() methods.

Here's the 2 constructors source:

public WebServiceTemplate() {
    initDefaultStrategies();
}
 
public WebServiceTemplate(Marshaller marshaller) {
    Assert.notNull(marshaller, "marshaller must not be null");
    if (!(marshaller instanceof Unmarshaller)) {
        throw new IllegalArgumentException("Marshaller [" + marshaller + "] does not implement the Unmarshaller " +
                "interface. Please set an Unmarshaller explicitly by using the " +
                "WebServiceTemplate(Marshaller, Unmarshaller) constructor.");
    }
    else {
        this.setMarshaller(marshaller);
        this.setUnmarshaller((Unmarshaller) marshaller);
    }
}


Generated at Thu Dec 14 06:04:17 UTC 2017 using JIRA 6.4.14#64029-sha1:ae256fe0fbb912241490ff1cecfb323ea0905ca5.