Search in sources :

Example 1 with WSDLEndpoint

use of org.apache.synapse.endpoints.WSDLEndpoint in project wso2-synapse by wso2.

the class WeightedRRLCAlgorithm method intialize.

/**
 * Initialize the algorithm reading the configurations from the endpoints.
 */
private void intialize() {
    // get the global properties
    if (loadBalanceEndpoint != null && loadBalanceEndpoint instanceof PropertyInclude) {
        PropertyInclude include = (PropertyInclude) loadBalanceEndpoint;
        MediatorProperty val = include.getProperty(LB_WEIGHTED_RRLC_ROUNDS_PER_RECAL);
        if (val != null) {
            roundsPerRecalculation = Integer.parseInt(val.getValue());
        }
    }
    // initialize the states list, this runs only once
    list = new WeightedState[endpoints.size()];
    int totalWeight = 0;
    for (Endpoint endpoint : endpoints) {
        if (endpoint instanceof PropertyInclude) {
            PropertyInclude include = (PropertyInclude) endpoint;
            MediatorProperty val = include.getProperty(LB_WEIGHTED_RRLC_WEIGHT);
            if (val == null) {
                String msg = "Parameter " + "loadbalance.weighted.weight should be specified for every " + "endpoint in the load balance group";
                log.error(msg);
                throw new SynapseException(msg);
            }
            totalWeight += Integer.parseInt(val.getValue());
        }
    }
    this.totalWeight = totalWeight;
    for (int i = 0; i < endpoints.size(); i++) {
        Endpoint e = endpoints.get(i);
        if (e instanceof PropertyInclude) {
            PropertyInclude include = (PropertyInclude) e;
            MediatorProperty weight = include.getProperty(LB_WEIGHTED_RRLC_WEIGHT);
            String key;
            URL url;
            if (e instanceof AddressEndpoint) {
                AddressEndpoint addressEndpoint = (AddressEndpoint) e;
                try {
                    url = new URL(addressEndpoint.getDefinition().getAddress());
                } catch (MalformedURLException e1) {
                    String msg = "Mulformed URL in address endpoint";
                    log.error(msg);
                    throw new SynapseException(msg);
                }
            } else if (e instanceof WSDLEndpoint) {
                WSDLEndpoint wsdlEndpoint = (WSDLEndpoint) e;
                try {
                    url = new URL(wsdlEndpoint.getDefinition().getAddress());
                } catch (MalformedURLException e1) {
                    String msg = "Mulformed URL in address endpoint";
                    log.error(msg);
                    throw new SynapseException(msg);
                }
            } else {
                String msg = "Only AddressEndpoint and WSDLEndpoint can be used " + "with WeightedRRLCAlgorithm";
                log.error(msg);
                throw new SynapseException(msg);
            }
            // construct the key
            key = url.getHost() + ":" + url.getPort();
            WeightedState state = new WeightedState(Integer.parseInt(weight.getValue()), i, key);
            MediatorProperty minimumWeight = include.getProperty(LB_WEIGHTED_RRLC_WEIGHT_MIN);
            if (minimumWeight != null) {
                state.setMinWeight(Integer.parseInt(minimumWeight.getValue()));
            }
            MediatorProperty maxWeight = include.getProperty(LB_WEIGHTED_RRLC_WEIGHT_MAX);
            if (maxWeight != null) {
                state.setMaxWeight(Integer.parseInt(maxWeight.getValue()));
            }
            list[i] = state;
        }
    }
    // sort the states according to the initial fixed weights
    Arrays.sort(list, new Comparator<WeightedState>() {

        public int compare(WeightedState o1, WeightedState o2) {
            return o2.getFixedWeight() - o1.getFixedWeight();
        }
    });
}
Also used : WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) MalformedURLException(java.net.MalformedURLException) MediatorProperty(org.apache.synapse.mediators.MediatorProperty) AddressEndpoint(org.apache.synapse.endpoints.AddressEndpoint) WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) AddressEndpoint(org.apache.synapse.endpoints.AddressEndpoint) Endpoint(org.apache.synapse.endpoints.Endpoint) SynapseException(org.apache.synapse.SynapseException) PropertyInclude(org.apache.synapse.PropertyInclude) WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) AddressEndpoint(org.apache.synapse.endpoints.AddressEndpoint) Endpoint(org.apache.synapse.endpoints.Endpoint) URL(java.net.URL)

Example 2 with WSDLEndpoint

use of org.apache.synapse.endpoints.WSDLEndpoint in project wso2-synapse by wso2.

the class SendMediatorSerializationTest method testWSDLEndpointSerialization.

public void testWSDLEndpointSerialization() {
    String sendConfig = "<send xmlns=\"http://ws.apache.org/ns/synapse\">" + "<endpoint>" + "<wsdl uri='file:src/test/resources/esbservice.wsdl' service='esbservice' port='esbserviceSOAP11port_http'>" + "<enableAddressing/>" + "</wsdl>" + "</endpoint>" + "</send>";
    OMElement config1 = createOMElement(sendConfig);
    SendMediator send1 = (SendMediator) factory.createMediator(config1, new Properties());
    OMElement config2 = serializer.serializeMediator(null, send1);
    SendMediator send2 = (SendMediator) factory.createMediator(config2, new Properties());
    assertTrue("Top level endpoint should be a WSDL endpoint.", send1.getEndpoint() instanceof WSDLEndpoint);
    WSDLEndpoint ep1 = (WSDLEndpoint) send1.getEndpoint();
    assertTrue("Top level endpoint should be a WSDL endpoint.", send2.getEndpoint() instanceof WSDLEndpoint);
    WSDLEndpoint ep2 = (WSDLEndpoint) send2.getEndpoint();
    assertEquals("Service name is not serialized properly.", ep1.getServiceName(), ep2.getServiceName());
    assertEquals("Port name is not serialized properly", ep1.getPortName(), ep2.getPortName());
    assertEquals("WSDL URI is not serialized properly", ep1.getWsdlURI(), ep2.getWsdlURI());
    assertEquals("Addressing information is not serialized properly", ep1.getDefinition().isAddressingOn(), ep2.getDefinition().isAddressingOn());
}
Also used : WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) OMElement(org.apache.axiom.om.OMElement) SendMediator(org.apache.synapse.mediators.builtin.SendMediator) Properties(java.util.Properties)

Example 3 with WSDLEndpoint

use of org.apache.synapse.endpoints.WSDLEndpoint in project wso2-synapse by wso2.

the class CallMediatorSerializationTest method testWSDLEndpointSerialization.

public void testWSDLEndpointSerialization() {
    String callConfig = "<call xmlns=\"http://ws.apache.org/ns/synapse\">" + "<endpoint>" + "<wsdl uri='file:src/test/resources/esbservice.wsdl' service='esbservice' port='esbserviceSOAP11port_http'>" + "<enableAddressing/>" + "</wsdl>" + "</endpoint>" + "</call>";
    OMElement config1 = createOMElement(callConfig);
    CallMediator call1 = (CallMediator) factory.createMediator(config1, new Properties());
    OMElement config2 = serializer.serializeMediator(null, call1);
    CallMediator call2 = (CallMediator) factory.createMediator(config2, new Properties());
    assertTrue("Top level endpoint should be a WSDL endpoint.", call1.getEndpoint() instanceof WSDLEndpoint);
    WSDLEndpoint ep1 = (WSDLEndpoint) call1.getEndpoint();
    assertTrue("Top level endpoint should be a WSDL endpoint.", call2.getEndpoint() instanceof WSDLEndpoint);
    WSDLEndpoint ep2 = (WSDLEndpoint) call2.getEndpoint();
    assertEquals("Service name is not serialized properly.", ep1.getServiceName(), ep2.getServiceName());
    assertEquals("Port name is not serialized properly", ep1.getPortName(), ep2.getPortName());
    assertEquals("WSDL URI is not serialized properly", ep1.getWsdlURI(), ep2.getWsdlURI());
    assertEquals("Addressing information is not serialized properly", ep1.getDefinition().isAddressingOn(), ep2.getDefinition().isAddressingOn());
}
Also used : WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) OMElement(org.apache.axiom.om.OMElement) CallMediator(org.apache.synapse.mediators.builtin.CallMediator) Properties(java.util.Properties)

Example 4 with WSDLEndpoint

use of org.apache.synapse.endpoints.WSDLEndpoint in project wso2-synapse by wso2.

the class ProxyService method buildAxisService.

/**
 * Build the underlying Axis2 service from the Proxy service definition
 *
 * @param synCfg  the Synapse configuration
 * @param axisCfg the Axis2 configuration
 * @return the Axis2 service for the Proxy
 */
public AxisService buildAxisService(SynapseConfiguration synCfg, AxisConfiguration axisCfg) {
    auditInfo("Building Axis service for Proxy service : " + name);
    if (pinnedServers != null && !pinnedServers.isEmpty()) {
        Parameter param = axisCfg.getParameter(SynapseConstants.SYNAPSE_ENV);
        if (param != null && param.getValue() instanceof SynapseEnvironment) {
            SynapseEnvironment synEnv = (SynapseEnvironment) param.getValue();
            String serverName = synEnv != null ? synEnv.getServerContextInformation().getServerConfigurationInformation().getServerName() : "localhost";
            if (!pinnedServers.contains(serverName)) {
                log.info("Server name " + serverName + " not in pinned servers list. " + "Not deploying Proxy service : " + name);
                return null;
            }
        }
    }
    // get the wsdlElement as an OMElement
    if (trace()) {
        trace.info("Loading the WSDL : " + (publishWSDLEndpoint != null ? " endpoint = " + publishWSDLEndpoint : (wsdlKey != null ? " key = " + wsdlKey : (wsdlURI != null ? " URI = " + wsdlURI : " <Inlined>"))));
    }
    InputStream wsdlInputStream = null;
    OMElement wsdlElement = null;
    boolean wsdlFound = false;
    String publishWSDL = null;
    SynapseEnvironment synEnv = SynapseConfigUtils.getSynapseEnvironment(axisCfg);
    String synapseHome = synEnv != null ? synEnv.getServerContextInformation().getServerConfigurationInformation().getSynapseHome() : "";
    if (wsdlKey != null) {
        synCfg.getEntryDefinition(wsdlKey);
        Object keyObject = synCfg.getEntry(wsdlKey);
        // start of fix for ESBJAVA-2641
        if (keyObject == null) {
            synCfg.removeEntry(wsdlKey);
        }
        // end of fix for ESBJAVA-2641
        if (keyObject instanceof OMElement) {
            wsdlElement = (OMElement) keyObject;
        }
        wsdlFound = true;
    } else if (inLineWSDL != null) {
        wsdlElement = (OMElement) inLineWSDL;
        wsdlFound = true;
    } else if (wsdlURI != null) {
        try {
            URL url = wsdlURI.toURL();
            publishWSDL = url.toString();
            OMNode node = SynapseConfigUtils.getOMElementFromURL(publishWSDL, synapseHome);
            if (node instanceof OMElement) {
                wsdlElement = (OMElement) node;
            }
            wsdlFound = true;
        } catch (MalformedURLException e) {
            handleException("Malformed URI for wsdl", e);
        } catch (IOException e) {
            // handleException("Error reading from wsdl URI", e);
            boolean enablePublishWSDLSafeMode = false;
            Map proxyParameters = this.getParameterMap();
            if (!proxyParameters.isEmpty()) {
                if (proxyParameters.containsKey("enablePublishWSDLSafeMode")) {
                    enablePublishWSDLSafeMode = Boolean.parseBoolean(proxyParameters.get("enablePublishWSDLSafeMode").toString().toLowerCase());
                } else {
                    if (trace()) {
                        trace.info("WSDL was unable to load for: " + publishWSDL);
                        trace.info("Please add <syn:parameter name=\"enableURISafeMode\">true" + "</syn:parameter> to proxy service.");
                    }
                    handleException("Error reading from wsdl URI", e);
                }
            }
            if (enablePublishWSDLSafeMode) {
                // !!!Need to add a reload function... And display that the wsdl/service is offline!!!
                if (trace()) {
                    trace.info("WSDL was unable to load for: " + publishWSDL);
                    trace.info("enableURISafeMode: true");
                }
                log.warn("Unable to load the WSDL for : " + name, e);
                return null;
            } else {
                if (trace()) {
                    trace.info("WSDL was unable to load for: " + publishWSDL);
                    trace.info("enableURISafeMode: false");
                }
                handleException("Error reading from wsdl URI", e);
            }
        }
    } else if (publishWSDLEndpoint != null) {
        try {
            URL url = null;
            Endpoint ep = synCfg.getEndpoint(publishWSDLEndpoint);
            if (ep == null) {
                handleException("Unable to resolve WSDL url. " + publishWSDLEndpoint + " is null");
            }
            if (ep instanceof AddressEndpoint) {
                url = new URL(((AddressEndpoint) (ep)).getDefinition().getAddress() + "?wsdl");
            } else if (ep instanceof WSDLEndpoint) {
                url = new URL(((WSDLEndpoint) (ep)).getWsdlURI());
            } else {
                handleException("Unable to resolve WSDL url. " + publishWSDLEndpoint + " is not a AddressEndpoint or WSDLEndpoint");
            }
            publishWSDL = url.toString();
            OMNode node = SynapseConfigUtils.getOMElementFromURL(publishWSDL, synapseHome);
            if (node instanceof OMElement) {
                wsdlElement = (OMElement) node;
            }
            wsdlFound = true;
        } catch (MalformedURLException e) {
            handleException("Malformed URI for wsdl", e);
        } catch (IOException e) {
            // handleException("Error reading from wsdl URI", e);
            boolean enablePublishWSDLSafeMode = false;
            Map proxyParameters = this.getParameterMap();
            if (!proxyParameters.isEmpty()) {
                if (proxyParameters.containsKey("enablePublishWSDLSafeMode")) {
                    enablePublishWSDLSafeMode = Boolean.parseBoolean(proxyParameters.get("enablePublishWSDLSafeMode").toString().toLowerCase());
                } else {
                    if (trace()) {
                        trace.info("WSDL was unable to load for: " + publishWSDL);
                        trace.info("Please add <syn:parameter name=\"enableURISafeMode\">true" + "</syn:parameter> to proxy service.");
                    }
                    handleException("Error reading from wsdl URI " + publishWSDL, e);
                }
            }
            if (enablePublishWSDLSafeMode) {
                // !!!Need to add a reload function... And display that the wsdl/service is offline!!!
                if (trace()) {
                    trace.info("WSDL was unable to load for: " + publishWSDL);
                    trace.info("enableURISafeMode: true");
                }
                log.warn("Unable to load the WSDL for : " + name, e);
                return null;
            } else {
                if (trace()) {
                    trace.info("WSDL was unable to load for: " + publishWSDL);
                    trace.info("enableURISafeMode: false");
                }
                handleException("Error reading from wsdl URI " + publishWSDL, e);
            }
        }
    } else {
        // our SynapseDispatcher will properly dispatch to
        if (trace())
            trace.info("Did not find a WSDL. Assuming a POX or Legacy service");
        axisService = new AxisService();
        AxisOperation mediateOperation = new InOutAxisOperation(SynapseConstants.SYNAPSE_OPERATION_NAME);
        // Set the names of the two messages so that Axis2 is able to produce a WSDL (see SYNAPSE-366):
        mediateOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE).setName("in");
        mediateOperation.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE).setName("out");
        axisService.addOperation(mediateOperation);
    }
    // if a WSDL was found
    if (wsdlElement != null) {
        OMNamespace wsdlNamespace = wsdlElement.getNamespace();
        // if preservePolicy is set to 'false', remove the security policy content of publish wsdl
        if (preservePolicy != null && preservePolicy.equals("false")) {
            if (org.apache.axis2.namespace.Constants.NS_URI_WSDL11.equals(wsdlNamespace.getNamespaceURI())) {
                removePolicyOfWSDL(wsdlElement);
            }
        }
        // serialize and create an input stream to read WSDL
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            if (trace())
                trace.info("Serializing wsdlElement found to build an Axis2 service");
            wsdlElement.serialize(baos);
            wsdlInputStream = new ByteArrayInputStream(baos.toByteArray());
        } catch (XMLStreamException e) {
            handleException("Error converting to a StreamSource", e);
        }
        if (wsdlInputStream != null) {
            try {
                // detect version of the WSDL 1.1 or 2.0
                if (trace())
                    trace.info("WSDL Namespace is : " + wsdlNamespace.getNamespaceURI());
                if (wsdlNamespace != null) {
                    WSDLToAxisServiceBuilder wsdlToAxisServiceBuilder = null;
                    if (WSDL2Constants.WSDL_NAMESPACE.equals(wsdlNamespace.getNamespaceURI())) {
                        wsdlToAxisServiceBuilder = new WSDL20ToAxisServiceBuilder(wsdlInputStream, null, null);
                    } else if (org.apache.axis2.namespace.Constants.NS_URI_WSDL11.equals(wsdlNamespace.getNamespaceURI())) {
                        wsdlToAxisServiceBuilder = new WSDL11ToAxisServiceBuilder(wsdlInputStream);
                    } else {
                        handleException("Unknown WSDL format.. not WSDL 1.1 or WSDL 2.0");
                    }
                    if (wsdlToAxisServiceBuilder == null) {
                        throw new SynapseException("Could not get the WSDL to Axis Service Builder");
                    }
                    wsdlToAxisServiceBuilder.setBaseUri(wsdlURI != null ? wsdlURI.toString() : synapseHome);
                    if (trace()) {
                        trace.info("Setting up custom resolvers");
                    }
                    // load the UserDefined WSDLResolver and SchemaURIResolver implementations
                    if (synCfg.getProperty(SynapseConstants.SYNAPSE_WSDL_RESOLVER) != null && synCfg.getProperty(SynapseConstants.SYNAPSE_SCHEMA_RESOLVER) != null) {
                        setUserDefinedResourceResolvers(synCfg, wsdlInputStream, wsdlToAxisServiceBuilder);
                    } else {
                        if (resourceMap != null) {
                            // if the resource map is available use it
                            wsdlToAxisServiceBuilder.setCustomResolver(new CustomXmlSchemaURIResolver(resourceMap, synCfg));
                            // Axis 2 also needs a WSDLLocator for WSDL 1.1 documents
                            if (wsdlToAxisServiceBuilder instanceof WSDL11ToAxisServiceBuilder) {
                                ((WSDL11ToAxisServiceBuilder) wsdlToAxisServiceBuilder).setCustomWSDLResolver(new CustomWSDLLocator(new InputSource(wsdlInputStream), wsdlURI != null ? wsdlURI.toString() : "", resourceMap, synCfg));
                            }
                        } else {
                            // if the resource map isn't available ,
                            // then each import URIs will be resolved using base URI
                            wsdlToAxisServiceBuilder.setCustomResolver(new CustomXmlSchemaURIResolver());
                            // Axis 2 also needs a WSDLLocator for WSDL 1.1 documents
                            if (wsdlToAxisServiceBuilder instanceof WSDL11ToAxisServiceBuilder) {
                                ((WSDL11ToAxisServiceBuilder) wsdlToAxisServiceBuilder).setCustomWSDLResolver(new CustomWSDLLocator(new InputSource(wsdlInputStream), wsdlURI != null ? wsdlURI.toString() : ""));
                            }
                        }
                    }
                    if (trace()) {
                        trace.info("Populating Axis2 service using WSDL");
                        if (trace.isTraceEnabled()) {
                            trace.trace("WSDL : " + wsdlElement.toString());
                        }
                    }
                    axisService = wsdlToAxisServiceBuilder.populateService();
                    // this is to clear the bindings and ports already in the WSDL so that the
                    // service will generate the bindings on calling the printWSDL otherwise
                    // the WSDL which will be shown is same as the original WSDL except for the
                    // service name
                    axisService.getEndpoints().clear();
                } else {
                    handleException("Unknown WSDL format.. not WSDL 1.1 or WSDL 2.0");
                }
            } catch (AxisFault af) {
                handleException("Error building service from WSDL", af);
            } catch (IOException ioe) {
                handleException("Error reading WSDL", ioe);
            }
        }
    } else if (wsdlFound) {
        handleException("Couldn't build the proxy service : " + name + ". Unable to locate the specified WSDL to build the service");
    }
    // default Service destination
    if (axisService == null) {
        throw new SynapseException("Could not create a proxy service");
    }
    axisService.setName(name);
    if (description != null) {
        axisService.setDocumentation(description);
    }
    // Setting file path for axis2 service
    if (filePath != null) {
        axisService.setFileName(filePath);
    }
    // destination
    if (transports == null || transports.size() == 0) {
    // default to all transports using service name as destination
    } else {
        if (trace())
            trace.info("Exposing transports : " + transports);
        axisService.setExposedTransports(transports);
    }
    // process parameters
    if (trace() && parameters.size() > 0) {
        trace.info("Setting service parameters : " + parameters);
    }
    for (Object o : parameters.keySet()) {
        String name = (String) o;
        Object value = parameters.get(name);
        Parameter p = new Parameter();
        p.setName(name);
        p.setValue(value);
        try {
            axisService.addParameter(p);
        } catch (AxisFault af) {
            handleException("Error setting parameter : " + name + "" + "to proxy service as a Parameter", af);
        }
    }
    if (JavaUtils.isTrueExplicitly(axisService.getParameterValue(ABSOLUTE_SCHEMA_URL_PARAM))) {
        axisService.setCustomSchemaNamePrefix("");
    }
    if (JavaUtils.isTrueExplicitly(axisService.getParameterValue(ABSOLUTE_PROXY_SCHEMA_URL_PARAM))) {
        axisService.setCustomSchemaNamePrefix("fullschemaurl");
    }
    if (JavaUtils.isTrueExplicitly(axisService.getParameterValue("disableOperationValidation"))) {
        try {
            AxisOperation defaultOp = processOperationValidation(axisService);
        // proxyServiceGroup.setParent(axisCfg);
        } catch (AxisFault axisFault) {
        // ignore
        }
    }
    boolean isNoSecPolicy = false;
    if (!policies.isEmpty()) {
        for (PolicyInfo pi : policies) {
            Policy policy = getPolicyFromKey(pi.getPolicyKey(), synCfg);
            if (policy == null) {
                handleException("Cannot find Policy from the key");
            }
            if (NO_SECURITY_POLICY.equals(policy.getId())) {
                isNoSecPolicy = true;
                log.info("NoSecurity Policy found, skipping policy attachment");
                continue;
            }
            if (pi.isServicePolicy()) {
                axisService.getPolicySubject().attachPolicy(policy);
            } else if (pi.isOperationPolicy()) {
                AxisOperation op = axisService.getOperation(pi.getOperation());
                if (op != null) {
                    op.getPolicySubject().attachPolicy(policy);
                } else {
                    handleException("Couldn't find the operation specified " + "by the QName : " + pi.getOperation());
                }
            } else if (pi.isMessagePolicy()) {
                if (pi.getOperation() != null) {
                    AxisOperation op = axisService.getOperation(pi.getOperation());
                    if (op != null) {
                        op.getMessage(pi.getMessageLable()).getPolicySubject().attachPolicy(policy);
                    } else {
                        handleException("Couldn't find the operation " + "specified by the QName : " + pi.getOperation());
                    }
                } else {
                    // operation is not specified and hence apply to all the applicable messages
                    for (Iterator itr = axisService.getOperations(); itr.hasNext(); ) {
                        Object obj = itr.next();
                        if (obj instanceof AxisOperation) {
                            // check whether the policy is applicable
                            if (!((obj instanceof OutOnlyAxisOperation && pi.getType() == PolicyInfo.MESSAGE_TYPE_IN) || (obj instanceof InOnlyAxisOperation && pi.getType() == PolicyInfo.MESSAGE_TYPE_OUT))) {
                                AxisMessage message = ((AxisOperation) obj).getMessage(pi.getMessageLable());
                                message.getPolicySubject().attachPolicy(policy);
                            }
                        }
                    }
                }
            } else {
                handleException("Undefined Policy type");
            }
        }
    }
    // create a custom message receiver for this proxy service
    ProxyServiceMessageReceiver msgRcvr = new ProxyServiceMessageReceiver();
    msgRcvr.setName(name);
    msgRcvr.setProxy(this);
    Iterator iter = axisService.getOperations();
    while (iter.hasNext()) {
        AxisOperation op = (AxisOperation) iter.next();
        op.setMessageReceiver(msgRcvr);
    }
    try {
        axisService.addParameter(SynapseConstants.SERVICE_TYPE_PARAM_NAME, SynapseConstants.PROXY_SERVICE_TYPE);
        if (serviceGroup == null) {
            auditInfo("Adding service " + name + " to the Axis2 configuration");
            axisCfg.addService(axisService);
        } else {
            auditInfo("Adding service " + name + " to the service group " + serviceGroup);
            if (axisCfg.getServiceGroup(serviceGroup) == null) {
                // If the specified group does not exist we should create it
                AxisServiceGroup proxyServiceGroup = new AxisServiceGroup();
                proxyServiceGroup.setServiceGroupName(serviceGroup);
                proxyServiceGroup.setParent(axisCfg);
                // Add  the service to the new group and add the group the AxisConfiguration
                proxyServiceGroup.addService(axisService);
                axisCfg.addServiceGroup(proxyServiceGroup);
            } else {
                // Simply add the service to the existing group
                axisService.setParent(axisCfg.getServiceGroup(serviceGroup));
                axisCfg.addServiceToExistingServiceGroup(axisService, serviceGroup);
            }
        }
        this.setRunning(true);
    } catch (AxisFault axisFault) {
        try {
            if (axisCfg.getService(axisService.getName()) != null) {
                if (trace())
                    trace.info("Removing service " + name + " due to error : " + axisFault.getMessage());
                axisCfg.removeService(axisService.getName());
            }
        } catch (AxisFault ignore) {
        }
        handleException("Error adding Proxy service to the Axis2 engine", axisFault);
    }
    // should Addressing be engaged on this service?
    if (wsAddrEnabled) {
        auditInfo("WS-Addressing is enabled for service : " + name);
        try {
            axisService.engageModule(axisCfg.getModule(SynapseConstants.ADDRESSING_MODULE_NAME), axisCfg);
        } catch (AxisFault axisFault) {
            handleException("Error loading WS Addressing module on proxy service : " + name, axisFault);
        }
    }
    // should Security be engaged on this service?
    boolean secModuleEngaged = false;
    if (wsSecEnabled && !isNoSecPolicy) {
        auditInfo("WS-Security is enabled for service : " + name);
        try {
            axisService.engageModule(axisCfg.getModule(SynapseConstants.SECURITY_MODULE_NAME), axisCfg);
            secModuleEngaged = true;
        } catch (AxisFault axisFault) {
            handleException("Error loading WS Sec module on proxy service : " + name, axisFault);
        }
    } else if (isNoSecPolicy) {
        log.info("NoSecurity Policy found, skipping rampart engagement");
    }
    moduleEngaged = secModuleEngaged || wsAddrEnabled;
    wsdlPublished = wsdlFound;
    // Engaging Axis2 modules
    Object engaged_modules = parameters.get(ENGAGED_MODULES);
    if (engaged_modules != null) {
        String[] moduleNames = getModuleNames((String) engaged_modules);
        if (moduleNames != null) {
            for (String moduleName : moduleNames) {
                try {
                    AxisModule axisModule = axisCfg.getModule(moduleName);
                    if (axisModule != null) {
                        axisService.engageModule(axisModule, axisCfg);
                        moduleEngaged = true;
                    }
                } catch (AxisFault axisFault) {
                    handleException("Error loading " + moduleName + " module on proxy service : " + name, axisFault);
                }
            }
        }
    }
    auditInfo("Successfully created the Axis2 service for Proxy service : " + name);
    return axisService;
}
Also used : AxisFault(org.apache.axis2.AxisFault) Policy(org.apache.neethi.Policy) MalformedURLException(java.net.MalformedURLException) InputSource(org.xml.sax.InputSource) SynapseException(org.apache.synapse.SynapseException) SynapseEnvironment(org.apache.synapse.core.SynapseEnvironment) OMElement(org.apache.axiom.om.OMElement) URL(java.net.URL) Endpoint(org.apache.synapse.endpoints.Endpoint) WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) AddressEndpoint(org.apache.synapse.endpoints.AddressEndpoint) WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) CustomXmlSchemaURIResolver(org.apache.synapse.util.resolver.CustomXmlSchemaURIResolver) OMNamespace(org.apache.axiom.om.OMNamespace) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) PolicyInfo(org.apache.synapse.util.PolicyInfo) IOException(java.io.IOException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OMNode(org.apache.axiom.om.OMNode) AddressEndpoint(org.apache.synapse.endpoints.AddressEndpoint) XMLStreamException(javax.xml.stream.XMLStreamException) ByteArrayInputStream(java.io.ByteArrayInputStream) CustomWSDLLocator(org.apache.synapse.util.resolver.CustomWSDLLocator) ResourceMap(org.apache.synapse.util.resolver.ResourceMap)

Example 5 with WSDLEndpoint

use of org.apache.synapse.endpoints.WSDLEndpoint in project wso2-synapse by wso2.

the class WSDLEndpointSerializer method serializeEndpoint.

protected OMElement serializeEndpoint(Endpoint endpoint) {
    if (!(endpoint instanceof WSDLEndpoint)) {
        handleException("Invalid endpoint type.");
    }
    fac = OMAbstractFactory.getOMFactory();
    OMElement endpointElement = fac.createOMElement("endpoint", SynapseConstants.SYNAPSE_OMNAMESPACE);
    WSDLEndpoint wsdlEndpoint = (WSDLEndpoint) endpoint;
    OMElement wsdlElement = fac.createOMElement("wsdl", SynapseConstants.SYNAPSE_OMNAMESPACE);
    String serviceName = wsdlEndpoint.getServiceName();
    if (serviceName != null) {
        wsdlElement.addAttribute("service", serviceName, null);
    }
    String portName = wsdlEndpoint.getPortName();
    if (portName != null) {
        wsdlElement.addAttribute("port", portName, null);
    }
    String uri = wsdlEndpoint.getWsdlURI();
    if (uri != null) {
        wsdlElement.addAttribute("uri", uri, null);
    }
    OMElement wsdlDoc = wsdlEndpoint.getWsdlDoc();
    if (wsdlDoc != null) {
        wsdlElement.addChild(wsdlDoc);
    }
    // currently, we have to get QOS information from the endpoint definition and set them as
    // special elements under the wsdl element. in future, these information should be
    // extracted from the wsdl.
    EndpointDefinition epDefinition = wsdlEndpoint.getDefinition();
    EndpointDefinitionSerializer serializer = new EndpointDefinitionSerializer();
    serializer.serializeEndpointDefinition(epDefinition, wsdlElement);
    serializeSpecificEndpointProperties(epDefinition, wsdlElement);
    endpointElement.addChild(wsdlElement);
    // serialize the parameters
    serializeProperties(wsdlEndpoint, endpointElement);
    serializeCommonAttributes(endpoint, endpointElement);
    return endpointElement;
}
Also used : WSDLEndpoint(org.apache.synapse.endpoints.WSDLEndpoint) EndpointDefinition(org.apache.synapse.endpoints.EndpointDefinition) OMElement(org.apache.axiom.om.OMElement)

Aggregations

WSDLEndpoint (org.apache.synapse.endpoints.WSDLEndpoint)6 OMElement (org.apache.axiom.om.OMElement)5 URL (java.net.URL)3 IOException (java.io.IOException)2 MalformedURLException (java.net.MalformedURLException)2 Properties (java.util.Properties)2 OMNamespace (org.apache.axiom.om.OMNamespace)2 OMNode (org.apache.axiom.om.OMNode)2 SynapseException (org.apache.synapse.SynapseException)2 AddressEndpoint (org.apache.synapse.endpoints.AddressEndpoint)2 Endpoint (org.apache.synapse.endpoints.Endpoint)2 EndpointDefinition (org.apache.synapse.endpoints.EndpointDefinition)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 InputStream (java.io.InputStream)1 ConnectException (java.net.ConnectException)1 QName (javax.xml.namespace.QName)1 XMLStreamException (javax.xml.stream.XMLStreamException)1 OMAttribute (org.apache.axiom.om.OMAttribute)1 AxisFault (org.apache.axis2.AxisFault)1