You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2017/05/01 04:35:04 UTC
[6/8] vxquery git commit: VXQUERY-240: Update Hyracks Dependency to
version 0.3.0.
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
index 599a4d7..f006087 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/AndScalarEvaluatorFactory.java
@@ -16,17 +16,16 @@
*/
package org.apache.vxquery.runtime.functions.bool;
-import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
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.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.BooleanPointable;
import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
public class AndScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -37,7 +36,7 @@ public class AndScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalar
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new AndScalarEvaluator(args);
}
@@ -53,7 +52,7 @@ public class AndScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalar
}
@Override
- public final void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public final void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
for (int i = 0; i < args.length; ++i) {
args[i].evaluate(tuple, tvp);
tvp.getValue(bp);
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
index 7d83a19..b40cfb1 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
@@ -16,20 +16,10 @@
*/
package org.apache.vxquery.runtime.functions.bool;
-import org.apache.vxquery.datamodel.accessors.SequencePointable;
-import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
-import org.apache.vxquery.datamodel.values.ValueTag;
-import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.exceptions.ErrorCode;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
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.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.BytePointable;
import org.apache.hyracks.data.std.primitive.DoublePointable;
@@ -38,6 +28,15 @@ import org.apache.hyracks.data.std.primitive.IntegerPointable;
import org.apache.hyracks.data.std.primitive.LongPointable;
import org.apache.hyracks.data.std.primitive.ShortPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.vxquery.datamodel.accessors.SequencePointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -48,7 +47,7 @@ public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgument
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new FnBooleanScalarEvaluator(args);
}
@@ -153,7 +152,7 @@ public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgument
case ValueTag.XS_ANY_URI_TAG:
case ValueTag.XS_STRING_TAG: {
tvp.getValue(utf8p);
- if (utf8p.getUTFLength() == 0) {
+ if (utf8p.getStringLength() == 0) {
booleanResult = false;
}
break;
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
index 53778d2..cb9ad8a 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
@@ -16,18 +16,17 @@
*/
package org.apache.vxquery.runtime.functions.bool;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+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.data.std.api.IPointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-
public class FnFalseScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -37,7 +36,7 @@ public class FnFalseScalarEvaluatorFactory extends AbstractTaggedValueArgumentSc
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new AbstractTaggedValueArgumentScalarEvaluator(args) {
@Override
protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java
index b9d4585..f1a3213 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnNotScalarEvaluatorFactory.java
@@ -16,18 +16,17 @@
*/
package org.apache.vxquery.runtime.functions.bool;
-import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
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.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
public class FnNotScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -38,7 +37,7 @@ public class FnNotScalarEvaluatorFactory extends AbstractTaggedValueArgumentScal
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new AbstractTaggedValueArgumentScalarEvaluator(args) {
private final BooleanPointable bp = (BooleanPointable) BooleanPointable.FACTORY.createPointable();
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
index a94d2df..9de862e 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
@@ -16,18 +16,17 @@
*/
package org.apache.vxquery.runtime.functions.bool;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+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.data.std.api.IPointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.values.XDMConstants;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-
public class FnTrueScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -37,7 +36,7 @@ public class FnTrueScalarEvaluatorFactory extends AbstractTaggedValueArgumentSca
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new AbstractTaggedValueArgumentScalarEvaluator(args) {
@Override
protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
index da31e14..83db663 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/OrScalarEvaluatorFactory.java
@@ -16,17 +16,16 @@
*/
package org.apache.vxquery.runtime.functions.bool;
-import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
-import org.apache.vxquery.datamodel.values.XDMConstants;
-import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
-
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
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.data.std.api.IPointable;
import org.apache.hyracks.data.std.primitive.BooleanPointable;
import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.XDMConstants;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
public class OrScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -37,7 +36,7 @@ public class OrScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarE
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new OrScalarEvaluator(args);
}
@@ -53,7 +52,7 @@ public class OrScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarE
}
@Override
- public final void evaluate(IFrameTupleReference tuple, IPointable result) throws AlgebricksException {
+ public final void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
for (int i = 0; i < args.length; ++i) {
args[i].evaluate(tuple, tvp);
tvp.getValue(bp);
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastScalarEvaluatorFactory.java
index 739e197..6cfd9a8 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastScalarEvaluatorFactory.java
@@ -18,6 +18,12 @@ package org.apache.vxquery.runtime.functions.cast;
import java.io.DataOutput;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+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.data.std.api.IPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.accessors.TypedPointables;
import org.apache.vxquery.datamodel.values.ValueTag;
@@ -27,13 +33,6 @@ import org.apache.vxquery.runtime.functions.type.AbstractTypeScalarEvaluatorFact
import org.apache.vxquery.types.BuiltinTypeRegistry;
import org.apache.vxquery.types.SequenceType;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
public class CastScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -43,7 +42,7 @@ public class CastScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFacto
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new AbstractTypeScalarEvaluator(args, ctx) {
final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
final DataOutput dOut = abvs.getDataOutput();
@@ -62,140 +61,117 @@ public class CastScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFacto
case ValueTag.XS_ANY_URI_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertAnyURI(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_BASE64_BINARY_TAG:
tvp.getValue(tp.binaryp);
aOp.convertBase64Binary(tp.binaryp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_BOOLEAN_TAG:
tvp.getValue(tp.boolp);
aOp.convertBoolean(tp.boolp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_DATE_TAG:
tvp.getValue(tp.datep);
aOp.convertDate(tp.datep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_DATETIME_TAG:
tvp.getValue(tp.datetimep);
aOp.convertDatetime(tp.datetimep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_DAY_TIME_DURATION_TAG:
tvp.getValue(tp.longp);
aOp.convertDTDuration(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_DECIMAL_TAG:
tvp.getValue(tp.decp);
aOp.convertDecimal(tp.decp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_DOUBLE_TAG:
tvp.getValue(tp.doublep);
aOp.convertDouble(tp.doublep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_DURATION_TAG:
tvp.getValue(tp.durationp);
aOp.convertDuration(tp.durationp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_FLOAT_TAG:
tvp.getValue(tp.floatp);
aOp.convertFloat(tp.floatp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_G_DAY_TAG:
tvp.getValue(tp.datep);
aOp.convertGDay(tp.datep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_G_MONTH_TAG:
tvp.getValue(tp.datep);
aOp.convertGMonth(tp.datep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_G_MONTH_DAY_TAG:
tvp.getValue(tp.datep);
aOp.convertGMonthDay(tp.datep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_G_YEAR_TAG:
tvp.getValue(tp.datep);
aOp.convertGYear(tp.datep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_G_YEAR_MONTH_TAG:
tvp.getValue(tp.datep);
aOp.convertGYearMonth(tp.datep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_HEX_BINARY_TAG:
tvp.getValue(tp.binaryp);
aOp.convertHexBinary(tp.binaryp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_INTEGER_TAG:
tvp.getValue(tp.longp);
aOp.convertInteger(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NOTATION_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertNotation(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_QNAME_TAG:
tvp.getValue(tp.qnamep);
aOp.convertQName(tp.qnamep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_STRING_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertString(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_TIME_TAG:
tvp.getValue(tp.timep);
aOp.convertTime(tp.timep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_UNTYPED_ATOMIC_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertUntypedAtomic(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_YEAR_MONTH_DURATION_TAG:
tvp.getValue(tp.intp);
aOp.convertYMDuration(tp.intp, dOut);
- result.set(abvs);
- return;
+ break;
/**
* Derived Numeric Datatypes (Alphabetical)
@@ -203,74 +179,62 @@ public class CastScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFacto
case ValueTag.XS_BYTE_TAG:
tvp.getValue(tp.bytep);
aOp.convertByte(tp.bytep, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_INT_TAG:
tvp.getValue(tp.intp);
aOp.convertInt(tp.intp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_LONG_TAG:
tvp.getValue(tp.longp);
aOp.convertLong(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NEGATIVE_INTEGER_TAG:
tvp.getValue(tp.longp);
aOp.convertNegativeInteger(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NON_NEGATIVE_INTEGER_TAG:
tvp.getValue(tp.longp);
aOp.convertNonNegativeInteger(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NON_POSITIVE_INTEGER_TAG:
tvp.getValue(tp.longp);
aOp.convertNonPositiveInteger(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_POSITIVE_INTEGER_TAG:
tvp.getValue(tp.longp);
aOp.convertPositiveInteger(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_SHORT_TAG:
tvp.getValue(tp.shortp);
aOp.convertShort(tp.shortp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_UNSIGNED_BYTE_TAG:
tvp.getValue(tp.shortp);
aOp.convertUnsignedByte(tp.shortp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_UNSIGNED_INT_TAG:
tvp.getValue(tp.longp);
aOp.convertUnsignedInt(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_UNSIGNED_LONG_TAG:
tvp.getValue(tp.longp);
aOp.convertUnsignedLong(tp.longp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_UNSIGNED_SHORT_TAG:
tvp.getValue(tp.intp);
aOp.convertUnsignedShort(tp.intp, dOut);
- result.set(abvs);
- return;
+ break;
/**
* Derived String Datatypes (Alphabetical)
@@ -278,71 +242,65 @@ public class CastScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFacto
case ValueTag.XS_ENTITY_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertEntity(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_ID_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertID(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_IDREF_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertIDREF(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_LANGUAGE_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertIDREF(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NAME_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertName(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NCNAME_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertNCName(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NMTOKEN_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertNMToken(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_NORMALIZED_STRING_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertNormalizedString(tp.utf8sp, dOut);
- result.set(abvs);
- return;
+ break;
case ValueTag.XS_TOKEN_TAG:
tvp.getValue(tp.utf8sp);
aOp.convertToken(tp.utf8sp, dOut);
- result.set(abvs);
- return;
-
+ break;
+
/**
* JSON null
*/
case ValueTag.JS_NULL_TAG:
aOp.convertNull(dOut);
- result.set(abvs);
- return;
+ break;
+
+ default:
+ throw new SystemException(ErrorCode.XPTY0004);
}
+ result.set(abvs.getByteArray(), abvs.getStartOffset(), abvs.getLength());
} catch (SystemException se) {
throw se;
} catch (Exception e) {
throw new SystemException(ErrorCode.SYSE0001, e);
}
- throw new SystemException(ErrorCode.XPTY0004);
+
}
@Override
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
index 680ce08..8e9aaa7 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
@@ -20,13 +20,12 @@ import java.io.DataOutput;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64OutputStream;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
import org.apache.vxquery.datamodel.values.ValueTag;
import org.apache.vxquery.exceptions.SystemException;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
-
public class CastToBase64BinaryOperation extends AbstractCastToOperation {
private ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
@@ -46,13 +45,14 @@ public class CastToBase64BinaryOperation extends AbstractCastToOperation {
public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
baaos.reset();
Base64OutputStream b64os = new Base64OutputStream(baaos, false);
- b64os.write(stringp.getByteArray(), stringp.getStartOffset() + 2, stringp.getLength() - 2);
- b64os.close();
+ b64os.write(stringp.getByteArray(), stringp.getCharStartOffset(), stringp.getUTF8Length());
dOut.write(ValueTag.XS_BASE64_BINARY_TAG);
dOut.write((byte) ((baaos.size() >>> 8) & 0xFF));
dOut.write((byte) ((baaos.size() >>> 0) & 0xFF));
dOut.write(baaos.getByteArray(), 0, baaos.size());
+
+ b64os.close();
}
@Override
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
index edfae66..e37d55d 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
@@ -19,6 +19,11 @@ package org.apache.vxquery.runtime.functions.cast;
import java.io.DataOutput;
import java.io.IOException;
+import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.hyracks.data.std.primitive.DoublePointable;
+import org.apache.hyracks.data.std.primitive.FloatPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
import org.apache.vxquery.datamodel.values.ValueTag;
import org.apache.vxquery.exceptions.ErrorCode;
@@ -27,12 +32,6 @@ import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
import org.apache.vxquery.runtime.functions.strings.LowerCaseCharacterIterator;
import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
-import org.apache.hyracks.data.std.primitive.BooleanPointable;
-import org.apache.hyracks.data.std.primitive.DoublePointable;
-import org.apache.hyracks.data.std.primitive.FloatPointable;
-import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-
public class CastToBooleanOperation extends AbstractCastToOperation {
@Override
@@ -82,7 +81,7 @@ public class CastToBooleanOperation extends AbstractCastToOperation {
}
@Override
- public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+ public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws IOException {
byte result = 2;
ICharacterIterator charIterator = new LowerCaseCharacterIterator(new UTF8StringCharacterIterator(stringp));
charIterator.reset();
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
index 8117d0e..cea4cf2 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
@@ -19,13 +19,6 @@ package org.apache.vxquery.runtime.functions.cast;
import java.io.DataOutput;
import java.io.IOException;
-import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
-import org.apache.vxquery.datamodel.values.ValueTag;
-import org.apache.vxquery.exceptions.ErrorCode;
-import org.apache.vxquery.exceptions.SystemException;
-import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
-import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
-
import org.apache.hyracks.data.std.api.INumeric;
import org.apache.hyracks.data.std.primitive.BooleanPointable;
import org.apache.hyracks.data.std.primitive.BytePointable;
@@ -36,12 +29,20 @@ import org.apache.hyracks.data.std.primitive.LongPointable;
import org.apache.hyracks.data.std.primitive.ShortPointable;
import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.util.string.UTF8StringWriter;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
public class CastToDecimalOperation extends AbstractCastToOperation {
private ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
private DataOutput dOutInner = abvsInner.getDataOutput();
private CastToStringOperation castToString = new CastToStringOperation();
private UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
+ private UTF8StringWriter sw = new UTF8StringWriter();
@Override
public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
@@ -70,9 +71,11 @@ public class CastToDecimalOperation extends AbstractCastToOperation {
throw new SystemException(ErrorCode.FORG0001);
}
abvsInner.reset();
- dOutInner.write(ValueTag.XS_STRING_TAG);
- dOutInner.writeUTF(Double.toString(doublep.getDouble()));
- stringp.set(abvsInner.getByteArray(), abvsInner.getStartOffset() + 1, abvsInner.getLength() - 1);
+ sw.writeUTF8(Double.toString(doublep.getDouble()), dOutInner);
+ stringp.set(abvsInner.getByteArray(), abvsInner.getStartOffset(), abvsInner.getLength());
+// dOutInner.write(ValueTag.XS_STRING_TAG);
+// sw.writeUTF8(Double.toString(doublep.getDouble()), dOutInner);
+// stringp.set(abvsInner.getByteArray(), abvsInner.getStartOffset() + 1, abvsInner.getLength() - 1);
convertStringExtra(stringp, dOut, true);
}
@@ -169,7 +172,7 @@ public class CastToDecimalOperation extends AbstractCastToOperation {
dOut.write(ValueTag.XS_DECIMAL_TAG);
dOut.write(decimalPlace);
- dOut.writeLong((negativeValue ? -value : value));
+ dOut.writeLong(negativeValue ? -value : value);
}
@Override
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
index e400af7..12d4702 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
@@ -19,6 +19,10 @@ package org.apache.vxquery.runtime.functions.cast;
import java.io.DataOutput;
import java.io.IOException;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.util.GrowableArray;
+import org.apache.hyracks.data.std.util.UTF8StringBuilder;
import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
import org.apache.vxquery.datamodel.values.ValueTag;
import org.apache.vxquery.exceptions.SystemException;
@@ -26,10 +30,11 @@ import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
import org.apache.vxquery.runtime.functions.util.FunctionHelper;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
public class CastToQNameOperation extends AbstractCastToOperation {
+ private static final int STRING_EXPECTED_LENGTH = 300;
+ private final GrowableArray ga = new GrowableArray();
+ private final UTF8StringBuilder sb = new UTF8StringBuilder();
+
ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
DataOutput dOutInner = abvsInner.getDataOutput();
@@ -44,29 +49,43 @@ public class CastToQNameOperation extends AbstractCastToOperation {
abvsInner.reset();
ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
charIterator.reset();
- int c = 0;
- int prefixLength = 0;
+ int c;
+ boolean prefixFound = false;
+
+ dOut.write(ValueTag.XS_QNAME_TAG);
+
+ // URI
+ dOut.write((byte) 0);
+
+ // Prefix and Local Name
+ ga.reset();
+ sb.reset(ga, STRING_EXPECTED_LENGTH);
while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
if (c == Character.valueOf(':')) {
- prefixLength = abvsInner.getLength();
+ prefixFound = true;
+ break;
} else {
- FunctionHelper.writeChar((char) c, dOutInner);
+ FunctionHelper.writeChar((char) c, sb);
}
}
+ if (prefixFound) {
+ // Finish Prefix
+ sb.finish();
+ dOut.write(ga.getByteArray(), 0, ga.getLength());
- dOut.write(ValueTag.XS_QNAME_TAG);
- dOut.write((byte) ((0 >>> 8) & 0xFF));
- dOut.write((byte) ((0 >>> 0) & 0xFF));
- // No URI
-
- dOut.write((byte) ((prefixLength >>> 8) & 0xFF));
- dOut.write((byte) ((prefixLength >>> 0) & 0xFF));
- dOut.write(abvsInner.getByteArray(), abvsInner.getStartOffset(), prefixLength);
-
- int localNameLength = abvsInner.getLength() - prefixLength;
- dOut.write((byte) ((localNameLength >>> 8) & 0xFF));
- dOut.write((byte) ((localNameLength >>> 0) & 0xFF));
- dOut.write(abvsInner.getByteArray(), abvsInner.getStartOffset() + prefixLength, localNameLength);
+ // Local Name
+ ga.reset();
+ sb.reset(ga, STRING_EXPECTED_LENGTH);
+ while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+ FunctionHelper.writeChar((char) c, sb);
+ }
+ } else {
+ // No Prefix
+ dOut.write((byte) 0);
+ // Local Name is in ga variable
+ }
+ sb.finish();
+ dOut.write(ga.getByteArray(), 0, ga.getLength());
}
}
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
index dcc0d07..d541ccd 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
@@ -20,6 +20,17 @@ import java.io.DataOutput;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64OutputStream;
+import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.hyracks.data.std.primitive.BytePointable;
+import org.apache.hyracks.data.std.primitive.DoublePointable;
+import org.apache.hyracks.data.std.primitive.FloatPointable;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.primitive.ShortPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
+import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
+import org.apache.hyracks.data.std.util.GrowableArray;
import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
@@ -28,28 +39,22 @@ import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
import org.apache.vxquery.datamodel.builders.atomic.StringValueBuilder;
+import org.apache.vxquery.datamodel.builders.atomic.VXQueryUTF8StringBuilder;
import org.apache.vxquery.datamodel.util.DateTime;
import org.apache.vxquery.datamodel.values.ValueTag;
import org.apache.vxquery.exceptions.SystemException;
import org.apache.vxquery.runtime.functions.util.FunctionHelper;
-import org.apache.hyracks.data.std.primitive.BooleanPointable;
-import org.apache.hyracks.data.std.primitive.BytePointable;
-import org.apache.hyracks.data.std.primitive.DoublePointable;
-import org.apache.hyracks.data.std.primitive.FloatPointable;
-import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.data.std.primitive.ShortPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-import org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
-
public class CastToStringOperation extends AbstractCastToOperation {
+ private static final int STRING_EXPECTED_LENGTH = 300;
+ private final GrowableArray ga = new GrowableArray();
+ private final VXQueryUTF8StringBuilder sb = new VXQueryUTF8StringBuilder();
private ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
private ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
private DataOutput dOutInner = abvsInner.getDataOutput();
- int returnTag = ValueTag.XS_STRING_TAG;
+ protected int returnTag = ValueTag.XS_STRING_TAG;
private final char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+ private final UTF8StringPointable stringp = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
@Override
public void convertAnyURI(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
@@ -59,63 +64,60 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertBase64Binary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
- baaos.reset();
- @SuppressWarnings("resource")
+ // Read binary
Base64OutputStream b64os = new Base64OutputStream(baaos, true);
b64os.write(binaryp.getByteArray(), binaryp.getStartOffset() + 2, binaryp.getLength() - 2);
- dOut.write(returnTag);
- dOut.write((byte) ((baaos.size() >>> 8) & 0xFF));
- dOut.write((byte) ((baaos.size() >>> 0) & 0xFF));
- dOut.write(baaos.getByteArray(), 0, baaos.size());
+ // Write string
+ startString();
+ sb.appendUtf8Bytes(baaos.getByteArray(), 0, baaos.size());
+ sendStringDataOutput(dOut);
}
@Override
public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
if (boolp.getBoolean()) {
- FunctionHelper.writeCharSequence("true", dOutInner);
+ FunctionHelper.writeCharSequence("true", sb);
} else {
- FunctionHelper.writeCharSequence("false", dOutInner);
+ FunctionHelper.writeCharSequence("false", sb);
}
sendStringDataOutput(dOut);
}
@Override
public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeDateAsString(datep, dOutInner);
- FunctionHelper.writeTimezoneAsString(datep, dOutInner);
-
+ startString();
+ FunctionHelper.writeDateAsString(datep, sb);
+ FunctionHelper.writeTimezoneAsString(datep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeDateAsString(datetimep, dOutInner);
- FunctionHelper.writeChar('T', dOutInner);
- FunctionHelper.writeTimeAsString(datetimep, dOutInner);
- FunctionHelper.writeTimezoneAsString(datetimep, dOutInner);
-
+ startString();
+ FunctionHelper.writeDateAsString(datetimep, sb);
+ FunctionHelper.writeChar('T', sb);
+ FunctionHelper.writeTimeAsString(datetimep, sb);
+ FunctionHelper.writeTimezoneAsString(datetimep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
byte decimalPlace = decp.getDecimalPlace();
long value = decp.getDecimalValue();
byte nDigits = decp.getDigitCount();
if (!FunctionHelper.isNumberPostive(value)) {
// Negative result, but the rest of the calculations can be based on a positive value.
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
value *= -1;
}
if (value == 0) {
- FunctionHelper.writeChar('0', dOutInner);
+ FunctionHelper.writeChar('0', sb);
} else {
long pow10 = (long) Math.pow(10, nDigits - 1);
int start = Math.max(decimalPlace, nDigits - 1);
@@ -123,14 +125,14 @@ public class CastToStringOperation extends AbstractCastToOperation {
for (int i = start; i >= end; --i) {
if (i >= nDigits || i < 0) {
- FunctionHelper.writeChar('0', dOutInner);
+ FunctionHelper.writeChar('0', sb);
} else {
- FunctionHelper.writeChar((char) ('0' + (value / pow10)), dOutInner);
+ FunctionHelper.writeChar((char) ('0' + (value / pow10)), sb);
value %= pow10;
pow10 /= 10;
}
if (i == decimalPlace && value > 0) {
- FunctionHelper.writeChar('.', dOutInner);
+ FunctionHelper.writeChar('.', sb);
}
}
}
@@ -140,29 +142,30 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
abvsInner.reset();
+ startString();
double value = doublep.getDouble();
if (Double.isInfinite(value)) {
if (value == Double.NEGATIVE_INFINITY) {
- FunctionHelper.writeCharSequence("-", dOutInner);
+ FunctionHelper.writeCharSequence("-", sb);
}
- FunctionHelper.writeCharSequence("INF", dOutInner);
+ FunctionHelper.writeCharSequence("INF", sb);
sendStringDataOutput(dOut);
} else if (Double.isNaN(value)) {
- FunctionHelper.writeCharSequence("NaN", dOutInner);
+ FunctionHelper.writeCharSequence("NaN", sb);
sendStringDataOutput(dOut);
} else if (value == -0.0 || value == 0.0) {
long bits = Double.doubleToLongBits(value);
boolean negative = ((bits >> 63) == 0) ? false : true;
if (negative) {
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeCharSequence("-", sb);
}
- FunctionHelper.writeCharSequence("0", dOutInner);
+ FunctionHelper.writeCharSequence("0", sb);
sendStringDataOutput(dOut);
} else if (Math.abs(value) >= 0.000001 && Math.abs(value) <= 10000000) {
- //the jdk (toString function) does not output number in desired format when
- //a number is between one and ten million, so we take care of this
+ //the jdk (toString function) does not output number in desired format when
+ //a number is between one and ten million, so we take care of this
//case separately here.
CastToDecimalOperation castToDecimal = new CastToDecimalOperation();
castToDecimal.convertDouble(doublep, dOutInner);
@@ -175,67 +178,65 @@ public class CastToStringOperation extends AbstractCastToOperation {
decimalToScientificNotn(decp, dOut);
}
} else {
- dOut.write(returnTag);
- dOut.writeUTF(Double.toString(value));
+ FunctionHelper.writeCharSequence(Double.toString(value), sb);
+ sendStringDataOutput(dOut);
}
}
public void convertDoubleCanonical(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
double value = doublep.getDouble();
-
- dOut.write(returnTag);
- dOut.writeUTF(Double.toString(value));
- return;
+ FunctionHelper.writeCharSequence(Double.toString(value), sb);
+ sendStringDataOutput(dOut);
}
@Override
public void convertDTDuration(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
long dayTime = longp.getLong();
if (dayTime == 0) {
- FunctionHelper.writeCharSequence("PT0S", dOutInner);
+ FunctionHelper.writeCharSequence("PT0S", sb);
} else {
if (dayTime < 0) {
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
dayTime *= -1;
}
- FunctionHelper.writeChar('P', dOutInner);
+ FunctionHelper.writeChar('P', sb);
// Day
if (dayTime >= DateTime.CHRONON_OF_DAY) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_DAY, 1, dOutInner);
- FunctionHelper.writeChar('D', dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_DAY, 1, sb);
+ FunctionHelper.writeChar('D', sb);
dayTime %= DateTime.CHRONON_OF_DAY;
}
if (dayTime > 0) {
- FunctionHelper.writeChar('T', dOutInner);
+ FunctionHelper.writeChar('T', sb);
}
// Hour
if (dayTime >= DateTime.CHRONON_OF_HOUR) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_HOUR, 1, dOutInner);
- FunctionHelper.writeChar('H', dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_HOUR, 1, sb);
+ FunctionHelper.writeChar('H', sb);
dayTime %= DateTime.CHRONON_OF_HOUR;
}
// Minute
if (dayTime >= DateTime.CHRONON_OF_MINUTE) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_MINUTE, 1, dOutInner);
- FunctionHelper.writeChar('M', dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_MINUTE, 1, sb);
+ FunctionHelper.writeChar('M', sb);
dayTime %= DateTime.CHRONON_OF_MINUTE;
}
// Milliseconds
if (dayTime > 0) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_SECOND, 1, dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_SECOND, 1, sb);
if (dayTime % DateTime.CHRONON_OF_SECOND != 0) {
- FunctionHelper.writeChar('.', dOutInner);
- FunctionHelper.writeNumberWithPadding(dayTime % DateTime.CHRONON_OF_SECOND, 3, dOutInner);
+ FunctionHelper.writeChar('.', sb);
+ FunctionHelper.writeNumberWithPadding(dayTime % DateTime.CHRONON_OF_SECOND, 3, sb);
}
- FunctionHelper.writeChar('S', dOutInner);
+ FunctionHelper.writeChar('S', sb);
}
}
sendStringDataOutput(dOut);
@@ -243,62 +244,62 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertDuration(XSDurationPointable durationp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
int yearMonth = durationp.getYearMonth();
long dayTime = durationp.getDayTime();
if (yearMonth < 0 || dayTime < 0) {
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
yearMonth *= -1;
dayTime *= -1;
}
- FunctionHelper.writeChar('P', dOutInner);
+ FunctionHelper.writeChar('P', sb);
// Year
if (yearMonth >= 12) {
- FunctionHelper.writeNumberWithPadding(yearMonth / 12, 1, dOutInner);
- FunctionHelper.writeChar('Y', dOutInner);
+ FunctionHelper.writeNumberWithPadding(yearMonth / 12, 1, sb);
+ FunctionHelper.writeChar('Y', sb);
}
// Month
if (yearMonth % 12 > 0) {
- FunctionHelper.writeNumberWithPadding(yearMonth % 12, 1, dOutInner);
- FunctionHelper.writeChar('M', dOutInner);
+ FunctionHelper.writeNumberWithPadding(yearMonth % 12, 1, sb);
+ FunctionHelper.writeChar('M', sb);
}
// Day
if (dayTime >= DateTime.CHRONON_OF_DAY) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_DAY, 1, dOutInner);
- FunctionHelper.writeChar('D', dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_DAY, 1, sb);
+ FunctionHelper.writeChar('D', sb);
dayTime %= DateTime.CHRONON_OF_DAY;
}
if (dayTime > 0) {
- FunctionHelper.writeChar('T', dOutInner);
+ FunctionHelper.writeChar('T', sb);
}
// Hour
if (dayTime >= DateTime.CHRONON_OF_HOUR) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_HOUR, 1, dOutInner);
- FunctionHelper.writeChar('H', dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_HOUR, 1, sb);
+ FunctionHelper.writeChar('H', sb);
dayTime %= DateTime.CHRONON_OF_HOUR;
}
// Minute
if (dayTime >= DateTime.CHRONON_OF_MINUTE) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_MINUTE, 1, dOutInner);
- FunctionHelper.writeChar('M', dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_MINUTE, 1, sb);
+ FunctionHelper.writeChar('M', sb);
dayTime %= DateTime.CHRONON_OF_MINUTE;
}
// Milliseconds
if (dayTime > 0) {
- FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_SECOND, 1, dOutInner);
+ FunctionHelper.writeNumberWithPadding(dayTime / DateTime.CHRONON_OF_SECOND, 1, sb);
if (dayTime % DateTime.CHRONON_OF_SECOND != 0) {
- FunctionHelper.writeChar('.', dOutInner);
- FunctionHelper.writeNumberWithPadding(dayTime % DateTime.CHRONON_OF_SECOND, 3, dOutInner);
+ FunctionHelper.writeChar('.', sb);
+ FunctionHelper.writeNumberWithPadding(dayTime % DateTime.CHRONON_OF_SECOND, 3, sb);
}
- FunctionHelper.writeChar('S', dOutInner);
+ FunctionHelper.writeChar('S', sb);
}
sendStringDataOutput(dOut);
@@ -307,6 +308,7 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertFloat(FloatPointable floatp, DataOutput dOut) throws SystemException, IOException {
abvsInner.reset();
+ startString();
float value = floatp.getFloat();
if (!Float.isInfinite(value) && !Float.isNaN(value) && Math.abs(value) >= 0.000001
@@ -321,9 +323,9 @@ public class CastToStringOperation extends AbstractCastToOperation {
boolean negative = ((bits >> 31) == 0) ? false : true;
if (negative) {
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
}
- FunctionHelper.writeCharSequence("0", dOutInner);
+ FunctionHelper.writeCharSequence("0", sb);
sendStringDataOutput(dOut);
} else {
convertFloatCanonical(floatp, dOut);
@@ -331,128 +333,126 @@ public class CastToStringOperation extends AbstractCastToOperation {
}
public void convertFloatCanonical(FloatPointable floatp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
float value = floatp.getFloat();
if (Float.isInfinite(value)) {
if (value == Float.NEGATIVE_INFINITY) {
- FunctionHelper.writeCharSequence("-", dOutInner);
+ FunctionHelper.writeCharSequence("-", sb);
}
- FunctionHelper.writeCharSequence("INF", dOutInner);
+ FunctionHelper.writeCharSequence("INF", sb);
} else if (Float.isNaN(value)) {
- FunctionHelper.writeCharSequence("NaN", dOutInner);
+ FunctionHelper.writeCharSequence("NaN", sb);
} else {
- dOut.write(returnTag);
- dOut.writeUTF(Float.toString(value));
- return;
+ FunctionHelper.writeCharSequence(Float.toString(value), sb);
}
sendStringDataOutput(dOut);
}
@Override
public void convertGDay(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
// Default
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Year
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Month
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Day
- FunctionHelper.writeNumberWithPadding(datep.getDay(), 2, dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getDay(), 2, sb);
// Timezone
- FunctionHelper.writeTimezoneAsString(datep, dOutInner);
+ FunctionHelper.writeTimezoneAsString(datep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertGMonth(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
// Default
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Year
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Month
- FunctionHelper.writeNumberWithPadding(datep.getMonth(), 2, dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getMonth(), 2, sb);
// Timezone
- FunctionHelper.writeTimezoneAsString(datep, dOutInner);
+ FunctionHelper.writeTimezoneAsString(datep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertGMonthDay(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
// Default
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Year
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
// Month
- FunctionHelper.writeNumberWithPadding(datep.getMonth(), 2, dOutInner);
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getMonth(), 2, sb);
+ FunctionHelper.writeChar('-', sb);
// Day
- FunctionHelper.writeNumberWithPadding(datep.getDay(), 2, dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getDay(), 2, sb);
// Timezone
- FunctionHelper.writeTimezoneAsString(datep, dOutInner);
+ FunctionHelper.writeTimezoneAsString(datep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertGYear(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
// Year
- FunctionHelper.writeNumberWithPadding(datep.getYear(), 4, dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getYear(), 4, sb);
// Timezone
- FunctionHelper.writeTimezoneAsString(datep, dOutInner);
+ FunctionHelper.writeTimezoneAsString(datep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertGYearMonth(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
// Year
- FunctionHelper.writeNumberWithPadding(datep.getYear(), 4, dOutInner);
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getYear(), 4, sb);
+ FunctionHelper.writeChar('-', sb);
// Month
- FunctionHelper.writeNumberWithPadding(datep.getMonth(), 2, dOutInner);
+ FunctionHelper.writeNumberWithPadding(datep.getMonth(), 2, sb);
// Timezone
- FunctionHelper.writeTimezoneAsString(datep, dOutInner);
+ FunctionHelper.writeTimezoneAsString(datep, sb);
sendStringDataOutput(dOut);
}
@Override
public void convertHexBinary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
for (int index = 0; index < binaryp.getBinaryLength(); ++index) {
int bi = binaryp.getByteArray()[binaryp.getBinaryStart() + index] & 0xff;
- FunctionHelper.writeChar(hex[(bi >> 4)], dOutInner);
- FunctionHelper.writeChar(hex[(bi & 0xf)], dOutInner);
+ FunctionHelper.writeChar(hex[bi >> 4], sb);
+ FunctionHelper.writeChar(hex[bi & 0xf], sb);
}
sendStringDataOutput(dOut);
}
@Override
public void convertInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.getLong(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.getLong(), 1, sb);
sendStringDataOutput(dOut);
}
@@ -464,16 +464,14 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertQName(XSQNamePointable qnamep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
if (qnamep.getPrefixUTFLength() > 0) {
- dOutInner.write(qnamep.getByteArray(), qnamep.getStartOffset() + qnamep.getUriLength() + 2,
- qnamep.getPrefixUTFLength());
- FunctionHelper.writeChar(':', dOutInner);
+ qnamep.getPrefix(stringp);
+ sb.appendUtf8StringPointable(stringp);
+ FunctionHelper.writeChar(':', sb);
}
- dOutInner.write(qnamep.getByteArray(),
- qnamep.getStartOffset() + qnamep.getUriLength() + qnamep.getPrefixLength() + 2,
- qnamep.getLocalNameUTFLength());
-
+ qnamep.getLocalName(stringp);
+ sb.appendUtf8StringPointable(stringp);
sendStringDataOutput(dOut);
}
@@ -485,10 +483,9 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertTime(XSTimePointable timep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeTimeAsString(timep, dOutInner);
- FunctionHelper.writeTimezoneAsString(timep, dOutInner);
-
+ startString();
+ FunctionHelper.writeTimeAsString(timep, sb);
+ FunctionHelper.writeTimezoneAsString(timep, sb);
sendStringDataOutput(dOut);
}
@@ -499,28 +496,28 @@ public class CastToStringOperation extends AbstractCastToOperation {
@Override
public void convertYMDuration(IntegerPointable intp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
+ startString();
int yearMonth = intp.getInteger();
if (yearMonth == 0) {
- FunctionHelper.writeCharSequence("P0M", dOutInner);
+ FunctionHelper.writeCharSequence("P0M", sb);
} else {
if (yearMonth < 0) {
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
yearMonth *= -1;
}
- FunctionHelper.writeChar('P', dOutInner);
+ FunctionHelper.writeChar('P', sb);
// Year
if (yearMonth >= 12) {
- FunctionHelper.writeNumberWithPadding(yearMonth / 12, 1, dOutInner);
- FunctionHelper.writeChar('Y', dOutInner);
+ FunctionHelper.writeNumberWithPadding(yearMonth / 12, 1, sb);
+ FunctionHelper.writeChar('Y', sb);
}
// Month
if (yearMonth % 12 > 0) {
- FunctionHelper.writeNumberWithPadding(yearMonth % 12, 1, dOutInner);
- FunctionHelper.writeChar('M', dOutInner);
+ FunctionHelper.writeNumberWithPadding(yearMonth % 12, 1, sb);
+ FunctionHelper.writeChar('M', sb);
}
}
sendStringDataOutput(dOut);
@@ -530,74 +527,74 @@ public class CastToStringOperation extends AbstractCastToOperation {
* Derived Numeric Datatypes
*/
public void convertByte(BytePointable bytep, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(bytep.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(bytep.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertInt(IntegerPointable intp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(intp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(intp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertLong(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertNegativeInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertNonNegativeInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertNonPositiveInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertPositiveInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertShort(ShortPointable shortp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(shortp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(shortp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertUnsignedByte(ShortPointable shortp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(shortp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(shortp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertUnsignedInt(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertUnsignedLong(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(longp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
public void convertUnsignedShort(IntegerPointable intp, DataOutput dOut) throws SystemException, IOException {
- abvsInner.reset();
- FunctionHelper.writeNumberWithPadding(intp.longValue(), 1, dOutInner);
+ startString();
+ FunctionHelper.writeNumberWithPadding(intp.longValue(), 1, sb);
sendStringDataOutput(dOut);
}
@@ -647,8 +644,8 @@ public class CastToStringOperation extends AbstractCastToOperation {
}
@Override
- public void convertNormalizedString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException,
- IOException {
+ public void convertNormalizedString(UTF8StringPointable stringp, DataOutput dOut)
+ throws SystemException, IOException {
// TODO Add check to verify string consists of limited character set.
convertString(stringp, dOut);
}
@@ -659,36 +656,40 @@ public class CastToStringOperation extends AbstractCastToOperation {
convertString(stringp, dOut);
}
+ private void startString() throws IOException {
+ ga.reset();
+ sb.reset(ga, STRING_EXPECTED_LENGTH);
+ }
+
private void sendStringDataOutput(DataOutput dOut) throws SystemException, IOException {
dOut.write(returnTag);
- dOut.write((byte) ((abvsInner.getLength() >>> 8) & 0xFF));
- dOut.write((byte) ((abvsInner.getLength() >>> 0) & 0xFF));
- dOut.write(abvsInner.getByteArray(), abvsInner.getStartOffset(), abvsInner.getLength());
+ sb.finish();
+ dOut.write(ga.getByteArray(), 0, ga.getLength());
}
public void decimalToScientificNotn(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
byte decimalPlace = decp.getDecimalPlace();
long value = decp.getDecimalValue();
byte nDigits = decp.getDigitCount();
- abvsInner.reset();
+ startString();
if (!FunctionHelper.isNumberPostive(value)) {
// Negative result, but the rest of the calculations can be based on a positive value.
- FunctionHelper.writeChar('-', dOutInner);
+ FunctionHelper.writeChar('-', sb);
value *= -1;
}
if (value == 0) {
- FunctionHelper.writeChar('0', dOutInner);
+ FunctionHelper.writeChar('0', sb);
} else {
long pow10 = (long) Math.pow(10, nDigits - 1);
- FunctionHelper.writeNumberWithPadding((value / pow10), 0, dOutInner);
- FunctionHelper.writeChar('.', dOutInner);
+ FunctionHelper.writeNumberWithPadding((value / pow10), 0, sb);
+ FunctionHelper.writeChar('.', sb);
long mod = value % pow10;
- FunctionHelper.writeNumberWithPadding(mod, (nDigits - 1), dOutInner);
- FunctionHelper.writeChar('E', dOutInner);
+ FunctionHelper.writeNumberWithPadding(mod, (nDigits - 1), sb);
+ FunctionHelper.writeChar('E', sb);
long power = (nDigits - 1) - decimalPlace;
- FunctionHelper.writeNumberWithPadding(power, 0, dOutInner);
+ FunctionHelper.writeNumberWithPadding(power, 0, sb);
}
sendStringDataOutput(dOut);
}
@@ -697,6 +698,6 @@ public class CastToStringOperation extends AbstractCastToOperation {
public void convertNull(DataOutput dOut) throws SystemException, IOException {
StringValueBuilder svb = new StringValueBuilder();
dOut.write(returnTag);
- svb.write("null",dOut);
+ svb.write("null", dOut);
}
}
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableScalarEvaluatorFactory.java
index a3da889..5334c92 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableScalarEvaluatorFactory.java
@@ -18,6 +18,12 @@ package org.apache.vxquery.runtime.functions.castable;
import java.io.DataOutput;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+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.data.std.api.IPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
import org.apache.vxquery.datamodel.accessors.TypedPointables;
import org.apache.vxquery.datamodel.values.ValueTag;
@@ -28,13 +34,6 @@ import org.apache.vxquery.runtime.functions.type.AbstractTypeScalarEvaluatorFact
import org.apache.vxquery.types.BuiltinTypeRegistry;
import org.apache.vxquery.types.SequenceType;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
public class CastableScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -44,7 +43,7 @@ public class CastableScalarEvaluatorFactory extends AbstractTypeScalarEvaluatorF
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
return new AbstractTypeScalarEvaluator(args, ctx) {
final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
final DataOutput dOut = abvs.getDataOutput();
http://git-wip-us.apache.org/repos/asf/vxquery/blob/2c881020/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
index 4d5eca2..58aa35d 100644
--- a/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
+++ b/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonScalarEvaluatorFactory.java
@@ -18,6 +18,13 @@ package org.apache.vxquery.runtime.functions.comparison;
import java.io.DataOutput;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
+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.data.std.api.IPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
import org.apache.vxquery.context.DynamicContext;
import org.apache.vxquery.datamodel.accessors.SequencePointable;
import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
@@ -30,14 +37,6 @@ import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScal
import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
import org.apache.vxquery.runtime.functions.util.FunctionHelper;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.data.std.api.IPointable;
-import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
-
public abstract class AbstractValueComparisonScalarEvaluatorFactory extends
AbstractTaggedValueArgumentScalarEvaluatorFactory {
private static final long serialVersionUID = 1L;
@@ -48,7 +47,7 @@ public abstract class AbstractValueComparisonScalarEvaluatorFactory extends
@Override
protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
- throws AlgebricksException {
+ throws HyracksDataException {
final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
final DataOutput dOut = abvs.getDataOutput();
final AbstractValueComparisonOperation aOp = createValueComparisonOperation();