You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by js...@apache.org on 2014/06/19 16:14:32 UTC
git commit: AMBARI-6201. Fix /stacks api sub-resource names.
Repository: ambari
Updated Branches:
refs/heads/trunk 2ce73d7c0 -> 6b2412da2
AMBARI-6201. Fix /stacks api sub-resource names.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/6b2412da
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/6b2412da
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/6b2412da
Branch: refs/heads/trunk
Commit: 6b2412da23c368ea4f5163c3ea5bc2e5463dc3d0
Parents: 2ce73d7
Author: John Speidel <js...@hortonworks.com>
Authored: Wed Jun 18 21:40:06 2014 -0400
Committer: John Speidel <js...@hortonworks.com>
Committed: Thu Jun 19 10:14:20 2014 -0400
----------------------------------------------------------------------
.../resources/BaseStacksResourceDefinition.java | 36 +++-
.../resources/RepositoryResourceDefinition.java | 2 +-
.../server/api/services/StacksService.java | 174 +++++++++++++++++--
.../apache/ambari/server/api/util/TreeNode.java | 9 +
.../ambari/server/api/util/TreeNodeImpl.java | 5 +
.../server/api/services/BaseServiceTest.java | 31 ++--
.../server/api/services/StacksServiceTest.java | 11 ++
7 files changed, 237 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/main/java/org/apache/ambari/server/api/resources/BaseStacksResourceDefinition.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/BaseStacksResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/BaseStacksResourceDefinition.java
index 63b1ca7..2177513 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/BaseStacksResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/BaseStacksResourceDefinition.java
@@ -28,7 +28,7 @@ import java.util.List;
/**
* Abstract base class for all stacks related resource definitions.
* Because we cloned /stacks from /stacks2 and changed the endpoint names in stacks,
- * this class is a temporary mechanism to deviate from the standard /stacks2 endpoint names.
+ * this class is a TEMPORARY mechanism to deviate from the standard /stacks2 endpoint names.
*
*/
public abstract class BaseStacksResourceDefinition extends BaseResourceDefinition {
@@ -54,9 +54,43 @@ public abstract class BaseStacksResourceDefinition extends BaseResourceDefinitio
nodeHref = nodeHref.replace("stackServices", "services");
nodeHref = nodeHref.replace("serviceComponents", "components");
nodeHref = nodeHref.replace("operatingSystems", "operating_systems");
+
+ // The UI currently expects the old sub-resource names so don't do replacement
+ // if the href contains "_=" as only the UI uses this syntax.
+ if (! href.contains("_=")) {
+ renameChildren(resultNode);
+ }
}
resultNode.setProperty("href", nodeHref);
}
+
+ /**
+ * Rename child nodes.
+ *
+ * @param resultNode result node
+ */
+ private void renameChildren(TreeNode<Resource> resultNode) {
+ TreeNode<Resource> childNode = resultNode.removeChild("stackServices");
+ if (childNode != null) {
+ childNode.setName("services");
+ resultNode.addChild(childNode);
+ renameChildren(childNode);
+ }
+
+ childNode = resultNode.removeChild("serviceComponents");
+ if (childNode != null) {
+ childNode.setName("components");
+ resultNode.addChild(childNode);
+ renameChildren(childNode);
+ }
+
+ childNode = resultNode.removeChild("operatingSystems");
+ if (childNode != null) {
+ childNode.setName("operating_systems");
+ resultNode.addChild(childNode);
+ renameChildren(childNode);
+ }
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RepositoryResourceDefinition.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RepositoryResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RepositoryResourceDefinition.java
index 2aff429..b045e69 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RepositoryResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/RepositoryResourceDefinition.java
@@ -20,7 +20,7 @@ package org.apache.ambari.server.api.resources;
import org.apache.ambari.server.controller.spi.Resource;
import org.apache.ambari.server.controller.spi.Resource.Type;
-public class RepositoryResourceDefinition extends BaseResourceDefinition {
+public class RepositoryResourceDefinition extends BaseStacksResourceDefinition {
public RepositoryResourceDefinition(Type resourceType) {
super(Resource.Type.Repository);
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
index ddad6bf..0218139 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/StacksService.java
@@ -18,8 +18,13 @@
package org.apache.ambari.server.api.services;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLDecoder;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.ws.rs.GET;
@@ -29,9 +34,13 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.PathSegment;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
+import org.apache.ambari.server.api.predicate.QueryLexer;
import org.apache.ambari.server.api.resources.ResourceInstance;
import org.apache.ambari.server.controller.spi.Resource;
@@ -55,7 +64,7 @@ public class StacksService extends BaseService {
public Response getStack(@Context HttpHeaders headers, @Context UriInfo ui,
@PathParam("stackName") String stackName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackResource(stackName));
}
@@ -65,7 +74,7 @@ public class StacksService extends BaseService {
public Response getStackVersions(@Context HttpHeaders headers,
@Context UriInfo ui, @PathParam("stackName") String stackName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackVersionResource(stackName, null));
}
@@ -76,7 +85,7 @@ public class StacksService extends BaseService {
@Context UriInfo ui, @PathParam("stackName") String stackName,
@PathParam("stackVersion") String stackVersion) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackVersionResource(stackName, stackVersion));
}
@@ -89,7 +98,7 @@ public class StacksService extends BaseService {
@PathParam("stackVersion") String stackVersion,
@PathParam("osType") String osType) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createRepositoryResource(stackName, stackVersion, osType, null));
}
@@ -102,7 +111,7 @@ public class StacksService extends BaseService {
@PathParam("osType") String osType,
@PathParam("repoId") String repoId) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createRepositoryResource(stackName, stackVersion, osType, repoId));
}
@@ -115,7 +124,7 @@ public class StacksService extends BaseService {
@PathParam("osType") String osType,
@PathParam("repoId") String repoId) {
- return handleRequest(headers, body, ui, Request.Type.PUT,
+ return handleRequest(headers, body, new StackUriInfo(ui), Request.Type.PUT,
createRepositoryResource(stackName, stackVersion, osType, repoId));
}
@@ -127,7 +136,7 @@ public class StacksService extends BaseService {
@Context UriInfo ui, @PathParam("stackName") String stackName,
@PathParam("stackVersion") String stackVersion) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackServiceResource(stackName, stackVersion, null));
}
@@ -139,7 +148,7 @@ public class StacksService extends BaseService {
@PathParam("stackVersion") String stackVersion,
@PathParam("serviceName") String serviceName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackServiceResource(stackName, stackVersion, serviceName));
}
@@ -152,7 +161,7 @@ public class StacksService extends BaseService {
@PathParam("stackVersion") String stackVersion,
@PathParam("serviceName") String serviceName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackConfigurationResource(stackName, stackVersion, serviceName, null));
}
@@ -166,7 +175,7 @@ public class StacksService extends BaseService {
@PathParam("serviceName") String serviceName,
@PathParam("propertyName") String propertyName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackConfigurationResource(stackName, stackVersion, serviceName, propertyName));
}
@@ -178,7 +187,7 @@ public class StacksService extends BaseService {
@PathParam("stackVersion") String stackVersion,
@PathParam("serviceName") String serviceName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackServiceComponentResource(stackName, stackVersion, serviceName, null));
}
@@ -191,7 +200,7 @@ public class StacksService extends BaseService {
@PathParam("serviceName") String serviceName,
@PathParam("componentName") String componentName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackServiceComponentDependencyResource(stackName, stackVersion, serviceName, componentName, null));
}
@@ -205,7 +214,7 @@ public class StacksService extends BaseService {
@PathParam("componentName") String componentName,
@PathParam("dependencyName") String dependencyName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackServiceComponentDependencyResource(stackName, stackVersion, serviceName, componentName, dependencyName));
}
@@ -220,7 +229,7 @@ public class StacksService extends BaseService {
@PathParam("serviceName") String serviceName,
@PathParam("componentName") String componentName) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createStackServiceComponentResource(stackName, stackVersion, serviceName, componentName));
}
@@ -232,7 +241,7 @@ public class StacksService extends BaseService {
@Context UriInfo ui, @PathParam("stackName") String stackName,
@PathParam("stackVersion") String stackVersion) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createOperatingSystemResource(stackName, stackVersion, null));
}
@@ -244,7 +253,7 @@ public class StacksService extends BaseService {
@PathParam("stackVersion") String stackVersion,
@PathParam("osType") String osType) {
- return handleRequest(headers, null, ui, Request.Type.GET,
+ return handleRequest(headers, null, new StackUriInfo(ui), Request.Type.GET,
createOperatingSystemResource(stackName, stackVersion, osType));
}
@@ -334,5 +343,138 @@ public class StacksService extends BaseService {
Collections.singletonMap(Resource.Type.Stack, stackName));
}
+
+ /**
+ * Temporary UriInfo implementation which is used to convert old property names.
+ * Because both the /stacks and /stacks2 api use the same underlying classes, we
+ * need to convert the new corrected property names to the old names for the back end.
+ * This should be removed when /stacks2 is removed and we can change the property names
+ * in the resource definitions to the new form.
+ */
+ private static class StackUriInfo implements UriInfo {
+ private UriInfo m_delegate;
+
+ private StackUriInfo(UriInfo delegate) {
+ m_delegate = delegate;
+ }
+ @Override
+ public String getPath() {
+ return m_delegate.getPath();
+ }
+
+ @Override
+ public String getPath(boolean b) {
+ return m_delegate.getPath(b);
+ }
+
+ @Override
+ public List<PathSegment> getPathSegments() {
+ return m_delegate.getPathSegments();
+ }
+
+ @Override
+ public List<PathSegment> getPathSegments(boolean b) {
+ return m_delegate.getPathSegments(b);
+ }
+
+ @Override
+ public URI getRequestUri() {
+ String uri;
+ try {
+ uri = URLDecoder.decode(m_delegate.getRequestUri().toASCIIString(), "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException("Unable to decode URI: " + e, e);
+ }
+ uri = uri.replaceAll("services/", "stackServices/");
+ uri = uri.replaceAll("components/", "serviceComponents/");
+ uri = uri.replaceAll("operating_systems/", "operatingSystems/");
+
+ try {
+ return new URI(uri);
+ } catch (URISyntaxException e) {
+ throw new RuntimeException("Unable to create modified stacks URI: " + e, e);
+ }
+ }
+
+ @Override
+ public UriBuilder getRequestUriBuilder() {
+ return m_delegate.getRequestUriBuilder();
+ }
+
+ @Override
+ public URI getAbsolutePath() {
+ return m_delegate.getAbsolutePath();
+ }
+
+ @Override
+ public UriBuilder getAbsolutePathBuilder() {
+ return m_delegate.getAbsolutePathBuilder();
+ }
+
+ @Override
+ public URI getBaseUri() {
+ return m_delegate.getBaseUri();
+ }
+
+ @Override
+ public UriBuilder getBaseUriBuilder() {
+ return m_delegate.getBaseUriBuilder();
+ }
+
+ @Override
+ public MultivaluedMap<String, String> getPathParameters() {
+ return m_delegate.getPathParameters();
+ }
+
+ @Override
+ public MultivaluedMap<String, String> getPathParameters(boolean b) {
+ return m_delegate.getPathParameters(b);
+ }
+
+ @Override
+ public MultivaluedMap<String, String> getQueryParameters() {
+ MultivaluedMap<String, String> queryParams = m_delegate.getQueryParameters();
+
+ if (queryParams.containsKey(QueryLexer.QUERY_FIELDS)) {
+ String fields = queryParams.getFirst(QueryLexer.QUERY_FIELDS);
+ queryParams.putSingle(QueryLexer.QUERY_FIELDS, convertToOldPropertyNames(fields));
+ }
+
+ if (queryParams.containsKey(QueryLexer.QUERY_SORT)) {
+ String sortBy = queryParams.getFirst(QueryLexer.QUERY_SORT);
+ queryParams.putSingle(QueryLexer.QUERY_SORT, convertToOldPropertyNames(sortBy));
+ }
+
+ return queryParams;
+ }
+
+ @Override
+ public MultivaluedMap<String, String> getQueryParameters(boolean b) {
+ return m_delegate.getQueryParameters(b);
+ }
+
+ @Override
+ public List<String> getMatchedURIs() {
+ return m_delegate.getMatchedURIs();
+ }
+
+ @Override
+ public List<String> getMatchedURIs(boolean b) {
+ return m_delegate.getMatchedURIs(b);
+ }
+
+ @Override
+ public List<Object> getMatchedResources() {
+ return m_delegate.getMatchedResources();
+ }
+
+ private String convertToOldPropertyNames(String str) {
+ str = str.replaceAll("services", "stackServices");
+ str = str.replaceAll("components", "serviceComponents");
+ str = str.replaceAll("operating_systems", "operatingSystems");
+
+ return str;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNode.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNode.java b/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNode.java
index 3f8abdd..796d64f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNode.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNode.java
@@ -84,6 +84,15 @@ public interface TreeNode<T> {
public TreeNode<T> addChild(TreeNode<T> child);
/**
+ * Remove a child from this resource.
+ *
+ * @param name name of child to remove
+ *
+ * @return the previous value associated with key, or null if there was no mapping for key
+ */
+ public TreeNode<T> removeChild(String name);
+
+ /**
* Set a property on the node.
*
* @param name the name of the property
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNodeImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNodeImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNodeImpl.java
index 7c90715..1739b88 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNodeImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/util/TreeNodeImpl.java
@@ -112,6 +112,11 @@ public class TreeNodeImpl<T> implements TreeNode<T> {
}
@Override
+ public TreeNode<T> removeChild(String name) {
+ return m_mapChildren.remove(name);
+ }
+
+ @Override
public void setProperty(String name, String value) {
if (m_mapNodeProps == null) {
m_mapNodeProps = new LinkedHashMap<String, String>();
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/test/java/org/apache/ambari/server/api/services/BaseServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/BaseServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/BaseServiceTest.java
index ef1b21a..19eeffb 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/BaseServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/BaseServiceTest.java
@@ -47,17 +47,17 @@ import static org.junit.Assert.assertEquals;
*/
public abstract class BaseServiceTest {
- private ResourceInstance resourceInstance = createNiceMock(ResourceInstance.class);
- private RequestFactory requestFactory = createStrictMock(RequestFactory.class);
- private Request request = createNiceMock(Request.class);
- private HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
- private UriInfo uriInfo = createNiceMock(UriInfo.class);
- private Result result = createMock(Result.class);
- private RequestBody requestBody = createNiceMock(RequestBody.class);
- private RequestBodyParser bodyParser = createStrictMock(RequestBodyParser.class);
- private ResultStatus status = createNiceMock(ResultStatus.class);
- private ResultSerializer serializer = createStrictMock(ResultSerializer.class);
- private Object serializedResult = new Object();
+ protected ResourceInstance resourceInstance = createNiceMock(ResourceInstance.class);
+ protected RequestFactory requestFactory = createStrictMock(RequestFactory.class);
+ protected Request request = createNiceMock(Request.class);
+ protected HttpHeaders httpHeaders = createNiceMock(HttpHeaders.class);
+ protected UriInfo uriInfo = createNiceMock(UriInfo.class);
+ protected Result result = createMock(Result.class);
+ protected RequestBody requestBody = createNiceMock(RequestBody.class);
+ protected RequestBodyParser bodyParser = createStrictMock(RequestBodyParser.class);
+ protected ResultStatus status = createNiceMock(ResultStatus.class);
+ protected ResultSerializer serializer = createStrictMock(ResultSerializer.class);
+ protected Object serializedResult = new Object();
public ResourceInstance getTestResource() {
return resourceInstance;
@@ -105,7 +105,7 @@ public abstract class BaseServiceTest {
// needed for compiler
}
- expect(requestFactory.createRequest(httpHeaders, requestBody, uriInfo, testMethod.getRequestType(), resourceInstance)).andReturn(request);
+ assertCreateRequest(testMethod);
expect(request.process()).andReturn(result);
expect(result.getStatus()).andReturn(status).atLeastOnce();
expect(status.getStatusCode()).andReturn(testMethod.getStatusCode()).atLeastOnce();
@@ -120,6 +120,11 @@ public abstract class BaseServiceTest {
verifyAndResetMocks();
}
+ protected void assertCreateRequest(ServiceTestInvocation testMethod) {
+ expect(requestFactory.createRequest(httpHeaders, requestBody, uriInfo,
+ testMethod.getRequestType(), resourceInstance)).andReturn(request);
+ }
+
private void testMethod_bodyParseException(ServiceTestInvocation testMethod) throws Exception {
@@ -144,7 +149,7 @@ public abstract class BaseServiceTest {
} catch (BodyParseException e) {
// needed for compiler
}
- expect(requestFactory.createRequest(httpHeaders, requestBody, uriInfo, testMethod.getRequestType(), resourceInstance)).andReturn(request);
+ assertCreateRequest(testMethod);
expect(request.process()).andReturn(result);
expect(result.getStatus()).andReturn(status).atLeastOnce();
expect(status.getStatusCode()).andReturn(400).atLeastOnce();
http://git-wip-us.apache.org/repos/asf/ambari/blob/6b2412da/ambari-server/src/test/java/org/apache/ambari/server/api/services/StacksServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/StacksServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/StacksServiceTest.java
index f8c385f..80b7338 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/StacksServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/StacksServiceTest.java
@@ -21,6 +21,7 @@ package org.apache.ambari.server.api.services;
import org.apache.ambari.server.api.resources.ResourceInstance;
import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
import org.apache.ambari.server.api.services.serializers.ResultSerializer;
+import org.easymock.EasyMock;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.UriInfo;
@@ -29,6 +30,9 @@ import java.util.ArrayList;
import java.util.List;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.notNull;
+import static org.easymock.EasyMock.same;
import static org.junit.Assert.assertEquals;
/**
@@ -210,4 +214,11 @@ public class StacksServiceTest extends BaseServiceTest {
}
}
+ //todo: this is necessary for temporary changes to service to support both stacks and stacks2 api.
+ //todo: when stacks2 is removed and stacks doesn't need to wrap the UriInfo, this should be removed.
+ @Override
+ protected void assertCreateRequest(ServiceTestInvocation testMethod) {
+ expect(requestFactory.createRequest(same(httpHeaders), same(requestBody), (UriInfo) notNull(),
+ same(testMethod.getRequestType()), same(resourceInstance))).andReturn(request);
+ }
}