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();
