Skip to content

Package: ManagedInstanceBuilder

ManagedInstanceBuilder

nameinstructionbranchcomplexitylinemethod
ManagedInstanceBuilder(CloneBuilder, UnitOfWork)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
buildClone(Object, Field, Object, CloneConfiguration)
M: 8 C: 30
79%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 0 C: 5
100%
M: 0 C: 1
100%
static {...}
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

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: }