You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by am...@apache.org on 2016/03/26 21:27:35 UTC
[04/13] incubator-asterixdb git commit: Improve Error Handling in
Local Directory Feeds
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/Value.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/Value.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/Value.java
index f0466b2..427e2a2 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/Value.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/Value.java
@@ -18,6 +18,7 @@
*/
package org.apache.asterix.external.classad;
+import org.apache.asterix.external.classad.object.pool.ClassAdObjectPool;
import org.apache.asterix.om.base.AMutableDouble;
import org.apache.asterix.om.base.AMutableInt32;
import org.apache.asterix.om.base.AMutableInt64;
@@ -30,9 +31,9 @@ public class Value {
private long longVal;
private double doubleVal;
private boolean boolVal;
- private ClassAdTime timeVal = new ClassAdTime();
- private ClassAd classadVal = new ClassAd();
- private ExprList listVal = new ExprList();
+ private final ClassAdTime timeVal;
+ private final ClassAd classadVal;
+ private final ExprList listVal;
private String stringVal;
/// Value types
@@ -164,7 +165,7 @@ public class Value {
}
}
- public boolean isClassAdValue(ClassAd ad) {
+ public boolean isClassAdValue(ClassAd ad) throws HyracksDataException {
if (valueType == ValueType.CLASSAD_VALUE) {
ad.setValue(classadVal);
return true;
@@ -265,49 +266,11 @@ public class Value {
1024.0 * 1024.0 * 1024.0 * 1024.0 // Terra
};
- public Value() {
+ public Value(ClassAdObjectPool objectPool) {
valueType = ValueType.UNDEFINED_VALUE;
- }
-
- public Value(Value value) throws HyracksDataException {
- valueType = value.valueType;
- switch (value.valueType) {
- case ABSOLUTE_TIME_VALUE:
- timeVal = new ClassAdTime(value.timeVal);
- break;
- case BOOLEAN_VALUE:
- this.boolVal = value.boolVal;
- break;
- case CLASSAD_VALUE:
- this.classadVal = new ClassAd(value.classadVal);
- break;
- case ERROR_VALUE:
- break;
- case INTEGER_VALUE:
- this.longVal = value.longVal;
- break;
- case LIST_VALUE:
- this.listVal = new ExprList(value.listVal);
- break;
- case NULL_VALUE:
- break;
- case REAL_VALUE:
- this.doubleVal = value.doubleVal;
- break;
- case RELATIVE_TIME_VALUE:
- this.timeVal = new ClassAdTime(value.timeVal);
- break;
- case SLIST_VALUE:
- this.listVal = new ExprList(value.listVal);
- break;
- case STRING_VALUE:
- this.stringVal = value.stringVal;
- break;
- case UNDEFINED_VALUE:
- break;
- default:
- break;
- }
+ this.timeVal = new ClassAdTime();
+ this.listVal = new ExprList(objectPool);
+ this.classadVal = new ClassAd(objectPool);
}
public void setValue(Value value) throws HyracksDataException {
@@ -351,14 +314,15 @@ public class Value {
}
}
- public void assign(Value value) throws HyracksDataException {
- if (this != value) {
- setValue(value);
- }
+ private void clear() {
+ valueType = ValueType.UNDEFINED_VALUE;
}
- public void clear() {
+ public void reset() {
valueType = ValueType.UNDEFINED_VALUE;
+ listVal.reset();
+ timeVal.reset();
+ classadVal.reset();
}
public void setRealValue(double r) {
@@ -409,7 +373,7 @@ public class Value {
listVal.setValue(expList);
}
- public void setClassAdValue(ClassAd ad) {
+ public void setClassAdValue(ClassAd ad) throws HyracksDataException {
clear();
valueType = ValueType.CLASSAD_VALUE;
classadVal.setValue(ad);
@@ -483,7 +447,7 @@ public class Value {
@Override
public String toString() {
- ClassAdUnParser unparser = new PrettyPrint();
+ ClassAdUnParser unparser = new PrettyPrint(new ClassAdObjectPool());
AMutableCharArrayString unparsed_text = new AMutableCharArrayString();
switch (valueType) {
case ABSOLUTE_TIME_VALUE:
@@ -521,14 +485,15 @@ public class Value {
return null;
}
- public static boolean convertValueToRealValue(Value value, Value realValue) throws HyracksDataException {
+ public static boolean convertValueToRealValue(Value value, Value realValue, ClassAdObjectPool objectPool)
+ throws HyracksDataException {
boolean could_convert;
- AMutableCharArrayString buf = new AMutableCharArrayString();
+ AMutableCharArrayString buf = objectPool.strPool.get();
int endIndex;
char end;
- AMutableInt64 ivalue = new AMutableInt64(0);
- ClassAdTime atvalue = new ClassAdTime();
- MutableBoolean bvalue = new MutableBoolean();
+ AMutableInt64 ivalue = objectPool.int64Pool.get();
+ ClassAdTime atvalue = objectPool.classAdTimePool.get();
+ MutableBoolean bvalue = objectPool.boolPool.get();
double rvalue;
NumberFactor nf = NumberFactor.NO_FACTOR;
@@ -604,7 +569,7 @@ public class Value {
break;
case REAL_VALUE:
- realValue.copyFrom(value);
+ realValue.setValue(value);
could_convert = true;
break;
@@ -627,14 +592,15 @@ public class Value {
return could_convert;
}
- public static boolean convertValueToIntegerValue(Value value, Value integerValue) throws HyracksDataException {
+ public static boolean convertValueToIntegerValue(Value value, Value integerValue, ClassAdObjectPool objectPool)
+ throws HyracksDataException {
boolean could_convert;
- AMutableCharArrayString buf = new AMutableCharArrayString();
+ AMutableCharArrayString buf = objectPool.strPool.get();
char end;
- AMutableInt64 ivalue = new AMutableInt64(0);
- AMutableDouble rtvalue = new AMutableDouble(0);
- ClassAdTime atvalue = new ClassAdTime();
- MutableBoolean bvalue = new MutableBoolean();
+ AMutableInt64 ivalue = objectPool.int64Pool.get();
+ AMutableDouble rtvalue = objectPool.doublePool.get();
+ ClassAdTime atvalue = objectPool.classAdTimePool.get();
+ MutableBoolean bvalue = objectPool.boolPool.get();
NumberFactor nf;
switch (value.getType()) {
@@ -700,7 +666,7 @@ public class Value {
break;
case INTEGER_VALUE:
- integerValue.copyFrom(value);
+ integerValue.setValue(value);
could_convert = true;
break;
@@ -729,51 +695,12 @@ public class Value {
return could_convert;
}
- public void copyFrom(Value val) throws HyracksDataException {
- clear();
- valueType = val.valueType;
- switch (val.valueType) {
- case STRING_VALUE:
- stringVal = val.stringVal;
- return;
-
- case BOOLEAN_VALUE:
- boolVal = val.boolVal;
- return;
-
- case INTEGER_VALUE:
- longVal = val.longVal;
- return;
-
- case REAL_VALUE:
-
- doubleVal = val.doubleVal;
- return;
- case UNDEFINED_VALUE:
- case ERROR_VALUE:
- return;
- case LIST_VALUE:
- case SLIST_VALUE:
- listVal.copyFrom(val.listVal);
- return;
- case CLASSAD_VALUE:
- classadVal.copyFrom(val.classadVal);
- return;
-
- case RELATIVE_TIME_VALUE:
- case ABSOLUTE_TIME_VALUE:
- timeVal.setValue(val.timeVal);
- return;
- default:
- setUndefinedValue();
- }
- }
-
- public static boolean convertValueToStringValue(Value value, Value stringValue) throws HyracksDataException {
+ public static boolean convertValueToStringValue(Value value, Value stringValue, ClassAdObjectPool objectPool)
+ throws HyracksDataException {
boolean could_convert = false;
- ClassAdTime atvalue = new ClassAdTime();
- AMutableCharArrayString string_representation = new AMutableCharArrayString();
- ClassAdUnParser unparser = new PrettyPrint();
+ ClassAdTime atvalue = objectPool.classAdTimePool.get();
+ AMutableCharArrayString string_representation = objectPool.strPool.get();
+ ClassAdUnParser unparser = objectPool.prettyPrintPool.get();
switch (value.getType()) {
case UNDEFINED_VALUE:
@@ -787,7 +714,7 @@ public class Value {
break;
case STRING_VALUE:
- stringValue.copyFrom(value);
+ stringValue.setValue(value);
could_convert = true;
break;
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AMutableCharArrayStringPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AMutableCharArrayStringPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AMutableCharArrayStringPool.java
new file mode 100644
index 0000000..b434522
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AMutableCharArrayStringPool.java
@@ -0,0 +1,35 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.AMutableCharArrayString;
+
+public class AMutableCharArrayStringPool extends Pool<AMutableCharArrayString> {
+
+ @Override
+ public AMutableCharArrayString newInstance() {
+ return new AMutableCharArrayString();
+ }
+
+ @Override
+ protected void reset(AMutableCharArrayString str) {
+ str.reset();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AttributeReferencePool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AttributeReferencePool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AttributeReferencePool.java
index d7bcfcc..9eb2c0c 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AttributeReferencePool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/AttributeReferencePool.java
@@ -22,9 +22,16 @@ import org.apache.asterix.external.classad.AttributeReference;
public class AttributeReferencePool extends Pool<AttributeReference> {
+ private final ClassAdObjectPool objectPool;
+
+ public AttributeReferencePool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+
+ }
+
@Override
public AttributeReference newInstance() {
- return new AttributeReference();
+ return new AttributeReference(objectPool);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/CaseInsensitiveStringPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/CaseInsensitiveStringPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/CaseInsensitiveStringPool.java
index 7e88961..f8a70f1 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/CaseInsensitiveStringPool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/CaseInsensitiveStringPool.java
@@ -18,32 +18,10 @@
*/
package org.apache.asterix.external.classad.object.pool;
-import java.util.Stack;
-
import org.apache.asterix.external.classad.CaseInsensitiveString;
public class CaseInsensitiveStringPool extends Pool<CaseInsensitiveString> {
- protected Stack<CaseInsensitiveString> stock = new Stack<CaseInsensitiveString>();
-
- @Override
- public CaseInsensitiveString get() {
- if (!stock.isEmpty()) {
- return stock.pop();
- } else {
- return newInstance();
-
- }
- }
-
- @Override
- public void reset() {
- }
-
- public void put(CaseInsensitiveString aString) {
- stock.push(aString);
- }
-
@Override
public CaseInsensitiveString newInstance() {
return new CaseInsensitiveString();
@@ -51,5 +29,6 @@ public class CaseInsensitiveStringPool extends Pool<CaseInsensitiveString> {
@Override
protected void reset(CaseInsensitiveString obj) {
+ obj.set(null);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdObjectPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdObjectPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdObjectPool.java
new file mode 100644
index 0000000..c6e265f
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdObjectPool.java
@@ -0,0 +1,103 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.CaseInsensitiveString;
+import org.apache.asterix.external.classad.ExprTree;
+
+public class ClassAdObjectPool {
+ public final ExprHolderPool mutableExprPool;
+ public final TokenValuePool tokenValuePool;
+ public final ClassAdPool classAdPool;
+ public final ExprListPool exprListPool;
+ public final ValuePool valuePool;
+ public final LiteralPool literalPool;
+ public final BitSetPool bitSetPool;
+ public final OperationPool operationPool;
+ public final AttributeReferencePool attrRefPool;
+ public final ClassAdParserPool classAdParserPool;
+ public final AMutableCharArrayStringPool strPool;
+ public final FunctionCallPool funcPool;
+ public final MutableBooleanPool boolPool;
+ public final CaseInsensitiveStringPool caseInsensitiveStringPool;
+ public final StringArrayListPool stringArrayListPool;
+ public final Int32Pool int32Pool;
+ public final Int64Pool int64Pool;
+ public final ClassAdTimePool classAdTimePool;
+ public final DoublePool doublePool;
+ public final EvalStatePool evalStatePool;
+ public final HashMapPool<CaseInsensitiveString, ExprTree> strToExprPool;
+ public final PrettyPrintPool prettyPrintPool;
+ public final TreeSetPool<String> strSetPool;
+ public final MutableNumberFactorPool numFactorPool;
+
+ public ClassAdObjectPool() {
+ int32Pool = new Int32Pool();
+ int64Pool = new Int64Pool();
+ mutableExprPool = new ExprHolderPool(this);
+ tokenValuePool = new TokenValuePool();
+ classAdPool = new ClassAdPool(this);
+ exprListPool = new ExprListPool(this);
+ valuePool = new ValuePool(this);
+ literalPool = new LiteralPool(this);
+ bitSetPool = new BitSetPool();
+ operationPool = new OperationPool(this);
+ attrRefPool = new AttributeReferencePool(this);
+ strPool = new AMutableCharArrayStringPool();
+ funcPool = new FunctionCallPool(this);
+ boolPool = new MutableBooleanPool();
+ caseInsensitiveStringPool = new CaseInsensitiveStringPool();
+ stringArrayListPool = new StringArrayListPool();
+ classAdParserPool = new ClassAdParserPool(this);
+ classAdTimePool = new ClassAdTimePool();
+ doublePool = new DoublePool();
+ evalStatePool = new EvalStatePool(this);
+ strToExprPool = new HashMapPool<CaseInsensitiveString, ExprTree>();
+ prettyPrintPool = new PrettyPrintPool(this);
+ strSetPool = new TreeSetPool<String>();
+ numFactorPool = new MutableNumberFactorPool();
+ }
+
+ public void reset() {
+ mutableExprPool.reset();
+ tokenValuePool.reset();
+ classAdPool.reset();
+ exprListPool.reset();
+ valuePool.reset();
+ literalPool.reset();
+ bitSetPool.reset();
+ operationPool.reset();
+ attrRefPool.reset();
+ strPool.reset();
+ classAdParserPool.reset();
+ funcPool.reset();
+ boolPool.reset();
+ caseInsensitiveStringPool.reset();
+ stringArrayListPool.reset();
+ int32Pool.reset();
+ int64Pool.reset();
+ classAdTimePool.reset();
+ doublePool.reset();
+ evalStatePool.reset();
+ strToExprPool.reset();
+ prettyPrintPool.reset();
+ strSetPool.reset();
+ numFactorPool.reset();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdParserPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdParserPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdParserPool.java
new file mode 100644
index 0000000..4f85e7c
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdParserPool.java
@@ -0,0 +1,39 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.external.library.ClassAdParser;
+
+public class ClassAdParserPool extends Pool<ClassAdParser> {
+ private final ClassAdObjectPool objectPool;
+
+ public ClassAdParserPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
+ @Override
+ public ClassAdParser newInstance() {
+ return new ClassAdParser(objectPool);
+ }
+
+ @Override
+ protected void reset(ClassAdParser obj) {
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdPool.java
index 40b8eb3..039e414 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdPool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdPool.java
@@ -22,9 +22,15 @@ import org.apache.asterix.external.classad.ClassAd;
public class ClassAdPool extends Pool<ClassAd> {
+ private final ClassAdObjectPool objectPool;
+
+ public ClassAdPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
@Override
public ClassAd newInstance() {
- return new ClassAd(false, false);
+ return new ClassAd(objectPool);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdTimePool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdTimePool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdTimePool.java
new file mode 100644
index 0000000..06a2c2f
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ClassAdTimePool.java
@@ -0,0 +1,35 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.ClassAdTime;
+
+public class ClassAdTimePool extends Pool<ClassAdTime> {
+
+ @Override
+ public ClassAdTime newInstance() {
+ return new ClassAdTime();
+ }
+
+ @Override
+ protected void reset(ClassAdTime obj) {
+ obj.setCurrentAbsolute();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/DoublePool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/DoublePool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/DoublePool.java
new file mode 100644
index 0000000..52c1d26
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/DoublePool.java
@@ -0,0 +1,34 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.om.base.AMutableDouble;
+
+public class DoublePool extends Pool<AMutableDouble> {
+
+ @Override
+ public AMutableDouble newInstance() {
+ return new AMutableDouble(0);
+ }
+
+ @Override
+ protected void reset(AMutableDouble obj) {
+ obj.setValue(0);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/EvalStatePool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/EvalStatePool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/EvalStatePool.java
new file mode 100644
index 0000000..a047cc9
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/EvalStatePool.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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.EvalState;
+
+public class EvalStatePool extends Pool<EvalState> {
+
+ public final ClassAdObjectPool objectPool;
+
+ public EvalStatePool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
+ @Override
+ public EvalState newInstance() {
+ return new EvalState(objectPool);
+ }
+
+ @Override
+ protected void reset(EvalState obj) {
+ obj.reset();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprHolderPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprHolderPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprHolderPool.java
index b34e863..156f012 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprHolderPool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprHolderPool.java
@@ -21,9 +21,16 @@ package org.apache.asterix.external.classad.object.pool;
import org.apache.asterix.external.classad.ExprTreeHolder;
public class ExprHolderPool extends Pool<ExprTreeHolder> {
+
+ private final ClassAdObjectPool objectPool;
+
+ public ExprHolderPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
@Override
public ExprTreeHolder newInstance() {
- return new ExprTreeHolder();
+ return new ExprTreeHolder(objectPool);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprListPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprListPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprListPool.java
index 1f2958a..66f5329 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprListPool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ExprListPool.java
@@ -22,9 +22,15 @@ import org.apache.asterix.external.classad.ExprList;
public class ExprListPool extends Pool<ExprList> {
+ private final ClassAdObjectPool objectPool;
+
+ public ExprListPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
@Override
public ExprList newInstance() {
- return new ExprList();
+ return new ExprList(objectPool);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/FunctionCallPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/FunctionCallPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/FunctionCallPool.java
new file mode 100644
index 0000000..9281ed7
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/FunctionCallPool.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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.FunctionCall;
+
+public class FunctionCallPool extends Pool<FunctionCall> {
+
+ private final ClassAdObjectPool objectPool;
+
+ public FunctionCallPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
+ @Override
+ public FunctionCall newInstance() {
+ return new FunctionCall(objectPool);
+ }
+
+ @Override
+ protected void reset(FunctionCall obj) {
+ obj.reset();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/HashMapPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/HashMapPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/HashMapPool.java
new file mode 100644
index 0000000..b0365f3
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/HashMapPool.java
@@ -0,0 +1,34 @@
+/*
+ * 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.external.classad.object.pool;
+
+import java.util.HashMap;
+
+public class HashMapPool<K, V> extends Pool<HashMap<K, V>> {
+
+ @Override
+ public HashMap<K, V> newInstance() {
+ return new HashMap<K, V>();
+ }
+
+ @Override
+ protected void reset(HashMap<K, V> obj) {
+ obj.clear();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int32Pool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int32Pool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int32Pool.java
new file mode 100644
index 0000000..504f147
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int32Pool.java
@@ -0,0 +1,35 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.om.base.AMutableInt32;
+
+public class Int32Pool extends Pool<AMutableInt32> {
+
+ @Override
+ public AMutableInt32 newInstance() {
+ return new AMutableInt32(0);
+ }
+
+ @Override
+ protected void reset(AMutableInt32 obj) {
+ obj.setValue(0);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int64Pool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int64Pool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int64Pool.java
new file mode 100644
index 0000000..f86b57a
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/Int64Pool.java
@@ -0,0 +1,34 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.om.base.AMutableInt64;
+
+public class Int64Pool extends Pool<AMutableInt64> {
+
+ @Override
+ public AMutableInt64 newInstance() {
+ return new AMutableInt64(0);
+ }
+
+ @Override
+ protected void reset(AMutableInt64 obj) {
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/LiteralPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/LiteralPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/LiteralPool.java
index 23d8dae..2a85a4a 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/LiteralPool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/LiteralPool.java
@@ -21,9 +21,15 @@ package org.apache.asterix.external.classad.object.pool;
import org.apache.asterix.external.classad.Literal;
public class LiteralPool extends Pool<Literal> {
+ private final ClassAdObjectPool objectPool;
+
+ public LiteralPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
@Override
public Literal newInstance() {
- return new Literal();
+ return new Literal(objectPool);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableBooleanPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableBooleanPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableBooleanPool.java
new file mode 100644
index 0000000..8713272
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableBooleanPool.java
@@ -0,0 +1,35 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.commons.lang3.mutable.MutableBoolean;
+
+public class MutableBooleanPool extends Pool<MutableBoolean> {
+
+ @Override
+ public MutableBoolean newInstance() {
+ return new MutableBoolean();
+ }
+
+ @Override
+ protected void reset(MutableBoolean obj) {
+ obj.setValue(false);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableNumberFactorPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableNumberFactorPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableNumberFactorPool.java
new file mode 100644
index 0000000..9d452d5
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/MutableNumberFactorPool.java
@@ -0,0 +1,36 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.AMutableNumberFactor;
+import org.apache.asterix.external.classad.Value.NumberFactor;
+
+public class MutableNumberFactorPool extends Pool<AMutableNumberFactor> {
+
+ @Override
+ public AMutableNumberFactor newInstance() {
+ return new AMutableNumberFactor();
+ }
+
+ @Override
+ protected void reset(AMutableNumberFactor obj) {
+ obj.setFactor(NumberFactor.NO_FACTOR);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/OperationPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/OperationPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/OperationPool.java
index 062d870..1607f6e 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/OperationPool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/OperationPool.java
@@ -22,9 +22,15 @@ import org.apache.asterix.external.classad.Operation;
public class OperationPool extends Pool<Operation> {
+ private final ClassAdObjectPool objectPool;
+
+ public OperationPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
@Override
public Operation newInstance() {
- return new Operation();
+ return new Operation(objectPool);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/PrettyPrintPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/PrettyPrintPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/PrettyPrintPool.java
new file mode 100644
index 0000000..d38c5d6
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/PrettyPrintPool.java
@@ -0,0 +1,40 @@
+/*
+ * 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.external.classad.object.pool;
+
+import org.apache.asterix.external.classad.PrettyPrint;
+
+public class PrettyPrintPool extends Pool<PrettyPrint> {
+
+ private final ClassAdObjectPool objectPool;
+
+ public PrettyPrintPool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
+ @Override
+ public PrettyPrint newInstance() {
+ return new PrettyPrint(objectPool);
+ }
+
+ @Override
+ protected void reset(PrettyPrint obj) {
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/StringArrayListPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/StringArrayListPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/StringArrayListPool.java
new file mode 100644
index 0000000..0ec687c
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/StringArrayListPool.java
@@ -0,0 +1,35 @@
+/*
+ * 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.external.classad.object.pool;
+
+import java.util.ArrayList;
+
+public class StringArrayListPool extends Pool<ArrayList<String>> {
+
+ @Override
+ public ArrayList<String> newInstance() {
+ return new ArrayList<String>();
+ }
+
+ @Override
+ protected void reset(ArrayList<String> obj) {
+ obj.clear();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/TreeSetPool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/TreeSetPool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/TreeSetPool.java
new file mode 100644
index 0000000..d09c170
--- /dev/null
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/TreeSetPool.java
@@ -0,0 +1,35 @@
+/*
+ * 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.external.classad.object.pool;
+
+import java.util.TreeSet;
+
+public class TreeSetPool<T> extends Pool<TreeSet<T>> {
+
+ @Override
+ public TreeSet<T> newInstance() {
+ return new TreeSet<T>();
+ }
+
+ @Override
+ protected void reset(TreeSet<T> obj) {
+ obj.clear();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ValuePool.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ValuePool.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ValuePool.java
index 698e947..9ad4424 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ValuePool.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/object/pool/ValuePool.java
@@ -21,13 +21,20 @@ package org.apache.asterix.external.classad.object.pool;
import org.apache.asterix.external.classad.Value;
public class ValuePool extends Pool<Value> {
+
+ private final ClassAdObjectPool objectPool;
+
+ public ValuePool(ClassAdObjectPool objectPool) {
+ this.objectPool = objectPool;
+ }
+
@Override
public Value newInstance() {
- return new Value();
+ return new Value(objectPool);
}
@Override
protected void reset(Value obj) {
- obj.clear();
+ obj.reset();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdFunctionalTest.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdFunctionalTest.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdFunctionalTest.java
index 09e8001..41aa7c7 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdFunctionalTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdFunctionalTest.java
@@ -20,6 +20,8 @@ package org.apache.asterix.external.classad.test;
import java.net.URLDecoder;
+import org.apache.asterix.external.classad.object.pool.ClassAdObjectPool;
+
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
@@ -48,9 +50,10 @@ public class ClassAdFunctionalTest extends TestCase {
public void testApp() {
try {
- String[] args = { "", "-d", "-v", URLDecoder.decode(getClass().getResource("/functional_tests.txt").getPath(), "UTF-8") };
- FunctionalTester.test(args.length, args);
- } catch (Exception e) {
+ String[] args = { "", "-d", "-v",
+ URLDecoder.decode(getClass().getResource("/functional_tests.txt").getPath(), "UTF-8") };
+ FunctionalTester.test(args.length, args, new ClassAdObjectPool());
+ } catch (Throwable e) {
e.printStackTrace();
assertTrue(false);
}
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdParserTest.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdParserTest.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdParserTest.java
index d65fecc..ab393ba 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdParserTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdParserTest.java
@@ -24,12 +24,13 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
+import org.apache.asterix.external.classad.ClassAd;
+import org.apache.asterix.external.classad.object.pool.ClassAdObjectPool;
+
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.asterix.external.classad.ClassAd;
-
public class ClassAdParserTest extends TestCase {
/**
* Create the test case
@@ -54,18 +55,21 @@ public class ClassAdParserTest extends TestCase {
public void test() {
try {
// test here
- ClassAd pAd = new ClassAd();
+ ClassAdObjectPool objectPool = new ClassAdObjectPool();
+ ClassAd pAd = new ClassAd(objectPool);
String szInput;
String[] files = new String[] { "/testdata.txt" };
BufferedReader infile = null;
for (String path : files) {
- infile = Files.newBufferedReader(Paths.get(URLDecoder.decode(getClass().getResource(path).getPath(), "UTF-8")),
+ infile = Files.newBufferedReader(
+ Paths.get(URLDecoder.decode(getClass().getResource(path).getPath(), "UTF-8")),
StandardCharsets.UTF_8);
szInput = infile.readLine();
while (szInput != null) {
if (szInput.trim().length() == 0) {
// ClassAdChain completed
pAd.clear();
+ objectPool.reset();
} else if (!pAd.insert(szInput)) {
// Problem
System.out.println("BARFED ON:" + szInput);
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
index 57b0dcd..d822310 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdToADMTest.java
@@ -28,9 +28,12 @@ import org.apache.asterix.external.classad.CharArrayLexerSource;
import org.apache.asterix.external.classad.ClassAd;
import org.apache.asterix.external.classad.ExprTree;
import org.apache.asterix.external.classad.Value;
+import org.apache.asterix.external.classad.object.pool.ClassAdObjectPool;
import org.apache.asterix.external.input.record.reader.stream.SemiStructuredRecordReader;
-import org.apache.asterix.external.input.stream.LocalFileSystemInputStream;
+import org.apache.asterix.external.input.stream.LocalFSInputStream;
import org.apache.asterix.external.library.ClassAdParser;
+import org.apache.hyracks.api.io.FileReference;
+import org.apache.hyracks.dataflow.std.file.FileSplit;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -60,17 +63,20 @@ public class ClassAdToADMTest extends TestCase {
public void test() {
try {
// test here
- ClassAd pAd = new ClassAd();
+ ClassAdObjectPool objectPool = new ClassAdObjectPool();
+ ClassAd pAd = new ClassAd(objectPool);
String[] files = new String[] { "/jobads.txt" };
- ClassAdParser parser = new ClassAdParser(null, false, true, false, null, null, null);
+ ClassAdParser parser = new ClassAdParser(objectPool);
CharArrayLexerSource lexerSource = new CharArrayLexerSource();
for (String path : files) {
- LocalFileSystemInputStream in = new LocalFileSystemInputStream(
- Paths.get(getClass().getResource(path).toURI()), null, false);
+ LocalFSInputStream in = new LocalFSInputStream(
+ new FileSplit[] { new FileSplit("",
+ new FileReference(Paths.get(getClass().getResource(path).toURI()).toFile())) },
+ null, null, 0, null, false);
SemiStructuredRecordReader recordReader = new SemiStructuredRecordReader(in, null, "[", "]");
- Value val = new Value();
+ Value val = new Value(objectPool);
while (recordReader.hasNext()) {
- val.clear();
+ val.reset();
IRawRecord<char[]> record = recordReader.next();
lexerSource.setNewSource(record.get());
parser.setLexerSource(lexerSource);
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
index b9f32f5..32ce485 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTest.java
@@ -18,7 +18,7 @@
*/
package org.apache.asterix.external.classad.test;
-import java.io.IOException;
+import org.apache.asterix.external.classad.object.pool.ClassAdObjectPool;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -51,8 +51,9 @@ public class ClassAdUnitTest extends TestCase {
public void test() {
String[] args = { "", "-d", "-vv", "-all" };
try {
- ClassAdUnitTester.test(args.length, args);
- } catch (IOException e) {
+ ClassAdUnitTester.test(args.length, args, new ClassAdObjectPool());
+ } catch (Throwable e) {
+ e.printStackTrace();
assertTrue(false);
}
assertTrue(true);
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/121e1d9a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTester.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTester.java b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTester.java
index cec9299..e3c9bf7 100644
--- a/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTester.java
+++ b/asterix-external-data/src/test/java/org/apache/asterix/external/classad/test/ClassAdUnitTester.java
@@ -32,6 +32,7 @@ import org.apache.asterix.external.classad.Literal;
import org.apache.asterix.external.classad.Util;
import org.apache.asterix.external.classad.Value;
import org.apache.asterix.external.classad.Value.ValueType;
+import org.apache.asterix.external.classad.object.pool.ClassAdObjectPool;
import org.apache.asterix.external.library.ClassAdParser;
import org.apache.asterix.om.base.AMutableDouble;
import org.apache.asterix.om.base.AMutableInt32;
@@ -200,7 +201,7 @@ public class ClassAdUnitTester {
*
* @throws IOException
*********************************************************************/
- public static boolean test(int argc, String[] argv) throws IOException {
+ public static boolean test(int argc, String[] argv, ClassAdObjectPool objectPool) throws IOException {
AMutableInt32 numberOfErrors = new AMutableInt32(0);
AMutableInt32 numberOfTests = new AMutableInt32(0);
boolean have_errors;
@@ -213,17 +214,22 @@ public class ClassAdUnitTester {
/* ----- Run tests ----- */
if (parameters.checkAll || parameters.checkParsing) {
- testParsing(parameters, results);
+ testParsing(parameters, results, objectPool);
}
if (parameters.checkAll || parameters.checkClassad) {
- testClassad(parameters, results);
+ try {
+ testClassad(parameters, results, objectPool);
+ } catch (Throwable th) {
+ th.printStackTrace();
+ throw th;
+ }
}
if (parameters.checkAll || parameters.checkExprlist) {
- testExprList(parameters, results);
+ testExprList(parameters, results, objectPool);
}
if (parameters.checkAll || parameters.checkValue) {
- testValue(parameters, results);
+ testValue(parameters, results, objectPool);
}
if (parameters.checkAll || parameters.checkLiteral) {
}
@@ -255,10 +261,11 @@ public class ClassAdUnitTester {
}
public static void test(String name, boolean test, String testLine, Results results) {
- if (test)
+ if (test) {
results.AddSuccessfulTest(name, testLine);
- else
+ } else {
results.AddFailedTest(name, testLine);
+ }
}
public static void test(String name, boolean test, Results results) {
@@ -272,8 +279,9 @@ public class ClassAdUnitTester {
*
* @throws IOException
*********************************************************************/
- public static void testParsing(Parameters parameters, Results results) throws IOException {
- ClassAdParser parser = new ClassAdParser(null, false, true, false, null, null, null);
+ public static void testParsing(Parameters parameters, Results results, ClassAdObjectPool objectPool)
+ throws IOException {
+ ClassAdParser parser = new ClassAdParser(objectPool);
ExprTree tree;
// My goal is to ensure that these expressions don't crash
@@ -312,23 +320,25 @@ public class ClassAdUnitTester {
/*********************************************************************
* Function: test_classad
* Purpose: Test the ClassAd class.
+ * @param objectPool
*
* @throws IOException
*********************************************************************/
- public static void testClassad(Parameters parameters, Results results) throws IOException {
- ClassAdParser parser = new ClassAdParser(null, false, true, false, null, null, null);
+ public static void testClassad(Parameters parameters, Results results, ClassAdObjectPool objectPool)
+ throws IOException {
+ ClassAdParser parser = new ClassAdParser(objectPool);
boolean haveAttribute;
boolean success;
System.out.println("Testing the ClassAd class...");
String input_basic = "[ A = 3; B = 4.0; C = \"babyzilla\"; D = true; E = {1}; F = [ AA = 3; ]; G =\"deleteme\";]";
- ClassAd basic = new ClassAd();
+ ClassAd basic = new ClassAd(objectPool);
AMutableInt64 i = new AMutableInt64(0);
MutableBoolean b = new MutableBoolean();
AMutableDouble r = new AMutableDouble(0);
AMutableCharArrayString s = new AMutableCharArrayString();
- ClassAd c = new ClassAd();
+ ClassAd c = new ClassAd(objectPool);
// ExprList *l;
basic = parser.parseClassAd(input_basic);
@@ -426,8 +436,8 @@ public class ClassAdUnitTester {
/* ----- Test Parsing multiple ClassAds ----- */
String twoClassads = "[ a = 3; ][ b = 4; ]";
- ClassAd classad1 = new ClassAd();
- ClassAd classad2 = new ClassAd();
+ ClassAd classad1 = new ClassAd(objectPool);
+ ClassAd classad2 = new ClassAd(objectPool);
AMutableInt32 offset = new AMutableInt32(0);
parser.parseClassAd(twoClassads, classad1, offset);
@@ -439,7 +449,7 @@ public class ClassAdUnitTester {
/* ----- Test chained ClassAds ----- */
// classad1 and classad2 from above test are used.
- ClassAd classad3 = new ClassAd();
+ ClassAd classad3 = new ClassAd(objectPool);
classad1.chainToAd(classad2);
test("classad1's parent is classad2", classad1.getChainedParentAd().equals(classad2), "Test chained ClassAds 1",
@@ -488,7 +498,8 @@ public class ClassAdUnitTester {
*
* @throws IOException
*********************************************************************/
- public static void testExprList(Parameters parameters, Results results) throws IOException {
+ public static void testExprList(Parameters parameters, Results results, ClassAdObjectPool objectPool)
+ throws IOException {
System.out.println("Testing the ExprList class...");
Literal literal10;
@@ -506,17 +517,17 @@ public class ClassAdUnitTester {
ExprList list2Copy;
/* ----- Setup Literals, the vectors, then ExprLists ----- */
- literal10 = Literal.createReal("1.0");
- literal20 = Literal.createReal("2.0");
- literal21 = Literal.createReal("2.1");
+ literal10 = Literal.createReal("1.0", objectPool);
+ literal20 = Literal.createReal("2.0", objectPool);
+ literal21 = Literal.createReal("2.1", objectPool);
vector1.add(literal10);
vector2.add(literal20);
vector2.add(literal21);
- list0 = new ExprList();
- list1 = new ExprList(vector1);
- list2 = new ExprList(vector2);
+ list0 = new ExprList(objectPool);
+ list1 = new ExprList(vector1, objectPool);
+ list2 = new ExprList(vector2, objectPool);
/* ----- Did the lists get made? ----- */
test("Made list 0", (list0 != null), "Did the lists get made? 0", results);
@@ -558,7 +569,7 @@ public class ClassAdUnitTester {
/* ----- Test adding and deleting from a list ----- */
Literal add;
- add = Literal.createReal("2.2");
+ add = Literal.createReal("2.2", objectPool);
if (list2Copy != null) {
list2Copy.insert(add);
@@ -574,11 +585,11 @@ public class ClassAdUnitTester {
/* ----- Test an ExprList bug that Nate Mueller found ----- */
ClassAd classad;
- ClassAdParser parser = new ClassAdParser(null, false, true, false, null, null, null);
+ ClassAdParser parser = new ClassAdParser(objectPool);
MutableBoolean b = new MutableBoolean();
boolean haveAttribute;
boolean canEvaluate;
- Value value = new Value();
+ Value value = new Value(objectPool);
String listClassadText = "[foo = 3; have_foo = member(foo, {1, 2, 3});]";
classad = parser.parseClassAd(listClassadText);
@@ -598,8 +609,9 @@ public class ClassAdUnitTester {
*
* @throws HyracksDataException
*********************************************************************/
- public static void testValue(Parameters parameters, Results results) throws HyracksDataException {
- Value v = new Value();
+ public static void testValue(Parameters parameters, Results results, ClassAdObjectPool objectPool)
+ throws HyracksDataException {
+ Value v = new Value(objectPool);
boolean isExpectedType;
System.out.println("Testing the Value class...");
test("New value is undefined", (v.isUndefinedValue()), "test_value 1", results);
@@ -659,25 +671,25 @@ public class ClassAdUnitTester {
test("Relative time is 10", (10 == rt.getRelativeTime()), results);
test("GetType gives RELATIVE_TIME_VALUE", (v.getType() == ValueType.RELATIVE_TIME_VALUE), results);
- ExprList l = new ExprList();
- ExprList ll = new ExprList();
+ ExprList l = new ExprList(objectPool);
+ ExprList ll = new ExprList(objectPool);
v.setListValue(l);
isExpectedType = v.isListValue(ll);
test("Value is list value", isExpectedType, results);
test("List value is correct", l.equals(ll), results);
test("GetType gives LIST_VALUE", (v.getType() == ValueType.LIST_VALUE), results);
- ExprList sl = new ExprList(true);
- ll = new ExprList(true);
+ ExprList sl = new ExprList(true, objectPool);
+ ll = new ExprList(true, objectPool);
v.setListValue(sl);
isExpectedType = v.isListValue(ll);
test("Value is list value", isExpectedType, results);
test("List value is correct", sl.equals(ll), results);
test("GetType gives SLIST_VALUE", (v.getType() == ValueType.SLIST_VALUE), results);
- ClassAd c = new ClassAd();
+ ClassAd c = new ClassAd(objectPool);
c.insertAttr("test_int", 10);
- ClassAd cc = new ClassAd();
+ ClassAd cc = new ClassAd(objectPool);
v.setClassAdValue(c);
isExpectedType = v.isClassAdValue(cc);
test("Value is ClassAd value", isExpectedType, results);