1 package org.sapia.regis.type; 2 3 10 public class Value { 11 12 private BuiltinType type; 13 private Object value; 14 15 private Value(BuiltinType type, Object value){ 16 this.value = value; 17 this.type = type; 18 } 19 20 23 public BuiltinType getType(){ 24 return type; 25 } 26 27 33 public void set(Object o){ 34 if(o == null){ 35 this.value = o; 36 } 37 else if(type.isAssignable(o)){ 38 this.value = o; 39 } 40 else{ 41 throw new IllegalArgumentException ("Invalid value: " + o + " for type: " + type.getName()); 42 } 43 } 44 45 53 public Object set(String o){ 54 if(o == null){ 55 this.value = o; 56 } 57 else if(type.isAssignable(o)){ 58 this.value = o; 59 } 60 else{ 61 this.value = this.type.parse(o); 62 } 63 return this.value; 64 } 65 66 69 public void nullify(){ 70 this.value = null; 71 } 72 73 76 public Object get(){ 77 return value; 78 } 79 80 85 public static Value newInstance(BuiltinType type){ 86 return new Value(type, null); 87 } 88 89 95 public static Value newInstance(BuiltinType type, String value){ 96 if(value == null){ 97 return new Value(type, null); 98 } 99 else{ 100 return new Value(type, type.parse(value)); 101 } 102 } 103 104 110 public static Value newInstance(BuiltinType type, Object value){ 111 if(value == null){ 112 return new Value(type, null); 113 } 114 else if(type.isAssignable(value)){ 115 return new Value(type, value); 116 } 117 else{ 118 throw new IllegalArgumentException ("Invalid value: " + value + " for type: " + type.getName()); 119 } 120 } 121 122 } 123 | Popular Tags |