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 2012/08/03 04:14:20 UTC
svn commit: r1368771 - in
/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast:
CastToBase64BinaryOperation.java CastToHexBinaryOperation.java
Author: prestonc
Date: Fri Aug 3 02:14:19 2012
New Revision: 1368771
URL: http://svn.apache.org/viewvc?rev=1368771&view=rev
Log:
Binary cast from strings are now working.
Modified:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java?rev=1368771&r1=1368770&r2=1368771&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java Fri Aug 3 02:14:19 2012
@@ -12,7 +12,8 @@ import edu.uci.ics.hyracks.data.std.prim
import edu.uci.ics.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
public class CastToBase64BinaryOperation extends AbstractCastToOperation {
-
+ private ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
+
@Override
public void convertBase64Binary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
dOut.write(ValueTag.XS_BASE64_BINARY_TAG);
@@ -27,14 +28,14 @@ public class CastToBase64BinaryOperation
@Override
public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
- ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
- Base64OutputStream b64os = new Base64OutputStream(baaos, true);
- b64os.write(stringp.getByteArray(), stringp.getStartOffset() + 2, stringp.getUTFLength());
+ baaos.reset();
+ Base64OutputStream b64os = new Base64OutputStream(baaos, false);
+ b64os.write(stringp.getByteArray(), stringp.getStartOffset() + 2, stringp.getLength() - 2);
- dOut.write(ValueTag.XS_STRING_TAG);
+ 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());
+ dOut.write(baaos.getByteArray(), 0, baaos.size());
}
@Override
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java?rev=1368771&r1=1368770&r2=1368771&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java Fri Aug 3 02:14:19 2012
@@ -33,13 +33,10 @@ public class CastToHexBinaryOperation ex
ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
charIterator.reset();
abvsInner.reset();
- int c = 0;
- byte halfByte1, halfByte2;
- while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
- halfByte1 = getHexBinary((char) c);
- halfByte2 = getHexBinary((char) c);
-
- dOutInner.write(((halfByte1 & 0xf0) << 4) + (halfByte2 & 0x0f));
+ int c1 = 0, c2 = 0;
+ while ((c1 = charIterator.next()) != ICharacterIterator.EOS_CHAR
+ && (c2 = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+ dOutInner.write(((Character.digit(c1, 16) << 4) + Character.digit(c2, 16)));
}
dOut.write(ValueTag.XS_HEX_BINARY_TAG);
@@ -52,41 +49,4 @@ public class CastToHexBinaryOperation ex
public void convertUntypedAtomic(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
convertString(stringp, dOut);
}
-
- private byte getHexBinary(char hexCharacter) {
- if (hexCharacter == Character.valueOf('0')) {
- return 0x00;
- } else if (hexCharacter == Character.valueOf('1')) {
- return 0x01;
- } else if (hexCharacter == Character.valueOf('2')) {
- return 0x02;
- } else if (hexCharacter == Character.valueOf('3')) {
- return 0x03;
- } else if (hexCharacter == Character.valueOf('4')) {
- return 0x04;
- } else if (hexCharacter == Character.valueOf('5')) {
- return 0x05;
- } else if (hexCharacter == Character.valueOf('6')) {
- return 0x06;
- } else if (hexCharacter == Character.valueOf('7')) {
- return 0x07;
- } else if (hexCharacter == Character.valueOf('8')) {
- return 0x08;
- } else if (hexCharacter == Character.valueOf('9')) {
- return 0x09;
- } else if (hexCharacter == Character.valueOf('a')) {
- return 0x0a;
- } else if (hexCharacter == Character.valueOf('b')) {
- return 0x0b;
- } else if (hexCharacter == Character.valueOf('c')) {
- return 0x0c;
- } else if (hexCharacter == Character.valueOf('d')) {
- return 0x0d;
- } else if (hexCharacter == Character.valueOf('e')) {
- return 0x0e;
- } else {
- return 0x0f;
- }
- }
-
}
\ No newline at end of file