You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/02/02 14:37:54 UTC
lucene-solr git commit: SOLR-8029 refactored the SpecProvider API.
Addressed a few test failures in async API calls
Repository: lucene-solr
Updated Branches:
refs/heads/apiv2 b7e51075a -> 8b8c9461f
SOLR-8029 refactored the SpecProvider API. Addressed a few test failures in async API calls
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8b8c9461
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8b8c9461
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8b8c9461
Branch: refs/heads/apiv2
Commit: 8b8c9461f296fb9c4f0f3e3ad9378d50a0244eb2
Parents: b7e5107
Author: Noble Paul <no...@apache.org>
Authored: Tue Feb 2 19:05:19 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Tue Feb 2 19:05:19 2016 +0530
----------------------------------------------------------------------
.../org/apache/solr/core/CoreContainer.java | 52 ------------------
.../java/org/apache/solr/core/PluginBag.java | 2 +-
.../apache/solr/handler/RequestHandlerBase.java | 4 +-
.../org/apache/solr/handler/SchemaHandler.java | 7 +--
.../apache/solr/handler/SolrConfigHandler.java | 7 +--
.../solr/handler/V2UpdateRequestHandler.java | 11 ++--
.../solr/handler/admin/CollectionsHandler.java | 20 +++----
.../solr/handler/admin/CoreAdminHandler.java | 10 ++--
.../apache/solr/handler/admin/InfoHandler.java | 7 +--
.../solr/handler/admin/SecurityConfHandler.java | 14 +++--
.../solr/handler/admin/V2BaseHandler.java | 9 ++--
.../apache/solr/security/BasicAuthPlugin.java | 4 +-
.../security/RuleBasedAuthorizationPlugin.java | 5 +-
.../security/Sha256AuthenticationProvider.java | 5 +-
.../src/java/org/apache/solr/v2api/ApiBag.java | 49 ++++++-----------
.../org/apache/solr/v2api/SpecProvider.java | 2 +-
.../src/java/org/apache/solr/v2api/V2Api.java | 2 +-
.../org/apache/solr/v2api/V2ApiSupport.java | 2 +-
.../java/org/apache/solr/v2api/V2HttpCall.java | 4 +-
...luster.security.RuleBasedAuthorization..json | 56 --------------------
...cluster.security.RuleBasedAuthorization.json | 56 ++++++++++++++++++++
.../handler/admin/TestV2CollectionAPIs.java | 9 ++--
.../solr/handler/admin/TestV2CoreAdminAPIs.java | 2 +-
.../solr/handler/admin/TestV2Framework.java | 12 ++---
24 files changed, 142 insertions(+), 209 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index a9d429e..8430d77 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -19,10 +19,8 @@ package org.apache.solr.core;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.lang.invoke.MethodHandles;
import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -68,17 +66,13 @@ import org.apache.solr.security.AuthorizationPlugin;
import org.apache.solr.security.HttpClientInterceptorPlugin;
import org.apache.solr.security.PKIAuthenticationPlugin;
import org.apache.solr.security.SecurityPluginHolder;
-import org.apache.solr.servlet.SolrDispatchFilter;
import org.apache.solr.update.UpdateShardHandler;
import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.server.ByteBufferInputStream;
-import org.noggit.JSONParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
-import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.Collections.EMPTY_MAP;
import static org.apache.solr.common.params.CommonParams.AUTHC_PATH;
import static org.apache.solr.common.params.CommonParams.AUTHZ_PATH;
@@ -1228,52 +1222,6 @@ public class CoreContainer {
return authenticationPlugin == null ? null : authenticationPlugin.plugin;
}
- private Lookup<String, ByteBuffer> webappResourceLoader;
-
- private Lookup<String, Map2> resourceLookup;
-
- public synchronized Lookup<String, Map2> getResourceLookup() {
- if (resourceLookup == null) {
- resourceLookup = new Lookup<String, Map2>() {
- @Override
- public Map2 get(String key) {
- return getResourceObject(key);
- }
- };
- }
- return resourceLookup;
- }
-
- private Map<String, Map2> resourceCache = new ConcurrentHashMap<>();
-
- public Map2 getResourceObject(String name) {
- if (name == null) throw new NullPointerException("name Cannot be null");
- if (resourceCache.get(name) != null) return resourceCache.get(name);
- Map2 map = getResource(name);
- resourceCache.put(name, map);
- return map;
- }
-
- public static Map2 getResource(String name) {
- InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
-// ByteBuffer buf = webappResourceLoader.get(name);
- if (is == null)
- throw new RuntimeException("invalid API spec :" + name );
- Map2 map1 = null;
- try {
- map1 = Map2.fromJSON(is);
- } catch (Exception e) {
- log.error("Error in JSON : " + name, e);
- if (e instanceof RuntimeException) {
- throw (RuntimeException) e;
- }
- throw new SolrException(ErrorCode.SERVER_ERROR, e);
- }
- if (map1 == null) throw new SolrException(ErrorCode.SERVER_ERROR, "Empty value for " + name);
-
- return Map2.getDeepCopy(map1, 5, false);
- }
-
}
class CloserThread extends Thread {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/core/PluginBag.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 4e45a39..cec8b9d 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -194,7 +194,7 @@ public class PluginBag<T> implements AutoCloseable {
if (plugin.isLoaded()) {
T inst = plugin.get();
if (inst instanceof V2ApiSupport && ((V2ApiSupport) inst).registerAutomatically()) {
- Collection<V2Api> apis = ((V2ApiSupport) inst).getApis(apiBag.getSpecLookup());
+ Collection<V2Api> apis = ((V2ApiSupport) inst).getApis();
if (apis != null) {
Map<String, String> nameSubstitutes = singletonMap(HANDLER_NAME, name);
for (V2Api api : apis) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
index 17ce345..c16e02f 100644
--- a/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
+++ b/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
@@ -286,9 +286,9 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo
}
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
+ public Collection<V2Api> getApis() {
return ImmutableList.of(
- wrapRequestHandler(this, ApiBag.constructSpec(pluginInfo,specLookup), null)
+ wrapRequestHandler(this, ApiBag.constructSpec(pluginInfo), null)
);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 9aee57f..94d8276 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -42,6 +42,7 @@ import org.apache.solr.schema.IndexSchema;
import org.apache.solr.schema.ManagedIndexSchema;
import org.apache.solr.schema.SchemaManager;
import org.apache.solr.schema.ZkIndexSchemaReader;
+import org.apache.solr.v2api.ApiBag;
import org.apache.solr.v2api.V2Api;
import org.apache.solr.v2api.V2ApiSupport;
import org.slf4j.Logger;
@@ -191,10 +192,10 @@ public class SchemaHandler extends RequestHandlerBase implements V2ApiSupport {
}
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
+ public Collection<V2Api> getApis() {
return ImmutableList.of(
- wrapRequestHandler(this, specLookup.get("core.SchemaRead"), null) ,
- wrapRequestHandler(this, specLookup.get("core.SchemaEdit"), null));
+ wrapRequestHandler(this, ApiBag.getSpec("core.SchemaRead"), null) ,
+ wrapRequestHandler(this, ApiBag.getSpec("core.SchemaEdit"), null));
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index cedc397..b7b2145 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -76,6 +76,7 @@ import org.apache.solr.schema.SchemaManager;
import org.apache.solr.util.CommandOperation;
import org.apache.solr.util.DefaultSolrThreadFactory;
import org.apache.solr.util.RTimer;
+import org.apache.solr.v2api.ApiBag;
import org.apache.solr.v2api.V2Api;
import org.apache.solr.v2api.V2ApiSupport;
import org.slf4j.Logger;
@@ -812,10 +813,10 @@ public class SolrConfigHandler extends RequestHandlerBase implements V2ApiSuppor
}
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
+ public Collection<V2Api> getApis() {
return ImmutableList.of(
- wrapRequestHandler(this, specLookup.get("core.ConfigRead"), null),
- wrapRequestHandler(this, specLookup.get("core.ConfigEdit"), null)
+ wrapRequestHandler(this, ApiBag.getSpec("core.ConfigRead"), null),
+ wrapRequestHandler(this, ApiBag.getSpec("core.ConfigEdit"), null)
);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/V2UpdateRequestHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/V2UpdateRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/V2UpdateRequestHandler.java
index 6f603c8..2f89647 100644
--- a/solr/core/src/java/org/apache/solr/handler/V2UpdateRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/V2UpdateRequestHandler.java
@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableMap;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.Lookup;
import org.apache.solr.common.util.Map2;
+import org.apache.solr.v2api.ApiBag;
import org.apache.solr.v2api.V2Api;
import org.apache.solr.v2api.V2RequestContext;
@@ -39,19 +40,19 @@ public class V2UpdateRequestHandler extends UpdateRequestHandler {
}
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
- return Collections.singleton(getApiImpl(specLookup));
+ public Collection<V2Api> getApis() {
+ return Collections.singleton(getApiImpl());
}
- private V2Api getApiImpl(Lookup<String, Map2> specLookup) {
- return new V2Api(specLookup.get("core.Update")) {
+ private V2Api getApiImpl() {
+ return new V2Api(ApiBag.getSpec("core.Update")) {
@Override
public void call(V2RequestContext ctx) {
String path = ctx.getPath();
String target = mapping.get(path);
if(target != null) ctx.getSolrRequest().getContext().put("path", target);
try {
- handleRequest(ctx.getSolrRequest(),ctx.getResponse());
+ handleRequest(ctx.getSolrRequest(), ctx.getResponse());
} catch (RuntimeException e) {
throw e;
} catch (Exception e){
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index 22ec758..d0f74c0 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@ -124,8 +124,6 @@ import org.apache.solr.common.params.CoreAdminParams;
import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.Lookup;
-import org.apache.solr.common.util.Map2;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.Utils;
@@ -223,11 +221,15 @@ public class CollectionsHandler extends RequestHandlerBase implements V2ApiSuppo
"Invalid request. collections can be accessed only in SolrCloud mode");
}
- Map<String, Object> result = operation.call(req, rsp, this);
- if (result != null) {
- result.put(QUEUE_OPERATION, operation.action.toLower());
- ZkNodeProps props = new ZkNodeProps(result);
- if (operation.sendToOCPQueue) handleResponse(operation.action.toLower(), props, rsp, operation.timeOut);
+ Map<String, Object> props = operation.call(req, rsp, this);
+ String asyncId = req.getParams().get(ASYNC);
+ if (props != null) {
+ if (asyncId != null) {
+ props.put(ASYNC, asyncId);
+ }
+ props.put(QUEUE_OPERATION, operation.action.toLower());
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ if (operation.sendToOCPQueue) handleResponse(operation.action.toLower(), zkProps, rsp, operation.timeOut);
else Overseer.getInQueue(coreContainer.getZkController().getZkClient()).offer(Utils.toJSON(props));
}
}
@@ -895,8 +897,8 @@ public class CollectionsHandler extends RequestHandlerBase implements V2ApiSuppo
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
- return v2Handler.getApis(specLookup);
+ public Collection<V2Api> getApis() {
+ return v2Handler.getApis();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
index 303cc9d..276658d 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
@@ -86,9 +86,9 @@ public class CoreAdminHandler extends RequestHandlerBase implements V2ApiSupport
// should happen in the constructor...
this.coreContainer = null;
HashMap<String, Map<String, TaskObject>> map = new HashMap<>(3, 1.0f);
- map.put(RUNNING, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
- map.put(COMPLETED, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
- map.put(FAILED, Collections.synchronizedMap(new LinkedHashMap<String, TaskObject>()));
+ map.put(RUNNING, Collections.synchronizedMap(new LinkedHashMap<>()));
+ map.put(COMPLETED, Collections.synchronizedMap(new LinkedHashMap<>()));
+ map.put(FAILED, Collections.synchronizedMap(new LinkedHashMap<>()));
requestStatusMap = Collections.unmodifiableMap(map);
v2CoreAdminHandler = new V2CoreAdminHandler(this);
}
@@ -366,8 +366,8 @@ public class CoreAdminHandler extends RequestHandlerBase implements V2ApiSupport
}
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
- return v2CoreAdminHandler.getApis(specLookup);
+ public Collection<V2Api> getApis() {
+ return v2CoreAdminHandler.getApis();
}
static {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
index d2108b9..a06e3d5 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/InfoHandler.java
@@ -32,6 +32,7 @@ import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.v2api.ApiBag;
import org.apache.solr.v2api.V2Api;
import org.apache.solr.v2api.V2ApiSupport;
import org.apache.solr.v2api.V2RequestContext;
@@ -111,7 +112,7 @@ public class InfoHandler extends RequestHandlerBase implements V2ApiSupport {
}
protected ThreadDumpHandler getThreadDumpHandler() {
- return new ThreadDumpHandler();
+ return (ThreadDumpHandler) handlers.get("threads");
}
protected LoggingHandler getLoggingHandler() {
@@ -146,8 +147,8 @@ public class InfoHandler extends RequestHandlerBase implements V2ApiSupport {
private Map<String, RequestHandlerBase> handlers = new ConcurrentHashMap<>();
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
- return Collections.singletonList(new V2Api(specLookup.get("node.Info")) {
+ public Collection<V2Api> getApis() {
+ return Collections.singletonList(new V2Api(ApiBag.getSpec("node.Info")) {
@Override
public void call(V2RequestContext ctx) {
handle(ctx.getSolrRequest(), ctx.getResponse(), ctx.getPath());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
index 310ed1f..ea2c9ef 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java
@@ -173,10 +173,8 @@ public class SecurityConfHandler extends RequestHandlerBase implements V2ApiSupp
}
- private ApiBag apiBag;
-
@Override
- public Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
+ public Collection<V2Api> getApis() {
return
ImmutableList.of(
getApi("authentication"),
@@ -186,17 +184,17 @@ public class SecurityConfHandler extends RequestHandlerBase implements V2ApiSupp
private V2Api getApi( String type) {
return ApiBag.wrapRequestHandler(this, null, new SpecProvider() {
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
+ public Map2 getSpec() {
if (type.equals("authentication")) {
AuthenticationPlugin plugin = cores.getAuthenticationPlugin();
- if (plugin == null || !(plugin instanceof SpecProvider)) return specLookup.get("cluster.security.authentication");
- return ((SpecProvider) plugin).getSpec(specLookup);
+ if (plugin == null || !(plugin instanceof SpecProvider)) return ApiBag.getSpec("cluster.security.authentication");
+ return ((SpecProvider) plugin).getSpec();
} else {
AuthorizationPlugin plugin = cores.getAuthorizationPlugin();
if (plugin == null || !(plugin instanceof SpecProvider)){
- return specLookup.get("cluster.security.authorization");
+ return ApiBag.getSpec("cluster.security.authorization");
}
- return ((SpecProvider) plugin).getSpec(specLookup);
+ return ((SpecProvider) plugin).getSpec();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/handler/admin/V2BaseHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/V2BaseHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/V2BaseHandler.java
index ed2f277..3b28c80 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/V2BaseHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/V2BaseHandler.java
@@ -37,6 +37,7 @@ import org.apache.solr.common.util.StrUtils;
import org.apache.solr.common.util.Utils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.util.CommandOperation;
+import org.apache.solr.v2api.ApiBag;
import org.apache.solr.v2api.V2Api;
import org.apache.solr.v2api.V2ApiSupport;
import org.apache.solr.v2api.V2RequestContext;
@@ -60,15 +61,15 @@ public abstract class V2BaseHandler implements V2ApiSupport {
}
@Override
- public synchronized Collection<V2Api> getApis(Lookup<String, Map2> specLookup) {
+ public synchronized Collection<V2Api> getApis() {
ImmutableList.Builder<V2Api> l = ImmutableList.builder();
- for (V2EndPoint op : getEndPoints()) l.add(getApi(op, specLookup));
+ for (V2EndPoint op : getEndPoints()) l.add(getApi(op));
return l.build();
}
- private V2Api getApi(final V2EndPoint op, Lookup<String, Map2> specLookup) {
- final Map2 spec = specLookup.get(op.getSpecName());
+ private V2Api getApi(final V2EndPoint op) {
+ final Map2 spec = ApiBag.getSpec(op.getSpecName());
return new V2Api(spec) {
@Override
public void call(V2RequestContext ctx) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java b/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
index 51c0db1..a041262 100644
--- a/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java
@@ -171,8 +171,8 @@ public class BasicAuthPlugin extends AuthenticationPlugin implements ConfigEdita
}
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
- return zkAuthentication.getSpec(specLookup);
+ public Map2 getSpec() {
+ return zkAuthentication.getSpec();
}
public boolean getBlockUnknown(){
return blockUnknown;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
index d928a54..49e335a 100644
--- a/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/RuleBasedAuthorizationPlugin.java
@@ -39,6 +39,7 @@ import org.apache.solr.common.util.Lookup;
import org.apache.solr.common.util.Map2;
import org.apache.solr.common.util.Utils;
import org.apache.solr.util.CommandOperation;
+import org.apache.solr.v2api.ApiBag;
import org.apache.solr.v2api.SpecProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -503,8 +504,8 @@ public class RuleBasedAuthorizationPlugin implements AuthorizationPlugin, Config
private Map2 spec;
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
- if(spec == null) spec = specLookup.get("cluster.security.RuleBasedAuthorization");
+ public Map2 getSpec() {
+ if(spec == null) spec = ApiBag.getSpec("cluster.security.RuleBasedAuthorization");
return spec;
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java b/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
index 5b457b6..78d4e80 100644
--- a/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
+++ b/solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java
@@ -34,6 +34,7 @@ import org.apache.commons.codec.binary.Base64;
import org.apache.solr.common.util.Lookup;
import org.apache.solr.common.util.Map2;
import org.apache.solr.util.CommandOperation;
+import org.apache.solr.v2api.ApiBag;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -156,8 +157,8 @@ public class Sha256AuthenticationProvider implements ConfigEditablePlugin, Basi
}
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
- return specLookup.get("cluster.security.BasicAuth");
+ public Map2 getSpec() {
+ return ApiBag.getSpec("cluster.security.BasicAuth");
}
static final Set<String> supported_ops = ImmutableSet.of("set-user", "delete-user");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/v2api/ApiBag.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/v2api/ApiBag.java b/solr/core/src/java/org/apache/solr/v2api/ApiBag.java
index f33091d..9967999 100644
--- a/solr/core/src/java/org/apache/solr/v2api/ApiBag.java
+++ b/solr/core/src/java/org/apache/solr/v2api/ApiBag.java
@@ -28,13 +28,10 @@ import java.util.concurrent.ConcurrentHashMap;
import com.google.common.collect.ImmutableSet;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.Lookup;
import org.apache.solr.common.util.Map2;
-import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.PluginBag;
import org.apache.solr.core.PluginInfo;
-import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrRequestHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,17 +45,6 @@ public class ApiBag {
private static final Logger log = LoggerFactory.getLogger(ApiBag.class);
private final Map<String, PathTrie<V2Api>> apis = new ConcurrentHashMap<>();
- private final Lookup<String, Map2> specProvider;
-
-
- public ApiBag() {
- this.specProvider = new Lookup<String, Map2>() {
- @Override
- public Map2 get(String key) {
- return getMap(key);
- }
- };
- }
public static Map2 getResource(String name) {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(name);
@@ -85,7 +71,7 @@ public class ApiBag {
try {
validateAndRegister(api, nameSubstitutes);
} catch (Exception e) {
- log.error("Unable to register plugin:" + api.getClass().getName() + "with spec :" + api.getSpec(specProvider), e);
+ log.error("Unable to register plugin:" + api.getClass().getName() + "with spec :" + api.getSpec(), e);
if (e instanceof RuntimeException) {
throw (RuntimeException) e;
} else {
@@ -96,8 +82,8 @@ public class ApiBag {
}
private void validateAndRegister(V2Api api, Map<String, String> nameSubstitutes) {
- Map2 spec = api.getSpec(getSpecLookup());
- V2Api introspect = getIntrospect(this, api);
+ Map2 spec = api.getSpec();
+ V2Api introspect = getIntrospect(api);
List<String> methods = spec.getList("methods", ENUM_OF, SUPPORTED_METHODS);
for (String method : methods) {
PathTrie<V2Api> registry = apis.get(method);
@@ -122,7 +108,7 @@ public class ApiBag {
pathMeta.get("type", ENUM_OF, ImmutableSet.of("enum", "string", "int", "number", "boolean"));
}
}
- verifyCommands(api.getSpec(getSpecLookup()));
+ verifyCommands(api.getSpec());
for (String path : paths) {
registry.insert(path, nameSubstitutes, api);
registry.insert(path + INTROSPECT, nameSubstitutes, introspect);
@@ -130,11 +116,11 @@ public class ApiBag {
}
}
- private V2Api getIntrospect(final ApiBag apiBag, final V2Api baseApi) {
+ private V2Api getIntrospect(final V2Api baseApi) {
return new V2Api(Map2.EMPTY) {
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
+ public Map2 getSpec() {
return INTROSPECT_SPEC;
}
@@ -143,9 +129,9 @@ public class ApiBag {
String cmd = ctx.getSolrRequest().getParams().get("command");
Map2 result = null;
if (cmd == null) {
- result = baseApi.getSpec(apiBag.getSpecLookup());
+ result = baseApi.getSpec();
} else {
- Map2 specCopy = Map2.getDeepCopy(baseApi.getSpec(apiBag.getSpecLookup()), 5, true);
+ Map2 specCopy = Map2.getDeepCopy(baseApi.getSpec(), 5, true);
Map2 commands = specCopy.getMap("commands", null);
if (commands != null) {
Map2 m = commands.getMap(cmd, null);
@@ -194,7 +180,7 @@ public class ApiBag {
}
}
- private static Map2 getMap(String name) {
+ public static Map2 getSpec(String name) {
Map2 map = getResource(APISPEC_LOCATION + name + ".json");
Map2 result = map.getMap(name, NOT_NULL);
Map2 cmds = result.getMap("commands", null);
@@ -227,10 +213,10 @@ public class ApiBag {
}
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
+ public Map2 getSpec() {
return specProvider != null ?
- specProvider.getSpec(specLookup) :
- super.getSpec(specLookup);
+ specProvider.getSpec() :
+ super.getSpec();
}
};
}
@@ -239,11 +225,6 @@ public class ApiBag {
public static final String INTROSPECT = "/_introspect";
- public Lookup<String, Map2> getSpecLookup() {
- return specProvider;
- }
-
-
public static final Map2 INTROSPECT_SPEC = new Map2(Collections.EMPTY_MAP);
public static final String HANDLER_NAME = "handlerName";
public static final Set<String> KNOWN_TYPES = ImmutableSet.of("string", "boolean", "list", "int", "double");
@@ -255,18 +236,18 @@ public class ApiBag {
public <T> void registerLazy(PluginBag.PluginHolder<SolrRequestHandler> holder, PluginInfo info) {
String specName = info.attributes.get("spec");
if (specName == null) specName = "emptySpec";
- Map2 spec = getSpecLookup().get(specName);
+ Map2 spec = ApiBag.getSpec(specName);
register(new LazyLoadedApi(spec, holder), Collections.singletonMap(HANDLER_NAME, info.attributes.get(NAME)));
}
- public static Map2 constructSpec(PluginInfo info, Lookup<String, Map2> specLookup) {
+ public static Map2 constructSpec(PluginInfo info) {
Object specObj = info == null ? null : info.attributes.get("spec");
if (specObj == null) specObj = "emptySpec";
if (specObj instanceof Map) {
Map map = (Map) specObj;
return Map2.getDeepCopy(map, 4, false);
} else {
- return specLookup.get((String) specObj);
+ return ApiBag.getSpec((String) specObj);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/v2api/SpecProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/v2api/SpecProvider.java b/solr/core/src/java/org/apache/solr/v2api/SpecProvider.java
index 0b4e81a..1cb8336 100644
--- a/solr/core/src/java/org/apache/solr/v2api/SpecProvider.java
+++ b/solr/core/src/java/org/apache/solr/v2api/SpecProvider.java
@@ -21,5 +21,5 @@ import org.apache.solr.common.util.Lookup;
import org.apache.solr.common.util.Map2;
public interface SpecProvider {
- Map2 getSpec(Lookup<String, Map2> specLookup);
+ Map2 getSpec();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/v2api/V2Api.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/v2api/V2Api.java b/solr/core/src/java/org/apache/solr/v2api/V2Api.java
index de7ca93..031a1cd 100644
--- a/solr/core/src/java/org/apache/solr/v2api/V2Api.java
+++ b/solr/core/src/java/org/apache/solr/v2api/V2Api.java
@@ -32,7 +32,7 @@ public abstract class V2Api implements SpecProvider {
public abstract void call(V2RequestContext ctx);
@Override
- public Map2 getSpec(Lookup<String, Map2> specLookup) {
+ public Map2 getSpec() {
return spec;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/v2api/V2ApiSupport.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/v2api/V2ApiSupport.java b/solr/core/src/java/org/apache/solr/v2api/V2ApiSupport.java
index 6210f1a..fa86b7b 100644
--- a/solr/core/src/java/org/apache/solr/v2api/V2ApiSupport.java
+++ b/solr/core/src/java/org/apache/solr/v2api/V2ApiSupport.java
@@ -24,7 +24,7 @@ import org.apache.solr.common.util.Map2;
public interface V2ApiSupport {
- Collection<V2Api> getApis(Lookup<String, Map2> specLookup);
+ Collection<V2Api> getApis();
default boolean registerAutomatically() {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/java/org/apache/solr/v2api/V2HttpCall.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/v2api/V2HttpCall.java b/solr/core/src/java/org/apache/solr/v2api/V2HttpCall.java
index 25f5e2b..67a6c12 100644
--- a/solr/core/src/java/org/apache/solr/v2api/V2HttpCall.java
+++ b/solr/core/src/java/org/apache/solr/v2api/V2HttpCall.java
@@ -198,7 +198,7 @@ public class V2HttpCall extends HttpSolrCall {
return getSubPathImpl(subpaths, fullPath);
}
}
- if (api.getSpec(requestHandlers.getApiBag().getSpecLookup()) == ApiBag.INTROSPECT_SPEC)
+ if (api.getSpec() == ApiBag.INTROSPECT_SPEC)
api = mergeIntrospect(requestHandlers, path, method, parts);
return api;
}
@@ -324,7 +324,7 @@ public class V2HttpCall extends HttpSolrCall {
if (contentStreams == null) throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "No content stream");
for (ContentStream contentStream : contentStreams) {
parsedCommands = getCommandOperations(new InputStreamReader((InputStream) contentStream, UTF_8),
- api.getSpec(cores.getRequestHandlers().getApiBag().getSpecLookup()), solrResp);
+ api.getSpec(), solrResp);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization..json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization..json b/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization..json
deleted file mode 100644
index d914e73..0000000
--- a/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization..json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "cluster.security.RuleBasedAuthorization.": {
- "documentation": "https://cwiki.apache.org",
- "methods": [
- "POST",
- "GET"
- ],
- "url": {
- "paths": [
- "/cluster/security/authorization"
- ]
- },
- "commands": {
- "set-permission": {
- "description": "create a new permission, overwrite an existing permission definition, or assign a pre-defined permission to a role.",
- "properties": {
- "name":{
- "type":"string",
- "description":""
- },
- "method":{
- "type":"string",
- "description":""
- },
-
- "collection":{
- "type":"list",
- "description":""
- },
-
- "path":{
- "type":"list",
- "description":""
- },
- "before":{
- "type":"string",
- "description":""
- },
- "params":{
- "type":"object",
- "properties":{},
- "additionalProperties":true,
- "description":""
- }
- },
- "required":["name","role"]
- },
- "set-user-role": {
- "description": "A single command allows roles to be mapped to users. To remove a user's permission, you should set the role to null. The key is always a user id and the value is one or more role names",
- "properties":{},
- "additionalProperties":true
-
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization.json
----------------------------------------------------------------------
diff --git a/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization.json b/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization.json
new file mode 100644
index 0000000..4d28fec
--- /dev/null
+++ b/solr/core/src/resources/v2apispec/cluster.security.RuleBasedAuthorization.json
@@ -0,0 +1,56 @@
+{
+ "cluster.security.RuleBasedAuthorization": {
+ "documentation": "https://cwiki.apache.org",
+ "methods": [
+ "POST",
+ "GET"
+ ],
+ "url": {
+ "paths": [
+ "/cluster/security/authorization"
+ ]
+ },
+ "commands": {
+ "set-permission": {
+ "description": "create a new permission, overwrite an existing permission definition, or assign a pre-defined permission to a role.",
+ "properties": {
+ "name":{
+ "type":"string",
+ "description":""
+ },
+ "method":{
+ "type":"string",
+ "description":""
+ },
+
+ "collection":{
+ "type":"list",
+ "description":""
+ },
+
+ "path":{
+ "type":"list",
+ "description":""
+ },
+ "before":{
+ "type":"string",
+ "description":""
+ },
+ "params":{
+ "type":"object",
+ "properties":{},
+ "additionalProperties":true,
+ "description":""
+ }
+ },
+ "required":["name","role"]
+ },
+ "set-user-role": {
+ "description": "A single command allows roles to be mapped to users. To remove a user's permission, you should set the role to null. The key is always a user id and the value is one or more role names",
+ "properties":{},
+ "additionalProperties":true
+
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/test/org/apache/solr/handler/admin/TestV2CollectionAPIs.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestV2CollectionAPIs.java b/solr/core/src/test/org/apache/solr/handler/admin/TestV2CollectionAPIs.java
index 2c3c34a..8f87352 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestV2CollectionAPIs.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestV2CollectionAPIs.java
@@ -54,7 +54,7 @@ public class TestV2CollectionAPIs extends SolrTestCaseJ4 {
public void testCreate() throws Exception{
MockCollectionsHandler collectionsHandler = new MockCollectionsHandler();
ApiBag apiBag = new ApiBag();
- Collection<V2Api> apis = collectionsHandler.getApis(apiBag.getSpecLookup());
+ Collection<V2Api> apis = collectionsHandler.getApis();
for (V2Api api : apis) apiBag.register(api, Collections.EMPTY_MAP);
//test a simple create collection call
V2RequestContext ctx = makeCall(apiBag, "/collections", SolrRequest.METHOD.POST,
@@ -78,13 +78,12 @@ public class TestV2CollectionAPIs extends SolrTestCaseJ4 {
V2Api api = apiBag.lookup(path, method.toString(), parts);
if (api == null) throw new RuntimeException("No handler at path :" + path);
LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, new MapSolrParams(new HashMap<String, String>()));
- V2RequestContext ctx = getV2RequestContext(apiBag.getSpecLookup(), path, method, payload, cc, parts, api, req);
+ V2RequestContext ctx = getV2RequestContext(path, method, payload, cc, parts, api, req);
api.call(ctx);
return ctx;
}
- public static V2RequestContext getV2RequestContext(final Lookup<String,Map2> lookup,
- final String path,
+ public static V2RequestContext getV2RequestContext(final String path,
final SolrRequest.METHOD method,
final String payload,
final CoreContainer cc,
@@ -121,7 +120,7 @@ public class TestV2CollectionAPIs extends SolrTestCaseJ4 {
@Override
public List<CommandOperation> getCommands(boolean validateInput) {
- return V2HttpCall.getCommandOperations(new StringReader(payload), api.getSpec(lookup), rsp);
+ return V2HttpCall.getCommandOperations(new StringReader(payload), api.getSpec(), rsp);
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/test/org/apache/solr/handler/admin/TestV2CoreAdminAPIs.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestV2CoreAdminAPIs.java b/solr/core/src/test/org/apache/solr/handler/admin/TestV2CoreAdminAPIs.java
index 36ebc99..aeee949 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestV2CoreAdminAPIs.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestV2CoreAdminAPIs.java
@@ -47,7 +47,7 @@ public class TestV2CoreAdminAPIs extends SolrTestCaseJ4 {
CoreAdminHandler coreAdminHandler = new CoreAdminHandler(mockCC);
ApiBag apiBag = new ApiBag();
- for (V2Api v2Api : coreAdminHandler.getApis(apiBag.getSpecLookup())) {
+ for (V2Api v2Api : coreAdminHandler.getApis()) {
apiBag.register(v2Api, Collections.EMPTY_MAP);
}
TestV2CollectionAPIs.makeCall(apiBag,"/cores", SolrRequest.METHOD.POST ,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8b8c9461/solr/core/src/test/org/apache/solr/handler/admin/TestV2Framework.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestV2Framework.java b/solr/core/src/test/org/apache/solr/handler/admin/TestV2Framework.java
index 5dd4376..81104c8 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/TestV2Framework.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/TestV2Framework.java
@@ -64,14 +64,12 @@ public class TestV2Framework extends SolrTestCaseJ4 {
coreHandlers.put("/config", new SolrConfigHandler());
coreHandlers.put("/admin/ping", new PingRequestHandler());
- Lookup<String, Map2> lookup = coreHandlers.getApiBag().getSpecLookup();
-
Map<String, String> parts = new HashMap<>();
String fullPath = "/collections/hello/shards";
V2Api api = V2HttpCall.getApiInfo(containerHandlers, fullPath, "GET",
mockCC, "collections", fullPath, parts);
assertNotNull(api);
- assertConditions(api.getSpec(null), Utils.makeMap(
+ assertConditions(api.getSpec(), Utils.makeMap(
"/methods[0]", "GET",
"/methods[1]", "POST",
"/commands/create", NOT_NULL));
@@ -80,7 +78,7 @@ public class TestV2Framework extends SolrTestCaseJ4 {
parts = new HashMap<>();
api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1", "GET",
mockCC, "collections", null, parts);
- assertConditions(api.getSpec(null), Utils.makeMap(
+ assertConditions(api.getSpec(), Utils.makeMap(
"/methods[0]", "POST",
"/methods[1]", "GET",
"/methods[2]", "DELETE",
@@ -95,7 +93,7 @@ public class TestV2Framework extends SolrTestCaseJ4 {
parts = new HashMap<>();
api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1/replica1", "GET",
mockCC, "collections", null, parts);
- assertConditions(api.getSpec(null), Utils.makeMap(
+ assertConditions(api.getSpec(), Utils.makeMap(
"/methods[0]", "GET",
"/methods[1]", "POST",
"/commands/set", NOT_NULL
@@ -106,7 +104,7 @@ public class TestV2Framework extends SolrTestCaseJ4 {
api = V2HttpCall.getApiInfo(containerHandlers, "/collections/hello/shards/shard1/replica1", "DELETE",
mockCC, "collections", null, parts);
- assertConditions(api.getSpec(null), Utils.makeMap(
+ assertConditions(api.getSpec(), Utils.makeMap(
"/methods[0]", "DELETE",
"/url/params/onlyIfDown/type", "boolean"
));
@@ -157,7 +155,7 @@ public class TestV2Framework extends SolrTestCaseJ4 {
V2Api api = V2HttpCall.getApiInfo(reqHandlers, path, "GET", mockCC, prefix, fullPath, parts);
LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, new MapSolrParams(new HashMap<>()));
- V2RequestContext ctx = getV2RequestContext(reqHandlers.getApiBag().getSpecLookup() , path, method, null, mockCC, parts, api, req);
+ V2RequestContext ctx = getV2RequestContext( path, method, null, mockCC, parts, api, req);
api.call(ctx);
return ctx.getResponse();