/*
* SoapUI, Copyright (C) 2004-2016 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.impl;
import com.eviware.soapui.SoapUI;
import com.eviware.soapui.analytics.Analytics;
import com.eviware.soapui.analytics.SoapUIActions;
import com.eviware.soapui.config.InterfaceConfig;
import com.eviware.soapui.config.WsdlInterfaceConfig;
import com.eviware.soapui.impl.support.definition.support.InvalidDefinitionException;
import com.eviware.soapui.impl.wsdl.WsdlInterface;
import com.eviware.soapui.impl.wsdl.WsdlOperation;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.WsdlRequest;
import com.eviware.soapui.impl.wsdl.support.wsdl.WsdlImporter;
import com.eviware.soapui.impl.wsdl.support.wsdl.WsdlLoader;
import com.eviware.soapui.model.propertyexpansion.DefaultPropertyExpansionContext;
import com.eviware.soapui.model.propertyexpansion.PropertyExpander;
import com.eviware.soapui.model.propertyexpansion.PropertyExpansionContext;
import com.eviware.soapui.settings.WsdlSettings;
import com.eviware.soapui.support.SoapUIException;
import org.apache.log4j.Logger;
import javax.xml.namespace.QName;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class WsdlInterfaceFactory implements InterfaceFactory<WsdlInterface> {
public final static String WSDL_TYPE = "wsdl";
private final static Logger log = Logger.getLogger(WsdlInterfaceFactory.class);
public WsdlInterface build(WsdlProject project, InterfaceConfig config) {
return new WsdlInterface(project, (WsdlInterfaceConfig) config.changeType(WsdlInterfaceConfig.type));
}
public WsdlInterface createNew(WsdlProject project, String name) {
WsdlInterface iface = new WsdlInterface(project, (WsdlInterfaceConfig) project.getConfig().addNewInterface()
.changeType(WsdlInterfaceConfig.type));
iface.setName(name);
return iface;
}
public static WsdlInterface[] importWsdl(WsdlProject project, String url, boolean createRequests)
throws SoapUIException {
return importWsdl(project, url, createRequests, null, null);
}
public static WsdlInterface[] importWsdl(WsdlProject project, String url, boolean createRequests,
WsdlLoader wsdlLoader) throws SoapUIException {
return importWsdl(project, url, createRequests, null, wsdlLoader);
}
public static WsdlInterface[] importWsdl(WsdlProject project, String url, boolean createRequests,
QName bindingName, WsdlLoader wsdlLoader) throws SoapUIException {
WsdlInterface[] result;
PropertyExpansionContext context = new DefaultPropertyExpansionContext(project.getModelItem());
url = PropertyExpander.expandProperties(context, url);
try {
result = WsdlImporter.importWsdl(project, url, bindingName, wsdlLoader);
} catch (InvalidDefinitionException e) {
throw e;
} catch (Exception e) {
log.error("Error importing wsdl: " + e);
SoapUI.logError(e);
throw new SoapUIException("Error importing wsdl", e);
}
try {
if (createRequests && result != null) {
for (WsdlInterface iface : result) {
for (int c = 0; c < iface.getOperationCount(); c++) {
WsdlOperation operation = iface.getOperationAt(c);
WsdlRequest request = operation.addNewRequest("Request 1");
try {
String requestContent = operation.createRequest(project.getSettings().getBoolean(
WsdlSettings.XML_GENERATION_ALWAYS_INCLUDE_OPTIONAL_ELEMENTS));
request.setRequestContent(requestContent);
} catch (Exception e) {
SoapUI.logError(e);
}
}
}
}
} catch (Exception e) {
log.error("Error creating requests: " + e.getMessage());
throw new SoapUIException("Error creating requests", e);
}
Analytics.trackAction(SoapUIActions.IMPORT_WSDL.getActionName());
return result;
}
public static void main(String[] args) throws URISyntaxException, IOException {
java.awt.Desktop.getDesktop().browse(new URI("http://www.sunet.se"));
}
}