use of org.wso2.carbon.apimgt.impl.wsdl.model.WSDLInfo in project carbon-apimgt by wso2.
the class MappingUtil method toWSDLValidationResponseDTO.
/**
* Map WSDLInfo to APIDefinitionValidationResponseDTO
*
* @param info WSDLInfo object
* @return {@link APIDefinitionValidationResponseDTO} based on provided {@link WSDLInfo} object
*/
public static APIDefinitionValidationResponseDTO toWSDLValidationResponseDTO(WSDLInfo info) {
APIDefinitionValidationResponseDTO wsdlValidationResponseDTO = new APIDefinitionValidationResponseDTO();
wsdlValidationResponseDTO.setIsValid(info.getVersion() != null);
APIDefinitionValidationResponse_wsdlInfoDTO infoDTO = new APIDefinitionValidationResponse_wsdlInfoDTO();
infoDTO.setVersion(info.getVersion());
APIDefinitionValidationResponse_wsdlInfo_endpointsDTO endpointsDTO;
if (info.getEndpoints() != null) {
for (String endpointName : info.getEndpoints().keySet()) {
endpointsDTO = new APIDefinitionValidationResponse_wsdlInfo_endpointsDTO();
endpointsDTO.setName(endpointName);
endpointsDTO.setLocation(info.getEndpoints().get(endpointName));
infoDTO.addEndpointsItem(endpointsDTO);
}
}
// currently operations are supported only in WSDL 1.1
if (APIMgtConstants.WSDLConstants.WSDL_VERSION_11.equals(info.getVersion())) {
APIDefinitionValidationResponse_wsdlInfo_bindingInfoDTO bindingInfoDTO = new APIDefinitionValidationResponse_wsdlInfo_bindingInfoDTO();
bindingInfoDTO.setHasHttpBinding(info.hasHttpBindingOperations());
bindingInfoDTO.setHasSoapBinding(info.hasSoapBindingOperations());
infoDTO.setBindingInfo(bindingInfoDTO);
}
wsdlValidationResponseDTO.setWsdlInfo(infoDTO);
return wsdlValidationResponseDTO;
}
use of org.wso2.carbon.apimgt.impl.wsdl.model.WSDLInfo in project carbon-apimgt by wso2.
the class ApisApiServiceImplTestCase method testApisValidateDefinitionPostWSDLArchive.
@Test
public void testApisValidateDefinitionPostWSDLArchive() throws Exception {
printTestMethodName();
File file = new File(getClass().getClassLoader().getResource(WSDL_ZIP_LOCATION).getFile());
FileInputStream fis = new FileInputStream(file);
FileInfo fileInfo = new FileInfo();
fileInfo.setFileName(WSDL_ZIP);
ApisApiServiceImpl apisApiService = new ApisApiServiceImpl();
APIPublisher apiPublisher = powerMockDefaultAPIPublisher();
WSDLArchiveInfo archiveInfo = new WSDLArchiveInfo("/tmp", "sample.zip");
WSDLInfo wsdlInfo = new WSDLInfo();
wsdlInfo.setVersion("1.1");
archiveInfo.setWsdlInfo(wsdlInfo);
Mockito.doReturn(archiveInfo).doThrow(new IllegalArgumentException()).when(apiPublisher).extractAndValidateWSDLArchive(fis);
Response response = apisApiService.apisValidateDefinitionPost(WSDL, fis, fileInfo, null, getRequest());
fis.close();
assertEquals(response.getStatus(), 200);
assertTrue(response.getEntity() instanceof APIDefinitionValidationResponseDTO);
assertTrue(((APIDefinitionValidationResponseDTO) response.getEntity()).getIsValid());
}
use of org.wso2.carbon.apimgt.impl.wsdl.model.WSDLInfo in project carbon-apimgt by wso2.
the class ApisApiServiceImpl method apisValidateDefinitionPost.
/**
* Validates a provided API definition
*
* @param type API definition type (SWAGGER or WSDL)
* @param fileInputStream file content stream
* @param fileDetail file details
* @param url URL of the definition
* @param request msf4j request
* @return API definition validation information
* @throws NotFoundException
*/
@Override
public Response apisValidateDefinitionPost(String type, InputStream fileInputStream, FileInfo fileDetail, String url, Request request) throws NotFoundException {
String errorMessage = "Error while validating the definition";
String username = RestApiUtil.getLoggedInUsername(request);
try {
APIPublisher apiPublisher = RestAPIPublisherUtil.getApiPublisher(username);
if (StringUtils.isBlank(type)) {
type = APIDefinitionValidationResponseDTO.DefinitionTypeEnum.SWAGGER.toString();
}
Response responseIfParamsInvalid = buildResponseIfParamsInvalid(type, fileInputStream, url);
if (responseIfParamsInvalid != null) {
return responseIfParamsInvalid;
}
if (APIDefinitionValidationResponseDTO.DefinitionTypeEnum.SWAGGER.toString().equals(type)) {
if (log.isDebugEnabled()) {
log.debug("Validating a swagger file.");
}
// TODO implement swagger validation
return Response.noContent().build();
} else {
// WSDL type
WSDLProcessor processor = null;
WSDLInfo info = null;
if (!StringUtils.isBlank(url)) {
processor = WSDLProcessFactory.getInstance().getWSDLProcessor(url);
info = processor.getWsdlInfo();
if (log.isDebugEnabled()) {
log.debug("Successfully validated WSDL URL " + url);
}
} else {
if (fileDetail.getFileName().endsWith(".zip")) {
WSDLArchiveInfo archiveInfo = apiPublisher.extractAndValidateWSDLArchive(fileInputStream);
info = archiveInfo.getWsdlInfo();
if (log.isDebugEnabled()) {
log.debug("Successfully validated WSDL archive " + fileDetail.getFileName());
}
} else if (fileDetail.getFileName().endsWith(".wsdl")) {
byte[] wsdlContent = IOUtils.toByteArray(fileInputStream);
processor = WSDLProcessFactory.getInstance().getWSDLProcessor(wsdlContent);
info = processor.getWsdlInfo();
if (log.isDebugEnabled()) {
log.debug("Successfully validated WSDL file " + fileDetail.getFileName());
}
} else {
String msg = "Unsupported extension type of file: " + fileDetail.getFileName();
log.error(msg);
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(msg, 900700L, msg);
return Response.status(Response.Status.BAD_REQUEST).entity(errorDTO).build();
}
}
if (info != null) {
APIDefinitionValidationResponseDTO responseDTO = MappingUtil.toWSDLValidationResponseDTO(info);
return Response.ok(responseDTO).build();
}
APIDefinitionValidationResponseDTO responseDTO = new APIDefinitionValidationResponseDTO();
responseDTO.isValid(false);
return Response.ok().entity(responseDTO).build();
}
} catch (APIManagementException e) {
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(e.getErrorHandler());
log.error(errorMessage, e);
return Response.status(e.getErrorHandler().getHttpStatusCode()).entity(errorDTO).build();
} catch (IOException e) {
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(errorMessage, 900313L, errorMessage);
log.error(errorMessage, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorDTO).build();
}
}
use of org.wso2.carbon.apimgt.impl.wsdl.model.WSDLInfo in project carbon-apimgt by wso2.
the class WSDL11SOAPOperationExtractor method getWsdlInfo.
public WSDLInfo getWsdlInfo() throws APIMgtWSDLException {
WSDLInfo wsdlInfo = new WSDLInfo();
if (wsdlDefinition != null) {
Set<WSDLSOAPOperation> soapOperations = getSoapBindingOperations(wsdlDefinition);
wsdlInfo.setVersion(WSDL_VERSION_11);
if (!soapOperations.isEmpty()) {
wsdlInfo.setHasSoapBindingOperations(true);
wsdlInfo.setSoapBindingOperations(soapOperations);
} else {
wsdlInfo.setHasSoapBindingOperations(false);
}
wsdlInfo.setHasSoapBindingOperations(hasSoapBindingOperations());
wsdlInfo.setHasSoap12BindingOperations(hasSoap12BindingOperations());
if (parameterModelMap.size() > 0) {
wsdlInfo.setParameterModelMap(parameterModelMap);
}
} else {
throw new APIMgtWSDLException("WSDL Definition is not initialized.");
}
return wsdlInfo;
}
use of org.wso2.carbon.apimgt.impl.wsdl.model.WSDLInfo in project carbon-apimgt by wso2.
the class SOAPOperationBindingUtils method getSoapOperationMapping.
/**
* Gets soap operations to rest resources mapping for a wsdl byte content
*
* @param wsdlContent WSDL byte content
* @return swagger json string with the soap operation mapping
* @throws APIManagementException if an error occurs when generating swagger
*/
public static String getSoapOperationMapping(byte[] wsdlContent) throws APIManagementException {
WSDL11SOAPOperationExtractor processor = APIMWSDLReader.getWSDLSOAPOperationExtractor(wsdlContent);
WSDLInfo wsdlInfo = processor.getWsdlInfo();
return getGeneratedSwaggerFromWSDL(wsdlInfo);
}
Aggregations