1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.modeshape.jboss.managed;
25
26 import java.lang.reflect.Type;
27
28 import org.jboss.metatype.api.types.CompositeMetaType;
29 import org.jboss.metatype.api.types.MetaType;
30 import org.jboss.metatype.api.types.SimpleMetaType;
31 import org.jboss.metatype.api.values.CompositeValue;
32 import org.jboss.metatype.api.values.CompositeValueSupport;
33 import org.jboss.metatype.api.values.MetaValue;
34 import org.jboss.metatype.api.values.MetaValueFactory;
35 import org.jboss.metatype.api.values.SimpleValueSupport;
36 import org.jboss.metatype.plugins.types.MutableCompositeMetaType;
37 import org.jboss.metatype.spi.values.MetaMapper;
38
39
40 public class ManagedRepositoryMapper extends MetaMapper<ManagedRepository> {
41 private static final String NAME = "name";
42 private static final String VERSION = "version";
43 private static final MutableCompositeMetaType metaType;
44 private static final MetaValueFactory metaValueFactory = MetaValueFactory.getInstance();
45
46 static {
47 metaType = new MutableCompositeMetaType(ManagedRepository.class.getName(), "The ModeShape repository instance");
48 metaType.addItem(NAME, NAME, SimpleMetaType.STRING);
49 metaType.addItem(VERSION, VERSION, SimpleMetaType.STRING);
50 metaType.freeze();
51 }
52
53 @Override
54 public Type mapToType() {
55 return ManagedRepository.class;
56 }
57
58 @Override
59 public MetaType getMetaType() {
60 return metaType;
61 }
62
63 @Override
64 public MetaValue createMetaValue(MetaType metaType, ManagedRepository object) {
65 if (object == null)
66 return null;
67 if (metaType instanceof CompositeMetaType) {
68 CompositeMetaType composite = (CompositeMetaType) metaType;
69 CompositeValueSupport managedRepository = new CompositeValueSupport(composite);
70
71 managedRepository.set(NAME, SimpleValueSupport.wrap(object.getName()));
72 managedRepository.set(VERSION, SimpleValueSupport.wrap(object.getVersion()));
73 return managedRepository;
74 }
75 throw new IllegalArgumentException("Cannot convert ManagedRepository " + object);
76 }
77
78 @Override
79 public ManagedRepository unwrapMetaValue(MetaValue metaValue) {
80 if (metaValue == null)
81 return null;
82
83 if (metaValue instanceof CompositeValue) {
84 CompositeValue compositeValue = (CompositeValue) metaValue;
85
86 ManagedRepository managedRepository = new ManagedRepository();
87 managedRepository.setName((String) metaValueFactory.unwrap(compositeValue.get(NAME)));
88 managedRepository.setVersion((String) metaValueFactory.unwrap(compositeValue.get(VERSION)));
89 return managedRepository;
90 }
91 throw new IllegalStateException("Unable to unwrap ManagedRepository " + metaValue);
92 }
93
94 }