private void setServiceDefinitionForWSDL2(org.apache.woden.wsdl20.Description definition, API api) throws APIManagementException { org.apache.woden.wsdl20.Service[] serviceMap = definition.getServices(); URL addressURI; try { for (org.apache.woden.wsdl20.Service svc : serviceMap) { Endpoint[] portMap = svc.getEndpoints(); for (Endpoint endpoint : portMap) { EndpointElement element = endpoint.toElement(); addressURI = endpoint.getAddress().toURL(); if (addressURI == null) { break; } else { String endpointTransport = determineURLTransport(endpoint.getAddress().getScheme(), api.getTransports()); setAddressUrl( element, new URI( APIUtil.getGatewayendpoint(endpointTransport) + api.getContext() + "/" + api.getId().getVersion())); } } } } catch (Exception e) { log.error("Error occured while getting the wsdl address location", e); throw new APIManagementException(e); } }
@Override public VelocityContext getContext() { VelocityContext context = super.getContext(); if (api.getTransports().contains(",")) { List<String> transports = new ArrayList<String>(Arrays.asList(api.getTransports().split(","))); if (transports.contains(Constants.TRANSPORT_HTTP) && transports.contains(Constants.TRANSPORT_HTTPS)) { context.put("transport", ""); } } else { context.put("transport", api.getTransports()); } return context; }
/** * Get the addressURl from the Extensibility element * * @param exElement - {@link ExtensibilityElement} * @throws APIManagementException */ private void setAddressUrl(ExtensibilityElement exElement, String transports, API api) throws APIManagementException { if (exElement instanceof SOAP12AddressImpl) { ((SOAP12AddressImpl) exElement) .setLocationURI(APIUtil.getGatewayendpoint(transports) + api.getContext()); } else if (exElement instanceof SOAPAddressImpl) { ((SOAPAddressImpl) exElement) .setLocationURI(APIUtil.getGatewayendpoint(transports) + api.getContext()); } else if (exElement instanceof HTTPAddressImpl) { ((HTTPAddressImpl) exElement) .setLocationURI(APIUtil.getGatewayendpoint(transports) + api.getContext()); } else { String msg = "Unsupported WSDL errors!"; log.error(msg); throw new APIManagementException(msg); } }
/** * Create the WSDL definition <javax.wsdl.Definition> from the baseURI of the WSDL * * @return {@link Definition} - WSDL4j definition constructed form the wsdl original baseuri * @throws APIManagementException * @throws WSDLException */ private Definition readWSDLFile(API api) throws APIManagementException, WSDLException { WSDLReader reader = getWsdlFactoryInstance().newWSDLReader(); // switch off the verbose mode reader.setFeature(JAVAX_WSDL_VERBOSE_MODE, false); reader.setFeature("javax.wsdl.importDocuments", false); Definition wsdlDefinition; if (log.isDebugEnabled()) { log.debug("Reading the WSDL. Base uri is " + baseURI); } wsdlDefinition = reader.readWSDL(api.getWsdlUrl()); return wsdlDefinition; }
/** * Clear the actual service Endpoint and use Gateway Endpoint instead of the actual Endpoint. * * @param definition - {@link Definition} - WSDL4j wsdl definition * @throws APIManagementException */ private void setServiceDefinition(Definition definition, API api) throws APIManagementException { Map serviceMap = definition.getAllServices(); Iterator serviceItr = serviceMap.entrySet().iterator(); URL addressURI; try { while (serviceItr.hasNext()) { Map.Entry svcEntry = (Map.Entry) serviceItr.next(); Service svc = (Service) svcEntry.getValue(); Map portMap = svc.getPorts(); Iterator portItr = portMap.entrySet().iterator(); while (portItr.hasNext()) { Map.Entry portEntry = (Map.Entry) portItr.next(); Port port = (Port) portEntry.getValue(); List<ExtensibilityElement> extensibilityElementList = port.getExtensibilityElements(); for (int i = 0; i < extensibilityElementList.size(); i++) { ExtensibilityElement extensibilityElement = (ExtensibilityElement) port.getExtensibilityElements().get(i); addressURI = new URL(getAddressUrl(extensibilityElement)); if (addressURI == null) { break; } else { String endpointTransport = determineURLTransport(addressURI.getProtocol(), api.getTransports()); setAddressUrl(extensibilityElement, endpointTransport, api); } } } } } catch (Exception e) { log.error("Error occured while getting the wsdl address location", e); throw new APIManagementException(e); } }
public int compare(API api1, API api2) { return api1.getId().getApiName().compareToIgnoreCase(api2.getId().getApiName()); }