1 15 package org.apache.tapestry.binding; 16 17 import org.apache.hivemind.Location; 18 import org.apache.hivemind.util.Defense; 19 import org.apache.tapestry.BindingException; 20 import org.apache.tapestry.IBinding; 21 import org.apache.tapestry.coerce.ValueConverter; 22 23 28 29 public abstract class AbstractBinding implements IBinding 30 { 31 32 33 private final String _description; 34 35 36 37 private final ValueConverter _valueConverter; 38 39 40 41 private final Location _location; 42 43 44 45 protected AbstractBinding(String description, ValueConverter valueConverter, Location location) 46 { 47 Defense.notNull(description, "description"); 48 Defense.notNull(valueConverter, "valueConverter"); 49 50 _description = description; 51 _valueConverter = valueConverter; 52 _location = location; 53 } 54 55 public Location getLocation() 56 { 57 return _location; 58 } 59 60 66 67 public void setObject(Object value) 68 { 69 throw createReadOnlyBindingException(this); 70 } 71 72 77 78 public boolean isInvariant() 79 { 80 return true; 81 } 82 83 public Object getObject(Class type) 84 { 85 Defense.notNull(type, "type"); 86 87 Object raw = getObject(); 88 89 try 90 { 91 return _valueConverter.coerceValue(raw, type); 92 } 93 catch (Exception ex) 94 { 95 String message = BindingMessages.convertObjectError(this, ex); 96 97 throw new BindingException(message, getComponent(), _location, this, ex); 98 } 99 } 100 101 107 108 public Object getComponent() 109 { 110 return null; 111 } 112 113 114 115 protected BindingException createReadOnlyBindingException(IBinding binding) 116 { 117 return new BindingException(BindingMessages.readOnlyBinding(binding), binding); 118 } 119 120 121 122 public String getDescription() 123 { 124 return _description; 125 } 126 127 128 public ValueConverter getValueConverter() 129 { 130 return _valueConverter; 131 } 132 } | Popular Tags |