You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by ke...@apache.org on 2003/07/15 17:19:22 UTC
cvs commit: xml-xindice/java/src/org/apache/xindice/core/data Value.java
kevinross 2003/07/15 08:19:22
Modified: java/src/org/apache/xindice/core/data Value.java
Log:
format, use XindiceRuntimeException to retain root cause instead of IllegalStateException
Revision Changes Path
1.4 +159 -161 xml-xindice/java/src/org/apache/xindice/core/data/Value.java
Index: Value.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/core/data/Value.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Value.java 31 Oct 2002 06:59:56 -0000 1.3
+++ Value.java 15 Jul 2003 15:19:22 -0000 1.4
@@ -65,6 +65,8 @@
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import org.apache.xindice.util.XindiceRuntimeException;
+
/**
* Value is the primary base class for all data storing objects.
* The content window of Value objects are immutable, but the
@@ -72,165 +74,161 @@
*/
public class Value implements Comparable {
- protected byte[] data = null;
- protected int pos = 0;
- protected int len = -1;
-
- private Value() {
- }
-
- public Value(Value value) {
- data = value.data;
- pos = value.pos;
- len = value.len;
- }
-
- public Value(byte[] data) {
- this.data = data;
- len = data.length;
- }
-
- public Value(byte[] data, int pos, int len) {
- this.data = data;
- this.pos = pos;
- this.len = len;
- }
-
- public Value(String data) {
-
- try {
-
- this.data = data.getBytes("utf-8");
- this.len = this.data.length;
-
- } catch (UnsupportedEncodingException e) {
-
- throw new IllegalStateException("Java doesn't support "
- + "UTF-8 encoding");
- }
- }
-
- /**
- * getData retrieves the data being stored by the Value as a byte array.
- *
- * @return The Data
- */
- public final byte[] getData() {
- if ( len != data.length ) {
- byte[] b = new byte[len];
- System.arraycopy(data, pos, b, 0, len);
- return b;
- }
- else
- return data;
- }
-
- /**
- * getLength retrieves the length of the data being stored by the Value.
- *
- * @return The Value length
- */
- public final int getLength() {
- return len;
- }
-
- /**
- * getInputStream returns an InputStream for the Value.
- *
- * @return An InputStream
- */
- public final InputStream getInputStream() {
- return new ByteArrayInputStream(data, pos, len);
- }
-
- /**
- * streamTo streams the content of the Value to an OutputStream.
- *
- * @param out the OutputStream
- */
- public final void streamTo(OutputStream out) throws IOException {
- out.write(data, pos, len);
- }
-
- public final void copyTo(byte[] tdata, int tpos) {
- System.arraycopy(data, pos, tdata, tpos, len);
- }
-
- public final String toString() {
- try {
-
- return new String(getData(), "utf-8");
- } catch (UnsupportedEncodingException e) {
-
- throw new IllegalStateException("Java doesn't seem to support UTF-8!");
- }
- }
-
- public int hashCode() {
- return toString().hashCode();
- }
-
- public boolean equals(Value value) {
- return len == value.len ? compareTo(value) == 0
- : false;
- }
-
- public boolean equals(Object obj) {
- if ( this == obj )
- return true;
- if ( obj instanceof Value )
- return equals((Value)obj);
- else
- return equals(new Value(obj.toString()));
- }
-
- public final int compareTo(Value value) {
- byte[] ddata = value.data;
- int dpos = value.pos;
- int dlen = value.len;
-
- int stop = len > dlen ? dlen
- : len;
-
- for ( int i = 0; i < stop; i++ ) {
- byte b1 = data[pos+i];
- byte b2 = ddata[dpos+i];
-
- if ( b1 == b2 )
- continue;
- else {
- short s1 = (short)(b1 >>> 0);
- short s2 = (short)(b2 >>> 0);
- return s1 > s2 ? (i+1)
- : -(i+1);
- }
- }
-
- if ( len == dlen )
- return 0;
- else
- return len > dlen ? stop+1
- : -(stop+1);
- }
-
- public final int compareTo(Object obj) {
- if ( obj instanceof Value )
- return compareTo((Value)obj);
- else
- return compareTo(new Value(obj.toString()));
- }
-
- public final boolean startsWith(Value value) {
- if ( len < value.len )
- return false;
-
- byte[] ddata = value.data;
- int dpos = value.pos;
-
- for ( int i = 0; i < value.len; i++ )
- if ( data[i+pos] != ddata[i+dpos] )
+ protected byte[] data = null;
+ protected int pos = 0;
+ protected int len = -1;
+
+ private Value() {}
+
+ public Value(Value value) {
+ data = value.data;
+ pos = value.pos;
+ len = value.len;
+ }
+
+ public Value(byte[] data) {
+ this.data = data;
+ len = data.length;
+ }
+
+ public Value(byte[] data, int pos, int len) {
+ this.data = data;
+ this.pos = pos;
+ this.len = len;
+ }
+
+ public Value(String data) {
+
+ try {
+
+ this.data = data.getBytes("utf-8");
+ this.len = this.data.length;
+
+ }
+ catch (UnsupportedEncodingException e) {
+
+ throw new XindiceRuntimeException("Java doesn't support UTF-8 encoding", e);
+ }
+ }
+
+ /**
+ * getData retrieves the data being stored by the Value as a byte array.
+ *
+ * @return The Data
+ */
+ public final byte[] getData() {
+ if (len != data.length) {
+ byte[] b = new byte[len];
+ System.arraycopy(data, pos, b, 0, len);
+ return b;
+ }
+ else
+ return data;
+ }
+
+ /**
+ * getLength retrieves the length of the data being stored by the Value.
+ *
+ * @return The Value length
+ */
+ public final int getLength() {
+ return len;
+ }
+
+ /**
+ * getInputStream returns an InputStream for the Value.
+ *
+ * @return An InputStream
+ */
+ public final InputStream getInputStream() {
+ return new ByteArrayInputStream(data, pos, len);
+ }
+
+ /**
+ * streamTo streams the content of the Value to an OutputStream.
+ *
+ * @param out the OutputStream
+ */
+ public final void streamTo(OutputStream out) throws IOException {
+ out.write(data, pos, len);
+ }
+
+ public final void copyTo(byte[] tdata, int tpos) {
+ System.arraycopy(data, pos, tdata, tpos, len);
+ }
+
+ public final String toString() {
+ try {
+
+ return new String(getData(), "utf-8");
+ }
+ catch (UnsupportedEncodingException e) {
+
+ throw new XindiceRuntimeException("Java doesn't seem to support UTF-8!", e);
+ }
+ }
+
+ public int hashCode() {
+ return toString().hashCode();
+ }
+
+ public boolean equals(Value value) {
+ return len == value.len ? compareTo(value) == 0 : false;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj instanceof Value)
+ return equals((Value) obj);
+ else
+ return equals(new Value(obj.toString()));
+ }
+
+ public final int compareTo(Value value) {
+ byte[] ddata = value.data;
+ int dpos = value.pos;
+ int dlen = value.len;
+
+ int stop = len > dlen ? dlen : len;
+
+ for (int i = 0; i < stop; i++) {
+ byte b1 = data[pos + i];
+ byte b2 = ddata[dpos + i];
+
+ if (b1 == b2)
+ continue;
+ else {
+ short s1 = (short) (b1 >>> 0);
+ short s2 = (short) (b2 >>> 0);
+ return s1 > s2 ? (i + 1) : - (i + 1);
+ }
+ }
+
+ if (len == dlen)
+ return 0;
+ else
+ return len > dlen ? stop + 1 : - (stop + 1);
+ }
+
+ public final int compareTo(Object obj) {
+ if (obj instanceof Value)
+ return compareTo((Value) obj);
+ else
+ return compareTo(new Value(obj.toString()));
+ }
+
+ public final boolean startsWith(Value value) {
+ if (len < value.len)
return false;
-
- return true;
- }
+
+ byte[] ddata = value.data;
+ int dpos = value.pos;
+
+ for (int i = 0; i < value.len; i++)
+ if (data[i + pos] != ddata[i + dpos])
+ return false;
+
+ return true;
+ }
}