[ASTERIXDB-1980][FUNC] Cleanup FunctionManager lifecycle
- user model changes: no
- storage format changes: no
- interface changes: yes
Details:
- Moved FunctionCollection
from asterix-algebra/org.apache.asterix.translator.util
to asterix-runtime/org.apache.asterix.runtime.functions
- Moved FunctionManagerHolder
from asterix-om/org.apache.asterix.om.functions
to asterix-runtime/org.apache.asterix.runtime.functions
- Removed IDataFormat.registerRuntimeFunctions()
Change-Id: If96e425a096bc0312a68d81b04686d7165f1a1fd
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1873
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Yingyi Bu <buyingyi@gmail.com>
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index 8258d51..b8a6d8a 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -94,13 +94,11 @@
import org.apache.asterix.om.functions.FunctionInfo;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
-import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.translator.CompiledStatements.CompiledInsertStatement;
import org.apache.asterix.translator.CompiledStatements.CompiledLoadFromFileStatement;
import org.apache.asterix.translator.CompiledStatements.CompiledSubscribeFeedStatement;
import org.apache.asterix.translator.CompiledStatements.CompiledUpsertStatement;
import org.apache.asterix.translator.CompiledStatements.ICompiledDmlStatement;
-import org.apache.asterix.translator.util.FunctionCollection;
import org.apache.asterix.translator.util.PlanTranslationUtil;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index 744f99c..583302b 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -62,14 +62,12 @@
import org.apache.asterix.lang.common.util.FunctionUtil;
import org.apache.asterix.metadata.declared.MetadataProvider;
import org.apache.asterix.optimizer.base.FuzzyUtils;
-import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.runtime.job.listener.JobEventListenerFactory;
import org.apache.asterix.transaction.management.service.transaction.JobIdFactory;
import org.apache.asterix.translator.CompiledStatements.ICompiledDmlStatement;
import org.apache.asterix.translator.IStatementExecutor.Stats;
import org.apache.asterix.translator.SessionConfig;
import org.apache.asterix.translator.SessionOutput;
-import org.apache.asterix.translator.util.FunctionCollection;
import org.apache.asterix.utils.ResourceUtils;
import org.apache.hyracks.algebricks.common.constraints.AlgebricksAbsolutePartitionConstraint;
import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
@@ -135,10 +133,6 @@
this.ruleSetFactory = compilationProvider.getRuleSetFactory();
}
- static {
- FormatUtils.getDefaultFormat().registerRuntimeFunctions(FunctionCollection.getFunctionDescriptorFactories());
- }
-
private static class OptimizationContextFactory implements IOptimizationContextFactory {
public static final OptimizationContextFactory INSTANCE = new OptimizationContextFactory();
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ExceptionIT.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ExceptionIT.java
index 0d9f789..3c54c7c 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ExceptionIT.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/ExceptionIT.java
@@ -28,7 +28,7 @@
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.asterix.translator.util.FunctionCollection;
+import org.apache.asterix.runtime.functions.FunctionCollection;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.evaluators.ConstantEvalFactory;
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java
index 7827297..f5e7402 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/runtime/NullMissingTest.java
@@ -29,7 +29,7 @@
import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
-import org.apache.asterix.translator.util.FunctionCollection;
+import org.apache.asterix.runtime.functions.FunctionCollection;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.evaluators.ConstantEvalFactory;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
index 775efbe..fa33790 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
@@ -31,8 +31,8 @@
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.entities.Index;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.FunctionManagerHolder;
import org.apache.asterix.om.functions.IFunctionDescriptor;
+import org.apache.asterix.runtime.functions.FunctionManagerHolder;
import org.apache.asterix.runtime.operators.LSMSecondaryIndexBulkLoadOperatorDescriptor;
import org.apache.asterix.runtime.operators.LSMSecondaryIndexCreationTupleProcessorOperatorDescriptor;
import org.apache.asterix.transaction.management.opcallbacks.PrimaryIndexInstantSearchOperationCallbackFactory;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
index 8c45c11..8fc9ed7 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
@@ -42,13 +42,13 @@
import org.apache.asterix.metadata.entities.InternalDatasetDetails;
import org.apache.asterix.metadata.lock.ExternalDatasetsRegistry;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.FunctionManagerHolder;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.types.ARecordType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.runtime.evaluators.functions.AndDescriptor;
import org.apache.asterix.runtime.evaluators.functions.IsUnknownDescriptor;
import org.apache.asterix.runtime.evaluators.functions.NotDescriptor;
+import org.apache.asterix.runtime.functions.FunctionManagerHolder;
import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraintHelper;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
index 5be58cb..7624a8a 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
@@ -45,8 +45,6 @@
import org.apache.hyracks.api.dataflow.value.IPredicateEvaluatorFactoryProvider;
public interface IDataFormat {
- public void registerRuntimeFunctions(List<IFunctionDescriptorFactory> funcDescriptor);
-
public ISerializerDeserializerProvider getSerdeProvider();
public IBinaryHashFunctionFactoryProvider getBinaryHashFunctionFactoryProvider();
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionManagerHolder.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionManagerHolder.java
deleted file mode 100644
index 9193793..0000000
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/FunctionManagerHolder.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.asterix.om.functions;
-
-public class FunctionManagerHolder {
- private static IFunctionManager functionManager;
-
- public static IFunctionManager getFunctionManager() {
- return functionManager;
- }
-
- public static void setFunctionManager(IFunctionManager manager) {
- functionManager = manager;
- }
-}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/AbstractScalarAggregateDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/AbstractScalarAggregateDescriptor.java
index a2a36cc..96a298f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/AbstractScalarAggregateDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/aggregates/scalar/AbstractScalarAggregateDescriptor.java
@@ -19,11 +19,11 @@
package org.apache.asterix.runtime.aggregates.scalar;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.FunctionManagerHolder;
import org.apache.asterix.om.functions.IFunctionDescriptor;
import org.apache.asterix.om.functions.IFunctionManager;
import org.apache.asterix.runtime.aggregates.base.AbstractAggregateFunctionDynamicDescriptor;
import org.apache.asterix.runtime.evaluators.base.AbstractScalarFunctionDynamicDescriptor;
+import org.apache.asterix.runtime.functions.FunctionManagerHolder;
import org.apache.asterix.runtime.unnestingfunctions.std.ScanCollectionDescriptor.ScanCollectionUnnestingFunctionFactory;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
index 33d9f45..090352d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
@@ -26,8 +26,6 @@
import java.util.Map;
import org.apache.asterix.common.config.GlobalConfig;
-import org.apache.asterix.common.exceptions.AsterixException;
-import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.dataflow.data.nontagged.MissingWriterFactory;
import org.apache.asterix.formats.base.IDataFormat;
import org.apache.asterix.formats.nontagged.ADMPrinterFactoryProvider;
@@ -51,9 +49,7 @@
import org.apache.asterix.om.base.IAObject;
import org.apache.asterix.om.constants.AsterixConstantValue;
import org.apache.asterix.om.functions.BuiltinFunctions;
-import org.apache.asterix.om.functions.FunctionManagerHolder;
import org.apache.asterix.om.functions.IFunctionDescriptor;
-import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
import org.apache.asterix.om.functions.IFunctionManager;
import org.apache.asterix.om.pointables.base.DefaultOpenFieldType;
import org.apache.asterix.om.typecomputer.base.TypeCastUtils;
@@ -64,7 +60,7 @@
import org.apache.asterix.om.utils.ConstantExpressionUtil;
import org.apache.asterix.om.utils.RecordUtil;
import org.apache.asterix.runtime.evaluators.common.CreateMBREvalFactory;
-import org.apache.asterix.runtime.evaluators.common.FunctionManagerImpl;
+import org.apache.asterix.runtime.functions.FunctionManagerHolder;
import org.apache.commons.lang3.mutable.Mutable;
import org.apache.commons.lang3.mutable.MutableObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
@@ -107,8 +103,6 @@
public class NonTaggedDataFormat implements IDataFormat {
- private static boolean registered = false;
-
public static final NonTaggedDataFormat INSTANCE = new NonTaggedDataFormat();
private static LogicalVariable METADATA_DUMMY_VAR = new LogicalVariable(-1);
@@ -117,7 +111,7 @@
public static final String NON_TAGGED_DATA_FORMAT = "org.apache.asterix.runtime.formats.NonTaggedDataFormat";
- private Map<FunctionIdentifier, FunctionTypeInferer> functionTypeInferers = new HashMap<>();
+ private final Map<FunctionIdentifier, FunctionTypeInferer> functionTypeInferers = new HashMap<>();
static {
typeToValueParserFactMap.put(ATypeTag.INTEGER, IntegerParserFactory.INSTANCE);
@@ -128,38 +122,9 @@
}
public NonTaggedDataFormat() {
- }
-
- @Override
- public void registerRuntimeFunctions(List<IFunctionDescriptorFactory> funcDescriptors) {
-
- if (registered) {
- return;
- }
- registered = true;
-
- if (FunctionManagerHolder.getFunctionManager() != null) {
- return;
- }
-
- IFunctionManager mgr = new FunctionManagerImpl();
- for (IFunctionDescriptorFactory fdFactory : funcDescriptors) {
- mgr.registerFunction(fdFactory);
- }
- FunctionManagerHolder.setFunctionManager(mgr);
-
registerTypeInferers();
}
- private IFunctionDescriptor lookupRuntimeFunction(FunctionIdentifier funcId)
- throws AlgebricksException {
- IFunctionManager mgr = FunctionManagerHolder.getFunctionManager();
- if (mgr == null) {
- throw new AsterixException(ErrorCode.COMPILATION_ILLEGAL_STATE, funcId);
- }
- return mgr.lookupFunction(funcId);
- }
-
@Override
public IBinaryBooleanInspectorFactory getBinaryBooleanInspectorFactory() {
return BinaryBooleanInspector.FACTORY;
@@ -208,7 +173,8 @@
}
IScalarEvaluatorFactory fldIndexEvalFactory =
new ConstantEvalFactory(Arrays.copyOf(abvs.getByteArray(), abvs.getLength()));
- IFunctionDescriptor fDesc = lookupRuntimeFunction(BuiltinFunctions.FIELD_ACCESS_BY_INDEX);
+ IFunctionDescriptor fDesc = FunctionManagerHolder.getFunctionManager()
+ .lookupFunction(BuiltinFunctions.FIELD_ACCESS_BY_INDEX);
fDesc.setImmutableStates(recType);
return fDesc.createEvaluatorFactory(
new IScalarEvaluatorFactory[] { recordEvalFactory, fldIndexEvalFactory });
@@ -224,14 +190,16 @@
}
IScalarEvaluatorFactory fldNameEvalFactory =
new ConstantEvalFactory(Arrays.copyOf(abvs.getByteArray(), abvs.getLength()));
- IFunctionDescriptor fDesc = lookupRuntimeFunction(BuiltinFunctions.FIELD_ACCESS_BY_NAME);
+ IFunctionDescriptor fDesc = FunctionManagerHolder.getFunctionManager()
+ .lookupFunction(BuiltinFunctions.FIELD_ACCESS_BY_NAME);
return fDesc.createEvaluatorFactory(
new IScalarEvaluatorFactory[] { recordEvalFactory, fldNameEvalFactory });
}
}
if (fldName.size() > 1) {
- IFunctionDescriptor fDesc = lookupRuntimeFunction(BuiltinFunctions.FIELD_ACCESS_NESTED);
+ IFunctionDescriptor fDesc =
+ FunctionManagerHolder.getFunctionManager().lookupFunction(BuiltinFunctions.FIELD_ACCESS_NESTED);
fDesc.setImmutableStates(recType, fldName);
return fDesc.createEvaluatorFactory(new IScalarEvaluatorFactory[] { recordEvalFactory });
}
@@ -301,7 +269,8 @@
}
IScalarEvaluatorFactory fldIndexEvalFactory =
new ConstantEvalFactory(Arrays.copyOf(abvs.getByteArray(), abvs.getLength()));
- IFunctionDescriptor fDesc = lookupRuntimeFunction(BuiltinFunctions.FIELD_ACCESS_BY_INDEX);
+ IFunctionDescriptor fDesc = FunctionManagerHolder.getFunctionManager()
+ .lookupFunction(BuiltinFunctions.FIELD_ACCESS_BY_INDEX);
fDesc.setImmutableStates(recType);
IScalarEvaluatorFactory evalFactory = fDesc.createEvaluatorFactory(
new IScalarEvaluatorFactory[] { recordEvalFactory, fldIndexEvalFactory });
@@ -327,7 +296,8 @@
} catch (HyracksDataException e) {
throw new AlgebricksException(e);
}
- IFunctionDescriptor fDesc = lookupRuntimeFunction(BuiltinFunctions.FIELD_ACCESS_NESTED);
+ IFunctionDescriptor fDesc =
+ FunctionManagerHolder.getFunctionManager().lookupFunction(BuiltinFunctions.FIELD_ACCESS_NESTED);
fDesc.setImmutableStates(recType, fldName);
IScalarEvaluatorFactory evalFactory =
fDesc.createEvaluatorFactory(new IScalarEvaluatorFactory[] { recordEvalFactory });
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/FunctionCollection.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
similarity index 99%
rename from asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/FunctionCollection.java
rename to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
index fa67e25..c02732f 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/FunctionCollection.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionCollection.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.asterix.translator.util;
+package org.apache.asterix.runtime.functions;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -333,7 +333,7 @@
/**
* This class (statically) holds a list of function descriptor factories.
*/
-public class FunctionCollection {
+public final class FunctionCollection {
private static final String FACTORY = "FACTORY";
private static final List<IFunctionDescriptorFactory> temp = new ArrayList<>();
@@ -741,4 +741,6 @@
}
}
+ private FunctionCollection() {
+ }
}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionManagerHolder.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionManagerHolder.java
new file mode 100644
index 0000000..52b61bb
--- /dev/null
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionManagerHolder.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.runtime.functions;
+
+import org.apache.asterix.om.functions.IFunctionDescriptorFactory;
+import org.apache.asterix.om.functions.IFunctionManager;
+
+public final class FunctionManagerHolder {
+ private static final IFunctionManager functionManager = createFunctionManager();
+
+ public static IFunctionManager getFunctionManager() {
+ return functionManager;
+ }
+
+ private static IFunctionManager createFunctionManager() {
+ FunctionManagerImpl mgr = new FunctionManagerImpl();
+ for (IFunctionDescriptorFactory fdFactory : FunctionCollection.getFunctionDescriptorFactories()) {
+ mgr.registerFunction(fdFactory);
+ }
+ return mgr;
+ }
+
+ private FunctionManagerHolder() {
+ }
+}
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FunctionManagerImpl.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionManagerImpl.java
similarity index 87%
rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FunctionManagerImpl.java
rename to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionManagerImpl.java
index ae9a700..4056955 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/FunctionManagerImpl.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/functions/FunctionManagerImpl.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.asterix.runtime.evaluators.common;
+package org.apache.asterix.runtime.functions;
import java.util.ArrayList;
import java.util.HashMap;
@@ -31,10 +31,10 @@
import org.apache.hyracks.algebricks.common.utils.Pair;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
-public class FunctionManagerImpl implements IFunctionManager {
+final class FunctionManagerImpl implements IFunctionManager {
private final Map<Pair<FunctionIdentifier, Integer>, IFunctionDescriptorFactory> functions;
- public FunctionManagerImpl() {
+ FunctionManagerImpl() {
functions = new HashMap<>();
}
@@ -51,7 +51,7 @@
@Override
public synchronized void registerFunction(IFunctionDescriptorFactory descriptorFactory) {
FunctionIdentifier fid = descriptorFactory.createFunctionDescriptor().getIdentifier();
- functions.put(new Pair<FunctionIdentifier, Integer>(fid, fid.getArity()), descriptorFactory);
+ functions.put(new Pair<>(fid, fid.getArity()), descriptorFactory);
}
@Override
@@ -63,6 +63,6 @@
@Override
public synchronized Iterator<IFunctionDescriptorFactory> iterator() {
- return new ArrayList<IFunctionDescriptorFactory>(functions.values()).iterator();
+ return new ArrayList<>(functions.values()).iterator();
}
}