Package: ManagedInstanceBuilder
ManagedInstanceBuilder
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ManagedInstanceBuilder(CloneBuilder, UnitOfWork) |
|
|
|
|
|
||||||||||||||||||||
buildClone(Object, Field, Object, CloneConfiguration) |
|
|
|
|
|
||||||||||||||||||||
static {...} |
|
|
|
|
|
Coverage
1: package cz.cvut.kbss.jopa.sessions;
2:
3: import cz.cvut.kbss.jopa.model.metamodel.EntityType;
4: import cz.cvut.kbss.jopa.model.metamodel.IdentifiableEntityType;
5: import cz.cvut.kbss.jopa.sessions.util.CloneConfiguration;
6: import cz.cvut.kbss.jopa.utils.ReflectionUtils;
7:
8: import java.lang.reflect.Field;
9:
10: /**
11: * Builds instances of entity types.
12: * <p>
13: * This builder expects the original's class has a public no-arg constructor. Furthermore, if the configuration
14: * specifies that the result will be registered in a persistence context, the instance built is not the base Java type
15: * of the original, but rather the {@link IdentifiableEntityType#getInstantiableJavaType()} result, which is a generated
16: * subclass whose instances can be attached to the persistence context.
17: */
18: public class ManagedInstanceBuilder extends DefaultInstanceBuilder {
19:
20: ManagedInstanceBuilder(CloneBuilder builder, UnitOfWork uow) {
21: super(builder, uow);
22: }
23:
24: @Override
25: Object buildClone(Object cloneOwner, Field field, Object original, CloneConfiguration config) {
26:• assert uow.isEntityType(original.getClass());
27: final EntityType<?> et = uow.getMetamodel().entity(original.getClass());
28:• assert et != null;
29:• final Class<?> cls = config.isForPersistenceContext() ? ((IdentifiableEntityType<?>) et).getInstantiableJavaType() : et.getJavaType();
30: return ReflectionUtils.instantiateUsingDefaultConstructor(cls);
31: }
32: }