more changes
[iotcloud.git] / src / java / iotcloud / IoTString.java
1 package iotcloud;
2
3 import java.util.Arrays;
4
5 final public class IoTString {
6         byte[] array;
7         int hashcode;
8
9         private IoTString() {
10         }
11
12         public IoTString(byte[] _array) {
13                 array=(byte[]) _array.clone();
14                 hashcode=Arrays.hashCode(array);
15         }
16
17         public IoTString(String str) {
18                 array=str.getBytes();
19                 hashcode=Arrays.hashCode(array);
20         }
21
22         static IoTString shallow(byte[] _array) {
23                 IoTString i=new IoTString();
24                 i.array = _array;
25                 i.hashcode = Arrays.hashCode(_array);
26                 return i;
27         }
28
29         byte[] internalBytes() {
30                 return array;
31         }
32
33         public int hashCode() {
34                 return hashcode;
35         }
36
37         public String toString() {
38                 return new String(array);
39         }
40
41         public byte[] getBytes() {
42                 return (byte[]) array.clone();
43         }
44
45         public boolean equals(Object o) {
46                 if (o instanceof IoTString) {
47                         IoTString i=(IoTString)o;
48                         return Arrays.equals(array, i.array);
49                 }
50                 return false;
51         }
52
53         public int length() {
54                 return array.length;
55         }
56 }