Author: hiranya
Date: Sun Jul 14 05:32:22 2013
New Revision: 1502938
URL: http://svn.apache.org/r1502938
Log:
Removing the context portion from the REST_URL_POSTFIX when mediating a request
through an API
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/API.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/version/URLBasedVersionStrategy.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/API.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/API.java?rev=1502938&r1=1502937&r2=1502938&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/API.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/API.java
Sun Jul 14 05:32:22 2013
@@ -29,6 +29,7 @@ import org.apache.synapse.core.axis2.Axi
import org.apache.synapse.rest.dispatch.DispatcherHelper;
import org.apache.synapse.rest.dispatch.RESTDispatcher;
import org.apache.synapse.rest.version.DefaultStrategy;
+import org.apache.synapse.rest.version.URLBasedVersionStrategy;
import org.apache.synapse.rest.version.VersionStrategy;
import org.apache.synapse.config.xml.rest.VersionStrategyFactory;
import org.apache.synapse.transport.nhttp.NhttpConstants;
@@ -56,8 +57,8 @@ public class API extends AbstractRESTPro
}
/**
- * get Fully Qualified name of this API
- * @return returns the key combiantion for API NAME + VERSION
+ * Get the full qualified name of this API
+ * @return returns the key combination for API NAME + VERSION
*/
public String getName() {
//check if a versioning strategy exists
@@ -153,8 +154,12 @@ public class API extends AbstractRESTPro
boolean canProcess(MessageContext synCtx) {
if (synCtx.isResponse()) {
String apiName = (String)
synCtx.getProperty(RESTConstants.SYNAPSE_REST_API);
- String version = (String)
synCtx.getProperty(RESTConstants.SYNAPSE_REST_API_VERSION);
- if (!name.equals(apiName) &&
!versionStrategy.getVersion().equals(version)) {
+ Object versionObj =
synCtx.getProperty(RESTConstants.SYNAPSE_REST_API_VERSION);
+ String version = "";
+ if (versionObj != null) {
+ version = (String) versionObj;
+ }
+ if (!name.equals(apiName) ||
!versionStrategy.getVersion().equals(version)) {
return false;
}
} else {
@@ -214,6 +219,28 @@ public class API extends AbstractRESTPro
synCtx.setProperty(RESTConstants.SYNAPSE_REST_API_VERSION,
versionStrategy.getVersion());
synCtx.setProperty(RESTConstants.REST_API_CONTEXT, context);
+ // Remove the API context part from the REST_URL_POSTFIX
+ String restURLPostfix = (String) ((Axis2MessageContext)
synCtx).getAxis2MessageContext().
+ getProperty(NhttpConstants.REST_URL_POSTFIX);
+ if (restURLPostfix != null) {
+ if (!restURLPostfix.startsWith("/")) {
+ restURLPostfix = "/" + restURLPostfix;
+ }
+ if (restURLPostfix.startsWith(context)) {
+ restURLPostfix = restURLPostfix.substring(context.length());
+ }
+ if (versionStrategy instanceof URLBasedVersionStrategy) {
+ String version = versionStrategy.getVersion();
+ if (restURLPostfix.startsWith(version)) {
+ restURLPostfix =
restURLPostfix.substring(version.length());
+ } else if (restURLPostfix.startsWith("/" + version)) {
+ restURLPostfix = restURLPostfix.substring(version.length()
+ 1);
+ }
+ }
+ ((Axis2MessageContext) synCtx).getAxis2MessageContext().
+
setProperty(NhttpConstants.REST_URL_POSTFIX,restURLPostfix);
+ }
+
for (Handler handler : handlers) {
if (log.isDebugEnabled()) {
log.debug("Processing message with ID: " +
synCtx.getMessageID() + " through " +
@@ -247,7 +274,7 @@ public class API extends AbstractRESTPro
String path = RESTUtils.getFullRequestPath(synCtx);
- String subPath = null;
+ String subPath;
if
(versionStrategy.getVersionType().equals(VersionStrategyFactory.TYPE_URL)) {
//for URL based
//request --> http://{host:port}/context/version/path/to/resource
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java?rev=1502938&r1=1502937&r2=1502938&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/dispatch/URLMappingHelper.java
Sun Jul 14 05:32:22 2013
@@ -36,6 +36,8 @@ public class URLMappingHelper implements
}
} else if (urlMapping.startsWith("*.")) {
extension = urlMapping.substring(1);
+ } else if (urlMapping.length() > 1 && urlMapping.endsWith("/")){
+ exactMatch = urlMapping.substring(0, urlMapping.length() - 1);
} else {
exactMatch = urlMapping;
}
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/version/URLBasedVersionStrategy.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/version/URLBasedVersionStrategy.java?rev=1502938&r1=1502937&r2=1502938&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/version/URLBasedVersionStrategy.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/rest/version/URLBasedVersionStrategy.java
Sun Jul 14 05:32:22 2013
@@ -39,14 +39,14 @@ public class URLBasedVersionStrategy ext
String pathStringAfterContext = path.substring(context.length());
//check if context can be invalid for path url and avoid matching a
false version string
- if (pathStringAfterContext != null &&
!pathStringAfterContext.startsWith("/")) {
+ if (pathStringAfterContext == null ||
!pathStringAfterContext.startsWith("/")) {
return false;
}
//path after context will be starting from a "/" and compute index for
next immediate "/"
int indexOfNextSlash =
pathStringAfterContext.substring(1).indexOf("/");
- String incomingVersionStr = null;
+ String incomingVersionStr;
if (indexOfNextSlash != -1) {
incomingVersionStr = pathStringAfterContext.substring(1,
indexOfNextSlash + 1);
} else {
@@ -65,31 +65,4 @@ public class URLBasedVersionStrategy ext
public String getVersionParam() {
return versionParam;
}
-
-/*
- public static void main(String[] args) {
- String version = "1.0.0";
-// String version = "1.0.1";
-
-// String path = "/test/1.0.1/foo/abc/";
-// String path = "/test/1.0/foo/abc/";
-// String path = "/test/1.0/foo/abc/abc='asasa'";
- String path = "/test11.0.0/1.0/foo/abc/abc='asasa'";
-
-// String context = "/test";
-// String context = "/test123";
- String context = "/test";
- String pathStringAfterContext = path.substring(context.length());
-
- System.out.println("pathStringAfterContext : " +
pathStringAfterContext);
-
- int indexOfNextSlash =
pathStringAfterContext.substring(1).indexOf("/");
- System.out.println(indexOfNextSlash);
- String incomingVersionStr = pathStringAfterContext.substring(1,
indexOfNextSlash + 1);
- System.out.println("incomingVersionStr : " + incomingVersionStr);
-
- System.out.println(version.equals(incomingVersionStr));
- }
-*/
-
}