1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.svg.edit.client.model;
19
20 import org.vectomatic.svg.edit.client.command.IFactoryInstantiator;
21
22
23
24
25
26
27
28
29
30 public class JSMetadata<T,U> extends MetadataBase<T,U> {
31 protected IPropertyAccessor<T,U> accessor;
32 public JSMetadata(String propertyName, String description, IFieldFactory fieldFactory, IPropertyAccessor<T,U> accessor, IFactoryInstantiator<?> factory, IValidator<T,U> validator) {
33 super(propertyName, description, fieldFactory, factory, validator);
34 this.accessor = accessor;
35 }
36
37 @Override
38 public T get(U element) {
39 return accessor.get(element);
40 }
41
42 @Override
43 public T set(U element, T value) {
44 T oldValue = accessor.get(element);
45 accessor.set(element, value);
46 return oldValue;
47 }
48
49 @Override
50 public T remove(U element) {
51 throw new IllegalStateException("Property " + propertyName + " cannot be removed");
52 }
53
54 @Override
55 public String toString() {
56 StringBuilder builder = new StringBuilder("JSMetadata(");
57 builder.append(propertyName);
58 builder.append(")");
59 return builder.toString();
60 }
61 }