Search in sources :

Example 6 with URLMappingHelper

use of org.apache.synapse.api.dispatch.URLMappingHelper in project wso2-synapse by wso2.

the class ResourceSerializer method serializeResource.

public static OMElement serializeResource(Resource resource) {
    OMElement resourceElt = fac.createOMElement("resource", SynapseConstants.SYNAPSE_OMNAMESPACE);
    String[] methods = resource.getMethods();
    if (methods.length > 0) {
        String value = "";
        for (String method : methods) {
            value += method + " ";
        }
        resourceElt.addAttribute("methods", value.trim(), null);
    }
    if (resource.getBindsTo() != null) {
        resourceElt.addAttribute(ApiConstants.BINDS_TO, String.join(",", resource.getBindsTo()), null);
    }
    if (resource.getContentType() != null) {
        resourceElt.addAttribute("content-type", resource.getContentType(), null);
    }
    if (resource.getUserAgent() != null) {
        resourceElt.addAttribute("user-agent", resource.getUserAgent(), null);
    }
    if (resource.getProtocol() == RESTConstants.PROTOCOL_HTTP_ONLY) {
        resourceElt.addAttribute("protocol", "http", null);
    } else if (resource.getProtocol() == RESTConstants.PROTOCOL_HTTPS_ONLY) {
        resourceElt.addAttribute("protocol", "https", null);
    }
    DispatcherHelper helper = resource.getDispatcherHelper();
    if (helper != null) {
        if (helper instanceof URLMappingHelper) {
            resourceElt.addAttribute("url-mapping", helper.getString(), null);
        } else if (helper instanceof URITemplateHelper) {
            resourceElt.addAttribute("uri-template", helper.getString(), null);
        }
    }
    SequenceMediatorSerializer seqSerializer = new SequenceMediatorSerializer();
    if (resource.getInSequenceKey() != null) {
        resourceElt.addAttribute("inSequence", resource.getInSequenceKey(), null);
    } else if (resource.getInSequence() != null) {
        OMElement inSeqElement = seqSerializer.serializeAnonymousSequence(null, resource.getInSequence());
        inSeqElement.setLocalName("inSequence");
        resourceElt.addChild(inSeqElement);
    }
    if (resource.getOutSequenceKey() != null) {
        resourceElt.addAttribute("outSequence", resource.getOutSequenceKey(), null);
    } else if (resource.getOutSequence() != null) {
        OMElement outSeqElement = seqSerializer.serializeAnonymousSequence(null, resource.getOutSequence());
        outSeqElement.setLocalName("outSequence");
        resourceElt.addChild(outSeqElement);
    }
    if (resource.getFaultSequenceKey() != null) {
        resourceElt.addAttribute("faultSequence", resource.getFaultSequenceKey(), null);
    } else if (resource.getFaultSequence() != null) {
        OMElement faultSeqElement = seqSerializer.serializeAnonymousSequence(null, resource.getFaultSequence());
        faultSeqElement.setLocalName("faultSequence");
        resourceElt.addChild(faultSeqElement);
    }
    return resourceElt;
}
Also used : URITemplateHelper(org.apache.synapse.api.dispatch.URITemplateHelper) DispatcherHelper(org.apache.synapse.api.dispatch.DispatcherHelper) URLMappingHelper(org.apache.synapse.api.dispatch.URLMappingHelper) OMElement(org.apache.axiom.om.OMElement) SequenceMediatorSerializer(org.apache.synapse.config.xml.SequenceMediatorSerializer)

Example 7 with URLMappingHelper

use of org.apache.synapse.api.dispatch.URLMappingHelper in project wso2-synapse by wso2.

the class URLMappingBasedDispatcherTest method testExactMatchBasedDispatch.

public void testExactMatchBasedDispatch() throws Exception {
    API api = new API("TestAPI", "/test");
    Resource resource = new Resource();
    resource.setDispatcherHelper(new URLMappingHelper("/foo/bar"));
    resource.setInSequence(getTestSequence(PROP_NAME, PROP_VALUE));
    api.addResource(resource);
    SynapseConfiguration synapseConfig = new SynapseConfiguration();
    synapseConfig.addAPI(api.getName(), api);
    RESTRequestHandler handler = new RESTRequestHandler();
    MessageContext synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar", "GET");
    handler.process(synCtx);
    assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/", "GET");
    handler.process(synCtx);
    assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar?a=5", "GET");
    handler.process(synCtx);
    assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar?a=5&name=test", "GET");
    handler.process(synCtx);
    assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo", "GET");
    handler.process(synCtx);
    assertNull(synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/index.html", "GET");
    handler.process(synCtx);
    assertNull(synCtx.getProperty(PROP_NAME));
}
Also used : URLMappingHelper(org.apache.synapse.api.dispatch.URLMappingHelper) Resource(org.apache.synapse.api.Resource) API(org.apache.synapse.api.API) MessageContext(org.apache.synapse.MessageContext) SynapseConfiguration(org.apache.synapse.config.SynapseConfiguration)

Example 8 with URLMappingHelper

use of org.apache.synapse.api.dispatch.URLMappingHelper in project wso2-synapse by wso2.

the class URLMappingBasedDispatcherTest method testMultipleResourceDispatch.

public void testMultipleResourceDispatch() throws Exception {
    API api = new API("TestAPI", "/test");
    Resource resource1 = new Resource();
    resource1.setDispatcherHelper(new URLMappingHelper("/foo/*"));
    resource1.setInSequence(getTestSequence(PROP_NAME, "resource1"));
    Resource resource2 = new Resource();
    resource2.setDispatcherHelper(new URLMappingHelper("/foo/bar/*"));
    resource2.setInSequence(getTestSequence(PROP_NAME, "resource2"));
    Resource resource3 = new Resource();
    resource3.setDispatcherHelper(new URLMappingHelper("*.jsp"));
    resource3.setInSequence(getTestSequence(PROP_NAME, "resource3"));
    api.addResource(resource1);
    api.addResource(resource2);
    api.addResource(resource3);
    SynapseConfiguration synapseConfig = new SynapseConfiguration();
    synapseConfig.addAPI(api.getName(), api);
    RESTRequestHandler handler = new RESTRequestHandler();
    MessageContext synCtx = getMessageContext(synapseConfig, false, "/test/foo/", "GET");
    handler.process(synCtx);
    assertEquals("resource1", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/index.html?a=5", "GET");
    handler.process(synCtx);
    assertEquals("resource1", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bars", "GET");
    handler.process(synCtx);
    assertEquals("resource1", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/index.jsp", "GET");
    handler.process(synCtx);
    assertEquals("resource1", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/", "GET");
    handler.process(synCtx);
    assertEquals("resource2", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/index.html?a=5", "GET");
    handler.process(synCtx);
    assertEquals("resource2", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/hello", "GET");
    handler.process(synCtx);
    assertEquals("resource2", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar/index.jsp", "GET");
    handler.process(synCtx);
    assertEquals("resource2", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/index.jsp", "GET");
    handler.process(synCtx);
    assertEquals("resource3", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/hello/index.jsp?a=5", "GET");
    handler.process(synCtx);
    assertEquals("resource3", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foolish/bars/index.jsp", "GET");
    handler.process(synCtx);
    assertEquals("resource3", synCtx.getProperty(PROP_NAME));
    synCtx = getMessageContext(synapseConfig, false, "/test/foolish/index.html", "GET");
    handler.process(synCtx);
    assertNull(synCtx.getProperty(PROP_NAME));
}
Also used : URLMappingHelper(org.apache.synapse.api.dispatch.URLMappingHelper) Resource(org.apache.synapse.api.Resource) API(org.apache.synapse.api.API) MessageContext(org.apache.synapse.MessageContext) SynapseConfiguration(org.apache.synapse.config.SynapseConfiguration)

Example 9 with URLMappingHelper

use of org.apache.synapse.api.dispatch.URLMappingHelper in project wso2-synapse by wso2.

the class URLMappingBasedDispatcherTest method testResponseDispatch.

public void testResponseDispatch() throws Exception {
    API api = new API("TestAPI", "/test");
    Resource resource = new Resource();
    resource.setDispatcherHelper(new URLMappingHelper("/foo/bar/*"));
    resource.setOutSequence(getTestSequence(PROP_NAME, PROP_VALUE));
    api.addResource(resource);
    SynapseConfiguration synapseConfig = new SynapseConfiguration();
    synapseConfig.addAPI(api.getName(), api);
    RESTRequestHandler handler = new RESTRequestHandler();
    MessageContext synCtx = getMessageContext(synapseConfig, false, "/test/foo/bar", "GET");
    synCtx.setProperty(RESTConstants.SYNAPSE_REST_API, api.getName());
    synCtx.setProperty(SynapseConstants.ARTIFACT_NAME, SynapseConstants.FAIL_SAFE_MODE_API + api.getName());
    synCtx.setResponse(true);
    handler.process(synCtx);
    assertNull(synCtx.getProperty(PROP_NAME));
    synCtx.setProperty(RESTConstants.SYNAPSE_RESOURCE, resource.getName());
    handler.process(synCtx);
    assertEquals(PROP_VALUE, synCtx.getProperty(PROP_NAME));
}
Also used : URLMappingHelper(org.apache.synapse.api.dispatch.URLMappingHelper) Resource(org.apache.synapse.api.Resource) API(org.apache.synapse.api.API) MessageContext(org.apache.synapse.MessageContext) SynapseConfiguration(org.apache.synapse.config.SynapseConfiguration)

Aggregations

URLMappingHelper (org.apache.synapse.api.dispatch.URLMappingHelper)9 MessageContext (org.apache.synapse.MessageContext)7 API (org.apache.synapse.api.API)7 Resource (org.apache.synapse.api.Resource)7 SynapseConfiguration (org.apache.synapse.config.SynapseConfiguration)7 DispatcherHelper (org.apache.synapse.api.dispatch.DispatcherHelper)2 URITemplateHelper (org.apache.synapse.api.dispatch.URITemplateHelper)2 HashMap (java.util.HashMap)1 TreeMap (java.util.TreeMap)1 QName (javax.xml.namespace.QName)1 OMAttribute (org.apache.axiom.om.OMAttribute)1 OMElement (org.apache.axiom.om.OMElement)1 VersionStrategy (org.apache.synapse.api.version.VersionStrategy)1 SequenceMediatorSerializer (org.apache.synapse.config.xml.SequenceMediatorSerializer)1 SynapseEnvironment (org.apache.synapse.core.SynapseEnvironment)1 Axis2MessageContext (org.apache.synapse.core.axis2.Axis2MessageContext)1 Test (org.junit.Test)1 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)1