Skip to content

Package: RetrieveOperationsMultiContextRunner

RetrieveOperationsMultiContextRunner

nameinstructionbranchcomplexitylinemethod
RetrieveOperationsMultiContextRunner(Logger)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
testRetrieveLazyReferenceFromContext()
M: 0 C: 91
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 19
100%
M: 0 C: 1
100%
testRetrievePropertiesFromContext()
M: 0 C: 72
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 14
100%
M: 0 C: 1
100%
testRetrieveReferencedListFromContext()
M: 0 C: 125
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 22
100%
M: 0 C: 1
100%
testRetrieveSimilarFromTwoContexts()
M: 0 C: 86
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 19
100%
M: 0 C: 1
100%
testRetrieveSimpleListFromContext()
M: 0 C: 125
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 22
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2016 Czech Technical University in Prague
3: * <p>
4: * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
5: * License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
6: * version.
7: * <p>
8: * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
9: * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
10: * details. You should have received a copy of the GNU General Public License along with this program. If not, see
11: * <http://www.gnu.org/licenses/>.
12: */
13: package cz.cvut.kbss.jopa.test.runner;
14:
15: import cz.cvut.kbss.jopa.model.descriptors.Descriptor;
16: import cz.cvut.kbss.jopa.model.descriptors.EntityDescriptor;
17: import cz.cvut.kbss.jopa.model.descriptors.ObjectPropertyCollectionDescriptor;
18: import cz.cvut.kbss.jopa.test.OWLClassA;
19: import cz.cvut.kbss.jopa.test.OWLClassB;
20: import cz.cvut.kbss.jopa.test.OWLClassC;
21: import cz.cvut.kbss.jopa.test.OWLClassI;
22: import cz.cvut.kbss.jopa.test.environment.Generators;
23: import cz.cvut.kbss.jopa.test.environment.TestEnvironmentUtils;
24: import org.junit.Test;
25: import org.slf4j.Logger;
26:
27: import java.lang.reflect.Field;
28:
29: import static org.junit.Assert.*;
30:
31: public abstract class RetrieveOperationsMultiContextRunner extends BaseRunner {
32:
33: public RetrieveOperationsMultiContextRunner(Logger logger) {
34: super(logger);
35: }
36:
37: @Test
38: public void testRetrieveSimilarFromTwoContexts() throws Exception {
39: logger.debug(
40: "Test: persist entities with the same URI but different attributes into two contexts and then retrieve them.");
41: this.em = getEntityManager("MultiRetrieveSimilarFromTwoContexts", false);
42: final OWLClassA entityATwo = new OWLClassA();
43: entityATwo.setUri(entityA.getUri());
44: entityATwo.setStringAttribute("SomeCompletelyDifferentStringAttribute");
45: final Descriptor aDescriptor = new EntityDescriptor(CONTEXT_ONE);
46: final Descriptor aTwoDescriptor = new EntityDescriptor(CONTEXT_TWO);
47: em.getTransaction().begin();
48: em.persist(entityA, aDescriptor);
49: em.persist(entityATwo, aTwoDescriptor);
50: em.getTransaction().commit();
51:
52: final OWLClassA resOne = em.find(OWLClassA.class, entityA.getUri(), aDescriptor);
53: assertNotNull(resOne);
54: assertEquals(entityA.getStringAttribute(), resOne.getStringAttribute());
55: final OWLClassA resTwo = em.find(OWLClassA.class, entityATwo.getUri(), aTwoDescriptor);
56: assertNotNull(resTwo);
57: assertEquals(entityATwo.getStringAttribute(), resTwo.getStringAttribute());
58: }
59:
60: @Test
61: public void testRetrieveSimpleListFromContext() throws Exception {
62: logger.debug("Test: retrieve simple list and its values from a different context.");
63: this.em = getEntityManager("MultiRetrieveSimpleListFromContext", false);
64: entityC.setSimpleList(Generators.createSimpleList(10));
65: final Descriptor cDescriptor = new EntityDescriptor();
66: final Descriptor listDescriptor = new ObjectPropertyCollectionDescriptor(CONTEXT_ONE,
67: OWLClassC.class.getDeclaredField("simpleList"));
68: cDescriptor.addAttributeDescriptor(OWLClassC.class.getDeclaredField("simpleList"), listDescriptor);
69: em.getTransaction().begin();
70: em.persist(entityC, cDescriptor);
71:• for (OWLClassA a : entityC.getSimpleList()) {
72: em.persist(a, listDescriptor);
73: }
74: em.getTransaction().commit();
75:
76: final OWLClassC resC = em.find(OWLClassC.class, entityC.getUri(), cDescriptor);
77: assertNotNull(resC);
78: assertNotNull(resC.getSimpleList());
79: assertEquals(entityC.getSimpleList().size(), resC.getSimpleList().size());
80:• for (OWLClassA a : entityC.getSimpleList()) {
81: final OWLClassA resA = em.find(OWLClassA.class, a.getUri(), listDescriptor);
82: assertNotNull(resA);
83: assertEquals(a.getUri(), resA.getUri());
84: assertEquals(a.getStringAttribute(), resA.getStringAttribute());
85: }
86: }
87:
88: @Test
89: public void testRetrieveReferencedListFromContext() throws Exception {
90: logger.debug("Test: retrieve referenced list and its values from a different context.");
91: this.em = getEntityManager("MultiRetrieveReferencedListFromContext", false);
92: entityC.setReferencedList(Generators.createReferencedList(15));
93: final Descriptor cDescriptor = new EntityDescriptor();
94: final Descriptor listDescriptor = new ObjectPropertyCollectionDescriptor(CONTEXT_ONE,
95: OWLClassC.class.getDeclaredField("referencedList"));
96: cDescriptor.addAttributeDescriptor(OWLClassC.class.getDeclaredField("referencedList"), listDescriptor);
97: em.getTransaction().begin();
98: em.persist(entityC, cDescriptor);
99:• for (OWLClassA a : entityC.getReferencedList()) {
100: em.persist(a, listDescriptor);
101: }
102: em.getTransaction().commit();
103:
104: final OWLClassC resC = em.find(OWLClassC.class, entityC.getUri(), cDescriptor);
105: assertNotNull(resC);
106: assertNotNull(resC.getReferencedList());
107: assertEquals(entityC.getReferencedList().size(), resC.getReferencedList().size());
108:• for (OWLClassA a : entityC.getReferencedList()) {
109: final OWLClassA resA = em.find(OWLClassA.class, a.getUri(), listDescriptor);
110: assertNotNull(resA);
111: assertEquals(a.getUri(), resA.getUri());
112: assertEquals(a.getStringAttribute(), resA.getStringAttribute());
113: }
114: }
115:
116: @Test
117: public void testRetrieveLazyReferenceFromContext() throws Exception {
118: logger.debug("Test: retrieve entity with lazy loaded reference in another context.");
119: this.em = getEntityManager("MultiRetrieveLazyReferenceFromContext", false);
120: final Descriptor iDescriptor = new EntityDescriptor(CONTEXT_ONE);
121: final Descriptor aDescriptor = new EntityDescriptor(CONTEXT_TWO);
122: aDescriptor.addAttributeContext(OWLClassA.class.getDeclaredField("stringAttribute"), CONTEXT_ONE);
123: iDescriptor.addAttributeDescriptor(OWLClassI.class.getDeclaredField("owlClassA"), aDescriptor);
124: em.getTransaction().begin();
125: // The relationship is CascadeType.PERSIST
126: em.persist(entityI, iDescriptor);
127: em.getTransaction().commit();
128:
129: final OWLClassI resI = em.find(OWLClassI.class, entityI.getUri(), iDescriptor);
130: assertNotNull(resI);
131: final Field refAField = OWLClassI.class.getDeclaredField("owlClassA");
132: refAField.setAccessible(true);
133: assertNull(refAField.get(resI));
134: assertNotNull(resI.getOwlClassA());
135: final OWLClassA resA = em.find(OWLClassA.class, entityA.getUri(), aDescriptor);
136: assertNotNull(resA);
137: // If we were using cache, ref.getOwlClassA() and resA would be the same
138: assertEquals(resI.getOwlClassA().getStringAttribute(), resA.getStringAttribute());
139: }
140:
141: @Test
142: public void testRetrievePropertiesFromContext() throws Exception {
143: logger.debug("Test: retrieve entity properties from a context.");
144: this.em = getEntityManager("MultiRetrievePropertiesFromContext", false);
145: entityB.setProperties(Generators.createProperties(50));
146: final Descriptor bDescriptor = new EntityDescriptor(CONTEXT_ONE);
147: bDescriptor.addAttributeContext(OWLClassB.class.getDeclaredField("properties"), CONTEXT_TWO);
148: bDescriptor.addAttributeContext(OWLClassB.class.getDeclaredField("stringAttribute"), null);
149: em.getTransaction().begin();
150: em.persist(entityB, bDescriptor);
151: em.getTransaction().commit();
152:
153: final OWLClassB res = em.find(OWLClassB.class, entityB.getUri(), bDescriptor);
154: assertNotNull(res);
155: assertEquals(entityB.getStringAttribute(), res.getStringAttribute());
156: assertTrue(TestEnvironmentUtils.arePropertiesEqual(entityB.getProperties(), res.getProperties()));
157: }
158: }