[NO ISSUE][FUN] Remove unnecessary inner classes
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Remove unnecessary inner classes. Use the evaluator
factories length to check if the end position argument
is passed.
Change-Id: I5cc8c57888e62b26684082dd07a4314b45f9fa7f
Reviewed-on: https://asterix-gerrit.ics.uci.edu/3403
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractArraySliceEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceEvaluator.java
similarity index 90%
rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractArraySliceEval.java
rename to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceEvaluator.java
index 036447a..c907720 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractArraySliceEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceEvaluator.java
@@ -75,32 +75,31 @@
* </pre>
*/
-public abstract class AbstractArraySliceEval extends AbstractScalarEval {
+class ArraySliceEvaluator extends AbstractScalarEval {
+
// List type
private final IAType inputListType;
// Storage
- private final ArrayBackedValueStorage storage = new ArrayBackedValueStorage();
+ private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
- // Evaluators
+ // Evaluators and pointables
private final IScalarEvaluator listEval;
private final IScalarEvaluator startPositionEval;
- private final IScalarEvaluator endPositionEval;
-
- // Pointables
+ private IScalarEvaluator endPositionEval;
private final IPointable listPointable = new VoidPointable();
private final IPointable startPositionPointable = new VoidPointable();
- private final IPointable endPositionPointable = new VoidPointable();
+ private IPointable endPositionPointable;
// Accessors
private final ListAccessor listAccessor = new ListAccessor();
// List Builders
- private IAsterixListBuilder orderedListBuilder = new OrderedListBuilder();
- private IAsterixListBuilder unorderedListBuilder = new UnorderedListBuilder();
+ private final IAsterixListBuilder orderedListBuilder = new OrderedListBuilder();
+ private final IAsterixListBuilder unorderedListBuilder = new UnorderedListBuilder();
// Constructor
- public AbstractArraySliceEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx, SourceLocation sourceLoc,
+ ArraySliceEvaluator(IScalarEvaluatorFactory[] argEvalFactories, IHyracksTaskContext ctx, SourceLocation sourceLoc,
FunctionIdentifier functionIdentifier, IAType inputListType) throws HyracksDataException {
// Source location
super(sourceLoc, functionIdentifier);
@@ -109,20 +108,18 @@
this.inputListType = inputListType;
// Evaluators
- listEval = args[0].createScalarEvaluator(ctx);
- startPositionEval = args[1].createScalarEvaluator(ctx);
+ listEval = argEvalFactories[0].createScalarEvaluator(ctx);
+ startPositionEval = argEvalFactories[1].createScalarEvaluator(ctx);
// Check for optional parameter
- endPositionEval = getEndPositionEval(args, ctx);
+ if (argEvalFactories.length > 2) {
+ endPositionEval = argEvalFactories[2].createScalarEvaluator(ctx);
+ endPositionPointable = new VoidPointable();
+ }
}
- protected abstract IScalarEvaluator getEndPositionEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx)
- throws HyracksDataException;
-
@Override
public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
- // Reset storage
- storage.reset();
// Evaluate
listEval.evaluate(tuple, listPointable);
@@ -231,18 +228,18 @@
try {
// Create the subset list based on the positions
for (int i = startPositionValue; i < endPositionValue; i++) {
- storage.reset();
- listAccessor.writeItem(i, storage.getDataOutput());
- listBuilder.addItem(storage);
+ resultStorage.reset();
+ listAccessor.writeItem(i, resultStorage.getDataOutput());
+ listBuilder.addItem(resultStorage);
}
} catch (IOException ex) {
throw HyracksDataException.create(ex);
}
// Final result
- storage.reset();
- listBuilder.write(storage.getDataOutput(), true);
- result.set(storage);
+ resultStorage.reset();
+ listBuilder.write(resultStorage.getDataOutput(), true);
+ result.set(resultStorage);
}
// Get the value
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java
index 81833b6..04e93dd 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java
@@ -32,7 +32,6 @@
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.exceptions.SourceLocation;
/**
* array_slice(array, start, end) This function takes 3 arguments, {@code array}, {@code start} and {@code end} and
@@ -75,24 +74,8 @@
@Override
public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
- return new ArraySliceEval(args, ctx, sourceLoc);
+ return new ArraySliceEvaluator(args, ctx, sourceLoc, getIdentifier(), inputListType);
}
};
}
-
- public class ArraySliceEval extends AbstractArraySliceEval {
-
- // Constructor
- public ArraySliceEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx, SourceLocation sourceLoc)
- throws HyracksDataException {
- super(args, ctx, sourceLoc, ArraySliceWithEndPositionDescriptor.this.getIdentifier(), inputListType);
- }
-
- // Return end position evaluator
- @Override
- protected IScalarEvaluator getEndPositionEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx)
- throws HyracksDataException {
- return args[2].createScalarEvaluator(ctx);
- }
- }
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java
index 3fab75b..7a3889f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java
@@ -32,7 +32,6 @@
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.context.IHyracksTaskContext;
import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.exceptions.SourceLocation;
/**
* array_slice(array, start) This function takes 2 arguments, {@code array} and {@code start} and returns
@@ -75,23 +74,8 @@
@Override
public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
- return new ArraySliceEval(args, ctx, sourceLoc);
+ return new ArraySliceEvaluator(args, ctx, sourceLoc, getIdentifier(), inputListType);
}
};
}
-
- public class ArraySliceEval extends AbstractArraySliceEval {
-
- // Constructor
- public ArraySliceEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx, SourceLocation sourceLoc)
- throws HyracksDataException {
- super(args, ctx, sourceLoc, ArraySliceWithoutEndPositionDescriptor.this.getIdentifier(), inputListType);
- }
-
- // Return null, no end position
- @Override
- protected IScalarEvaluator getEndPositionEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx) {
- return null;
- }
- }
}