You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by kr...@apache.org on 2016/10/07 13:24:12 UTC
lucene-solr:master: SOLR-8385: Narrow StreamFactory.withFunctionName
clazz parameter to prevent misconfiguration
Repository: lucene-solr
Updated Branches:
refs/heads/master 8225569b1 -> 6aa28bd65
SOLR-8385: Narrow StreamFactory.withFunctionName clazz parameter to prevent misconfiguration
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/6aa28bd6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/6aa28bd6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/6aa28bd6
Branch: refs/heads/master
Commit: 6aa28bd6558e47080166bf42b2b97aaa74ebf90b
Parents: 8225569
Author: Kevin Risden <kr...@apache.org>
Authored: Thu Oct 6 18:36:39 2016 -0500
Committer: Kevin Risden <kr...@apache.org>
Committed: Fri Oct 7 08:24:02 2016 -0500
----------------------------------------------------------------------
solr/CHANGES.txt | 1 +
.../org/apache/solr/handler/GraphHandler.java | 7 ++--
.../org/apache/solr/handler/StreamHandler.java | 10 ++---
.../solrj/io/stream/expr/StreamFactory.java | 44 ++++++++++----------
4 files changed, 31 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6aa28bd6/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 90419f9..f27216e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -254,6 +254,7 @@ Other Changes
* SOLR-9589: Remove jackson dependency from SolrJ (Ishan Chattopadhyaya, noble)
+* SOLR-8385: Narrow StreamFactory.withFunctionName clazz parameter to prevent misconfiguration (Jason Gerlowski, Kevin Risden)
================== 6.2.1 ==================
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6aa28bd6/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/GraphHandler.java b/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
index 4b043b2..339b4d7 100644
--- a/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/GraphHandler.java
@@ -80,8 +80,8 @@ public class GraphHandler extends RequestHandlerBase implements SolrCoreAware, P
* </lst>
* */
- String defaultCollection = null;
- String defaultZkhost = null;
+ String defaultCollection;
+ String defaultZkhost;
CoreContainer coreContainer = core.getCoreDescriptor().getCoreContainer();
this.coreName = core.getName();
@@ -140,7 +140,8 @@ public class GraphHandler extends RequestHandlerBase implements SolrCoreAware, P
if(null != functionMappingsObj){
NamedList<?> functionMappings = (NamedList<?>)functionMappingsObj;
for(Entry<String,?> functionMapping : functionMappings){
- Class<?> clazz = core.getResourceLoader().findClass((String)functionMapping.getValue(), Expressible.class);
+ Class<? extends Expressible> clazz = core.getResourceLoader().findClass((String)functionMapping.getValue(),
+ Expressible.class);
streamFactory.withFunctionName(functionMapping.getKey(), clazz);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6aa28bd6/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
index 6dbfdbe..49bd2da 100644
--- a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
@@ -69,7 +69,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
private StreamFactory streamFactory = new StreamFactory();
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private String coreName;
- private Map<String, DaemonStream> daemons = new HashMap();
+ private Map<String, DaemonStream> daemons = new HashMap<>();
@Override
public PermissionNameProvider.Name getPermissionName(AuthorizationContext request) {
@@ -88,8 +88,8 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
* </lst>
* */
- String defaultCollection = null;
- String defaultZkhost = null;
+ String defaultCollection;
+ String defaultZkhost;
CoreContainer coreContainer = core.getCoreDescriptor().getCoreContainer();
this.coreName = core.getName();
@@ -158,7 +158,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
if(null != functionMappingsObj){
NamedList<?> functionMappings = (NamedList<?>)functionMappingsObj;
for(Entry<String,?> functionMapping : functionMappings){
- Class<?> clazz = core.getResourceLoader().findClass((String)functionMapping.getValue(), Expressible.class);
+ Class<? extends Expressible> clazz = core.getResourceLoader().findClass((String)functionMapping.getValue(), Expressible.class);
streamFactory.withFunctionName(functionMapping.getKey(), clazz);
}
}
@@ -186,7 +186,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
return;
}
- TupleStream tupleStream = null;
+ TupleStream tupleStream;
try {
tupleStream = this.streamFactory.constructStream(params.get("expr"));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6aa28bd6/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
index 9008bc6..d2e72df 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java
@@ -42,12 +42,12 @@ import org.apache.solr.client.solrj.io.stream.metrics.Metric;
public class StreamFactory implements Serializable {
private transient HashMap<String,String> collectionZkHosts;
- private transient HashMap<String,Class> functionNames;
+ private transient HashMap<String,Class<? extends Expressible>> functionNames;
private transient String defaultZkHost;
public StreamFactory(){
- collectionZkHosts = new HashMap<String,String>();
- functionNames = new HashMap<String,Class>();
+ collectionZkHosts = new HashMap<>();
+ functionNames = new HashMap<>();
}
public StreamFactory withCollectionZkHost(String collectionName, String zkHost){
@@ -71,10 +71,10 @@ public class StreamFactory implements Serializable {
return null;
}
- public Map<String,Class> getFunctionNames(){
+ public Map<String,Class<? extends Expressible>> getFunctionNames(){
return functionNames;
}
- public StreamFactory withFunctionName(String functionName, Class clazz){
+ public StreamFactory withFunctionName(String functionName, Class<? extends Expressible> clazz){
this.functionNames.put(functionName, clazz);
return this;
}
@@ -100,7 +100,7 @@ public class StreamFactory implements Serializable {
}
public List<StreamExpressionNamedParameter> getNamedOperands(StreamExpression expression){
- List<StreamExpressionNamedParameter> namedParameters = new ArrayList<StreamExpressionNamedParameter>();
+ List<StreamExpressionNamedParameter> namedParameters = new ArrayList<>();
for(StreamExpressionParameter parameter : getOperandsOfType(expression, StreamExpressionNamedParameter.class)){
namedParameters.add((StreamExpressionNamedParameter)parameter);
}
@@ -119,7 +119,7 @@ public class StreamFactory implements Serializable {
}
public List<StreamExpression> getExpressionOperands(StreamExpression expression){
- List<StreamExpression> namedParameters = new ArrayList<StreamExpression>();
+ List<StreamExpression> namedParameters = new ArrayList<>();
for(StreamExpressionParameter parameter : getOperandsOfType(expression, StreamExpression.class)){
namedParameters.add((StreamExpression)parameter);
}
@@ -127,7 +127,7 @@ public class StreamFactory implements Serializable {
return namedParameters;
}
public List<StreamExpression> getExpressionOperands(StreamExpression expression, String functionName){
- List<StreamExpression> namedParameters = new ArrayList<StreamExpression>();
+ List<StreamExpression> namedParameters = new ArrayList<>();
for(StreamExpressionParameter parameter : getOperandsOfType(expression, StreamExpression.class)){
StreamExpression expressionOperand = (StreamExpression)parameter;
if(expressionOperand.getFunctionName().equals(functionName)){
@@ -138,7 +138,7 @@ public class StreamFactory implements Serializable {
return namedParameters;
}
public List<StreamExpressionParameter> getOperandsOfType(StreamExpression expression, Class ... clazzes){
- List<StreamExpressionParameter> parameters = new ArrayList<StreamExpressionParameter>();
+ List<StreamExpressionParameter> parameters = new ArrayList<>();
parameterLoop:
for(StreamExpressionParameter parameter : expression.getParameters()){
@@ -155,7 +155,7 @@ public class StreamFactory implements Serializable {
}
public List<StreamExpression> getExpressionOperandsRepresentingTypes(StreamExpression expression, Class ... clazzes){
- List<StreamExpression> matchingStreamExpressions = new ArrayList<StreamExpression>();
+ List<StreamExpression> matchingStreamExpressions = new ArrayList<>();
List<StreamExpression> allStreamExpressions = getExpressionOperands(expression);
parameterLoop:
@@ -215,10 +215,9 @@ public class StreamFactory implements Serializable {
public TupleStream constructStream(StreamExpression expression) throws IOException{
String function = expression.getFunctionName();
if(functionNames.containsKey(function)){
- Class clazz = functionNames.get(function);
+ Class<? extends Expressible> clazz = functionNames.get(function);
if(Expressible.class.isAssignableFrom(clazz) && TupleStream.class.isAssignableFrom(clazz)){
- TupleStream stream = (TupleStream)createInstance(functionNames.get(function), new Class[]{ StreamExpression.class, StreamFactory.class }, new Object[]{ expression, this});
- return stream;
+ return (TupleStream)createInstance(functionNames.get(function), new Class[]{ StreamExpression.class, StreamFactory.class }, new Object[]{ expression, this});
}
}
@@ -231,10 +230,9 @@ public class StreamFactory implements Serializable {
public Metric constructMetric(StreamExpression expression) throws IOException{
String function = expression.getFunctionName();
if(functionNames.containsKey(function)){
- Class clazz = functionNames.get(function);
+ Class<? extends Expressible> clazz = functionNames.get(function);
if(Expressible.class.isAssignableFrom(clazz) && Metric.class.isAssignableFrom(clazz)){
- Metric metric = (Metric)createInstance(functionNames.get(function), new Class[]{ StreamExpression.class, StreamFactory.class }, new Object[]{ expression, this});
- return metric;
+ return (Metric)createInstance(functionNames.get(function), new Class[]{ StreamExpression.class, StreamFactory.class }, new Object[]{ expression, this});
}
}
@@ -272,7 +270,7 @@ public class StreamFactory implements Serializable {
else if(null == rightFieldName){
rightFieldName = part.trim();
}
- else if(null == order){
+ else {
order = part.trim();
break; // we're done, stop looping
}
@@ -334,7 +332,7 @@ public class StreamFactory implements Serializable {
public StreamOperation constructOperation(StreamExpression expression) throws IOException{
String function = expression.getFunctionName();
if(functionNames.containsKey(function)){
- Class clazz = functionNames.get(function);
+ Class<? extends Expressible> clazz = functionNames.get(function);
if(Expressible.class.isAssignableFrom(clazz) && StreamOperation.class.isAssignableFrom(clazz)){
return (StreamOperation)createInstance(functionNames.get(function), new Class[]{ StreamExpression.class, StreamFactory.class }, new Object[]{ expression, this});
}
@@ -360,8 +358,8 @@ public class StreamFactory implements Serializable {
}
}
- public String getFunctionName(Class clazz) throws IOException{
- for(Entry<String,Class> entry : functionNames.entrySet()){
+ public String getFunctionName(Class<? extends Expressible> clazz) throws IOException{
+ for(Entry<String,Class<? extends Expressible>> entry : functionNames.entrySet()){
if(entry.getValue() == clazz){
return entry.getKey();
}
@@ -375,9 +373,9 @@ public class StreamFactory implements Serializable {
if("null".equals(lower)){ return null; }
if("true".equals(lower) || "false".equals(lower)){ return Boolean.parseBoolean(lower); }
- try{ return Long.valueOf(original); } catch(Exception e){};
- try{ if (original.matches(".{1,8}")){ return Float.valueOf(original); }} catch(Exception e){};
- try{ if (original.matches(".{1,17}")){ return Double.valueOf(original); }} catch(Exception e){};
+ try{ return Long.valueOf(original); } catch(Exception ignored){};
+ try{ if (original.matches(".{1,8}")){ return Float.valueOf(original); }} catch(Exception ignored){};
+ try{ if (original.matches(".{1,17}")){ return Double.valueOf(original); }} catch(Exception ignored){};
// is a string
return original;